我正在使用 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 示例代码作为参考,但我看不到我做了什么错。