谢谢,最后,它会工作。 一个问题: 如果我改变了“味精窗口- > = 5;”(setting to 5, works) to " msg->window = 50;" or " msg->window = 500", it didn't catch adv indication, but call user_scanning_completed(defined in user callback file) immediately, why? what is the meaning of window here?
你读过海浪里维埃拉差距规范(RW-BLE-GAP-IS.pdf) ?复制和粘贴:
4.2通用接口
管理器提供了一组通用的差距的命令,完成下面的命令完成事件
消息。
4.2.1 GAPM_CMP_EVT准备
参数:
类型参数描述
uint8_t操作GAPM操作代码(见表23)
uint8_t地位地位的操作(见表39)
描述:
这是通用的事件为GAP操作完成。所有操作操作时触发此事件
完成了
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -剪断- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
因此,GAPM_CMP_EVT消息有两个参数:操作和状态。刚刚完成的操作参数是什么命令,和地位是如何或为什么它完成。
状态码:
值错误描述
0 x00 GAP_ERR_NO_ERROR没有错误
0 x40 GAP_ERR_INVALID_PARAM无效的参数集
0 x41 GAP_ERR_PROTOCOL_PROBLEM问题协议交换,得到意想不到的反应
0×GAP_ERR_NOT_SUPPORTED请求不支持的软件配置
0 x43 GAP_ERR_COMMAND_DISALLOWED请求不允许当前状态。
0 x44 GAP_ERR_CANCELED请求的操作取消。
0 x45 GAP_ERR_TIMEOUT请求的操作超时。
0 x46 GAP_ERR_DISCONNECTED链接连接在操作。
0开发GAP_ERR_NOT_FOUND x47搜索算法完成了,但是没有结果
0 x48 GAP_ERR_REJECTED请求被同伴拒绝的设备
0 x49 GAP_ERR_PRIVACY_CFG_PB隐私问题的配置
0 x4a GAP_ERR_ADV_DATA_INVALID重复或无效的广告数据
表39:差距错误代码
除此之外,GAPM_CMP_EVT消息不给任何更多信息。
如果你收到了广告活动感兴趣,这是GAPM_ADV_REPORT_IND。
你的问题有点模糊;或许你可以解释一下你的意思“获取结果. .”。什么结果?
谢谢。
谢谢你的回复。
扫描后,我想要找到的设备列表,此外,设备名称,rssi、地址等。
顺便说一下,我在GAPM_ADV_REPORT_IND设置一个断点,但没有看到它。
请注意,扫描是观察者模式。
味精- >模式= GAP_OBSERVER_MODE;/ / GAP_GEN_DISCOVERY
味精- > op。代码= GAPM_SCAN_ACTIVE;
味精- > op。addr_src = GAPM_PUBLIC_ADDR;
味精- > filter_duplic = SCAN_FILT_DUPLIC_EN;
嗨achao1104,
把你的断点在gapm_adv_report_ind_handler app_task ()。c文件,你将能够提取adv_report结构体的成员。如果你还不得到一个指示你可以把需求方主机实现(需要修改)和断点在同一个函数,只是为了确保你成功配置主机应用程序。
由于MT_dialog
事实上,我有放置断点gapm_adv_report_ind_handler app_task ()。c文件,但它不是。顺便说一下,我用最新的sdk5,请点我“需求方主机实现”(文件夹路径),确保我们说同样的事情。
我下载dsp、不同的是,我用最新sd5和* *味精- >模式= GAP_OBSERVER_MODE * *模式中,我没有看到断点。请帮助。
我也改变了角色从GAP_OBSERVER_SCA GAP_CENTRAL_MST和倒退,但仍然不工作。请帮助,我花了几天,请帮助。
静态常量struct gapm_configuration user_gapm_conf = {
/ /。= GAP_OBSERVER_SCA角色,
.role = GAP_CENTRAL_MST,
.irk = {0 x00 0 x00 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00},
/ / /设备外观(0 x0000 -未知的外观)
/ /填写根据https://developer.bluetooth.org/gatt/characteristics/Pages/Characteristi..。
.appearance = 0,
.appearance_write_perm = GAPM_WRITE_DISABLE,
.name_write_perm = GAPM_WRITE_DISABLE,
/ / /最大MTU
.max_mtu = 23日
这是发送:
scan_cb app_easy_timer (300);
struct gapm_start_scan_cmd *味精= (struct gapm_start_scan_cmd *) KE_MSG_ALLOC (gapm_start_scan_cmd, TASK_GAPM, TASK_APP gapm_start_scan_cmd);
/ /最大对等连接
/ /味精- >模式= GAP_GEN_DISCOVERY;/ /
味精- >模式= GAP_OBSERVER_MODE;
味精- > op。代码= GAPM_SCAN_PASSIVE;
味精- > op。addr_src = GAPM_PUBLIC_ADDR;
味精- > filter_duplic = SCAN_FILT_DUPLIC_EN;
味精- >间隔= 100;
味精窗口- > = 5000;
ke_msg_send(味精);
空白scan_cb(空白)
{
struct gapm_cancel_cmd * cmd = (struct gapm_cancel_cmd *) KE_MSG_ALLOC (gapm_cancel_cmd, TASK_GAPM, TASK_APP gapm_cancel_cmd);
cmd - >操作= GAPM_SCAN_PASSIVE;/ /设置GAPM_SCAN_PASSIVE
ke_msg_send (cmd); / /发送消息
}
静态常量struct app_callbacks user_app_callbacks = {
.app_on_connection =零,
.app_on_disconnect =零,
.app_on_update_params_rejected =零,
.app_on_update_params_complete =零,
.app_on_set_dev_config_complete = default_app_on_set_dev_config_complete,
.app_on_adv_undirect_complete =零,
.app_on_adv_direct_complete =零,
.app_on_db_init_complete = default_app_on_db_init_complete,
.app_on_scanning_completed = user_scanning_completed,
.app_on_adv_report_ind = user_adv_report_ind,
#如果(BLE_APP_SEC)
.app_on_pairing_request =零,
.app_on_tk_exch_nomitm =零,
.app_on_irk_exch =零,
.app_on_csrk_exch =零,
.app_on_ltk_exch =零,
.app_on_pairing_succeded =零,
.app_on_encrypt_ind =零,
.app_on_mitm_passcode_req =零,
.app_on_encrypt_req_ind =零,
# endif / / (BLE_APP_SEC)
};
在宣传方面:
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/ / - - - - - - - - - - - - -NON-CONNECTABLE &无向广告相关的常见—
/ / /广告服务数据
/ / /广告广告类型标志,不得在广告数据集
#定义USER_ADVERTISE_DATA \“\ x03”
ADV_TYPE_COMPLETE_LIST_16BIT_SERVICE_IDS \
ADV_UUID_DEVICE_INFORMATION_SERVICE
/ / /广告数据长度,最大28字节,3个字节设置保留
#定义USER_ADVERTISE_DATA_LEN (sizeof (USER_ADVERTISE_DATA) 1)
/ / /广告名称
#定义USER_DEVICE_NAME (“”)
/ / /广告名称长度
#定义USER_DEVICE_NAME_LEN (sizeof (USER_DEVICE_NAME) 1)
/ / /扫描响应数据
#定义USER_ADVERTISE_SCAN_RESPONSE_DATA”“
/ / /扫描响应数据长度,最大的31个字节
#定义USER_ADVERTISE_SCAN_RESPONSE_DATA_LEN (sizeof (USER_ADVERTISE_SCAN_RESPONSE_DATA) 1)
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/ / - - - - - - - - - - - -直接通知——有关的- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
静态常量struct advertise_configuration user_directed_advertise_conf = {
/ / /广告操作类型。
.advertise_operation = ADV_DIRECT,
/ / / BD地址源的设备:
.address_src = GAPM_PUBLIC_ADDR,
/ /地图/广告通道
.channel_map = 0 x7,
};
静态常量struct directed_advertise_configuration user_directed_advertise_target_address_conf = {
/ / / BD地址的设备
.addr = {0 0 x1, x2, x3, 0 x4, 0 x5, 0 x6},
/ / /地址类型设备0 =公共/私人随机1 =
.addr_type = 0
};
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/ / - - - - - - - - - - - - - - - - - - - - - - param更新——————- - - - - - - - - - - - - - - - - - - - - - - -
静态常量struct connection_param_configuration user_connection_param_conf = {
/ / /连接间隔最小以祝福双槽(1.25)女士
/ / /使用宏MS_TO_DOUBLESLOTS从毫秒(ms)转换为双槽
.intv_min = MS_TO_DOUBLESLOTS (10),
/ / /连接间隔最大以祝福双槽(1.25)女士
/ / /使用宏MS_TO_DOUBLESLOTS从毫秒(ms)转换为双槽
.intv_max = MS_TO_DOUBLESLOTS (20),
/ / /延迟测量有关的事件
.latency = 0,
/ / /监理单位超时计时器的女士(10)
/ / /使用宏MS_TO_TIMERUNITS从毫秒(ms)转换到定时器单元
.time_out = MS_TO_TIMERUNITS (1250),
/ / /最小连接事件持续时间以祝福双槽(1.25)女士
/ / /使用宏MS_TO_DOUBLESLOTS从毫秒(ms)转换为双槽
.ce_len_min = MS_TO_DOUBLESLOTS (0)
/ / /最大连接事件持续时间以祝福双槽(1.25)女士
/ / /使用宏MS_TO_DOUBLESLOTS从毫秒(ms)转换为双槽
.ce_len_max = MS_TO_DOUBLESLOTS (0)
};
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/ / - - - - - - - - - - - - - - - - - - - -GAPM有关的- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
静态常量struct gapm_configuration user_gapm_conf = {
.role = GAP_PERIPHERAL_SLV,
.irk = {0 x00 0 x00 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00},
/ / /设备外观(0 x0000 -未知的外观)
/ /填写根据https://developer.bluetooth.org/gatt/characteristics/Pages/Characteristi..。
.appearance = 0,
.appearance_write_perm = GAPM_WRITE_DISABLE,
.name_write_perm = GAPM_WRITE_DISABLE,
/ / /最大MTU
.max_mtu = 23日
/ / /外围只有:* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
/ / /奴隶首选最少连接时间间隔测量ble双槽(1.25)女士
/ / /使用宏MS_TO_DOUBLESLOTS从毫秒(ms)转换为双槽
.con_intv_min = MS_TO_DOUBLESLOTS (10),
/ / /奴隶首选最大连接时间间隔测量ble双槽(1.25 ms)
/ / /使用宏MS_TO_DOUBLESLOTS从毫秒(ms)转换为双槽
.con_intv_max = MS_TO_DOUBLESLOTS (20),
/ / /奴隶优先连接延迟。它以连接事件跳过
.con_latency = 0,
/ / /奴隶首选联系单位监督超时计时器的女士(10)
/ / /使用宏MS_TO_TIMERUNITS从毫秒(ms)转换到定时器单元
.superv_to = MS_TO_TIMERUNITS (1000),
/ / /隐私设置一些字段(b1 =启用,0 b0 =禁用)
/ / / -[0]:隐私的支持
/ / / -[1]:多重键的支持(外围);如果启用,隐私的旗帜
/ / /只读。
/ / / -[2]:重新连接地址可见。
.flags = 0
};
请帮助
嗨achao,
SDK 3中的dsp实现,没有实现扫描仪在SDK 5中,我改变了app_scanning()函数来GAP_OBSEREVER_MODE下运作的,我能够抓住广告显示。你能把你的断点gapm_adv_report_ind_handler()在if语句和检查一次。也请尽量禁用复制数据包过滤检查如果这个给你任何麻烦。对作为扫描仪除了设置你的扫描参数,你设置你的设备的配置(角色)作为中央?如果你不能抓住需求方的广告显示应用程序可能有问题的广告。请试着运行一个简单的外围应用程序和抓住广告字符串与主机应用程序。
这就是我已经测试SDK5模板:
1)去user_config。h和改变.role GAP_OBSERVER_SCA
2)在user_callback_config更改默认on_config_complete函数和自定义函数,将开始扫描。
3)采取直接从需求方扫描功能的应用程序。
4)我能够抓住广告显示
您还可以使用智能片段工具来检查应用程序是否扫描。
由于MT_dialog
谢谢,你能发邮件给我你的密码吗?
bld2014@sohu.com
顺便说一下,我可以得到广告信息通过嗅探工具,所以它不应该是宣传方面的问题,我将检查工具的代码片段,快乐的周末,谢谢
谢谢,最后,它会工作。
一个问题:
如果我改变了“味精窗口- > = 5;”(setting to 5, works) to " msg->window = 50;" or " msg->window = 500", it didn't catch adv indication, but call user_scanning_completed(defined in user callback file) immediately, why? what is the meaning of window here?
scan_cb app_easy_timer (300);
struct gapm_start_scan_cmd *味精= (struct gapm_start_scan_cmd *) KE_MSG_ALLOC (gapm_start_scan_cmd, TASK_GAPM, TASK_APP gapm_start_scan_cmd);
/ /最大对等连接
味精- >模式= GAP_OBSERVER_MODE;
味精- > op。代码= GAPM_SCAN_PASSIVE;
味精- > op。addr_src = GAPM_PUBLIC_ADDR;
/ /味精- > filter_duplic = SCAN_FILT_DUPLIC_EN;
味精- > filter_duplic = SCAN_FILT_DUPLIC_DIS;
味精- >间隔= 10;
味精窗口- > = 5;
ke_msg_send(味精);
嗨achao1104,
窗口显示多久扫描仪扫描,它必须小于间隔(多长时间你的设备将扫描),如果你设置窗口大于间隔(间隔10,窗口50或500)不会得到任何东西。间隔扫描窗口加上时间,你的设备将扫描不同渠道之间吃闲饭。
由于MT_dialog