diff options
| author | Luke Hoersten <[email protected]> | 2021-03-12 17:07:44 -0600 |
|---|---|---|
| committer | Luke Hoersten <[email protected]> | 2021-03-12 17:07:44 -0600 |
| commit | d23be047e18ef9b97e5c72073c9236f59ac60d5f (patch) | |
| tree | 6c8db9bef1270ef2d6d8d6a1ab69e4f8a0e4549f | |
| parent | 1592ae8caa11c304c6800978fd801f52b45e8714 (diff) | |
Fixed lock timeout bug
| -rw-r--r-- | esp-homekit-intercom.code-workspace | 3 | ||||
| -rw-r--r-- | main/src/bell.c | 3 | ||||
| -rw-r--r-- | main/src/event_queue.c | 4 | ||||
| -rw-r--r-- | main/src/lock.c | 22 |
4 files changed, 20 insertions, 12 deletions
diff --git a/esp-homekit-intercom.code-workspace b/esp-homekit-intercom.code-workspace index 27d7c81..0d5d87d 100644 --- a/esp-homekit-intercom.code-workspace +++ b/esp-homekit-intercom.code-workspace @@ -15,6 +15,7 @@ "task.h": "c" }, "git.ignoreLimitWarning": true, - "idf.port": "/dev/cu.usbserial-01D11E9B" + "idf.port": "/dev/cu.usbserial-01D11E9B", + "idf.flashType": "UART" } }
\ No newline at end of file diff --git a/main/src/bell.c b/main/src/bell.c index 228179e..689856c 100644 --- a/main/src/bell.c +++ b/main/src/bell.c @@ -26,7 +26,10 @@ bool is_bell_ringing(int val) void IRAM_ATTR intercom_bell_isr(void *arg) { if (is_intercom_bell_blocked) + { + ESP_LOGI(TAG, "Intercom bell ring BLOCKED"); return; + } int val = adc1_get_raw(CONFIG_HOMEKIT_INTERCOM_BELL_ADC1_CHANNEL); if (is_bell_ringing(val)) diff --git a/main/src/event_queue.c b/main/src/event_queue.c index 2f4a93d..dfd0d7b 100644 --- a/main/src/event_queue.c +++ b/main/src/event_queue.c @@ -15,21 +15,25 @@ 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); } diff --git a/main/src/lock.c b/main/src/lock.c index a088d03..ac99864 100644 --- a/main/src/lock.c +++ b/main/src/lock.c @@ -16,8 +16,9 @@ #define HAP_LOCK_TARGET_STATE_UNSECURED 0 #define HAP_LOCK_TARGET_STATE_SECURED 1 -static hap_val_t HAP_LOCK_CURRENT_STATE_UNSECURED = {.u = 0}; -static hap_val_t HAP_LOCK_CURRENT_STATE_SECURED = {.u = 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_TARGET_STATE_SECURED = {.u = HAP_LOCK_TARGET_STATE_SECURED}; static TimerHandle_t intercom_lock_timer = NULL; // lock the door when timer triggered static hap_char_t *intercom_lock_current_state; @@ -25,25 +26,24 @@ static hap_char_t *intercom_lock_target_state; void intercom_lock_unsecure() { - ESP_LOGI(TAG, "Intercom unlock event processed"); + ESP_LOGI(TAG, "Intercom lock unsecure event processed"); gpio_set_level(CONFIG_HOMEKIT_INTERCOM_LOCK_GPIO_PIN, INTERCOM_LOCK_GPIO_UNLOCKED); - hap_char_update_val(intercom_lock_current_state, &HAP_LOCK_CURRENT_STATE_UNSECURED); + hap_char_update_val(intercom_lock_current_state, &HAP_VAL_LOCK_CURRENT_STATE_UNSECURED); xTimerReset(intercom_lock_timer, 10); } void intercom_lock_secure() { - ESP_LOGI(TAG, "Intercom lock event processed"); + ESP_LOGI(TAG, "Intercom lock secure event processed"); gpio_set_level(CONFIG_HOMEKIT_INTERCOM_LOCK_GPIO_PIN, INTERCOM_LOCK_GPIO_LOCKED); - hap_char_update_val(intercom_lock_current_state, &HAP_LOCK_CURRENT_STATE_SECURED); + 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_val_t target_lock_secured = {.u = HAP_LOCK_TARGET_STATE_SECURED}; - hap_char_update_val(intercom_lock_target_state, &target_lock_secured); + 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) @@ -55,7 +55,7 @@ int intercom_lock_write_cb(hap_write_data_t write_data[], int count, void *serv_ write = &write_data[i]; if (!strcmp(hap_char_get_type_uuid(write->hc), HAP_CHAR_UUID_LOCK_TARGET_STATE)) { - ESP_LOGI(TAG, "Received Write. Intercom lock %d", write->val.u); + ESP_LOGI(TAG, "Intercom lock received write [%d]", write->val.u); switch (write->val.u) { @@ -81,13 +81,13 @@ 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 - event queued"); + ESP_LOGI(TAG, "Intercom lock timer fired"); intercom_event_queue_lock_timeout(); } hap_serv_t *intercom_lock_init(uint32_t key_gpio_pin) { - hap_serv_t *intercom_lock_service = hap_serv_lock_mechanism_create(HAP_LOCK_CURRENT_STATE_SECURED.u, HAP_LOCK_TARGET_STATE_SECURED); + hap_serv_t *intercom_lock_service = hap_serv_lock_mechanism_create(HAP_VAL_LOCK_CURRENT_STATE_SECURED.u, HAP_LOCK_TARGET_STATE_SECURED); hap_serv_add_char(intercom_lock_service, hap_char_name_create("Intercom Lock")); intercom_lock_current_state = hap_serv_get_char_by_uuid(intercom_lock_service, HAP_CHAR_UUID_LOCK_CURRENT_STATE); |
