HardFOC Core
API reference
Loading...
Searching...
No Matches
NtcTemperatureHandler.h
Go to the documentation of this file.
1
14#pragma once
15
16#include "core/hf-core-drivers/internal/hf-internal-interface-wrap/inc/base/BaseTemperature.h"
17#include "core/hf-core-drivers/internal/hf-internal-interface-wrap/inc/base/BaseAdc.h"
18#include "core/hf-core-drivers/external/hf-ntc-thermistor-driver/inc/ntc_thermistor.hpp"
19#include "RtosMutex.h"
21#include "core/hf-core-utils/hf-utils-rtos-wrap/include/PeriodicTimer.h"
23#include <memory>
24#include <cfloat>
25#include <array>
26
27//--------------------------------------
28// NTC ADC Adapter (BaseAdc → ntc::AdcInterface bridge)
29//--------------------------------------
30
38class NtcAdcAdapter : public ntc::AdcInterface<NtcAdcAdapter> {
39public:
46 explicit NtcAdcAdapter(BaseAdc* adc, float ref_voltage = 3.3f, uint8_t res_bits = 12) noexcept
47 : adc_(adc), reference_voltage_(ref_voltage), resolution_bits_(res_bits) {}
48
49 [[nodiscard]] bool IsInitialized() const { return adc_ != nullptr && adc_->IsInitialized(); }
50 bool EnsureInitialized() { return adc_ != nullptr && adc_->EnsureInitialized(); }
51 [[nodiscard]] bool IsChannelAvailable(uint8_t channel) const {
52 return adc_ != nullptr && adc_->IsChannelAvailable(static_cast<hf_channel_id_t>(channel));
53 }
54 ntc::AdcError ReadChannelCount(uint8_t channel, uint32_t* count) {
55 if (adc_ == nullptr || count == nullptr) return ntc::AdcError::ReadFailed;
56 hf_u32_t raw = 0;
57 auto err = adc_->ReadChannelCount(static_cast<hf_channel_id_t>(channel), raw);
58 if (err != hf_adc_err_t::ADC_SUCCESS) return ntc::AdcError::ReadFailed;
59 *count = raw;
60 return ntc::AdcError::Success;
61 }
62 ntc::AdcError ReadChannelV(uint8_t channel, float* voltage_v) {
63 if (adc_ == nullptr || voltage_v == nullptr) return ntc::AdcError::ReadFailed;
64 float v = 0.0f;
65 auto err = adc_->ReadChannelV(static_cast<hf_channel_id_t>(channel), v);
66 if (err != hf_adc_err_t::ADC_SUCCESS) return ntc::AdcError::ReadFailed;
67 *voltage_v = v;
68 return ntc::AdcError::Success;
69 }
70 [[nodiscard]] float GetReferenceVoltage() const { return reference_voltage_; }
71 [[nodiscard]] uint8_t GetResolutionBits() const { return resolution_bits_; }
74 void DelayMs(uint32_t ms) { handler_utils::DelayMs(ms); }
75
76private:
77 BaseAdc* adc_;
80};
81
83using NtcThermistorConcrete = NtcThermistor<NtcAdcAdapter>;
84
85//--------------------------------------
86// NTC Temperature Handler Configuration
87//--------------------------------------
88
115
119#define NTC_TEMP_HANDLER_CONFIG_DEFAULT() { \
120 .ntc_type = NtcType::NtcG163Jft103Ft1S, \
121 .adc_channel = 0, \
122 .voltage_divider_series_resistance = 10000.0f, \
123 .voltage_divider_parallel_resistance = 0.0f, \
124 .reference_voltage = 3.3f, \
125 .calibration_offset = 0.0f, \
126 .beta_value = 0.0f, \
127 .conversion_method = NtcConversionMethod::Auto, \
128 .sample_count = 1, \
129 .sample_delay_ms = 0, \
130 .min_temperature = -40.0f, \
131 .max_temperature = 125.0f, \
132 .enable_filtering = false, \
133 .filter_alpha = 0.1f, \
134 .enable_threshold_monitoring = false, \
135 .low_threshold_celsius = -40.0f, \
136 .high_threshold_celsius = 125.0f, \
137 .threshold_callback = nullptr, \
138 .threshold_user_data = nullptr, \
139 .sensor_name = "NTC_Temperature_Sensor", \
140 .sensor_description = "NTC Thermistor Temperature Sensor" \
141}
142
143//--------------------------------------
144// NtcTemperatureHandler Class
145//--------------------------------------
146
172class NtcTemperatureHandler : public BaseTemperature {
173public:
174 //==============================================================//
175 // CONSTRUCTORS AND DESTRUCTOR
176 //==============================================================//
177
184 NtcTemperatureHandler(NtcType ntc_type, BaseAdc* adc_interface, const char* sensor_name = nullptr) noexcept;
185
191 NtcTemperatureHandler(BaseAdc* adc_interface, const ntc_temp_handler_config_t& config) noexcept;
192
197
202
207
211 virtual ~NtcTemperatureHandler() noexcept;
212
213 //==============================================================//
214 // BASE TEMPERATURE INTERFACE IMPLEMENTATION
215 //==============================================================//
216
217 // Pure virtual implementations
218 bool Initialize() noexcept override;
219 bool Deinitialize() noexcept override;
220 hf_temp_err_t ReadTemperatureCelsiusImpl(float* temperature_celsius) noexcept override;
221
222 // Information interface
223 hf_temp_err_t GetSensorInfo(hf_temp_sensor_info_t* info) const noexcept override;
224 hf_u32_t GetCapabilities() const noexcept override;
225
226 // Advanced features (supported)
227 hf_temp_err_t SetRange(float min_celsius, float max_celsius) noexcept override;
228 hf_temp_err_t GetRange(float* min_celsius, float* max_celsius) const noexcept override;
229 hf_temp_err_t GetResolution(float* resolution_celsius) const noexcept override;
230 hf_temp_err_t SetThresholds(float low_threshold_celsius, float high_threshold_celsius) noexcept override;
231 hf_temp_err_t GetThresholds(float* low_threshold_celsius, float* high_threshold_celsius) const noexcept override;
232 hf_temp_err_t EnableThresholdMonitoring(hf_temp_threshold_callback_t callback, void* user_data) noexcept override;
233 hf_temp_err_t DisableThresholdMonitoring() noexcept override;
234 hf_temp_err_t StartContinuousMonitoring(hf_u32_t sample_rate_hz, hf_temp_reading_callback_t callback, void* user_data) noexcept override;
235 hf_temp_err_t StopContinuousMonitoring() noexcept override;
236 bool IsMonitoringActive() const noexcept override;
237 hf_temp_err_t SetCalibrationOffset(float offset_celsius) noexcept override;
238 hf_temp_err_t GetCalibrationOffset(float* offset_celsius) const noexcept override;
239 hf_temp_err_t ResetCalibration() noexcept override;
240 hf_temp_err_t EnterSleepMode() noexcept override;
241 hf_temp_err_t ExitSleepMode() noexcept override;
242 bool IsSleeping() const noexcept override;
243 hf_temp_err_t SelfTest() noexcept override;
244 hf_temp_err_t CheckHealth() noexcept override;
245 hf_temp_err_t GetStatistics(hf_temp_statistics_t& statistics) noexcept override;
246 hf_temp_err_t GetDiagnostics(hf_temp_diagnostics_t& diagnostics) noexcept override;
247 hf_temp_err_t ResetStatistics() noexcept override;
248 hf_temp_err_t ResetDiagnostics() noexcept override;
249
250 //==============================================================//
251 // NTC-SPECIFIC METHODS
252 //==============================================================//
253
259 void* GetNtcThermistor() noexcept;
260
266 const void* GetNtcThermistor() const noexcept;
267
273 NtcError GetNtcReading(ntc_reading_t* reading) noexcept;
274
280 NtcError GetNtcConfiguration(ntc_config_t* config) const noexcept;
281
287 NtcError SetNtcConfiguration(const ntc_config_t& config) noexcept;
288
294 NtcError GetResistance(float* resistance_ohms) noexcept;
295
301 NtcError GetVoltage(float* voltage_volts) noexcept;
302
308 NtcError GetRawAdcValue(uint32_t* adc_value) noexcept;
309
315 hf_temp_err_t Calibrate(float reference_temperature_celsius) noexcept override;
316
322 NtcError SetConversionMethod(NtcConversionMethod method) noexcept;
323
329 NtcError SetVoltageDivider(float series_resistance) noexcept;
330
336 NtcError SetReferenceVoltage(float reference_voltage) noexcept;
337
343 NtcError SetBetaValue(float beta_value) noexcept;
344
350 NtcError SetAdcChannel(uint8_t adc_channel) noexcept;
351
358 NtcError SetSamplingParameters(uint32_t sample_count, uint32_t sample_delay_ms) noexcept;
359
366 NtcError SetFiltering(bool enable, float alpha = 0.1f) noexcept;
367
372 const char* GetSensorName() const noexcept;
373
378 const char* GetSensorDescription() const noexcept;
379
380 //==============================================================//
381 // DIRECT DRIVER ACCESS
382 //==============================================================//
383
388 [[nodiscard]] NtcThermistorConcrete* GetDriver() noexcept;
389 [[nodiscard]] const NtcThermistorConcrete* GetDriver() const noexcept;
390
391private:
392 //==============================================================//
393 // PRIVATE MEMBER VARIABLES
394 //==============================================================//
395
396 mutable RtosMutex mutex_;
399 BaseAdc* adc_interface_;
401
402 // BaseTemperature state
403 hf_temp_state_t current_state_;
404 hf_temp_config_t base_config_;
405
406 // Threshold monitoring
409 hf_temp_threshold_callback_t threshold_callback_;
411
412 // Continuous monitoring (using hardware-agnostic PeriodicTimer)
414 hf_temp_reading_callback_t continuous_callback_;
416 PeriodicTimer monitoring_timer_;
419
420 // Statistics and diagnostics
421 hf_temp_statistics_t statistics_;
422 hf_temp_diagnostics_t diagnostics_;
423
424 // Packed bools (grouped to avoid padding waste)
428
429 //==============================================================//
430 // PRIVATE HELPER METHODS
431 //==============================================================//
432
437 void SetLastError(hf_temp_err_t error) noexcept;
438
444 void UpdateStatistics(bool operation_successful, hf_u32_t operation_time_us) noexcept;
445
450 void UpdateDiagnostics(hf_temp_err_t error) noexcept;
451
456 bool InitializeNtcThermistor() noexcept;
457
463 hf_temp_err_t ConvertNtcError(NtcError ntc_error) const noexcept;
464
469 void CheckThresholds(float temperature_celsius) noexcept;
470
475 static void ContinuousMonitoringCallback(uint32_t arg);
476
480 static hf_u32_t RegisterMonitoringContext(NtcTemperatureHandler* handler) noexcept;
481 static void UnregisterMonitoringContext(hf_u32_t context_id) noexcept;
482 static NtcTemperatureHandler* ResolveMonitoringContext(hf_u32_t context_id) noexcept;
483
484 static constexpr hf_u32_t kMonitoringContextSlots = 8;
485 static RtosMutex callback_registry_mutex_;
487
492 void UpdateBaseDiagnostics(hf_temp_err_t error) noexcept;
493
499 hf_temp_err_t ValidateConfiguration(const ntc_temp_handler_config_t& config) const noexcept;
500
505 static hf_u64_t GetCurrentTimeUs() noexcept;
506};
Shared utility functions for handler CRTP communication adapters.
NtcThermistor< NtcAdcAdapter > NtcThermistorConcrete
Convenience alias for the concrete NtcThermistor type used by this handler.
Definition NtcTemperatureHandler.h:83
Adapter that bridges BaseAdc to the ntc::AdcInterface CRTP interface required by the NtcThermistor te...
Definition NtcTemperatureHandler.h:38
bool EnsureInitialized()
Definition NtcTemperatureHandler.h:50
uint8_t GetResolutionBits() const
Definition NtcTemperatureHandler.h:71
bool IsChannelAvailable(uint8_t channel) const
Definition NtcTemperatureHandler.h:51
float GetReferenceVoltage() const
Definition NtcTemperatureHandler.h:70
bool IsInitialized() const
Definition NtcTemperatureHandler.h:49
float reference_voltage_
Definition NtcTemperatureHandler.h:78
ntc::AdcError ReadChannelCount(uint8_t channel, uint32_t *count)
Definition NtcTemperatureHandler.h:54
BaseAdc * adc_
Definition NtcTemperatureHandler.h:77
NtcAdcAdapter(BaseAdc *adc, float ref_voltage=3.3f, uint8_t res_bits=12) noexcept
Construct adapter wrapping a BaseAdc pointer.
Definition NtcTemperatureHandler.h:46
void DelayMs(uint32_t ms)
Definition NtcTemperatureHandler.h:74
ntc::AdcError ReadChannelV(uint8_t channel, float *voltage_v)
Definition NtcTemperatureHandler.h:62
uint8_t resolution_bits_
Definition NtcTemperatureHandler.h:79
NTC temperature sensor handler implementing BaseTemperature interface.
Definition NtcTemperatureHandler.h:172
float calibration_offset_
Current calibration offset.
Definition NtcTemperatureHandler.h:418
NtcError SetFiltering(bool enable, float alpha=0.1f) noexcept
Enable/disable filtering.
Definition NtcTemperatureHandler.cpp:859
NtcTemperatureHandler & operator=(NtcTemperatureHandler &&)=delete
Non-movable.
std::unique_ptr< NtcAdcAdapter > ntc_adc_adapter_
ADC adapter (BaseAdc→ntc::AdcInterface)
Definition NtcTemperatureHandler.h:397
hf_temp_err_t EnterSleepMode() noexcept override
Definition NtcTemperatureHandler.cpp:702
NtcTemperatureHandler(const NtcTemperatureHandler &)=delete
Copy constructor is deleted.
static void UnregisterMonitoringContext(hf_u32_t context_id) noexcept
Definition NtcTemperatureHandler.cpp:1030
bool InitializeNtcThermistor() noexcept
Initialize NTC thermistor with current configuration.
RtosMutex mutex_
Thread safety mutex (hardware-agnostic)
Definition NtcTemperatureHandler.h:396
NtcError GetNtcConfiguration(ntc_config_t *config) const noexcept
Get NTC configuration.
Definition NtcTemperatureHandler.cpp:632
float high_threshold_celsius_
High temperature threshold.
Definition NtcTemperatureHandler.h:408
ntc_temp_handler_config_t config_
Handler configuration.
Definition NtcTemperatureHandler.h:400
hf_temp_err_t ResetStatistics() noexcept override
Definition NtcTemperatureHandler.cpp:592
hf_temp_err_t SetThresholds(float low_threshold_celsius, float high_threshold_celsius) noexcept override
Definition NtcTemperatureHandler.cpp:371
static NtcTemperatureHandler * ResolveMonitoringContext(hf_u32_t context_id) noexcept
Definition NtcTemperatureHandler.cpp:1043
NtcTemperatureHandler(NtcTemperatureHandler &&)=delete
Non-movable (holds mutex, unique_ptrs, raw pointers, and timer resources).
void UpdateStatistics(bool operation_successful, hf_u32_t operation_time_us) noexcept
Update operation statistics.
Definition NtcTemperatureHandler.cpp:902
const char * GetSensorName() const noexcept
Get sensor name.
Definition NtcTemperatureHandler.cpp:869
hf_temp_err_t GetStatistics(hf_temp_statistics_t &statistics) noexcept override
Definition NtcTemperatureHandler.cpp:580
hf_u32_t monitoring_context_id_
Timer callback context ID (0 = unassigned)
Definition NtcTemperatureHandler.h:417
hf_temp_err_t DisableThresholdMonitoring() noexcept override
Definition NtcTemperatureHandler.cpp:420
hf_temp_err_t ExitSleepMode() noexcept override
Definition NtcTemperatureHandler.cpp:713
hf_temp_statistics_t statistics_
BaseTemperature statistics.
Definition NtcTemperatureHandler.h:421
NtcTemperatureHandler & operator=(const NtcTemperatureHandler &)=delete
Assignment operator is deleted.
float low_threshold_celsius_
Low temperature threshold.
Definition NtcTemperatureHandler.h:407
hf_u32_t sample_rate_hz_
Sample rate for continuous monitoring.
Definition NtcTemperatureHandler.h:413
hf_temp_err_t ValidateConfiguration(const ntc_temp_handler_config_t &config) const noexcept
Validate configuration.
NtcError GetVoltage(float *voltage_volts) noexcept
Get voltage across thermistor.
Definition NtcTemperatureHandler.cpp:785
bool IsSleeping() const noexcept override
Definition NtcTemperatureHandler.cpp:723
hf_temp_err_t SetRange(float min_celsius, float max_celsius) noexcept override
Definition NtcTemperatureHandler.cpp:664
NtcThermistorConcrete * GetDriver() noexcept
Get the underlying NtcThermistor driver for advanced operations.
Definition NtcTemperatureHandler.cpp:877
NtcError SetBetaValue(float beta_value) noexcept
Set beta value.
Definition NtcTemperatureHandler.cpp:831
bool initialized_
Initialization status.
Definition NtcTemperatureHandler.h:425
hf_temp_err_t GetDiagnostics(hf_temp_diagnostics_t &diagnostics) noexcept override
Definition NtcTemperatureHandler.cpp:586
NtcError SetConversionMethod(NtcConversionMethod method) noexcept
Set conversion method.
Definition NtcTemperatureHandler.cpp:807
void SetLastError(hf_temp_err_t error) noexcept
Set last error in diagnostics.
Definition NtcTemperatureHandler.cpp:892
hf_temp_config_t base_config_
Base configuration.
Definition NtcTemperatureHandler.h:404
void * GetNtcThermistor() noexcept
Get NTC thermistor instance.
Definition NtcTemperatureHandler.cpp:620
hf_temp_err_t ReadTemperatureCelsiusImpl(float *temperature_celsius) noexcept override
Definition NtcTemperatureHandler.cpp:301
BaseAdc * adc_interface_
ADC interface pointer.
Definition NtcTemperatureHandler.h:399
hf_temp_diagnostics_t diagnostics_
BaseTemperature diagnostics.
Definition NtcTemperatureHandler.h:422
NtcError SetVoltageDivider(float series_resistance) noexcept
Set voltage divider parameters.
Definition NtcTemperatureHandler.cpp:815
NtcError SetNtcConfiguration(const ntc_config_t &config) noexcept
Set NTC configuration.
Definition NtcTemperatureHandler.cpp:766
static RtosMutex callback_registry_mutex_
Definition NtcTemperatureHandler.h:20
hf_temp_state_t current_state_
Current state.
Definition NtcTemperatureHandler.h:403
hf_temp_err_t StopContinuousMonitoring() noexcept override
Definition NtcTemperatureHandler.cpp:482
void * continuous_user_data_
Continuous monitoring callback user data.
Definition NtcTemperatureHandler.h:415
NtcError GetNtcReading(ntc_reading_t *reading) noexcept
Get NTC reading.
Definition NtcTemperatureHandler.cpp:644
bool Deinitialize() noexcept override
Definition NtcTemperatureHandler.cpp:264
hf_temp_err_t GetSensorInfo(hf_temp_sensor_info_t *info) const noexcept override
Definition NtcTemperatureHandler.cpp:336
const char * GetSensorDescription() const noexcept
Get sensor description.
Definition NtcTemperatureHandler.cpp:873
hf_u32_t GetCapabilities() const noexcept override
Definition NtcTemperatureHandler.cpp:364
bool Initialize() noexcept override
Definition NtcTemperatureHandler.cpp:161
static std::array< NtcTemperatureHandler *, kMonitoringContextSlots > callback_registry_
Definition NtcTemperatureHandler.h:22
hf_temp_err_t CheckHealth() noexcept override
Definition NtcTemperatureHandler.cpp:748
bool threshold_monitoring_enabled_
Threshold monitoring status.
Definition NtcTemperatureHandler.h:426
bool IsMonitoringActive() const noexcept override
Definition NtcTemperatureHandler.cpp:504
NtcError GetRawAdcValue(uint32_t *adc_value) noexcept
Get raw ADC value.
Definition NtcTemperatureHandler.cpp:796
NtcError SetAdcChannel(uint8_t adc_channel) noexcept
Set ADC channel.
Definition NtcTemperatureHandler.cpp:839
NtcError SetSamplingParameters(uint32_t sample_count, uint32_t sample_delay_ms) noexcept
Set sampling parameters.
Definition NtcTemperatureHandler.cpp:848
static void ContinuousMonitoringCallback(uint32_t arg)
Static callback for continuous monitoring timer.
Definition NtcTemperatureHandler.cpp:994
virtual ~NtcTemperatureHandler() noexcept
Virtual destructor - cleans up timer and thermistor resources.
Definition NtcTemperatureHandler.cpp:142
hf_temp_err_t GetResolution(float *resolution_celsius) const noexcept override
Definition NtcTemperatureHandler.cpp:690
PeriodicTimer monitoring_timer_
Hardware-agnostic periodic timer.
Definition NtcTemperatureHandler.h:416
void UpdateDiagnostics(hf_temp_err_t error) noexcept
Update diagnostics with error code.
Definition NtcTemperatureHandler.cpp:931
hf_temp_err_t GetThresholds(float *low_threshold_celsius, float *high_threshold_celsius) const noexcept override
Definition NtcTemperatureHandler.cpp:389
hf_temp_threshold_callback_t threshold_callback_
Threshold callback.
Definition NtcTemperatureHandler.h:409
std::unique_ptr< NtcThermistorConcrete > ntc_thermistor_
NTC thermistor driver instance.
Definition NtcTemperatureHandler.h:398
void CheckThresholds(float temperature_celsius) noexcept
Check thresholds and trigger callback if needed.
Definition NtcTemperatureHandler.cpp:940
hf_temp_err_t ResetDiagnostics() noexcept override
Definition NtcTemperatureHandler.cpp:604
hf_temp_err_t SelfTest() noexcept override
Definition NtcTemperatureHandler.cpp:727
void UpdateBaseDiagnostics(hf_temp_err_t error) noexcept
Update BaseTemperature diagnostics.
static hf_u64_t GetCurrentTimeUs() noexcept
Get current timestamp in microseconds.
NtcError SetReferenceVoltage(float reference_voltage) noexcept
Set reference voltage.
Definition NtcTemperatureHandler.cpp:823
static hf_u32_t RegisterMonitoringContext(NtcTemperatureHandler *handler) noexcept
Register/unregister callback context IDs for timer callbacks.
Definition NtcTemperatureHandler.cpp:1011
static constexpr hf_u32_t kMonitoringContextSlots
Definition NtcTemperatureHandler.h:484
hf_temp_err_t EnableThresholdMonitoring(hf_temp_threshold_callback_t callback, void *user_data) noexcept override
Definition NtcTemperatureHandler.cpp:405
hf_temp_err_t GetRange(float *min_celsius, float *max_celsius) const noexcept override
Definition NtcTemperatureHandler.cpp:677
hf_temp_err_t StartContinuousMonitoring(hf_u32_t sample_rate_hz, hf_temp_reading_callback_t callback, void *user_data) noexcept override
Definition NtcTemperatureHandler.cpp:431
void * threshold_user_data_
Threshold callback user data.
Definition NtcTemperatureHandler.h:410
NtcError GetResistance(float *resistance_ohms) noexcept
Get thermistor resistance.
Definition NtcTemperatureHandler.cpp:774
hf_temp_reading_callback_t continuous_callback_
Continuous monitoring callback.
Definition NtcTemperatureHandler.h:414
bool monitoring_active_
Continuous monitoring status.
Definition NtcTemperatureHandler.h:427
hf_temp_err_t Calibrate(float reference_temperature_celsius) noexcept override
Calibrate the thermistor.
Definition NtcTemperatureHandler.cpp:509
hf_temp_err_t SetCalibrationOffset(float offset_celsius) noexcept override
Definition NtcTemperatureHandler.cpp:536
hf_temp_err_t GetCalibrationOffset(float *offset_celsius) const noexcept override
Definition NtcTemperatureHandler.cpp:551
hf_temp_err_t ConvertNtcError(NtcError ntc_error) const noexcept
Convert NTC error to BaseTemperature error.
Definition NtcTemperatureHandler.cpp:954
hf_temp_err_t ResetCalibration() noexcept override
Definition NtcTemperatureHandler.cpp:565
void DelayMs(uint32_t ms) noexcept
RTOS-aware millisecond delay.
Definition HandlerCommon.h:77
NTC temperature handler configuration structure.
Definition NtcTemperatureHandler.h:92
float voltage_divider_series_resistance
Series resistance in voltage divider (ohms)
Definition NtcTemperatureHandler.h:95
bool enable_filtering
Enable temperature filtering.
Definition NtcTemperatureHandler.h:105
float low_threshold_celsius
Low temperature threshold (°C)
Definition NtcTemperatureHandler.h:108
const char * sensor_description
Sensor description.
Definition NtcTemperatureHandler.h:113
uint32_t sample_count
Number of samples to average.
Definition NtcTemperatureHandler.h:101
float calibration_offset
Calibration offset (°C)
Definition NtcTemperatureHandler.h:98
NtcType ntc_type
NTC thermistor type (driver enum)
Definition NtcTemperatureHandler.h:93
float min_temperature
Minimum temperature (°C)
Definition NtcTemperatureHandler.h:103
float high_threshold_celsius
High temperature threshold (°C)
Definition NtcTemperatureHandler.h:109
float max_temperature
Maximum temperature (°C)
Definition NtcTemperatureHandler.h:104
float reference_voltage
Reference voltage (V)
Definition NtcTemperatureHandler.h:97
float beta_value
Beta value override (0 = use default)
Definition NtcTemperatureHandler.h:99
uint32_t sample_delay_ms
Delay between samples (ms)
Definition NtcTemperatureHandler.h:102
float filter_alpha
Filter alpha value (0.0-1.0)
Definition NtcTemperatureHandler.h:106
uint8_t adc_channel
ADC channel for voltage measurement.
Definition NtcTemperatureHandler.h:94
NtcConversionMethod conversion_method
Temperature conversion method (driver enum)
Definition NtcTemperatureHandler.h:100
hf_temp_threshold_callback_t threshold_callback
Threshold callback (optional)
Definition NtcTemperatureHandler.h:110
void * threshold_user_data
Threshold callback user data.
Definition NtcTemperatureHandler.h:111
float voltage_divider_parallel_resistance
Parallel resistance (ohms, 0 if none)
Definition NtcTemperatureHandler.h:96
const char * sensor_name
Sensor name/identifier.
Definition NtcTemperatureHandler.h:112
bool enable_threshold_monitoring
Enable threshold monitoring at init.
Definition NtcTemperatureHandler.h:107