蓝牙主机连接问题
你好:
有几个问题需要请教下:
1、主机怎么能搜到从机的广播数据,并且获得从机广播数据以及从机地址
2、主机的使能通知和从机消息接收是如下程序么?
使能通知
uint8 ValueBuf[2];
gattPrepareWriteReq_t req;
req.handle = 0x0039;
req.len = 2;
ValueBuf[0] = 0x01;
ValueBuf[1] = 0x00;
req.offset = 0;
req.pValue = osal_msg_allocate(2);
osal_memcpy(req.pValue,ValueBuf,2);
GATT_WriteLongCharValue( simpleBLEConnHandle, &req, simpleBLETaskId );
HalUARTWrite(0,"enable notic\n",10 );
return(events ^ ENABLE_NOTICE_EVT );
从机通知消息接收
else if ( ( pMsg->method == ATT_HANDLE_VALUE_NOTI ) ) //通知
{
if( pMsg->msg.handleValueNoti.handle == 0x0038) //CHAR7的通知
{
HalUARTWrite(0,"NOTICE\n",7 );
uint8 i=0;
///////////////////////////////////////////////////////////////////////
if(pMsg->msg.handleValueNoti.value[0] == '*' &&
pMsg->msg.handleValueNoti.value[1] == '0' &&
pMsg->msg.handleValueNoti.value[2] == '0'
)
{
i++;
3、再有就是我的主从机直接可以连接,但是不能通信,请问是什么原因
yongcai,
1. 搜索GAP_DEVICE_INFO_EVENT, 就在这个case下面得到这些信息。
2. 是的。但是你GATT_WriteLongCharValue() 就不对了。关键部分类似下面:
req.sig = 0;
req.cmd = 0;
status = GATT_WriteCharValue(自己填参数);
3. 如2, 再不行再检查一下代码,再不行就空中抓包。