From ca72e0e90f850ff5d757be2f6dc658c5d558620c Mon Sep 17 00:00:00 2001 From: Luke Hoersten Date: Fri, 12 Mar 2021 17:35:50 -0600 Subject: Removed the event queue. Apparently esp-homekit is thread safe. --- main/src/bell.c | 6 ++-- main/src/event_queue.c | 77 -------------------------------------------------- main/src/led.c | 2 +- main/src/lock.c | 29 +++++++++---------- 4 files changed, 17 insertions(+), 97 deletions(-) delete mode 100644 main/src/event_queue.c (limited to 'main/src') diff --git a/main/src/bell.c b/main/src/bell.c index 689856c..4045d90 100644 --- a/main/src/bell.c +++ b/main/src/bell.c @@ -7,7 +7,7 @@ #include #include -#include +#include #include #define ESP_INTR_FLAG_DEFAULT 0 @@ -35,7 +35,7 @@ void IRAM_ATTR intercom_bell_isr(void *arg) if (is_bell_ringing(val)) { ESP_LOGI(TAG, "Intercom bell ring value in range [%d]", val); - intercom_event_queue_bell_ring(); + intercom_bell_ring(); is_intercom_bell_blocked = true; } else @@ -46,7 +46,7 @@ void IRAM_ATTR intercom_bell_isr(void *arg) void intercom_bell_ring() { - ESP_LOGI(TAG, "Intercom bell ring event processed"); + ESP_LOGI(TAG, "Intercom bell ring"); hap_char_update_val(intercom_bell_current_state, &HAP_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS); xTimerReset(intercom_bell_timer, 10); } diff --git a/main/src/event_queue.c b/main/src/event_queue.c deleted file mode 100644 index dfd0d7b..0000000 --- a/main/src/event_queue.c +++ /dev/null @@ -1,77 +0,0 @@ -#include -#include -#include - -#include -#include -#include - -static const int INTERCOM_EVENT_QUEUE_BELL_RING = 1; -static const int INTERCOM_EVENT_QUEUE_LOCK_UNSECURE = 2; -static const int INTERCOM_EVENT_QUEUE_LOCK_SECURE = 3; -static const int INTERCOM_EVENT_QUEUE_LOCK_TIMEOUT = 4; - -static xQueueHandle intercom_event_queue = NULL; - -void intercom_event_queue_bell_ring() -{ - ESP_LOGI(TAG, "Intercom event queued BELL RING"); - xQueueSendFromISR(intercom_event_queue, (void *)&INTERCOM_EVENT_QUEUE_BELL_RING, NULL); -} - -void intercom_event_queue_lock_unsecure() -{ - ESP_LOGI(TAG, "Intercom event queued LOCK UNSECURE"); - xQueueSendToBack(intercom_event_queue, (void *)&INTERCOM_EVENT_QUEUE_LOCK_UNSECURE, 10); -} - -void intercom_event_queue_lock_secure() -{ - ESP_LOGI(TAG, "Intercom event queued LOCK SECURE"); - xQueueSendToBack(intercom_event_queue, (void *)&INTERCOM_EVENT_QUEUE_LOCK_SECURE, 10); -} - -void intercom_event_queue_lock_timeout() -{ - ESP_LOGI(TAG, "Intercom event queued LOCK TIMEOUT"); - xQueueSendToBack(intercom_event_queue, (void *)&INTERCOM_EVENT_QUEUE_LOCK_TIMEOUT, 10); -} - -void intercom_event_queue_run() -{ - uint8_t intercom_event_queue_item = INTERCOM_EVENT_QUEUE_LOCK_SECURE; - - while (1) - { - if (xQueueReceive(intercom_event_queue, &intercom_event_queue_item, portMAX_DELAY) == pdFALSE) - { - ESP_LOGI(TAG, "Intercom event queue trigger FAIL"); - } - else - { - switch (intercom_event_queue_item) - { - case INTERCOM_EVENT_QUEUE_BELL_RING: - intercom_bell_ring(); - break; - case INTERCOM_EVENT_QUEUE_LOCK_UNSECURE: - intercom_lock_unsecure(); - break; - case INTERCOM_EVENT_QUEUE_LOCK_SECURE: - intercom_lock_secure(); - break; - case INTERCOM_EVENT_QUEUE_LOCK_TIMEOUT: - intercom_lock_timeout(); - break; - } - } - } -} - -bool intercom_event_queue_init() -{ - int queue_len = 8; - int queue_item_size = sizeof(uint8_t); - intercom_event_queue = xQueueCreate(queue_len, queue_item_size); - return intercom_event_queue != NULL; -} diff --git a/main/src/led.c b/main/src/led.c index 154bcd1..394577c 100644 --- a/main/src/led.c +++ b/main/src/led.c @@ -5,7 +5,7 @@ #include #include -#include +#include int intercom_led_identify(hap_acc_t *ha) { diff --git a/main/src/lock.c b/main/src/lock.c index ac99864..4b98f51 100644 --- a/main/src/lock.c +++ b/main/src/lock.c @@ -7,26 +7,29 @@ #include #include -#include #include +#include #define INTERCOM_LOCK_GPIO_LOCKED 0 #define INTERCOM_LOCK_GPIO_UNLOCKED 1 +#define HAP_LOCK_CURRENT_STATE_UNSECURED 0 +#define HAP_LOCK_CURRENT_STATE_SECURED 1 + #define HAP_LOCK_TARGET_STATE_UNSECURED 0 #define HAP_LOCK_TARGET_STATE_SECURED 1 -static hap_val_t HAP_VAL_LOCK_CURRENT_STATE_UNSECURED = {.u = 0}; -static hap_val_t HAP_VAL_LOCK_CURRENT_STATE_SECURED = {.u = 1}; +static hap_val_t HAP_VAL_LOCK_CURRENT_STATE_UNSECURED = {.u = HAP_LOCK_CURRENT_STATE_UNSECURED}; +static hap_val_t HAP_VAL_LOCK_CURRENT_STATE_SECURED = {.u = HAP_LOCK_CURRENT_STATE_SECURED}; static hap_val_t HAP_VAL_LOCK_TARGET_STATE_SECURED = {.u = HAP_LOCK_TARGET_STATE_SECURED}; -static TimerHandle_t intercom_lock_timer = NULL; // lock the door when timer triggered +static TimerHandle_t intercom_lock_timer; // lock the door when timer triggered static hap_char_t *intercom_lock_current_state; static hap_char_t *intercom_lock_target_state; void intercom_lock_unsecure() { - ESP_LOGI(TAG, "Intercom lock unsecure event processed"); + ESP_LOGI(TAG, "Intercom lock unsecure"); gpio_set_level(CONFIG_HOMEKIT_INTERCOM_LOCK_GPIO_PIN, INTERCOM_LOCK_GPIO_UNLOCKED); hap_char_update_val(intercom_lock_current_state, &HAP_VAL_LOCK_CURRENT_STATE_UNSECURED); xTimerReset(intercom_lock_timer, 10); @@ -34,18 +37,11 @@ void intercom_lock_unsecure() void intercom_lock_secure() { - ESP_LOGI(TAG, "Intercom lock secure event processed"); + ESP_LOGI(TAG, "Intercom lock secure"); gpio_set_level(CONFIG_HOMEKIT_INTERCOM_LOCK_GPIO_PIN, INTERCOM_LOCK_GPIO_LOCKED); hap_char_update_val(intercom_lock_current_state, &HAP_VAL_LOCK_CURRENT_STATE_SECURED); } -void intercom_lock_timeout() -{ - ESP_LOGI(TAG, "Intercom lock timeout event processed"); - intercom_event_queue_lock_secure(); - hap_char_update_val(intercom_lock_target_state, &HAP_VAL_LOCK_TARGET_STATE_SECURED); -} - int intercom_lock_write_cb(hap_write_data_t write_data[], int count, void *serv_priv, void *write_priv) { int i, ret = HAP_SUCCESS; @@ -60,10 +56,10 @@ int intercom_lock_write_cb(hap_write_data_t write_data[], int count, void *serv_ switch (write->val.u) { case HAP_LOCK_TARGET_STATE_UNSECURED: - intercom_event_queue_lock_unsecure(); + intercom_lock_unsecure(); break; case HAP_LOCK_TARGET_STATE_SECURED: - intercom_event_queue_lock_secure(); + intercom_lock_secure(); break; } @@ -82,7 +78,8 @@ int intercom_lock_write_cb(hap_write_data_t write_data[], int count, void *serv_ void intercom_lock_timer_cb(TimerHandle_t timer) { ESP_LOGI(TAG, "Intercom lock timer fired"); - intercom_event_queue_lock_timeout(); + intercom_lock_secure(); + hap_char_update_val(intercom_lock_target_state, &HAP_VAL_LOCK_TARGET_STATE_SECURED); } hap_serv_t *intercom_lock_init(uint32_t key_gpio_pin) -- cgit v1.2.3