Skip to content

Commit 8dc8bf5

Browse files
committed
event queue if SD card is not present
1 parent 97a1152 commit 8dc8bf5

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

src/eez/modules/psu/event_queue.cpp

+18-6
Original file line numberDiff line numberDiff line change
@@ -482,13 +482,19 @@ static void refreshEvents() {
482482
} else {
483483
if (osMutexWait(g_writeQueueMutexId, 5) == osOK) {
484484
if (g_writeQueueFull || g_writeQueueTail != g_writeQueueHead) {
485-
int i = g_writeQueueTail;
485+
int i = g_writeQueueFull ? (g_writeQueueHead + 1) % WRITE_QUEUE_MAX_SIZE : g_writeQueueHead;
486486
do {
487+
if (i > 0) {
488+
i--;
489+
} else {
490+
i = WRITE_QUEUE_MAX_SIZE - 1;
491+
}
492+
487493
if (getEventType(g_writeQueue[i].eventId) >= g_filter) {
488494
g_numEvents++;
489495
}
490-
i = (i + 1) % WRITE_QUEUE_MAX_SIZE;
491-
} while (i != g_writeQueueHead);
496+
497+
} while (i != g_writeQueueTail);
492498
}
493499

494500
g_refreshEvents = false;
@@ -722,8 +728,14 @@ static void readEvents(uint32_t fromPosition) {
722728
uint32_t j = 0;
723729
uint32_t k = 0;
724730
if (g_writeQueueFull || g_writeQueueTail != g_writeQueueHead) {
725-
uint32_t i = g_writeQueueTail;
731+
int i = g_writeQueueFull ? (g_writeQueueHead + 1) % WRITE_QUEUE_MAX_SIZE : g_writeQueueHead;
726732
do {
733+
if (i > 0) {
734+
i--;
735+
} else {
736+
i = WRITE_QUEUE_MAX_SIZE - 1;
737+
}
738+
727739
int eventType = getEventType(g_writeQueue[i].eventId);
728740
if (eventType >= g_filter) {
729741
if (j >= fromPosition + k) {
@@ -739,8 +751,8 @@ static void readEvents(uint32_t fromPosition) {
739751
}
740752
j++;
741753
}
742-
i = (i + 1) % WRITE_QUEUE_MAX_SIZE;
743-
} while (i != g_writeQueueHead);
754+
755+
} while (i != g_writeQueueTail);
744756
}
745757

746758
osMutexRelease(g_writeQueueMutexId);

0 commit comments

Comments
 (0)