gatt event handler

This commit is contained in:
leo 2022-04-11 17:03:43 +02:00
parent 1a6824b81d
commit a098c0e68d
Signed by: leo
GPG Key ID: 0DD993BFB2B307DB
2 changed files with 28 additions and 5 deletions

View File

@ -12,7 +12,7 @@
static uint8_t adv_config_done = 0;
static struct gatts_profile_inst env_sense_profile_tab[1] = {
static struct gatts_profile_inst env_sense_profile_tab[PROFILE_NUM] = {
[ENVIRONMENTAL_SENSING_IDX] = {
.gatts_cb = gatts_profile_event_handler,
.gatts_if = ESP_GATT_IF_NONE,
@ -21,9 +21,12 @@ static struct gatts_profile_inst env_sense_profile_tab[1] = {
uint16_t env_handle_table[ENV_IDX_NB];
static uint8_t service_uuid[2] = {
static uint8_t service_uuid[16] = {
0x2f, 0x3f, 0x08, 0x63, 0x3b, 0x44, 0x40, 0xa4, 0x71, 0x4a, 0xdc, 0x0c,
ENVIRONMENTAL_SENSING_UUID & 0xFF,
ENVIRONMENTAL_SENSING_UUID & 0xFF00 >> 8,
0x00,
0x00,
};
static esp_ble_adv_data_t env_sense_adv_data = {
@ -56,7 +59,8 @@ static const uint16_t primary_service_uuid = ESP_GATT_UUID_PRI_SERVICE;
static const uint16_t env_service_uuid = ENVIRONMENTAL_SENSING_UUID;
static const uint16_t char_dec_uuid = ESP_GATT_UUID_CHAR_DECLARE;
static const uint16_t char_co2_uuid = 0x0c39;
static const uint8_t char_prop_read_write_notify = ESP_GATT_CHAR_PROP_BIT_WRITE | ESP_GATT_CHAR_PROP_BIT_READ | ESP_GATT_CHAR_PROP_BIT_NOTIFY;
static const uint16_t char_prop_read = ESP_GATT_CHAR_PROP_BIT_READ;
//static const uint8_t char_prop_read_write_notify = ESP_GATT_CHAR_PROP_BIT_WRITE | ESP_GATT_CHAR_PROP_BIT_READ | ESP_GATT_CHAR_PROP_BIT_NOTIFY;
static const uint8_t CO2_char_val[]={
0x00, 0x00, // Flags (RFU)
@ -77,7 +81,7 @@ static const esp_gatts_attr_db_t gatt_db[ENV_IDX_NB] =
/* Characteristic Declaration */
[CO2_IDX_MEAS_CHAR] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&char_dec_uuid, ESP_GATT_PERM_READ,
CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read_write_notify}},
CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read}},
/* Characteristic Value */
[CO2_IDX_MEAS_VAL] =
@ -135,7 +139,25 @@ void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t* par
}
void gatts_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if, esp_ble_gatts_cb_param_t* param){
if (event == ESP_GATTS_REG_EVT) {
if (param->reg.status == ESP_GATT_OK)
env_sense_profile_tab[ENVIRONMENTAL_SENSING_IDX].gatts_if = gatts_if;
else{
ESP_LOGE("bt", "reg app failed, app_id %04x, status %d",param->reg.app_id,param->reg.status);
return;
}
}
do{
int idx;
for (idx = 0; idx < PROFILE_NUM; idx++) {
/* ESP_GATT_IF_NONE, not specify a certain gatt_if, need to call every profile cb function */
if (gatts_if == ESP_GATT_IF_NONE || gatts_if == env_sense_profile_tab[idx].gatts_if) {
if (env_sense_profile_tab[idx].gatts_cb)
env_sense_profile_tab[idx].gatts_cb(event, gatts_if, param);
}
}
}
while (0);
}
void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if, esp_ble_gatts_cb_param_t* param){

View File

@ -5,6 +5,7 @@
#define SENSOR_BLE_APP_ID 0x69
#define ENVIRONMENTAL_SENSING_IDX 0
#define PROFILE_NUM 1
#define ENVIRONMENTAL_SENSING_UUID 0x181A