HF Interface Wrapper 0.1.0-dev
Embedded C++ hardware abstraction layer
Loading...
Searching...
No Matches
BaseTemperature.h File Reference

Abstract base class for temperature sensor implementations in the HardFOC system. More...

#include "HardwareTypes.h"
#include <cstdint>
#include <string_view>
Include dependency graph for BaseTemperature.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  hf_temp_config_t
 Temperature sensor configuration structure. More...
 
struct  hf_temp_reading_t
 Temperature reading structure. More...
 
struct  hf_temp_sensor_info_t
 Temperature sensor information structure. More...
 
struct  hf_temp_statistics_t
 Temperature sensor statistics. More...
 
struct  hf_temp_diagnostics_t
 Temperature sensor diagnostics. More...
 
class  BaseTemperature
 Abstract base class for all temperature sensor implementations. More...
 

Macros

#define HF_TEMP_ERR_LIST(X)
 HardFOC Temperature sensor error codes.
 
#define TEMP_ERROR_ENUM(name, code, desc)   name = code,
 
#define X(NAME, VALUE, DESC)
 
#define HF_TEMP_CELSIUS_TO_FAHRENHEIT(celsius)   ((celsius) * 9.0f / 5.0f + 32.0f)
 Convert Celsius to Fahrenheit.
 
#define HF_TEMP_FAHRENHEIT_TO_CELSIUS(fahrenheit)   (((fahrenheit) - 32.0f) * 5.0f / 9.0f)
 Convert Fahrenheit to Celsius.
 
#define HF_TEMP_CELSIUS_TO_KELVIN(celsius)   ((celsius) + 273.15f)
 Convert Celsius to Kelvin.
 
#define HF_TEMP_KELVIN_TO_CELSIUS(kelvin)   ((kelvin) - 273.15f)
 Convert Kelvin to Celsius.
 
#define HF_TEMP_CONFIG_DEFAULT()
 Default temperature sensor configuration.
 

Typedefs

using hf_temp_threshold_callback_t
 Temperature threshold callback function type.
 
using hf_temp_reading_callback_t = void(*)(BaseTemperature* temp_sensor, const hf_temp_reading_t* reading, void* user_data)
 Temperature reading callback function type (for continuous monitoring)
 
using hf_temp_error_callback_t
 Temperature error callback function type.
 

Enumerations

enum  hf_temp_err_t {
  TEMP_SUCCESS = 0 , TEMP_ERR_FAILURE = 1 , TEMP_ERR_NOT_INITIALIZED = 2 , TEMP_ERR_ALREADY_INITIALIZED = 3 ,
  TEMP_ERR_INVALID_PARAMETER = 4 , TEMP_ERR_NULL_POINTER = 5 , TEMP_ERR_OUT_OF_MEMORY = 6 , TEMP_ERR_SENSOR_NOT_AVAILABLE = 7 ,
  TEMP_ERR_SENSOR_BUSY = 8 , TEMP_ERR_SENSOR_DISABLED = 9 , TEMP_ERR_SENSOR_NOT_READY = 10 , TEMP_ERR_READ_FAILED = 11 ,
  TEMP_ERR_INVALID_READING = 12 , TEMP_ERR_OUT_OF_RANGE = 13 , TEMP_ERR_TIMEOUT = 14 , TEMP_ERR_INVALID_RANGE = 15 ,
  TEMP_ERR_RANGE_TOO_NARROW = 16 , TEMP_ERR_RANGE_TOO_WIDE = 17 , TEMP_ERR_UNSUPPORTED_RANGE = 18 , TEMP_ERR_CALIBRATION_FAILED = 19 ,
  TEMP_ERR_NOT_CALIBRATED = 20 , TEMP_ERR_INVALID_CALIBRATION = 21 , TEMP_ERR_COMMUNICATION_FAILED = 22 , TEMP_ERR_CHECKSUM_FAILED = 23 ,
  TEMP_ERR_POWER_DOWN_FAILED = 24 , TEMP_ERR_POWER_UP_FAILED = 25 , TEMP_ERR_HARDWARE_FAULT = 26 , TEMP_ERR_OVERCURRENT = 27 ,
  TEMP_ERR_OVERVOLTAGE = 28 , TEMP_ERR_UNDERVOLTAGE = 29 , TEMP_ERR_OVERHEATING = 30 , TEMP_ERR_RESOURCE_BUSY = 31 ,
  TEMP_ERR_RESOURCE_UNAVAILABLE = 32 , TEMP_ERR_INSUFFICIENT_RESOURCES = 33 , TEMP_ERR_OPERATION_ABORTED = 34 , TEMP_ERR_OPERATION_PENDING = 35 ,
  TEMP_ERR_INVALID_STATE = 36 , TEMP_ERR_STATE_TRANSITION_FAILED = 37 , TEMP_ERR_DATA_CORRUPTION = 38 , TEMP_ERR_CONVERSION_FAILED = 39 ,
  TEMP_ERR_FILTERING_FAILED = 40 , TEMP_ERR_THRESHOLD_EXCEEDED = 41 , TEMP_ERR_INVALID_THRESHOLD = 42 , TEMP_ERR_MONITORING_FAILED = 43 ,
  TEMP_ERR_UNSUPPORTED_OPERATION = 44 , TEMP_ERR_DRIVER_ERROR = 45 , TEMP_ERR_UNKNOWN = 46 , TEMP_ERR_MAX = 47
}
 Temperature sensor error codes enumeration. More...
 
