最近工作中处理蓝牙发送图片时的一个BUG。
A:NOKIA2330手机。
B:NOKIA5530手机。
C:QSC6240平台下的手机。
1:A和C能正常对发图片。
2:C给B发送图片成功。
3:B给C发送图片失败。
分析LOG发现:
1使用的是OPP协议。
2使用的是FTP协议。
3使用的是BIP协议。
高版本的蓝牙协议似乎提供了一个专门传送IMG的BIP协议。
分析发现收发过程的MSG如下:
SEND: AEEBT_BIP_EVT_CONNECTED
AEEBT_BIP_EVT_GET_CAPABILITIES_DONE
AEEBT_BIP_EVT_SEND_BLOCK_DONE................
AEEBT_BIP_EVT_PUT_IMAGE_DONE
AEEBT_BIP_EVT_DISCONNECTED
RECEIVE: AEEBT_BIP_EVT_CONN_REQ
AEEBT_BIP_EVT_GET_CAPABILITIES_REQ_INITIAL
AEEBT_BIP_EVT_GET_CAPABILITIES_REQ_CLEANUP
AEEBT_BIP_EVT_PUT_IMAGE_REQ_INITIAL
AEEBT_BIP_EVT_DISCONNECTED
后来发现RECEIVE失败是因为AEEBT_BIP_EVT_PUT_IMAGE_REQ_INITIAL 之后有一个TIMER
高通默认是1S, 如果1S内用户没做选择是否接收,就会自动DISCONNECT(如果设置成自动接收就不会出现这个问题)。
#define BT_PF_BIP_OPS_TMO 10000 /* ms */
后来将这个TIMER设置为10S以方便用户做出选择后,BUG修正。