esp32使用nimble

esp32使用nimble

esp32配置nimble

选择蓝牙主机堆栈 BLE only 节省 堆栈资源
idf.py menuconfig
Component config > Bluetooth -> NimBLE - BLE only (BT_NIMBLE_ENABLED)

其他选项

nimble 相关 api

esp32 使用 NimBLE 堆栈,NimBLE-based host APIs 只有主要框架。

esp32 nimble 基础框架

伪代码框架如下:

void app_main(void){
    //设置日志
    esp_log_level_set("*", ESP_LOG_ERROR);
    esp_log_level_set(tag, ESP_LOG_DEBUG);
    //初始化NVS, ESP Bluetooth controller 初始化期间需要使用
    nvs_flash_init();
    //初始化 ESP Bluetooth controller、 VHCI transport layer(Host 与 ESP Bluetooth controller之间)
    //如果 ESP Bluetooth controller 已经初始化,可以使用  esp_nimble_hci_init() 初始化其他部分
    ESP_ERROR_CHECK(esp_nimble_hci_and_controller_init());
    //初始化 host 栈, 这里已经设置 NimBLE 日志等级本地默认3 INFO,如果修改本地默认会增加没用的其他日志
    nimble_port_init();
    esp_log_level_set("NimBLE", ESP_LOG_DEBUG);//设置日志等级DEBUG
	//初始化 nimble 相关配置参数 reset_cb、sync_cb、store_status_cb 等回调
	// 执行 nimble_port_run() 后,在各种情况下触发对应回调
    ble_hs_cfg.sync_cb = blehr_on_sync;//在启动和重置后 host and controller 同步时 回调
    ble_hs_cfg.reset_cb = blehr_on_reset;// host 致命错误 reset 时回调
    ble_hs_cfg.gatts_register_cb = gatt_svr_register_cb; //GATT 资源 (service, characteristic, or descriptor) 注册时回调
    ble_hs_cfg.store_status_cb = ble_store_util_status_rr;//循环状态回调,如果新记录的存储容量不足,删除最旧的绑定并继续执行持久化操作,演示为主
/*
    自定义的内容
    如果是从设备:初始化所有的服务调用 ble_gatts_count_cfg、ble_gatts_add_svcs
    如果是主设备:初始化需要链接设备对等结构体,初始化ble存储配置 ble_store_config_init
    。。。
*/
    //设置默认设备名
    ble_svc_gap_device_name_set("nimble-default");
	//开启 nimble 堆栈的线程
    nimble_port_freertos_init(ble_host_task);
}    
void ble_host_task(void *param)
{
     nimble_port_run(); //只有调用了 nimble_port_stop() 才会退出。
     nimble_port_freertos_deinit();
}


//停止
int ret = nimble_port_stop();
if (ret == 0) {
     nimble_port_deinit(); //nimble_port_freertos_deinit();

     ret = esp_nimble_hci_and_controller_deinit();
     if (ret != ESP_OK) {
         ESP_LOGE(TAG, "esp_nimble_hci_and_controller_deinit() failed with error: %d", ret);
     }
}

开发流程 参考博客 nimble 蓝牙开发API

其余api 参考官方 NimBLE Host GAP Reference

你可能感兴趣的:(蓝牙,esp32,nimble,esp32)