关于CC2540 协议栈1.4.2的版本
时间:10-02
整理:3721RD
点击:
大家好,问两个问题,希望有时间的朋友们帮忙回答一下
1.调用GATT_WriteCharValue去使能从机的notify滞后于,从机一定有indication的应答吗?
2.这个版本的协议栈发送 Write no response命令应该怎么发?我写的代码如下,但是抓包抓不到任何东西,
好像没发出来,但是返回值是SUCCESS
bStatus_t snm_sampling_enable(void)
{
attWriteReq_t req;
bStatus_t res = FAILURE;
BLE_DEV *p = &(gDev[0]);
req.pValue = GATT_bm_alloc( p->ble_dev_conn_handle, ATT_WRITE_REQ, 1, NULL );
if( req.pValue != NULL )
{
req.handle = SNM_CUSTOM3_CMD_HANDLE;
req.len = sizeof(sampling_enable);
req.pValue = (uint8*)&sampling_enable[0];
req.cmd = 1;
req.sig = 0;
uint8 i;
printf("sampling on-command");
for(i=0;i<3;i++)
{
printf("%X ",*(req.pValue+i));
}
printf("\r\n");
res = GATT_WriteNoRsp(p->ble_dev_conn_handle,&req);
if(res != SUCCESS)
{
GATT_bm_free( (gattMsg_t *)&req, ATT_WRITE_REQ );
}
}else
{
res = bleMemAllocError;
}
return res;
}
3.上述代码中的
GATT_bm_alloc( p->ble_dev_conn_handle, ATT_WRITE_REQ, 1, NULL );
第三个参数根据什么设置?开启notify之后,再发送上述命令,会有20个字节的传感器数据发送过来,
这个时候这个NULL 是不是要改为20?
问题1我自己试过,从机一定会有write response。
问题2 我没有用你的代码,用我的代码试的总是发送失败,返回0x02, INVALIDPARAMETER,不清楚具体是哪个parameter有问题。
问题3 第三个参数是主机发送的数据的长度,想发送一个Byte就是1,想发送20个Byte就是20,跟从机发送回来的数据长度无关,最大也就是20。 NULL是第四个参数,没用过。
