diff --git a/components/badge23/espan.c b/components/badge23/espan.c index bef80a3648ae78c669658cfb0c2893491398f5a6..f6a41e8a83aa717a721bdbaf216bd7833588b1a4 100644 --- a/components/badge23/espan.c +++ b/components/badge23/espan.c @@ -36,10 +36,6 @@ static const char *TAG = "espan"; #error "i2c not implemented for this badge generation" #endif -static QueueHandle_t i2c_queue = NULL; -static QueueHandle_t slow_system_status_queue = NULL; -static uint8_t dummy_data; - static esp_err_t i2c_master_init(void) { int i2c_master_port = I2C_MASTER_NUM; @@ -58,30 +54,22 @@ static esp_err_t i2c_master_init(void) return i2c_driver_install(i2c_master_port, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0); } -#define CAPTOUCH_POLLING_PERIOD 10 -#define SLOW_SYSTEM_STATUS_PERIOD 100 static uint8_t hw_init_done = 0; -void i2c_timer(TimerHandle_t data){ - xQueueSend(i2c_queue, &dummy_data, 0); -} - -void i2c_task(void * data){ - while(1){ - xQueueReceive(i2c_queue, &dummy_data, portMAX_DELAY); +static void io_fast_task(void * data){ + TickType_t last_wake = xTaskGetTickCount(); + while(1) { + vTaskDelayUntil(&last_wake, pdMS_TO_TICKS(10)); // 100 Hz captouch_read_cycle(); update_button_state(); } } -void slow_system_status_timer(TimerHandle_t data){ - xQueueSend(slow_system_status_queue, &dummy_data, 0); -} - -void slow_system_status_task(void * data){ - while(1){ - xQueueReceive(slow_system_status_queue, &dummy_data, portMAX_DELAY); - //read out stuff like jack detection, battery status, usb connection etc. +// read out stuff like jack detection, battery status, usb connection etc. +static void io_slow_task(void * data){ + TickType_t last_wake = xTaskGetTickCount(); + while(1) { + vTaskDelayUntil(&last_wake, pdMS_TO_TICKS(100)); // 10 Hz audio_update_jacksense(); leds_update_hardware(); } @@ -119,22 +107,8 @@ void os_app_main(void) captouch_force_calibration(); - - i2c_queue = xQueueCreate(1,1); - - TaskHandle_t i2c_task_handle; - xTaskCreatePinnedToCore(&i2c_task, "I2C task", 4096, NULL, configMAX_PRIORITIES-1, &i2c_task_handle, 0); - - TimerHandle_t i2c_timer_handle = xTimerCreate("I2C timer", pdMS_TO_TICKS(CAPTOUCH_POLLING_PERIOD), pdTRUE, (void *) 0, *i2c_timer); - if( xTimerStart(i2c_timer_handle, 0 ) != pdPASS) ESP_LOGI(TAG, "I2C timer initialization failed"); - - slow_system_status_queue = xQueueCreate(1,1); - - TaskHandle_t slow_system_status_task_handle; - xTaskCreatePinnedToCore(&slow_system_status_task, "slow system status task", 4096, NULL, configMAX_PRIORITIES-2, &slow_system_status_task_handle, 0); - - TimerHandle_t slow_system_status_timer_handle = xTimerCreate("slow system status timer", pdMS_TO_TICKS(SLOW_SYSTEM_STATUS_PERIOD), pdTRUE, (void *) 0, *slow_system_status_timer); - if( xTimerStart(slow_system_status_timer_handle, 0 ) != pdPASS) ESP_LOGI(TAG, "I2C task initialization failed"); + xTaskCreatePinnedToCore(&io_fast_task, "iofast", 4096, NULL, configMAX_PRIORITIES-1, NULL, 0); + xTaskCreatePinnedToCore(&io_slow_task, "ioslow", 4096, NULL, configMAX_PRIORITIES-2, NULL, 0); hw_init_done = 1; }