diff -r 000000000000 -r 88d965579617 main/task_ds18b20.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main/task_ds18b20.h Tue Oct 08 12:00:31 2019 +0200 @@ -0,0 +1,54 @@ + +/** + * @file task_ds18b20.h + * @brief The FreeRTOS task to query the DS18B20 sensors on one or two + * one-wire busses. Each bus must have only one sensor. That way + * we don't need to care about the DS18B20 internal ROM address. + * The task will update the DS18B20_State structure. + */ + +#ifndef _TASK_DS18B20_H +#define _TASK_DS18B20_H + +/* + * Error codes in this task + */ +#define DS18B20_ERR_NONE 0 ///< No errors +#define DS18B20_ERR_NOSENSOR 1 ///< No sensor detected +#define DS18B20_ERR_TOOMANY 2 ///< Too many sensors +#define DS18B20_ERR_CRC 3 ///< CRC read error +#define DS18B20_ERR_READ 4 ///< Generic read error + + +/** + * @brief Structure containing the variables for the DS18B20 task. + */ +typedef struct { + bool bottle_valid; ///< Bottle sensor valid reading. + double bottle_temperature; ///< Current bottle temperature. + int bottle_error; ///< Bottle error number. +} DS18B20_State; + + + +/** + * @brief Request a new measurement + */ +void request_ds18b20(void); + + +/** + * @brief Measurement ready state + * @return Returns true if the temperature measurements are ready + */ +bool ready_ds18b20(void); + + +/** + * @brief The FreeRTOS task to update the DS18B20 temperature sensors on request. + */ +void task_ds18b20(void *); + + +#endif +