Files @ 02c66b160d15
Branch filter:

Location: therm-ng/src/tempsense.c

Ethan Zonca
Add actual support for different temp units to tempsense
//
// TempSense: read temperature from TC, RTD, or NTC
//

#include "tempsense.h"
#include "flash.h"
#include "ssd1306/ssd1306.h"
#include "max31856/max31856.h"


// Initialize temperature sensor
void tempsense_init(void)
{
	// TODO: Rework SPI stuff... init the port in a sharedlib then pass ref to display and tempsense

	max31856_init(spi_get(), TEMPSENSE_MAX_CS_PORT, TEMPSENSE_MAX_CS_PIN, 0);

	// Maybe don't perform temp sensor setup in here, but in readtemp?
	// what happens if the user changes the tempsense type while running?
	// we need to re-init...


}


// Request reading from configured temperature sensor
void tempsense_readtemp(void)
{

	switch(flash_getsettings()->val.sensor_type)
	{
		case SENSOR_TC_K:
		case SENSOR_TC_E:
		case SENSOR_TC_N:
		case SENSOR_TC_R:
		case SENSOR_TC_S:
		case SENSOR_TC_T:
		{
			// Read MAX31856
			max31856_process();
		} break;

		case SENSOR_NTC:
		{
			// Read analog value from internal ADC, linearize the reading, etc
		} break;

	}

	// either return latest reading from DMA loop (NTC, etc)
	// or initiate a blocking read and return it.
	// Need to gracefully handle the timeout...
}


// Get latest temperature in requested units
float tempsense_gettemp(void)
{
	float temp_converted = max31856_latest_temp();

	if(flash_getsettings()->val.temp_units == TEMP_UNITS_FAHRENHEIT)
		temp_converted = temp_converted * 1.8f + 32.0f;

	return temp_converted;
}