平台高通8260,Android4.0:
最近项目组手机发现,手机被传入文件后,在传入几个文件时就停止在某一进度条。并且内核一直在打印h4_recv: Unknown HCI packet type ,其实一直就怀疑是频繁打开关闭串口导致的。
今天终于证实了。
之前机制是这样的:
首先申请Host_wake中断类型为高电平。当第一次打开蓝牙时, Host_wake =1时,此时产生中断。然后就轮番改变中断类型。在中断函数中,都会打开或者关闭串口。这就是问题之所在。当我们bt 给 cpu传数据的时候。在我们在传输的过程中,再打开、关闭串口会导致bt 中的buf溢出。这就导致了数据的帧检测位出问题:rfcomm_recv_frame:bad checksum in packet。
我们的做法是:传输过程中不再让它打开或关闭串口就ok了。