CC2541断开连接后再也连接不上了
各位大侠:
请教一下
接收到一次数据就更改一下SNV,发现断开连接后再也连接不上了
代码如下:
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 8
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 8
uint8 TestData;
case SIMPLEPROFILE_CHAR6:
//获取连接句柄
//GAPRole_GetParameter(GAPROLE_CONNHANDLE, &nGUA_ConnHandle);
SimpleProfile_GetParameter( SIMPLEPROFILE_CHAR6, newChar6Value, &returnBytes );
if(returnBytes > 0)
{
if(TestData == 4)
TestData = 6;
else
TestData = 4;
osal_snv_write(0x93,1,&TestData);
SimpleProfile_SetParameter( SIMPLEPROFILE_CHAR6, returnBytes, newChar6Value );
}
break;
用安卓手机不断发送数据,然后再手机端断开蓝牙,出现的情况如下:
1、安卓7.0 + 协议栈 1.4.2.2 + TestData 是全局变量 :断开蓝牙后再也连接不上了
2、安卓7.0 + 协议栈 1.4.2.2 + TestData 是局部变量 :断开蓝牙后再连接,正常
3、安卓5.1 + 协议栈 1.4.2.2 :断开蓝牙后再连接,正常
4、协议栈 1.3.2 :断开蓝牙后再连接,正常
就第一个情况断开蓝牙后,再也连接不上了,哪怕重启cc2541一样连接不上;必须重新烧一次程序也可以连接上
TestData 作为全局变量,我定义在simpleBLEPeripheral.c的最前面
TestData 作为局部变量,我定义在前面的大括号内。
各位大侠,请问知道是什么原因吗
谢谢!
补充一下:
安卓7.0连接不上,显示没找到服务;CC2541已可以进入”case GAPROLE_CONNECTED:”这里
安卓7.0连接不上后,改用安卓5.1是可以连接的
连接不上的时候,广播有正常吧?
已可以进入”case GAPROLE_CONNECTED证明已经连接了,那你的问题是不是应该改成device发不出服务信息,还有一种可能是发出一部分服务信息,就自然断开连接了,不知道你是哪种情况,一可以抓包看看,二可以断点调试。看看断开连接程序停在哪里
我遇到了同样问题,我写的字节多一点,一次是16个字节,写了几十次之后,断开蓝牙就连接不上了7.0安卓手机,5.0等安卓手机可以连接通讯;我用的1.4.2.2协议栈;我用局部变量数组还是全局数组都是一样的效果
你好 我的设备一开始可以连上 后来连不上了 用sniffer抓包 没有广播,这种现象出现的原因不确定,多个设备,有的充完电会出现这种情况,但我试了其他设备,充完电后一样正常连接,把电池拿下来再焊上去,又好了,但连不上不发广播的这种按键什么的都正常使用,现在不确定是程序的原因还是硬件的问题,协议栈是1.4.2.