Advertising Data(广播包) 好像是 app_gap_dev_inq_req(GAP_GEN_INQ_TYPE, QN_ADDR_TYPE); int app_gap_dev_inq_cmp_handler(ke_msg_id_t const msgid,
struct gap_event_common_cmd_complete const *param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
两个函数来处理的
Scan Response Data(扫描响应包)是怎么处理的啊 ??
首先,你要明白app_gap_dev_inq_req函数发送的是GAP_DEV_INQ_REQ这个消息请求,而这个消息请求的响应消息是GAP_DEV_INQ_RESULT_EVT,而GAP_DEV_INQ_RESULT_EVT这个响应消息的处理函数是app_gap_dev_inq_result_handler,而你想要的广播数据包和扫描响应数据包都在全局结构体变量app_env.adv_data和app_env.scanrsp_data中,我这样解释你应该明白了吧?
xiaolong_ba 发表于 2015-11-19 19:43
首先,你要明白app_gap_dev_inq_req函数发送的是GAP_DEV_INQ_REQ这个消息请求,而这个消息请求的响应消息是 …
struct app_env_tag
{
#if (BLE_PERIPHERAL || BLE_BROADCASTER)
// Service setup Flag
uint16_t srv_flag;
// Advertising data
uint8_t adv_data[ADV_DATA_LEN];
// Scan Response data
uint8_t scanrsp_data[SCAN_RSP_DATA_LEN];
#endif
..........
} 这个结构体在client中(BLE_PERIPHERAL || BLE_BROADCASTER)是等于0的
所以adv_data和scanrsp_data是没有定义的
xiaolong_ba 发表于 2015-11-19 19:43
首先,你要明白app_gap_dev_inq_req函数发送的是GAP_DEV_INQ_REQ这个消息请求,而这个消息请求的响应消息是 …
app_env.adv_data和app_env.scanrsp_data 这两个应该是作为从机广播时需要填入的广播数据, 而我现在需要的是主机扫描到从机广播的数据。
本帖最后由 xiaolong_ba 于 2015-11-20 09:20 编辑
k693277161 发表于 2015-11-20 09:08
app_env.adv_data和app_env.scanrsp_data 这两个应该是作为从机广播时需要填入的广播数据, 而我现在 …
你可以在主机程序的app_gap_dev_inq_result_handler函数中把看看。app_env是一个全局结构体变量,先试试没有问题的。今晚回去我看看
xiaolong_ba 发表于 2015-11-20 09:14
你可以在主机程序的app_gap_dev_inq_result_handler函数中把看看。app_env是一个全局结构体变量,先试试 …
我找到了广播包的结构体 应该是这个
///Advertising report structure
struct adv_report
{
///Event type: Ref bluetooth core spec 4.0 Volume 6 Part B Chapter 2.3 Table 2.1
uint8_t evt_type;
///Advertising address type: public/random
uint8_t adv_addr_type;
///Advertising address value
struct bd_addr adv_addr;
///Data length in advertising packet
uint8_t data_len;
///Data of advertising packet
uint8_t data[ADV_DATA_LEN];
///RSSI value for advertising packet
int8_t rssi;
};
扫描响应包的 ///Scan response data structure
struct scan_rsp_data
{
///Maximum length data bytes array
uint8_t data[SCAN_RSP_DATA_LEN];
}; 程序中没有找到这个是怎么处理的,好像是没有定义 没有处理啊
user3
8
在进行广播扫描之后,会得到响应消息:GAP_DEV_INQ_RESULT_EVT
其中,响应消息对应的函数为
int app_gap_dev_inq_result_handler(ke_msg_id_t const msgid,
struct gap_dev_inq_result_evt const *param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
可以看到在扫描响应后所带的param类型是 struct gap_dev_inq_result_evt
那么继续跟踪
/// Device discovery event result
struct gap_dev_inq_result_evt
{
///Number of responses
uint8_t nb_resp;
/// advertising report
struct adv_report adv_rep;
};
继续深入
///Advertising report structure
struct adv_report
{
///Event type: Ref bluetooth core spec 4.0 Volume 6 Part B Chapter 2.3 Table 2.1
uint8_t evt_type;
///Advertising address type: public/random
uint8_t adv_addr_type;
///Advertising address value
struct bd_addr adv_addr;
///Data length in advertising packet
uint8_t data_len;
///Data of advertising packet
uint8_t data[ADV_DATA_LEN];
///RSSI value for advertising packet
int8_t rssi;
};
我想走到这一步你应该已经找到你想要的广播信息了