完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Code: Select all
I (27523) my_app: Connected with IP Address:192.168.1.159I (27523) esp_netif_handlers: sta ip: 192.168.1.159, mask: 255.255.255.0, gw: 192.168.1.1I (27523) wifi_prov_mgr: STA Got IPI (27523) my_app: Provisioning successfulI (29593) NimBLE: GAP procedure initiated: stop advertising.I (29593) NimBLE: GAP procedure initiated: terminate connection; conn_handle=1 hci_reason=19I (29593) wifi_prov_mgr: Provisioning stoppedI (29603) my_app: Provisioning deinitI (29613) protocomm_nimble: Protocomm layer has already stoppedI (29613) NimBLE: GAP procedure initiated: advertise; I (29613) NimBLE: disc_mode=2I (29623) NimBLE: adv_channel_map=0 own_addr_type=0 adv_filter_policy=0 adv_itvl_min=256 adv_itvl_max=256I (29633) NimBLE: I (29633) my_app: BLE transport: Disconnected!W (32533) BLE_INIT: invalid controller stateE (32533) BLE_INIT: controller init failedE (32533) NimBLE_BLE_PRPH: Failed to init nimble 259 I (32543) main_task: Returned from app_main() 成功 Provisioning 后再使用 Nimble PRPH 就会显示失败 |
|
相关推荐
1个回答
|
|
在完成BLE Provisioning后使用Nimble,您需要遵循以下步骤:
1. 初始化NimBLE堆栈: 在您的应用程序中,首先需要初始化NimBLE堆栈。这可以通过调用`ble_hs_cfg.reset`函数来完成。 2. 设置NimBLE配置: 在初始化NimBLE堆栈之后,您需要配置NimBLE。这包括设置设备名称、服务、特性等。您可以使用`ble_gatts_register_svcs`函数来注册GATT服务。 3. 启动NimBLE广告: 在配置NimBLE之后,您需要启动广告以使设备对其他BLE设备可见。您可以使用`ble_gap_adv_start`函数来启动广告。 4. 处理GAP事件: 当其他设备尝试连接到您的设备时,NimBLE会生成GAP事件。您需要处理这些事件以建立连接并执行所需的操作。您可以使用`ble_gap_event`回调函数来处理这些事件。 5. 处理GATT操作: 在连接建立后,您需要处理GATT操作,例如读取和写入特性。您可以使用`ble_gattc_register_put`函数来注册GATT客户端回调函数。 6. 断开连接: 当不再需要与设备通信时,您可以使用`ble_gap_terminate`函数来断开连接。 以下是一个简化的示例代码,展示了如何在完成BLE Provisioning后使用NimBLE: ```c #include "esp_nimble_hci.h" #include "nimble/nimble_port.h" #include "nimble/nimble_port_freertos.h" #include "modlog/modlog.h" #include "console/console.h" #include "sysinit/sysinit.h" static void app_ble_init(void) { /* Initialize the NimBLE host configuration. */ ble_hs_cfg.reset = 0; ble_hs_cfg.sync_cb = NULL; ble_hs_cfg.gatts_register_cb = gatt_svr_register_cb; ble_hs_cfg.store_status_cb = ble_store_util_status_rr; /* Set the default device name. */ ble_svc_gap_device_name_set("ESP32 NimBLE"); /* Start the NimBLE stack. */ nimble_port_init(); /* Start advertising. */ struct ble_gap_adv_params adv_params; memset(&adv_params, 0, sizeof adv_params); adv_params.conn_mode = BLE_GAP_CONN_MODE_UND; adv_params.disc_mode = BLE_GAP_DISC_MODE_GEN; ble_gap_adv_start(my_adv_handle, &adv_params, ble_gap_event, NULL); } static void gatt_svr_register_cb(uint16_t conn_handle) { /* Register GATT service */ ble_gatts_register_svcs(&gatt_svr_svcs[0], ARRAY_SIZE(gatt_svr_svcs)); } static void ble_gap_event(struct ble_gap_event *event, void *arg) { switch (event->type) { case BLE_GAP_EVENT_CONNECT: /* Handle connection event */ break; case BLE_GAP_EVENT_DISCONNECT: /* Handle disconnection event */ break; default: break; } } void app_main(void) { /* Initialize the console. */ sysinit(); /* Initialize BLE */ app_ble_init(); } ``` 请注意,这只是一个示例,您需要根据您的具体需求进行调整。在实际应用中,您可能需要实现更多的功能和处理更多的事件。 |
|
|
|
只有小组成员才能发言,加入小组>>
313 浏览 0 评论
1170 浏览 1 评论
586浏览 6评论
483浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
468浏览 5评论
467浏览 4评论
442浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 15:51 , Processed in 0.812647 second(s), Total 77, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号