你好,
我们尝试在彼此之后直接发送两个广告,因为我们需要传输更多的数据,而不是在一个广告中适应。我们这样做了以下方式。
1.通过外部中断触发,收集数据。
2.完成后,使用app_advertise_start_msg_send()传输消息;
3.在.app_on_ble_powered回调中,我们开始计时器30ms。
4.执行定时器时,我们调用app_advertise_stop_op();
5.然后我们得到.app_on_adv_nonconn_complete回调与status gap_err_add_data_invalid,为什么是无效的?
发送(上面的第2号)看起来像这样:
struct gapm_start_advertise_cmd * cmd;
cmd = app_advertise_start_msg_create();
cmd-> op.code = gapm_adv_non_conn;
cmd-> op.addr_src = gapm_public_addr;
cmd-> op.renew_dur = 0;
cmd-> intv_min = llm_adv_interval_min_noncon_disc;// 160.
cmd-> intv_max = llm_adv_interval_min_noncon_disc;// 160.
cmd-> channel_map = 1;
cmd-> info.host.mode = gap_broadcaster_mode;
cmd-> info.host.adv_filt_policy = adv_allow_scan_any_con_any;
// ADV_MSG = 0201041B00AC00023B120000F0000000F1000010F00100F00F1F10F1F1F11A(在十六进制中)
memcpy(&cmd-> info.host.adv_data [0],&avd_msg,sizeof(adv_msg));
cmd-> info.host.adv_data_len = sizeof(adv_msg);// 28.
app_advertise_start_msg_send(cmd);
4.只需调用函数app_advertise_stop_op();(命令没有修改)。
什么是无效的,stop命令或广告命令?
问候
塞巴斯蒂安
嗨塞巴斯蒂安,
对不起,我需要更多信息。请告诉我 :
1)您为计划使用的项目是什么。
2)您如何意识到您的设备广告?使用以下代码设备在不可连接的模式下广告。我真的没有抓住你的意思是问题2.函数app_easy_gap_advertise_stop()它在定时器的回调中并停止广告,请使用它。
3)您使用的SDK版本是什么?
void user_app_adv_start(void)
{
//安排下一个广告数据更新
app_add_data_update_timer_used = app_easy_timer(app_add_data_update_to,avd_data_update_timer_cb);
struct gapm_start_advertise_cmd * cmd;
cmd = app_easy_gap_non_connectable_advertise_get_active();
//动态添加制造商特定数据
mnf_data_update();
app_add_ad_struct(cmd,&mnf_data,sizeof(struct mnf_specific_data_ad_structure));
//在广告期间设置深睡眠
app_easy_gap_non_connectable_advertise_start();
}
启动非可连接广告
布罗尔,
sts_dialog。
嗨sts_dialog,
我们发现了这个问题,问题是我们解释了调试输出错误。调试输出由输出引脚上的许多脉冲组成。但由于0x40的偏移量,我们减去了0x39,以便获得第一个错误消息的一个脉冲等。也许你已经看到了我们的问题。但是,这使我们的调试引脚Bump 11次指示GAP_ERR_ADV_DATA_INVALID,但实际上是GAP_ERR_CANCELED。所以没有错误。
问候
塞巴斯蒂安