src.nth.io/

summaryrefslogtreecommitdiff
path: root/main/src/bell.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/bell.c')
-rw-r--r--main/src/bell.c108
1 files changed, 54 insertions, 54 deletions
diff --git a/main/src/bell.c b/main/src/bell.c
index 94dfeac..10c92a6 100644
--- a/main/src/bell.c
+++ b/main/src/bell.c
@@ -15,23 +15,23 @@
static hap_val_t HAP_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS = {.u = 0};
-#define INTERCOM_BELL_TASK_PRIORITY 1
-#define INTERCOM_BELL_TASK_STACKSIZE 4 * 1024
-#define INTERCOM_BELL_TASK_NAME "hap_intercom_bell"
+#define BELL_TASK_PRIORITY 1
+#define BELL_TASK_STACKSIZE 4 * 1024
+#define BELL_TASK_NAME "hap_intercom_bell"
-static TaskHandle_t intercom_bell_read_task;
-static TimerHandle_t intercom_bell_timer; // ignore new bells until timer triggered
-volatile bool is_intercom_bell_blocked;
-static hap_char_t *intercom_bell_current_state;
+static TaskHandle_t bell_read_task_handle;
+static TimerHandle_t bell_block_timer_handle; // ignore new bells until timer triggered
+volatile bool is_bell_blocked;
+static hap_char_t *bell_current_state;
void bell_rang()
{
ESP_LOGI(TAG, "bell HAP RING");
- hap_char_update_val(intercom_bell_current_state, &HAP_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS);
+ hap_char_update_val(bell_current_state, &HAP_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS);
- is_intercom_bell_blocked = true;
+ is_bell_blocked = true;
ESP_LOGI(TAG, "bell timer set; bell updated [blocked: true]");
- xTimerReset(intercom_bell_timer, pdFALSE);
+ xTimerReset(bell_block_timer_handle, pdFALSE);
}
bool is_bell_ringing()
@@ -42,7 +42,7 @@ bool is_bell_ringing()
return is_ringing;
}
-void intercom_bell_read(void *p)
+void bell_read_task(void *p)
{
for (;;)
{
@@ -52,76 +52,76 @@ void intercom_bell_read(void *p)
}
}
-void IRAM_ATTR intercom_bell_isr(void *arg)
+void IRAM_ATTR bell_isr(void *arg)
{
- if (is_intercom_bell_blocked)
- return;
-
- BaseType_t xHigherPriorityTaskWoken = pdFALSE;
- configASSERT(intercom_bell_read_task != NULL);
- vTaskNotifyGiveFromISR(intercom_bell_read_task, &xHigherPriorityTaskWoken);
- portYIELD_FROM_ISR();
+ if (!is_bell_blocked)
+ {
+ BaseType_t xHigherPriorityTaskWoken = pdFALSE;
+ configASSERT(bell_read_task_handle != NULL);
+ vTaskNotifyGiveFromISR(bell_read_task_handle, &xHigherPriorityTaskWoken);
+ portYIELD_FROM_ISR();
+ }
}
-void intercom_bell_timer_cb(TimerHandle_t timer)
+void bell_block_timer_cb(TimerHandle_t timer)
{
- is_intercom_bell_blocked = false;
+ is_bell_blocked = false;
ESP_LOGI(TAG, "bell timer triggered; bell updated [blocked: false]");
}
-void intercom_bell_blocker_init()
+void bell_blocker_init()
{
- is_intercom_bell_blocked = false;
- intercom_bell_timer = xTimerCreate("intercom_bell_timer", pdMS_TO_TICKS(CONFIG_HOMEKIT_INTERCOM_LOCK_TIMEOUT),
- pdFALSE, 0, intercom_bell_timer_cb);
+ is_bell_blocked = false;
+ bell_block_timer_handle = xTimerCreate("intercom_bell_timer", pdMS_TO_TICKS(CONFIG_HOMEKIT_INTERCOM_LOCK_TIMEOUT),
+ pdFALSE, 0, bell_block_timer_cb);
}
-hap_serv_t *intercom_bell_service_init()
+hap_serv_t *bell_init()
{
- hap_serv_t *intercom_bell_service = hap_serv_doorbell_create(0);
- hap_serv_add_char(intercom_bell_service, hap_char_name_create("Intercom Bell"));
- intercom_bell_current_state = hap_serv_get_char_by_uuid(intercom_bell_service, HAP_CHAR_UUID_PROGRAMMABLE_SWITCH_EVENT);
- return intercom_bell_service;
+ hap_serv_t *bell_service = hap_serv_doorbell_create(0);
+ hap_serv_add_char(bell_service, hap_char_name_create("Intercom Bell"));
+ bell_current_state = hap_serv_get_char_by_uuid(bell_service, HAP_CHAR_UUID_PROGRAMMABLE_SWITCH_EVENT);
+ return bell_service;
}
-void intercom_bell_isr_gpio_init()
+void bell_isr_gpio_init()
{
// Configure ISR GPIO Pin 27
gpio_config_t io_conf;
- io_conf.intr_type = GPIO_INTR_NEGEDGE; /* Interrupt for falling edge */
- io_conf.pin_bit_mask = GPIO_SEL_27; /* Bit mask of the pins */
- io_conf.mode = GPIO_MODE_INPUT; /* Set as input mode */
- io_conf.pull_up_en = GPIO_PULLUP_DISABLE; /* Disable internal pull-up */
- io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE; /* Enable internal pull-down */
- gpio_config(&io_conf); /* Set the GPIO configuration */
-
- gpio_install_isr_service(0); /* Install gpio isr service */
- gpio_isr_handler_add(GPIO_NUM_27, intercom_bell_isr, (void *)0); /* Hook isr handler for specified gpio pin */
+ io_conf.intr_type = GPIO_INTR_NEGEDGE;
+ io_conf.pin_bit_mask = GPIO_SEL_27;
+ io_conf.mode = GPIO_MODE_INPUT;
+ io_conf.pull_up_en = GPIO_PULLUP_DISABLE;
+ io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE;
+ gpio_config(&io_conf);
+
+ gpio_install_isr_service(0);
+ gpio_isr_handler_add(GPIO_NUM_27, bell_isr, (void *)0);
}
-void intercom_bell_adc_gpio_init()
+void bell_adc_gpio_init()
{
// Configure ADC1 Channel 5, GPIO Pin 33
gpio_config_t io_conf;
- io_conf.intr_type = GPIO_INTR_DISABLE; /* Interrupt for falling edge */
- io_conf.pin_bit_mask = GPIO_SEL_33; /* Bit mask of the pins */
- io_conf.mode = GPIO_MODE_INPUT; /* Set as input mode */
- io_conf.pull_up_en = GPIO_PULLUP_DISABLE; /* Disable internal pull-up */
- io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE; /* Enable internal pull-down */
- gpio_config(&io_conf); /* Set the GPIO configuration */
+ io_conf.intr_type = GPIO_INTR_DISABLE;
+ io_conf.pin_bit_mask = GPIO_SEL_33;
+ io_conf.mode = GPIO_MODE_INPUT;
+ io_conf.pull_up_en = GPIO_PULLUP_DISABLE;
+ io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE;
+ gpio_config(&io_conf);
// https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/adc.html#_CPPv425adc1_config_channel_atten14adc1_channel_t11adc_atten_t
adc1_config_width(ADC_WIDTH_BIT_12); /* The value read is 12 bits wide (range 0-4095). */
adc1_config_channel_atten(ADC1_GPIO33_CHANNEL, ADC_ATTEN_DB_11);
}
-hap_serv_t *intercom_bell_init()
+hap_serv_t *bell_service_init()
{
- xTaskCreate(intercom_bell_read, INTERCOM_BELL_TASK_NAME, INTERCOM_BELL_TASK_STACKSIZE, NULL,
- INTERCOM_BELL_TASK_PRIORITY, &intercom_bell_read_task);
+ xTaskCreate(bell_read_task, BELL_TASK_NAME, BELL_TASK_STACKSIZE, NULL,
+ BELL_TASK_PRIORITY, &bell_read_task_handle);
- intercom_bell_blocker_init();
- intercom_bell_isr_gpio_init();
- intercom_bell_adc_gpio_init();
- return intercom_bell_service_init();
+ bell_blocker_init();
+ bell_isr_gpio_init();
+ bell_adc_gpio_init();
+ return bell_init();
}