gatt_server_service_table 例程中蓝牙如果添加新的service

yulianchen
Posts: 3
Joined: Wed Jan 24, 2024 4:46 pm

gatt_server_service_table 例程中蓝牙如果添加新的service

Postby yulianchen » Fri Oct 11, 2024 2:48 am

各位大神们,我想在gatt_server_service_table 例程中添加多个service,根据我查到的信息来看,是要扩展一个服务创建句柄表,然后把新的表创建一下,

Code: Select all

esp_ble_gatts_create_attr_tab()
最后再使用

Code: Select all

esp_ble_gatts_start_service()
随后在同一个回调函数中处理事件,但是我感觉是不是还可以通过PROFILE_NUM创建多个不同的回调函数,在这个函数里,感觉像是可以创建多个不同的服务回调

Code: Select all

static 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 is register event, store the gatts_if for each profile */
    if (event == ESP_GATTS_REG_EVT)
    {
        if (param->reg.status == ESP_GATT_OK)
        {
            printf("app id:%04d\n", param->reg.app_id);
            heart_rate_profile_tab[PROFILE_APP_IDX].gatts_if = gatts_if;
        }
        else
        {
            ESP_LOGE(GATTS_TABLE_TAG, "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 == heart_rate_profile_tab[idx].gatts_if)
            {
                if (heart_rate_profile_tab[idx].gatts_cb)
                {
                    heart_rate_profile_tab[idx].gatts_cb(event, gatts_if, param);
                }
            }
        }
    } while (0);
}
但是我没有查到相关的使用文档,如何才能更简洁优雅的创建好几个service分别处理事件,希望知道的大神们能给个指导意见

Who is online

Users browsing this forum: No registered users and 39 guests