/*********************************************************************
 * @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);
    }
  }
}