Skip to content

Commit 7bfb747

Browse files
committed
using a unique low level semaphore to prevent simultaneous access to pixel data
1 parent d784144 commit 7bfb747

File tree

1 file changed

+5
-8
lines changed

1 file changed

+5
-8
lines changed

src/main.cpp

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,7 @@ ModuleLiveScripts moduleLiveScripts = ModuleLiveScripts(&server, &esp32sveltekit
114114
ModuleChannels moduleChannels = ModuleChannels(&server, &esp32sveltekit);
115115
ModuleMoonLightInfo moduleMoonLightInfo = ModuleMoonLightInfo(&server, &esp32sveltekit);
116116

117-
volatile xSemaphoreHandle effectSemaphore = xSemaphoreCreateBinary();
118-
volatile xSemaphoreHandle driverSemaphore = xSemaphoreCreateBinary();
117+
volatile xSemaphoreHandle lowLevelSemaphore = xSemaphoreCreateBinary();
119118

120119
TaskHandle_t effectTaskHandle = NULL;
121120
TaskHandle_t driverTaskHandle = NULL;
@@ -128,7 +127,7 @@ void effectTask(void* pvParameters) {
128127
for (;;) {
129128
esp32sveltekit.lps++; // 🌙 todo: not moonlight specific?
130129

131-
if (xSemaphoreTake(effectSemaphore, pdMS_TO_TICKS(100)) == pdFALSE) {
130+
if (xSemaphoreTake(lowLevelSemaphore, pdMS_TO_TICKS(100)) == pdFALSE) {
132131
// EXT_LOGW(ML_TAG, "effectSemaphore wait too long"); //happens if no driver!, but let effects continue (for monitor) at 10 fps
133132
}
134133

@@ -140,7 +139,7 @@ void effectTask(void* pvParameters) {
140139
layerP.loop20ms();
141140
}
142141

143-
xSemaphoreGive(driverSemaphore);
142+
xSemaphoreGive(lowLevelSemaphore);
144143

145144
vTaskDelay(1); // yield to other tasks, 1 tick (~1ms)
146145
}
@@ -152,11 +151,11 @@ void driverTask(void* pvParameters) {
152151
// layerP.setup() done in effectTask
153152

154153
for (;;) {
155-
xSemaphoreTake(driverSemaphore, pdMS_TO_TICKS(100));
154+
xSemaphoreTake(lowLevelSemaphore, pdMS_TO_TICKS(100));
156155

157156
layerP.loopDrivers();
158157

159-
xSemaphoreGive(effectSemaphore);
158+
xSemaphoreGive(lowLevelSemaphore);
160159

161160
vTaskDelay(1); // yield to other tasks, 1 tick (~1ms)
162161
}
@@ -325,8 +324,6 @@ void setup() {
325324
false);
326325
#endif
327326

328-
xSemaphoreGive(effectSemaphore); // Allow effectTask to run first
329-
330327
// 🌙
331328
xTaskCreateUniversal(effectTask, // task function
332329
"AppEffectTask", // name

0 commit comments

Comments
 (0)