Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d89a6de

Browse files
committed
BUGFIX: 'New Pattern: 0' Shown w/ Invalid Input
1 parent 0ec216e commit d89a6de

File tree

1 file changed

+14
-14
lines changed
  • My-RTOS-Projects/04-CLI-LEDs/src

1 file changed

+14
-14
lines changed

My-RTOS-Projects/04-CLI-LEDs/src/main.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,14 @@ static int brightVal = 250; // Brightnes
4141
static int fadeInterval = 5; // LED fade interval
4242
static int delayInterval = 30; // Delay between changing fade intervals
4343
static int patternType = 1; // default LED pattern: case 1
44-
static int CPUFreq = 240; // Default CPU speed = 240MHz
44+
//static int CPUFreq = 240; // Default CPU speed = 240MHz
4545

46-
static QueueHandle_t msgQueue;
47-
static SemaphoreHandle_t mutex1; // for `brightVal`, `fadeInterval`, `delayInterval`, `patternType` & `CPUFreq`
46+
static QueueHandle_t msgQueue; // Queue for CLI messages
47+
static SemaphoreHandle_t mutex1; // for `brightVal`, `fadeInterval`, `delayInterval` & `patternType`
48+
//static SemaphoreHandle_t brightValMutex; // Mutex for `brightVal`
49+
//static SemaphoreHandle_t fadeInttMutex; // Mutex for `fadeInterval`
50+
//static SemaphoreHandle_t delayIntMutex; // Mutex for `delayInteval`
51+
//static SemaphoreHandle_t patternMutex; // Mutex for `patternType`
4852

4953
struct Command // Struct for user Commands
5054
{
@@ -100,7 +104,7 @@ void msgRXTask(void *param)
100104
uint8_t cpuLen = strlen(cpuCmd);
101105
uint8_t valLen = strlen(getValues);
102106
uint8_t freqLen = strlen(getFreq);
103-
uint8_t cpuFreq; // 80, 160 or 240Mhz
107+
uint8_t localCPUFreq; // 80, 160 or 240Mhz
104108
char buffer[BUF_LEN]; // string buffer for Terminal Message
105109
short ledDelay; // blink delay in ms
106110
short fadeAmt;
@@ -156,7 +160,7 @@ void msgRXTask(void *param)
156160
patternType = pattern; // Change global pattern variable
157161
xSemaphoreGive(mutex1); // exit critical section
158162

159-
if(abs(pattern) <= NUM_PATTERNS)
163+
if(int(abs(pattern)) <= NUM_PATTERNS && int(pattern) != 0) // BUGFIX: "New Pattern: 0" with invalid entry
160164
{
161165
sprintf(buffer, "New Pattern: %d\n\n", pattern);
162166
Serial.print(buffer);
@@ -185,21 +189,17 @@ void msgRXTask(void *param)
185189
else if(memcmp(someMsg.cmd, cpuCmd, cpuLen) == 0) // check for `cpu ` command
186190
{
187191
char* tailPtr = someMsg.cmd + cpuLen;
188-
cpuFreq = atoi(tailPtr);
189-
cpuFreq = abs(cpuFreq);
190-
if(cpuFreq != 240 && cpuFreq != 160 && cpuFreq != 80)
192+
localCPUFreq = atoi(tailPtr);
193+
localCPUFreq = abs(localCPUFreq);
194+
if(localCPUFreq != 240 && localCPUFreq != 160 && localCPUFreq != 80)
191195
{
192196
Serial.println("Invalid Input: Must Be 240, 160, or 80Mhz");
193197
Serial.println("Returning....\n");
194198
continue;
195199
}
200+
setCpuFrequencyMhz(localCPUFreq); // Set New CPU Freq
201+
vTaskDelay(10 / portTICK_PERIOD_MS); // yield for a brief moment
196202

197-
xSemaphoreTake(mutex1, portMAX_DELAY); // Access Critical Section
198-
CPUFreq = cpuFreq; // change global CPU Frequency
199-
setCpuFrequencyMhz(CPUFreq); // Set New CPU Freq
200-
xSemaphoreGive(mutex1); // Exit Critical Section
201-
202-
vTaskDelay(10 / portTICK_PERIOD_MS);
203203
sprintf(buffer, "\nNew CPU Frequency is: %dMHz\n\n", getCpuFrequencyMhz());
204204
Serial.print(buffer);
205205
memset(buffer, 0, BUF_LEN); // Clear Input Buffer;

0 commit comments

Comments
 (0)