Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/platforms/esp32/components/avm_sys/include/esp32_sys.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ struct ESP32PlatformData

extern QueueSetHandle_t event_set;
extern QueueHandle_t event_queue;
void esp32_sys_queue_init();
void esp32_sys_queue_init(void);

void socket_init(Context *ctx, term opts);

Expand Down
6 changes: 5 additions & 1 deletion src/platforms/esp32/components/avm_sys/sys.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,12 @@ static const char *const revision_atom = "\x8" "revision";
QueueHandle_t event_queue = NULL;
QueueSetHandle_t event_set = NULL;

void esp32_sys_queue_init()
void esp32_sys_queue_init(void)
{
if (event_set != NULL) {
return;
}

event_set = xQueueCreateSet(EVENT_QUEUE_LEN * 4);
event_queue = xQueueCreate(EVENT_QUEUE_LEN, sizeof(void *));
xQueueAddToSet(event_queue, event_set);
Expand Down
22 changes: 20 additions & 2 deletions src/platforms/esp32/test/main/test_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -132,10 +132,28 @@ static void eth_stop(esp_netif_t *eth_netif)
}
#endif

term avm_test_case(const char *test_module)
static void prepare_event_queue(void)
{
esp32_sys_queue_init();

QueueSetMemberHandle_t source;
while ((source = xQueueSelectFromSet(event_set, 0)) != NULL) {
if (UNLIKELY(source != event_queue)) {
fprintf(stderr, "Stale member in ESP32 event queue set.\n");
AVM_ABORT();
}

void *ignored;
if (UNLIKELY(xQueueReceive(event_queue, &ignored, 0) != pdTRUE)) {
AVM_ABORT();
}
}
}

term avm_test_case(const char *test_module)
{
prepare_event_queue();

GlobalContext *glb = globalcontext_new();
TEST_ASSERT(glb != NULL);

Expand Down Expand Up @@ -183,7 +201,7 @@ term avm_test_case(const char *test_module)
#ifndef AVM_NO_JIT
TEST_CASE("test_jit_compile", "[test_run]")
{
esp32_sys_queue_init();
prepare_event_queue();

GlobalContext *glb = globalcontext_new();
TEST_ASSERT(glb != NULL);
Expand Down
1 change: 1 addition & 0 deletions src/platforms/esp32/test/sdkconfig.ci.wokwi.esp32s2
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=6
2 changes: 2 additions & 0 deletions src/platforms/esp32/test/sdkconfig.ci.wokwi.esp32s2.license
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: AtomVM Contributors
Loading