bool_t nxt_temp_sensor_measure()

in ev3-api/src/ev3api_sensor.c [504:524]


bool_t nxt_temp_sensor_measure(sensor_port_t port, float *temp) {
	ER ercd;

	CHECK_PORT(port);
	CHECK_COND(ev3_sensor_get_type(port) == NXT_TEMP_SENSOR, E_OBJ);
	CHECK_COND(*pI2CSensorData[port].status == I2C_TRANS_IDLE, E_OBJ);

    //syslog(LOG_EMERG, "TEMP RAW: 0x%x 0x%x", pI2CSensorData[port].raw[0], pI2CSensorData[port].raw[1]);
    int16_t raw = pI2CSensorData[port].raw[0];
    raw = ((raw < 128 ? raw : raw - 256) << 4) | ((pI2CSensorData[port].raw[1] >> 4) & 0xF);
    *temp = raw * 0.0625f;

	ercd = start_i2c_transaction(port, 0x4c, "\x0", 1, 2);
	assert(ercd == E_OK);

	return true;

error_exit:
	syslog(LOG_WARNING, "%s(): ercd %d", __FUNCTION__, ercd);
	return false;
}