enum  hf_temp_sensor_type_t {
  HF_TEMP_SENSOR_TYPE_UNKNOWN = 0 , HF_TEMP_SENSOR_TYPE_INTERNAL , HF_TEMP_SENSOR_TYPE_EXTERNAL_DIGITAL , HF_TEMP_SENSOR_TYPE_EXTERNAL_ANALOG ,
  HF_TEMP_SENSOR_TYPE_THERMOCOUPLE , HF_TEMP_SENSOR_TYPE_RTD , HF_TEMP_SENSOR_TYPE_THERMISTOR , HF_TEMP_SENSOR_TYPE_INFRARED ,
  HF_TEMP_SENSOR_TYPE_MAX
}
 Temperature sensor types. More...
 
enum  hf_temp_state_t {
  HF_TEMP_STATE_UNINITIALIZED = 0 , HF_TEMP_STATE_INITIALIZED , HF_TEMP_STATE_ENABLED , HF_TEMP_STATE_READING ,
  HF_TEMP_STATE_ERROR , HF_TEMP_STATE_DISABLED , HF_TEMP_STATE_CALIBRATING , HF_TEMP_STATE_SLEEPING ,
  HF_TEMP_STATE_MAX
}
 Temperature sensor states. More...
 
enum  hf_temp_unit_t {
  HF_TEMP_UNIT_CELSIUS = 0 , HF_TEMP_UNIT_FAHRENHEIT , HF_TEMP_UNIT_KELVIN , HF_TEMP_UNIT_RANKINE ,
  HF_TEMP_UNIT_MAX
}
 Temperature measurement units. More...
 
enum  hf_temp_capabilities_t {
  HF_TEMP_CAP_NONE = 0x00 , HF_TEMP_CAP_THRESHOLD_MONITORING = 0x01 , HF_TEMP_CAP_CONTINUOUS_READING = 0x02 , HF_TEMP_CAP_CALIBRATION = 0x04 ,
  HF_TEMP_CAP_POWER_MANAGEMENT = 0x08 , HF_TEMP_CAP_SELF_TEST = 0x10 , HF_TEMP_CAP_ALARM_OUTPUT = 0x20 , HF_TEMP_CAP_HIGH_PRECISION = 0x40 ,
  HF_TEMP_CAP_FAST_RESPONSE = 0x80
}
 Temperature sensor capabilities flags. More...
 

Functions

constexpr std::string_view HfTempErrToString (hf_temp_err_t err) noexcept
 Convert temperature error code to string view.
 
bool IsTempInRange (float temperature, float min_temp, float max_temp) noexcept
 Check if temperature is within range.
 

Detailed Description

Abstract base class for temperature sensor implementations in the HardFOC system.

This header-only file defines the abstract base class for temperature sensing that provides a consistent API across different temperature sensor implementations. Concrete implementations for various platforms and sensor types inherit from this class.

Author
Nebiyu Tadesse
Date
2025
Note
This is a header-only abstract base class following the same pattern as BaseGpio/BaseAdc.
Users should program against this interface, not specific implementations.
Temperature readings are provided in Celsius, with conversion utilities available.

Macro Definition Documentation

◆ HF_TEMP_CELSIUS_TO_FAHRENHEIT

#define HF_TEMP_CELSIUS_TO_FAHRENHEIT ( celsius)    ((celsius) * 9.0f / 5.0f + 32.0f)

Convert Celsius to Fahrenheit.

Parameters
celsiusTemperature in Celsius
Returns
Temperature in Fahrenheit

◆ HF_TEMP_CELSIUS_TO_KELVIN

#define HF_TEMP_CELSIUS_TO_KELVIN ( celsius)    ((celsius) + 273.15f)

Convert Celsius to Kelvin.

Parameters
celsiusTemperature in Celsius
Returns
Temperature in Kelvin

◆ HF_TEMP_CONFIG_DEFAULT

