/********************************************************************* * @fn sensorTaskFxn * * @brief The task loop of the temperature readout task * * @return none */ static void sensorTaskFxn(UArg a0, UArg a1) { typedef union { struct { uint16_t tempTarget, tempLocal; } v; uint16_t a[2]; } Data_t; // Register task with BLE stack ICall_registerApp(&sensorSelfEntity, &sensorSem); // Initialize the task sensorTaskInit(); // Deactivate task (active only when measurement is enabled) Task_setPri(Task_handle(&sensorTask), -1); // Task loop while (true) { if (sensorConfig == ST_CFG_SENSOR_ENABLE) { Data_t data; // Read data sensorTmp007Enable(true); delay_ms(TEMP_MEAS_DELAY); sensorTmp007Read(&data.v.tempLocal, &data.v.tempTarget); sensorTmp007Enable(false); // Update GATT IRTemp_setParameter( SENSOR_DATA, SENSOR_DATA_LEN, data.a); // Next cycle delay_ms(sensorPeriod - TEMP_MEAS_DELAY); } else { delay_ms(SENSOR_DEFAULT_PERIOD); } } }
/********************************************************************* * @fn sensorTaskFxn * * @brief The task loop of the humidity readout task * * @return none */ static void sensorTaskFxn(UArg a0, UArg a1) { typedef union { struct { uint16_t rawTemp, rawHum; } v; uint8_t a[2]; } Data_t; // Initialize the task sensorTaskInit(); // Deactivate task (active only when measurement is enabled) Task_setPri(Task_handle(&sensorTask), -1); // Task loop while (true) { if (sensorConfig == ST_CFG_SENSOR_ENABLE) { Data_t data; // 1. Start temperature measurement sensorHdc1000Start(); delay_ms(HUM_DELAY_PERIOD); // 2. Read data sensorHdc1000Read(&data.v.rawTemp, &data.v.rawHum); // 3. Send data Humidity_setParameter( SENSOR_DATA, SENSOR_DATA_LEN, data.a); // 4. Wait until next cycle delay_ms(sensorPeriod - HUM_DELAY_PERIOD); } else { delay_ms(SENSOR_DEFAULT_PERIOD); } } }