在config.h中设置掉线回连次数为0xff时不一定会一直回连,所以要手动进行设置
#define BT_TIME_OUT_RECONNECT_TIMES 0xff //掉线回连次数
首先创建标志位
bsp_bt.h下
这个标志位用来判断有没有处于掉线状态
u8 cnt1;
然后在plugin.h下
这个标志位用来计时
u16 plugin_tmr5ms_cnt;
在掉线时将cnt1置1,连接时置0。即在bsp_bt.c中操作,
void bt_emit_notice(uint evt, u32 param),这个函数是处理底层发给应用层的消息
case BT_NOTICE_LOSTCONNECT:
cnt1=1;
printf("cnt1= 1\n");
break;
func_bt_disp_status()中
case BT_STA_CONNECTED:
cnt1=0;
在bsp_key.h下定义一个事件
#define EVT_5000MS_RECON 0x7e3//0x7e3是从前面顺延下来的
然后在plugin.c下的5ms中断进行处理
每5s发一次消息,进行回连
AT(.com_text.plugin)
void plugin_tmr5ms_isr(void)
{
plugin_tmr5ms_cnt++;
if ((plugin_tmr5ms_cnt % 1000) == 0) {
if(cnt1==1){
msg_enqueue(EVT_5000MS_RECON);
printf("lost\n");
}
}
}
在func_message()中添加
case EVT_5000MS_RECON:
bt_connect(); //回连函数
break;