#define HF_TEMP_CONFIG_DEFAULT ( )
Value:
{.range_min_celsius = -40.0f, \
.range_max_celsius = 125.0f, \
.resolution = 0.1f, \
.sample_rate_hz = 0, \
.enable_threshold_monitoring = false, \
.high_threshold_celsius = 100.0f, \
.low_threshold_celsius = -20.0f, \
.enable_power_management = false, \
.enable_calibration = false, \
.timeout_ms = 1000, \
.sensor_type = HF_TEMP_SENSOR_TYPE_UNKNOWN, \
.capabilities = HF_TEMP_CAP_NONE}
@ HF_TEMP_CAP_NONE
No special capabilities.
Definition BaseTemperature.h:189
@ HF_TEMP_SENSOR_TYPE_UNKNOWN
Unknown or unspecified sensor type.
Definition BaseTemperature.h:148

Default temperature sensor configuration.

◆ HF_TEMP_FAHRENHEIT_TO_CELSIUS

#define HF_TEMP_FAHRENHEIT_TO_CELSIUS ( fahrenheit)    (((fahrenheit) - 32.0f) * 5.0f / 9.0f)

Convert Fahrenheit to Celsius.

Parameters
fahrenheitTemperature in Fahrenheit
Returns
Temperature in Celsius

◆ HF_TEMP_KELVIN_TO_CELSIUS

#define HF_TEMP_KELVIN_TO_CELSIUS ( kelvin)    ((kelvin) - 273.15f)

Convert Kelvin to Celsius.

Parameters
kelvinTemperature in Kelvin
Returns
Temperature in Celsius

◆ TEMP_ERROR_ENUM

#define TEMP_ERROR_ENUM ( name,
code,
desc )   name = code,

◆ X

#define X ( NAME,
VALUE,
DESC )
Value:
case NAME: \
return DESC;

Typedef Documentation

◆ hf_temp_error_callback_t

Initial value:
void(*)(BaseTemperature* temp_sensor, hf_temp_err_t error,
const char* error_description, void* user_data)
hf_temp_err_t
Temperature sensor error codes enumeration.
Definition BaseTemperature.h:113
Abstract base class for all temperature sensor implementations.
Definition BaseTemperature.h:407

Temperature error callback function type.

Parameters
temp_sensorPointer to temperature sensor instance
errorError code
error_descriptionHuman-readable error description
user_dataUser-provided data pointer

◆ hf_temp_reading_callback_t

using hf_temp_reading_callback_t = void(*)(BaseTemperature* temp_sensor, const hf_temp_reading_t* reading, void* user_data)

Temperature reading callback function type (for continuous monitoring)

Parameters
temp_sensorPointer to temperature sensor instance
readingTemperature reading structure
user_dataUser-provided data pointer

◆ hf_temp_threshold_callback_t

Initial value:
void(*)(BaseTemperature* temp_sensor, float temperature_celsius,
hf_u32_t threshold_type, void* user_data)
uint32_t hf_u32_t
Platform-agnostic 32-bit unsigned integer type.
Definition HardwareTypes.h:52

Temperature threshold callback function type.

Parameters
temp_sensorPointer to temperature sensor instance
temperature_celsiusCurrent temperature in Celsius
threshold_typeType of threshold (0=low, 1=high)
user_dataUser-provided data pointer

Enumeration Type Documentation

◆ hf_temp_capabilities_t

Temperature sensor capabilities flags.

Enumerator
HF_TEMP_CAP_NONE 

No special capabilities.

HF_TEMP_CAP_THRESHOLD_MONITORING 

Supports threshold monitoring.

HF_TEMP_CAP_CONTINUOUS_READING 

Supports continuous reading.

HF_TEMP_CAP_CALIBRATION 

Supports calibration.

HF_TEMP_CAP_POWER_MANAGEMENT 

Supports power management.

HF_TEMP_CAP_SELF_TEST 

Supports self-test.

HF_TEMP_CAP_ALARM_OUTPUT 

Has alarm output capability.

HF_TEMP_CAP_HIGH_PRECISION 

High precision measurements.

HF_TEMP_CAP_FAST_RESPONSE 

Fast response time.

◆ hf_temp_err_t

Temperature sensor error codes enumeration.

