Firefly开源社区

client 主机 广播包 扫描响应包 处理 ???

19

积分

0

威望

0

贡献

游客

积分
19
发表于 2015-11-18 16:27:07     
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(扫描响应包)是怎么处理的啊 ??


回复

使用道具 举报

46

积分

0

威望

0

贡献

游客

积分
46
发表于 2015-11-19 19:43:20     
首先,你要明白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中,我这样解释你应该明白了吧?
回复

使用道具 举报

19

积分

0

威望

0

贡献

游客

积分
19
发表于 2015-11-20 09:01:01     
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是没有定义的
回复

使用道具 举报

19

积分

0

威望

0

贡献

游客

积分
19
发表于 2015-11-20 09:08:00     
xiaolong_ba 发表于 2015-11-19 19:43
首先,你要明白app_gap_dev_inq_req函数发送的是GAP_DEV_INQ_REQ这个消息请求,而这个消息请求的响应消息是 ...

app_env.adv_data和app_env.scanrsp_data  这两个应该是作为从机广播时需要填入的广播数据,   而我现在需要的是主机扫描到从机广播的数据。
回复

使用道具 举报

46

积分

0

威望

0

贡献

游客

积分
46
发表于 2015-11-20 09:14:13     
本帖最后由 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是一个全局结构体变量,先试试没有问题的。今晚回去我看看
回复

使用道具 举报

19

积分

0

威望

0

贡献

游客

积分
19
发表于 2015-11-20 09:40:50     
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];
};      程序中没有找到这个是怎么处理的,好像是没有定义 没有处理啊
回复

使用道具 举报

46

积分

0

威望

0

贡献

游客

积分
46
发表于 2015-11-20 12:06:15     
k693277161 发表于 2015-11-20 09:40
我找到了广播包的结构体 应该是这个
///Advertising report structure
struct adv_report

那这样就是没有了,或者没有把接口提供出来。:(
回复

使用道具 举报

400

积分

0

威望

0

贡献

注册会员

Rank: 8Rank: 8

积分
400
QQ
发表于 2016-1-6 15:03:34     
在进行广播扫描之后,会得到响应消息:GAP_DEV_INQ_RESULT_EVT
其中,响应消息对应的函数为
  1. int app_gap_dev_inq_result_handler(ke_msg_id_t const msgid,
  2.                                    struct gap_dev_inq_result_evt const *param,
  3.                                    ke_task_id_t const dest_id,
  4.                                    ke_task_id_t const src_id)
复制代码

可以看到在扫描响应后所带的param类型是 struct gap_dev_inq_result_evt
那么继续跟踪
  1. /// Device discovery event result
  2. struct gap_dev_inq_result_evt
  3. {
  4.     ///Number of responses
  5.     uint8_t nb_resp;
  6.     /// advertising report
  7.     struct adv_report adv_rep;
  8. };
复制代码

继续深入
  1. ///Advertising report structure
  2. struct adv_report
  3. {
  4.     ///Event type: Ref bluetooth core spec 4.0 Volume 6 Part B Chapter 2.3 Table 2.1
  5.     uint8_t        evt_type;
  6.     ///Advertising address type: public/random
  7.     uint8_t        adv_addr_type;
  8.     ///Advertising address value
  9.     struct bd_addr adv_addr;
  10.     ///Data length in advertising packet
  11.     uint8_t        data_len;
  12.     ///Data of advertising packet
  13.     uint8_t        data[ADV_DATA_LEN];
  14.     ///RSSI value for advertising packet
  15.     int8_t        rssi;
  16. };
复制代码

我想走到这一步你应该已经找到你想要的广播信息了
没个性,不签名!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表