Skip to content

Commit 7a3a92f

Browse files
committed
Implement enough wrappers to start the WiFi task
1 parent 9ae6050 commit 7a3a92f

File tree

1 file changed

+34
-31
lines changed

1 file changed

+34
-31
lines changed

espnet/espnet.c

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <string.h>
66
#include "espnet.h"
77
#include "esp_wifi.h"
8+
#include "esp_private/wifi.h"
89
#include "freertos/FreeRTOS.h"
910
#include "freertos/semphr.h"
1011
#include "freertos/task.h"
@@ -88,23 +89,27 @@ static void _task_yield_from_isr(void) {
8889
printf("called: _task_yield_from_isr\n");
8990
}
9091
static void *_semphr_create(uint32_t max, uint32_t init) {
91-
printf("called: _semphr_create\n");
92-
return NULL;
92+
return (void *)xSemaphoreCreateCounting(max, init);
9393
}
9494
static void _semphr_delete(void *semphr) {
95-
printf("called: _semphr_delete\n");
95+
vSemaphoreDelete(semphr);
9696
}
9797
static int32_t _semphr_take(void *semphr, uint32_t block_time_tick) {
98-
printf("called: _semphr_take\n");
99-
return 0;
98+
if (block_time_tick == OSI_FUNCS_TIME_BLOCKING) {
99+
return (int32_t)xSemaphoreTake(semphr, portMAX_DELAY);
100+
} else {
101+
return (int32_t)xSemaphoreTake(semphr, block_time_tick);
102+
}
100103
}
101104
static int32_t _semphr_give(void *semphr) {
102-
printf("called: _semphr_give\n");
103-
return 0;
105+
return (int32_t)xSemaphoreGive(semphr);
104106
}
105107
static void *_wifi_thread_semphr_get(void) {
106-
printf("called: _wifi_thread_semphr_get\n");
107-
return NULL;
108+
static SemaphoreHandle_t sem = NULL;
109+
if (!sem) {
110+
sem = xSemaphoreCreateCounting(1, 0);
111+
}
112+
return (void*)sem;
108113
}
109114
static void *_mutex_create(void) {
110115
printf("called: _mutex_create\n");
@@ -131,8 +136,11 @@ static void _queue_delete(void *queue) {
131136
printf("called: _queue_delete\n");
132137
}
133138
static int32_t _queue_send(void *queue, void *item, uint32_t block_time_tick) {
134-
printf("called: _queue_send\n");
135-
return 0;
139+
if (block_time_tick == OSI_FUNCS_TIME_BLOCKING) {
140+
return (int32_t)xQueueSend(queue, item, portMAX_DELAY);
141+
} else {
142+
return (int32_t)xQueueSend(queue, item, block_time_tick);
143+
}
136144
}
137145
static int32_t _queue_send_from_isr(void *queue, void *item, void *hptw) {
138146
printf("called: _queue_send_from_isr\n");
@@ -147,12 +155,11 @@ static int32_t _queue_send_to_front(void *queue, void *item, uint32_t block_time
147155
return 0;
148156
}
149157
static int32_t _queue_recv(void *queue, void *item, uint32_t block_time_tick) {
150-
printf("called: _queue_recv\n");
151-
return 0;
152-
}
153-
static uint32_t _queue_msg_waiting(void *queue) {
154-
printf("called: _queue_msg_waiting\n");
155-
return 0;
158+
if (block_time_tick == OSI_FUNCS_TIME_BLOCKING) {
159+
return (int32_t)xQueueReceive(queue, item, portMAX_DELAY);
160+
} else {
161+
return (int32_t)xQueueReceive(queue, item, block_time_tick);
162+
}
156163
}
157164
static void * _event_group_create(void) {
158165
printf("called: _event_group_create\n");
@@ -177,8 +184,8 @@ static uint32_t _event_group_wait_bits(void *event, uint32_t bits_to_wait_for, i
177184
#define P(x) printf("called: "#x"\n");
178185

179186
static int32_t _task_create_pinned_to_core(void *task_func, const char *name, uint32_t stack_depth, void *param, uint32_t prio, void *task_handle, uint32_t core_id) {
180-
P(_task_create_pinned_to_core)
181-
return 0;
187+
// Note: using xTaskCreate instead of xTaskCreatePinnedToCore.
188+
return (uint32_t)xTaskCreate(task_func, name, stack_depth, param, prio, task_handle);
182189
}
183190
static int32_t _task_create(void *task_func, const char *name, uint32_t stack_depth, void *param, uint32_t prio, void *task_handle) {
184191
P(_task_create)
@@ -187,16 +194,11 @@ static int32_t _task_create(void *task_func, const char *name, uint32_t stack_de
187194
static void _task_delete(void *task_handle) {
188195
P(_task_delete)
189196
}
190-
static void _task_delay(uint32_t tick) {
191-
P(_task_delay)
192-
}
193197
static int32_t _task_ms_to_tick(uint32_t ms) {
194-
P(_task_ms_to_tick)
195-
return 0;
198+
return (int32_t)(ms / portTICK_PERIOD_MS);
196199
}
197200
static int32_t _task_get_max_priority() {
198-
P(_task_get_max_priority)
199-
return 0;
201+
return configMAX_PRIORITIES;
200202
}
201203
static int32_t _event_post(const char* event_base, int32_t event_id, void* event_data, size_t event_data_size, uint32_t ticks_to_wait) {
202204
P(_event_post)
@@ -381,11 +383,12 @@ static void* _wifi_zalloc(size_t size) {
381383
return calloc(1, size);
382384
}
383385
static void* _wifi_create_queue(int queue_len, int item_size) {
384-
P(_wifi_create_queue)
385-
return NULL;
386+
wifi_static_queue_t *queue = (wifi_static_queue_t*)malloc(sizeof(wifi_static_queue_t));
387+
queue->handle = xQueueCreate( queue_len, item_size);
388+
return queue;
386389
}
387390
static void _wifi_delete_queue(void * queue) {
388-
P(_wifi_delete_queue)
391+
vQueueDelete(queue);
389392
}
390393
static int _coex_init(void) {
391394
P(_coex_init)
@@ -497,7 +500,7 @@ wifi_osi_funcs_t g_wifi_osi_funcs = {
497500
._queue_send_to_back = _queue_send_to_back,
498501
._queue_send_to_front = _queue_send_to_front,
499502
._queue_recv = _queue_recv,
500-
._queue_msg_waiting = _queue_msg_waiting,
503+
._queue_msg_waiting = (uint32_t(*)(void *))uxQueueMessagesWaiting,
501504
._event_group_create = _event_group_create,
502505
._event_group_delete = _event_group_delete,
503506
._event_group_set_bits = _event_group_set_bits,
@@ -506,7 +509,7 @@ wifi_osi_funcs_t g_wifi_osi_funcs = {
506509
._task_create_pinned_to_core = _task_create_pinned_to_core,
507510
._task_create = _task_create,
508511
._task_delete = _task_delete,
509-
._task_delay = _task_delay,
512+
._task_delay = vTaskDelay,
510513
._task_ms_to_tick = _task_ms_to_tick,
511514
._task_get_current_task = (void *(*)(void))xTaskGetCurrentTaskHandle,
512515
._task_get_max_priority = _task_get_max_priority,

0 commit comments

Comments
 (0)