Enumerator
TEMP_SUCCESS 
TEMP_ERR_FAILURE 
TEMP_ERR_NOT_INITIALIZED 
TEMP_ERR_ALREADY_INITIALIZED 
TEMP_ERR_INVALID_PARAMETER 
TEMP_ERR_NULL_POINTER 
TEMP_ERR_OUT_OF_MEMORY 
TEMP_ERR_SENSOR_NOT_AVAILABLE 
TEMP_ERR_SENSOR_BUSY 
TEMP_ERR_SENSOR_DISABLED 
TEMP_ERR_SENSOR_NOT_READY 
TEMP_ERR_READ_FAILED 
TEMP_ERR_INVALID_READING 
TEMP_ERR_OUT_OF_RANGE 
TEMP_ERR_TIMEOUT 
TEMP_ERR_INVALID_RANGE 
TEMP_ERR_RANGE_TOO_NARROW 
TEMP_ERR_RANGE_TOO_WIDE 
TEMP_ERR_UNSUPPORTED_RANGE 
TEMP_ERR_CALIBRATION_FAILED 
TEMP_ERR_NOT_CALIBRATED 
TEMP_ERR_INVALID_CALIBRATION 
TEMP_ERR_COMMUNICATION_FAILED 
TEMP_ERR_CHECKSUM_FAILED 
TEMP_ERR_POWER_DOWN_FAILED 
TEMP_ERR_POWER_UP_FAILED 
TEMP_ERR_HARDWARE_FAULT 
TEMP_ERR_OVERCURRENT 
TEMP_ERR_OVERVOLTAGE 
TEMP_ERR_UNDERVOLTAGE 
TEMP_ERR_OVERHEATING 
TEMP_ERR_RESOURCE_BUSY 
TEMP_ERR_RESOURCE_UNAVAILABLE 
TEMP_ERR_INSUFFICIENT_RESOURCES 
TEMP_ERR_OPERATION_ABORTED 
TEMP_ERR_OPERATION_PENDING 
TEMP_ERR_INVALID_STATE 
TEMP_ERR_STATE_TRANSITION_FAILED 
TEMP_ERR_DATA_CORRUPTION 
TEMP_ERR_CONVERSION_FAILED 
TEMP_ERR_FILTERING_FAILED 
TEMP_ERR_THRESHOLD_EXCEEDED 
TEMP_ERR_INVALID_THRESHOLD 
TEMP_ERR_MONITORING_FAILED 
TEMP_ERR_UNSUPPORTED_OPERATION 
TEMP_ERR_DRIVER_ERROR 
TEMP_ERR_UNKNOWN 
TEMP_ERR_MAX 

◆ hf_temp_sensor_type_t

Temperature sensor types.

Enumerator
HF_TEMP_SENSOR_TYPE_UNKNOWN 

Unknown or unspecified sensor type.

HF_TEMP_SENSOR_TYPE_INTERNAL 

Internal chip temperature sensor.

HF_TEMP_SENSOR_TYPE_EXTERNAL_DIGITAL 

External digital temperature sensor.

HF_TEMP_SENSOR_TYPE_EXTERNAL_ANALOG 

External analog temperature sensor.

HF_TEMP_SENSOR_TYPE_THERMOCOUPLE 

Thermocouple temperature sensor.

HF_TEMP_SENSOR_TYPE_RTD 

Resistance Temperature Detector.

HF_TEMP_SENSOR_TYPE_THERMISTOR 

Thermistor temperature sensor.

HF_TEMP_SENSOR_TYPE_INFRARED 

Infrared temperature sensor.

HF_TEMP_SENSOR_TYPE_MAX 

Maximum sensor type marker.

◆ hf_temp_state_t

Temperature sensor states.

Enumerator
HF_TEMP_STATE_UNINITIALIZED 

Sensor is not initialized.

HF_TEMP_STATE_INITIALIZED 

Sensor is initialized but not enabled.

HF_TEMP_STATE_ENABLED 

Sensor is enabled and ready.

HF_TEMP_STATE_READING 

Sensor is performing a reading.

HF_TEMP_STATE_ERROR 

Sensor is in error state.

HF_TEMP_STATE_DISABLED 

Sensor is disabled.

HF_TEMP_STATE_CALIBRATING 

Sensor is being calibrated.

HF_TEMP_STATE_SLEEPING 

Sensor is in low power mode.

HF_TEMP_STATE_MAX 

Maximum state marker.

◆ hf_temp_unit_t

Temperature measurement units.

Enumerator
HF_TEMP_UNIT_CELSIUS 

Celsius (°C)

HF_TEMP_UNIT_FAHRENHEIT 

Fahrenheit (°F)

HF_TEMP_UNIT_KELVIN 

Kelvin (K)

HF_TEMP_UNIT_RANKINE 

Rankine (°R)

HF_TEMP_UNIT_MAX 

Maximum unit marker.

Function Documentation

◆ HfTempErrToString()

constexpr std::string_view HfTempErrToString ( hf_temp_err_t err)
constexprnoexcept

Convert temperature error code to string view.

Parameters
errThe error code to convert
Returns
String view of the error description

◆ IsTempInRange()

bool IsTempInRange ( float temperature,
float min_temp,
float max_temp )
inlinenoexcept

Check if temperature is within range.

Parameters
temperatureTemperature to check
min_tempMinimum temperature
max_tempMaximum temperature
Returns
true if within range, false otherwise