Microchip® Advanced Software Framework

temperature.c File Reference
#include <string.h>
#include "compiler.h"
#include "FreeRTOS.h"
#include "temperature.h"
#include "datalog.h"
#include "shell.h"
#include "board.h"
#include "gpio.h"
#include "adc.h"
#include "sensor.h"
#include "config_file.h"
#include "fsaccess.h"
#include "BasicSMTP.h"

Macros

#define SENSOR_TEMP_CONFIG_FILE   "A:/CFG/TEMP.TXT"
 
#define TEMPERATURE_GETCONF_MAXLEN   64
 

Functions

bool b_temperature_get_value (xLogDef *pxLog)
 Get the current temperature value. More...
 
bool b_temperature_init (void)
 Init the temperature channel. More...
 
eExecStatus e_temperature_get_config (signed portCHAR **ppcStringReply)
 Get the temperature sensor config. More...
 
eExecStatus e_temperature_set_config (signed portCHAR **ppcStringReply, int ac, signed portCHAR *av[])
 Set the sensor config. More...
 
int sprintf (char *out, const char *format,...)
 

Variables

static volatile avr32_adc_t * adc = (volatile avr32_adc_t *) &AVR32_ADC
 
static bool b_temp_alarm = pdFALSE
 
static bool b_temp_alarm_max = pdFALSE
 
static bool b_temp_alarm_min = pdFALSE
 
static int l_temp_max = 100
 
static int l_temp_min = -50
 
const unsigned short temperature_code []
 The following table give the correspondance between the ADC code and the temperature Each elements of the table corresponds to an ADC code value. More...
 
unsigned int ul_temp_lograte = 5
 
xSemaphoreHandle xCFGMutex
 

#define SENSOR_TEMP_CONFIG_FILE   "A:/CFG/TEMP.TXT"

Path for the config file

Referenced by b_temperature_init(), and e_temperature_set_config().

#define TEMPERATURE_GETCONF_MAXLEN   64

Max string length of a get config.

Referenced by e_temperature_get_config().

bool b_temperature_get_value ( xLogDef pxLog)

Get the current temperature value.

Parameters
pxLoga Log structure.
Returns
true upon success, false if error.

References adc, adc_disable(), adc_enable(), adc_get_value(), adc_start(), b_temp_alarm, b_temp_alarm_max, b_temp_alarm_min, index, l_temp_max, l_temp_min, NULL, LogDef::pcStringLog, pdFALSE, pdTRUE, LogDef::pfFreeStringLog, pvPortMalloc(), sprintf(), temperature_code, v_SMTP_Post, and vPortFree().

Referenced by b_sensor_get_value().

bool b_temperature_init ( void  )
eExecStatus e_temperature_get_config ( signed portCHAR **  ppcStringReply)

Get the temperature sensor config.

Parameters
ppcStringReplyInput/Output. The response string. NEVER NULL AS INPUT. A malloc for the response string is performed here; the caller must free this string.
Returns
the status of the command execution.

References b_temp_alarm, l_temp_max, l_temp_min, NULL, pdTRUE, pvPortMalloc(), SHELL_ERRMSG_MEMALLOC, SHELL_EXECSTATUS_KO, SHELL_EXECSTATUS_OK, sprintf(), TEMPERATURE_GETCONF_MAXLEN, and ul_temp_lograte.

eExecStatus e_temperature_set_config ( signed portCHAR **  ppcStringReply,
int  ac,
signed portCHAR *  av[] 
)

Set the sensor config.

Parameters
ppcStringReplyInput/Output. The response string. NEVER NULL AS INPUT.
acInput. Number of args
avInput. pointer to args
Returns
the status of the command execution.

References b_temp_alarm, config_file_set_value(), l_temp_max, l_temp_min, NULL, pdFALSE, pdTRUE, SENSOR_MSG_ALARM_OFF, SENSOR_MSG_ALARM_ON, SENSOR_MSG_CONFIG_SET, SENSOR_TEMP_CONFIG_FILE, SHELL_ERRMSG_CONFIGERROR, SHELL_EXECSTATUS_KO, SHELL_EXECSTATUS_OK_NO_FREE, and ul_temp_lograte.

int sprintf ( char *  out,
const char *  format,
  ... 
)

bool b_temp_alarm_max = pdFALSE
static

Alarm for max is pending ?

Referenced by b_temperature_get_value().

bool b_temp_alarm_min = pdFALSE
static

Alarm for min is pending ?

Referenced by b_temperature_get_value().

int l_temp_max = 100
static
int l_temp_min = -50
static
const unsigned short temperature_code[]
Initial value:
={
0x3B4,0x3B0,0x3AB,0x3A6,0x3A0,0x39A,0x394,0x38E,0x388,0x381,0x37A,0x373,
0x36B,0x363,0x35B,0x353,0x34A,0x341,0x338,0x32F,0x325,0x31B,0x311,0x307,
0x2FC,0x2F1,0x2E6,0x2DB,0x2D0,0x2C4,0x2B8,0x2AC,0x2A0,0x294,0x288,0x27C,
0x26F,0x263,0x256,0x24A,0x23D,0x231,0x225,0x218,0x20C,0x200,0x1F3,0x1E7,
0x1DB,0x1CF,0x1C4,0x1B8,0x1AC,0x1A1,0x196,0x18B,0x180,0x176,0x16B,0x161,
0x157,0x14D,0x144,0x13A,0x131,0x128,0x11F,0x117,0x10F,0x106,0xFE,0xF7,
0xEF,0xE8,0xE1,0xDA,0xD3,0xCD,0xC7,0xC0,0xBA,0xB5,0xAF,0xAA,0xA4,0x9F,
0x9A,0x96,0x91,0x8C,0x88,0x84,0x80,0x7C,0x78,0x74,0x71,0x6D,0x6A,0x67,
0x64,0x61,0x5E,0x5B,0x58,0x55,0x53,0x50,0x4E,0x4C,0x49,0x47,0x45,0x43,
0x41,0x3F,0x3D,0x3C,0x3A,0x38}

The following table give the correspondance between the ADC code and the temperature Each elements of the table corresponds to an ADC code value.

The index in the table give the corresponding temperature (inC) with the following formula : Tempeature=index-20. table[O] corresponds to -20C temperature code The following table gives the ADC code for VCC=3.3V and Aref=AVcc

Referenced by b_temperature_get_value().

unsigned int ul_temp_lograte = 5
xSemaphoreHandle xCFGMutex

The CFG system mutex.