Esempio n. 1
0
static THD_FUNCTION (ThreadPoller, arg) {
	(void) arg;

	char out[9];
	chRegSetThreadName("poller");
	while (TRUE) {
		if (bmp085_status == 0) {
			PollerData.temp = bmp085_read_temp();
			PollerData.press = bmp085_read_press();
//			PollerData.uTime = rtcGetTimeUnixSec(&RTCD1);
			chsnprintf(out, sizeof(out), "%4.2f", PollerData.press/133.322);
			lcd5110SetPosXY(30, 0);
			lcd5110WriteText(out);
			chsnprintf(out, sizeof(out), "%4.2f", PollerData.temp/10.0);
			lcd5110SetPosXY(30, 1);
			lcd5110WriteText(out);
		}
		chThdSleepMilliseconds(POLLER_TIMEOUT);
	}

	return 0; // never returns
}
Esempio n. 2
0
void baro_periodic(void) {
  // check that nothing is in progress
  if (baro_trans.status == I2CTransPending) return;
  if (baro_trans.status == I2CTransRunning) return;
  if (!i2c_idle(&i2c2)) return;

  switch (baro_board.status) {
  case LBS_UNINITIALIZED:
    baro_board_send_reset();
    baro_board.status = LBS_REQUEST;
    baro.status = BS_RUNNING;
    break;
  case LBS_REQUEST:
    bmp085_request_pressure();
    baro_board.status = LBS_READ;
    break;
  case LBS_READ:
    if (baro_eoc()) {
      bmp085_read_pressure();
      baro_board.status = LBS_READING;
    }
    break;
  case LBS_REQUEST_TEMP:
    bmp085_request_temp();
    baro_board.status = LBS_READ_TEMP;
    break;
  case LBS_READ_TEMP:
    if (baro_eoc()) {
      bmp085_read_temp();
      baro_board.status = LBS_READING_TEMP;
    }
    break;
  default:
    break;
  }

}