From 97716103195d25d0a390775147fb526c223b193b Mon Sep 17 00:00:00 2001 From: schneider <schneider@blinkenlichts.net> Date: Mon, 7 Dec 2020 02:39:43 +0100 Subject: [PATCH] feat(ess): Use BSEC if it is enabled --- epicardium/ble/ess.c | 26 +++++++++++++++++++++++--- epicardium/ble/ess.h | 1 + epicardium/modules/bsec.c | 4 ++++ 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/epicardium/ble/ess.c b/epicardium/ble/ess.c index a4452e9d5..f2e31bf1f 100644 --- a/epicardium/ble/ess.c +++ b/epicardium/ble/ess.c @@ -180,13 +180,13 @@ WSF_CT_ASSERT( static TimerHandle_t poll_timer; static StaticTimer_t poll_timer_buffer; -static void bleESS_update(struct bme680_sensor_data *data); +static void update_from_bme680(struct bme680_sensor_data *data); static void workpoll(void *data) { struct bme680_sensor_data sensor_data; if (epic_bme680_read_sensors(&sensor_data) == 0) { - bleESS_update(&sensor_data); + update_from_bme680(&sensor_data); } } @@ -254,6 +254,11 @@ static void setAttrFromBME680(struct bme680_sensor_data *data) ); } +static void setAttrFromBSEC(struct bsec_sensor_data *data) +{ + setAttrFromBME680((struct bme680_sensor_data *)data); +} + /* * BLE ESS read callback. * @@ -316,7 +321,7 @@ static attsGroup_t svcESSGroup = { .endHandle = ESS_END_HDL, }; -static void bleESS_update(struct bme680_sensor_data *data) +static void update_from_bme680(struct bme680_sensor_data *data) { setAttrFromBME680(data); @@ -327,6 +332,17 @@ static void bleESS_update(struct bme680_sensor_data *data) sendNotification(connId, ESS_PRESSURE_VAL_HDL, BLE_ESS_PRES_CCC_IDX); } +void bleESS_update_from_bsec_data(struct bsec_sensor_data *data) +{ + setAttrFromBSEC(data); + + /* Send notifications (if enabled) for all characteristics. */ + dmConnId_t connId = AppConnIsOpen(); + sendNotification(connId, ESS_TEMPERATURE_VAL_HDL, BLE_ESS_TEMP_CCC_IDX); + sendNotification(connId, ESS_HUMIDITY_VAL_HDL, BLE_ESS_HUMI_CCC_IDX); + sendNotification(connId, ESS_PRESSURE_VAL_HDL, BLE_ESS_PRES_CCC_IDX); +} + /* * This registers and starts the ESS service. */ @@ -341,6 +357,10 @@ void bleESS_init(void) */ void bleESS_ccc_update(void) { + if (bsec_active()) { + return; + } + dmConnId_t connId = AppConnIsOpen(); if (connId != DM_CONN_ID_NONE && (AttsCccEnabled(connId, BLE_ESS_TEMP_CCC_IDX) || diff --git a/epicardium/ble/ess.h b/epicardium/ble/ess.h index 3f59edf88..f54d1328b 100644 --- a/epicardium/ble/ess.h +++ b/epicardium/ble/ess.h @@ -29,3 +29,4 @@ enum { }; void bleESS_ccc_update(void); +void bleESS_update_from_bsec_data(struct bsec_sensor_data *data); diff --git a/epicardium/modules/bsec.c b/epicardium/modules/bsec.c index 76319bb86..7d24d4a88 100644 --- a/epicardium/modules/bsec.c +++ b/epicardium/modules/bsec.c @@ -4,6 +4,8 @@ #include "bosch.h" #include "bsec_integration.h" +#include "ble/ess.h" + #include "epicardium.h" #include "modules.h" #include "config.h" @@ -119,6 +121,8 @@ void output_ready( last_bme680_timestamp = timestamp; + bleESS_update_from_bsec_data(&last_bsec_data); + if (debug) { LOG_INFO( "bsec", -- GitLab