diff options
Diffstat (limited to 'main/src')
| -rw-r--r-- | main/src/bell.c | 6 | ||||
| -rw-r--r-- | main/src/event_queue.c | 77 | ||||
| -rw-r--r-- | main/src/led.c | 2 | ||||
| -rw-r--r-- | main/src/lock.c | 29 |
4 files changed, 17 insertions, 97 deletions
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 <hap_apple_servs.h> #include <hap_apple_chars.h> -#include <event_queue.h> +#include <intercom.h> #include <bell.h> #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 <freertos/FreeRTOS.h> -#include <freertos/queue.h> -#include <esp_log.h> - -#include <lock.h> -#include <bell.h> -#include <event_queue.h> - -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 <hap.h> #include <led.h> -#include <event_queue.h> +#include <intercom.h> 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 <hap_apple_servs.h> #include <hap_apple_chars.h> -#include <event_queue.h> #include <lock.h> +#include <intercom.h> #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) |
