我正在使用 CC1350处理 BLE 应用程序,当我从传感器读取数据时工作正常,但当我设置为通知它时,不再更新该值
bStatus_t ADXL_setParameter(uint8_t param, uint8_t len, void *value)
{
bStatus_t ret = SUCCESS;
switch (param)
{
case SENSOR_DATA:
if (len == SENSOR_DATA_LEN)
{
memcpy(sensorData, value, SENSOR_DATA_LEN);
// See if Notification has been enabled
ret = GATTServApp_ProcessCharCfg(sensorDataConfig, sensorData, FALSE,
sensorAttrTable,
GATT_NUM_ATTRS(sensorAttrTable),
INVALID_TASK_ID, sensor_ReadAttrCB);
}
else
{
ret = bleInvalidRange;
}
break;
case SENSOR_CONF:
if (len == sizeof(uint8_t))
{
sensorCfg = *((uint8_t*)value);
}
else
{
ret = bleInvalidRange;
}
break;
case SENSOR_PERI:
if (len == sizeof(uint8_t))
{
sensorPeriod = *((uint8_t*)value);
}
else
{
ret = bleInvalidRange;
}
break;
default:
ret = INVALIDPARAMETER;
break;
}
return (ret);
}
这是设置参数的代码,这里是我读取传感器的任务循环
static void sensorTaskFxn(UArg a0, UArg a1)
{
uint8_t data[SENSOR_DATA_LEN];
if(!adxlRegistered){
DELAY_MS(100);
}
// Register task with BLE stack
ICall_registerApp(&sensorSelfEntity, &sensorSem);
// Deactivate task (active only when measurement is enabled)
Task_setPri(Task_handle(&sensorTask), -1);
// Task loop
while (true)
{
data[0] = 0;
if (sensorConfig == ST_CFG_SENSOR_ENABLE)
{
// Read data
ADXL_read(data);
// Update GATT
ADXL_setParameter(SENSOR_DATA, SENSOR_DATA_LEN, data);
// Next cycle
DELAY_MS(100000);
}
else
{
DELAY_MS(SENSOR_DEFAULT_PERIOD);
}
}
}
我使用了 SensorTag 示例代码作为参考,但我看不到我做了什么错。