你好,
我正在尝试从DA14580开始一个连接到另一个BLE设备。
我从鞍骨项目开始,并修改了user_app_init()函数,如下所示:
void user_app_init(void)
{
//初始化制造商特定数据
mnf_data_init();
default_app_on_init();
struct gapm_start_connection_cmd connect;
connect.nb_peers = 1;
connect.peers [0] .addr.addr [0] = 0x03;
connect.peers [0] .addr.addr [1] = 0xe5;
connect.peers [0] .addr.addr [2] = 0x5b;
connect.peers [0] .addr.addr [3] = 0x16;
connect.peers [0] .addr.addr [4] = 0x4a;
connect.peers [0] .addr.addr [5] = 0x54;
connect.peers [0] .addr_type = 0;//上市
connect.con_intv_min = 100;
connect.con_intv_max = 100;
connect.ce_len_min = 0x0;
connect.ce_len_max = 0x5;
connect.con_latency = 0;
connect.op.addr_src = gapm_public_addr;
connect.peers [0] .addr_type = gapm_public_addr;
connect.superv_to = 0x1f4; // 500 - > 5000毫秒;
connect.scan_interval = 0x180;
connect.scan_window = 0x160;
connect.op.code = gapm_connection_direct;
gapm_execute_connect_op(&connect);
}
我还添加了两个回调:
void user_app_scanning_completed(void)
{
ARCH_PUTS(“\ ncomplite”);
}
void user_on_adv_report_ind(struct gapm_adv_report_ind const *报告)
{
Arch_puts(“\ nok”);
}
当我运行此代码时,否都不调用回调,并且它会触发异常。
我做错什么了?
它是连接的好方法吗?
- - - - 更新 - - - - - -
好的,我改变了邮件的静态分配:
struct gapm_start_connection_cmd * connect = app_connect_start_msg_create();
并替换gapm_execute_connect_op()
经过
KE_MSG_SEND(CONNECT);
我,不再有例外,但代码仍然没有什么......
---------------------------
谢谢
问候
嗨s.miermont,
鞍骨项目是一个外设项目,作为一个外设无法连接到中央,只有中央可以发出GAPM_START_CONNECTION_COMMAND以连接到外围设备。您必须配置您的设备以充当中央。这可以通过在GAP_Central_mst中设置设备的角色来完成。完成后,您必须开始扫描,以便在GAPM_ADV_REPORT_IND_HANDLER中获取广告迹象(APP_ON_ADV_REPORT_INCH CLOSE)。当广告指示点击时,检查设备是否是要连接的设备,然后可以取消扫描过程,当扫描过程命中的结尾(在App_On_Scanning_Completed)中,您可以向设备发出连接命令想要连接。您可以通过DSP项目的主机侧查看如何从Central扫描和连接的实现。请看看以下函数,并在DSP项目中始终在主机方面进行。
- app_configuration_func() - >将设备设置为中心
- app_scanning() - >开始扫描
-app_connect() - >使用外设启动连接。
谢谢mt_dialog.
你好,
感谢您的回答。
我忘了写下我已经将config更改为gap_central_mst。
对不起,但我无法在我的SDK中找到DSPS项目。我可以在哪里 ?
谢谢
嗨s.miermont,
DSP不是SDK的一部分,而是参考设计。检查参考设计页面http://support.dialog-semicondiondiondum/connectivity/reference-designs.。
谢谢mt_dialog.
好,谢谢。它有助于。