关于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是第四个参数,没用过。