嗨对话小组,
我正在使用SPS示例(da1458x_dsps_v_5.150.2)。
在SPS主机示例中,我想列出具有其名称和BD地址的可用BLE设备。
它正确地列出了BD地址,但不是它的名称(给出一些垃圾值)。即,它提供USER_ADVERTISE_DATA “\ X11 \ X07 \ XB7 \ x5c \ X49 \ XD2 \ X04 \ XA3 \ X40 \ X71 \ XA0 \ XB5 \ X35 \ X85 \ x3e \ XB0 \ X83 \ X07”。
要获得上面,我使用了广告报告结构
我使用了UINT8_T数据[ADV_DATA_LEN];用于获取名称的上述结构的成员,因为可以使用适用于Windows版本的邻近监视器应用程序仅使用它仅用于获取名称。
///广告报告结构
struct avd_report.
{
///事件类型:
/// - adv_conn_undir:可连接的无向广告
/// - adv_conn_dir:可连接的指示广告
/// - adv_disc_undir:可发现的无向广告
/// - adv_nonconn_undir:不可连接的无向广告
uint8_t evt_type;
///广告地址类型:公共/随机
UINT8_T ADV_ADDR_TYPE;
///广告地址值
struct bd_addr adv_addr;
///广告数据包中的数据长度
uint8_t data_len;
///广告数据包的数据
UINT8_T数据[ADV_DATA_LEN];
/// rssi用于广告数据包的值
uint8_t rssi;
// Unit8_t BDADRSS;
};
是否正确或不正确?或者请让我知道正确的结构来阅读设备BLE名称..
我已经附加了一个图片以供参考。
嗨Ratheesht,
默认情况下,设备的名称不在广告字符串中找到,我的意思是设备可能或可能不会在广告字符串中公开名称,您在终端上获取的是表示UUID值的字符,该设备您跟踪的您跟踪不会在广告字符串中公开名称,但在扫描响应数据中(只要执行被动扫描,也可以在同一回调App_Ond_Undirect_Complete中捕获),也请注意设备中的名称广告字符串或广告数据被标记为“0x09完成本地名称”,所以通过规范,以查找名称是否位于广告字符串中,您将不得不跟踪适当的字节顺序中有0x09标记。
谢谢mt_dialog.
嗨对话框,
当设备名称大小为8及更低时,我可以在UART中列出UART中的设备名称及其地址,一旦设备的名称增加了超过8,它就会在UART中显示地址,但不是设备名称。
如果我增加了设备名称长度。,我可以在我的Android手机中看到该设备名称,但不是在DA14580设备上充当Host-Ble。
你能为我提供你的建议吗?
嗨Ratheesht,
我不确定我得到了这个问题,这与你在打印设备的名字中的实现,如果设备的名字位于广告字符串中,你已经实现了UART打印8个字符,然后UART将仅打印8个字符。
谢谢mt_dialog.
我也试图使用上面的示例来获取我的外设的BLE设备名称,但无法使用。
作为一个中央,我正在扫描BLE外围设备。
我正在“.app_on_adv_report_ind”回调事件处理程序中的外围设备扫描响应。
通过将广告UUID与我已知的外围设备匹配,我可以从此回调中成功连接到我的外围设备。
但是,我想知道我是如何获得外围名称的。这将是0x09扫描响应(GAP_AD_TYPE_COMPLETE_NAME)。
任何建议吗?
我的user_config.h附上。
谢谢