src.nth.io/

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--esp-homekit-intercom.code-workspace9
-rw-r--r--main/app_main.c5
-rw-r--r--main/src/bell.c13
-rw-r--r--main/src/event_queue.c2
-rw-r--r--main/src/lock.c5
5 files changed, 19 insertions, 15 deletions
diff --git a/esp-homekit-intercom.code-workspace b/esp-homekit-intercom.code-workspace
index cad81f2..27d7c81 100644
--- a/esp-homekit-intercom.code-workspace
+++ b/esp-homekit-intercom.code-workspace
@@ -8,8 +8,13 @@
"files.associations": {
"stdio.h": "c",
"hap.h": "c",
- "freertos.h": "c"
+ "freertos.h": "c",
+ "hap_apple_servs.h": "c",
+ "app_hap_setup_payload.h": "c",
+ "lock.h": "c",
+ "task.h": "c"
},
- "git.ignoreLimitWarning": true
+ "git.ignoreLimitWarning": true,
+ "idf.port": "/dev/cu.usbserial-01D11E9B"
}
} \ No newline at end of file
diff --git a/main/app_main.c b/main/app_main.c
index 24138c9..ee0a6ad 100644
--- a/main/app_main.c
+++ b/main/app_main.c
@@ -23,9 +23,6 @@ static void intercom_thread_entry(void *p)
{
hap_init(HAP_TRANSPORT_WIFI); /* Initialize the HAP core */
- /* Initialise the mandatory parameters for Accessory which will be added as
- * the mandatory services internally
- */
hap_acc_cfg_t cfg = {
.name = "Intercom",
.manufacturer = "Luke Hoersten",
@@ -38,7 +35,7 @@ static void intercom_thread_entry(void *p)
.cid = HAP_CID_DOOR,
};
- hap_acc_t *intercom_accessory = hap_acc_create(&cfg); /* Create accessory object */
+ hap_acc_t *intercom_accessory = hap_acc_create(&cfg);
/* Add a dummy Product Data */
uint8_t product_data[] = {'E', 'S', 'P', '3', '2', 'H', 'A', 'P'};
diff --git a/main/src/bell.c b/main/src/bell.c
index 5952c1f..228179e 100644
--- a/main/src/bell.c
+++ b/main/src/bell.c
@@ -25,19 +25,26 @@ bool is_bell_ringing(int val)
void IRAM_ATTR intercom_bell_isr(void *arg)
{
- if (!is_intercom_bell_blocked && is_bell_ringing(adc1_get_raw(CONFIG_HOMEKIT_INTERCOM_BELL_ADC1_CHANNEL)))
+ if (is_intercom_bell_blocked)
+ return;
+
+ int val = adc1_get_raw(CONFIG_HOMEKIT_INTERCOM_BELL_ADC1_CHANNEL);
+ if (is_bell_ringing(val))
{
+ ESP_LOGI(TAG, "Intercom bell ring value in range [%d]", val);
intercom_event_queue_bell_ring();
is_intercom_bell_blocked = true;
}
+ else
+ {
+ ESP_LOGI(TAG, "Intercom bell ring value out of range [%d]", val);
+ }
}
void intercom_bell_ring()
{
ESP_LOGI(TAG, "Intercom bell ring event processed");
-
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
index 9e73315..2f4a93d 100644
--- a/main/src/event_queue.c
+++ b/main/src/event_queue.c
@@ -66,7 +66,7 @@ void intercom_event_queue_run()
bool intercom_event_queue_init()
{
- int queue_len = 4;
+ 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/lock.c b/main/src/lock.c
index dea3c20..a088d03 100644
--- a/main/src/lock.c
+++ b/main/src/lock.c
@@ -26,17 +26,14 @@ static hap_char_t *intercom_lock_target_state;
void intercom_lock_unsecure()
{
ESP_LOGI(TAG, "Intercom unlock 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);
-
xTimerReset(intercom_lock_timer, 10);
}
void intercom_lock_secure()
{
ESP_LOGI(TAG, "Intercom lock 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);
}
@@ -44,7 +41,6 @@ void intercom_lock_secure()
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);
@@ -86,7 +82,6 @@ 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");
-
intercom_event_queue_lock_timeout();
}