蓝牙扩展动态广告

问题描述 投票:0回答:1

我正在使用 ESP32 C3 soc 发送蓝牙扩展广告。我发现的大多数示例代码都说明了发送一对多静态消息。我需要发送一条本质上是动态的消息,这会带来问题。

我正在使用 Arduino 开发此程序,并使用 Expressif 蓝牙库。

我有一个方法可以停止广告,然后更新广告参数,然后重新打开广告。我遇到的问题是当我更新广告数据时

ble_status = esp_ble_gap_config_ext_adv_data_raw(0, 长度, ble_message);

实时响应 E (89916) BT_BTM: LE EA SetAdvData: cmd err=0x12 即使广告关闭成功,重启也成功。

是否需要另一种方法来处理需要随时间变化的扩展广告的用例?

int transmit_ble2(uint8_t *ble_message,int length) {

  esp_err_t  ble_status;
  bool status;
  static int advertising = 0; 
  int advertno = 0;

  if(advertising)
  {
    const uint8_t inst[] = {0x00};
    status = advert.stop(0, inst);
    status = advert.remove(0);
    status = advert.clear();
    advertising = 0;
    
  }
   
    advert.setAdvertisingParams(advertno, &ext_adv_params_1M);
    ble_status = esp_ble_gap_config_ext_adv_data_raw(0, length, ble_message);
    Serial.println(ble_status);
    advert.setDuration(0);
    advert.setScanRspData(advertno, sizeof(raw_scan_rsp_data_coded), &raw_scan_rsp_data_coded[0]);
    advert.setInstanceAddress(advertno, addr_1m);
    status = advert.start(1,advertno);
    advertising = 1;
 
  return 0;
}
bluetooth-lowenergy arduino-esp32
1个回答
0
投票

我没有确切的答案,但https://github.com/ArduPilot/ArduRemoteID/blob/master/RemoteIDModule/BLE_TX.cpp有一些C3和扩展广告的代码可能会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.