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

Abstract base class for ADC implementations in the HardFOC system. More...

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

Go to the source code of this file.

Classes

struct  hf_adc_statistics_t
 ADC operation statistics. More...
 
struct  hf_adc_diagnostics_t
 ADC diagnostic information. More...
 
class  BaseAdc
 Base class for ADCs. More...
 

Macros

#define HF_ADC_ERR_LIST(X)
 ADC error codes.
 
#define X(NAME, VALUE, DESC)   NAME = VALUE,
 
#define X(NAME, VALUE, DESC)
 

Enumerations

enum class  hf_adc_err_t : hf_u8_t {
  X , ADC_SUCCESS = 0 , ADC_ERR_FAILURE = 1 , ADC_ERR_NOT_INITIALIZED = 2 ,
  ADC_ERR_ALREADY_INITIALIZED = 3 , ADC_ERR_INVALID_PARAMETER = 4 , ADC_ERR_NULL_POINTER = 5 , ADC_ERR_OUT_OF_MEMORY = 6 ,
  ADC_ERR_CHANNEL_NOT_FOUND = 7 , ADC_ERR_CHANNEL_NOT_ENABLED = 8 , ADC_ERR_CHANNEL_NOT_CONFIGURED = 9 , ADC_ERR_CHANNEL_ALREADY_REGISTERED = 10 ,
  ADC_ERR_CHANNEL_READ_ERR = 11 , ADC_ERR_CHANNEL_WRITE_ERR = 12 , ADC_ERR_INVALID_CHANNEL = 13 , ADC_ERR_CHANNEL_BUSY = 14 ,
  ADC_ERR_INVALID_SAMPLE_COUNT = 15 , ADC_ERR_SAMPLE_TIMEOUT = 16 , ADC_ERR_SAMPLE_OVERFLOW = 17 , ADC_ERR_SAMPLE_UNDERFLOW = 18 ,
  ADC_ERR_HARDWARE_FAULT = 19 , ADC_ERR_COMMUNICATION_FAILURE = 20 , ADC_ERR_DEVICE_NOT_RESPONDING = 21 , ADC_ERR_CALIBRATION_FAILURE = 22 ,
  ADC_ERR_VOLTAGE_OUT_OF_RANGE = 23 , ADC_ERR_INVALID_CONFIGURATION = 24 , ADC_ERR_UNSUPPORTED_OPERATION = 25 , ADC_ERR_RESOURCE_BUSY = 26 ,
  ADC_ERR_RESOURCE_UNAVAILABLE = 27 , ADC_ERR_CALIBRATION_NOT_FOUND = 28 , ADC_ERR_CALIBRATION_INVALID = 29 , ADC_ERR_CALIBRATION_EXPIRED = 30 ,
  ADC_ERR_CALIBRATION_DRIFT = 31 , ADC_ERR_CALIBRATION_POINTS_INSUFFICIENT = 32 , ADC_ERR_CALIBRATION_POINTS_INVALID = 33 , ADC_ERR_CALIBRATION_LINEARITY_ERROR = 34 ,
  ADC_ERR_CALIBRATION_STORAGE_FAILURE = 35 , ADC_ERR_CALIBRATION_LOAD_FAILURE = 36 , ADC_ERR_CALIBRATION_VERIFICATION_FAILED = 37 , ADC_ERR_CALIBRATION_TEMPERATURE_ERROR = 38 ,
  ADC_ERR_CALIBRATION_POLYNOMIAL_ERROR = 39 , ADC_ERR_SYSTEM_ERROR = 40 , ADC_ERR_PERMISSION_DENIED = 41 , ADC_ERR_OPERATION_ABORTED = 42 ,
  ADC_ERR_INITIALIZATION_FAILED = 43 , ADC_ERR_INVALID_PARAM = 44 , ADC_ERR_TIMEOUT = 45 , ADC_ERR_NOT_SUPPORTED = 46 ,
  ADC_ERR_INVALID_STATE = 47 , ADC_ERR_DRIVER_ERROR = 48 , ADC_ERR_DMA_ERROR = 49 , ADC_ERR_FILTER_ERROR = 50 ,
  ADC_ERR_NO_CALLBACK = 51 , ADC_ERR_NOT_STARTED = 52 , ADC_ERR_CALIBRATION = 53 , ADC_ERR_BUSY = 54 ,
  ADC_ERR_HARDWARE_FAILURE = 55 , ADC_ERR_CHANNEL_DISABLED = 56 , ADC_ERR_UNKNOWN = 57
}
 

Functions

constexpr std::string_view HfAdcErrToString (hf_adc_err_t err) noexcept
 Convert hf_adc_err_t to human-readable string.
 

Detailed Description

Abstract base class for ADC implementations in the HardFOC system.

This file contains the declaration of the BaseAdc abstract class, which provides a common interface and comprehensive features for all ADC implementations.

Author
Nebiyu Tadesse
Date
2025
Note
This class defines the unified ADC API that all ADC controller implementations must provide. It ensures a consistent API across different platforms and ADC controller types, making the system extensible and maintainable.
This is a header-only abstract base class.

Macro Definition Documentation

◆ X [1/2]

#define X ( NAME,
VALUE,
DESC )   NAME = VALUE,

◆ X [2/2]

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

Enumeration Type Documentation

◆ hf_adc_err_t

enum class hf_adc_err_t : hf_u8_t
strong
Enumerator
ADC_SUCCESS 
ADC_ERR_FAILURE 
ADC_ERR_NOT_INITIALIZED 
ADC_ERR_ALREADY_INITIALIZED 
ADC_ERR_INVALID_PARAMETER 
ADC_ERR_NULL_POINTER 
ADC_ERR_OUT_OF_MEMORY 
ADC_ERR_CHANNEL_NOT_FOUND 
ADC_ERR_CHANNEL_NOT_ENABLED 
ADC_ERR_CHANNEL_NOT_CONFIGURED 
ADC_ERR_CHANNEL_ALREADY_REGISTERED 
ADC_ERR_CHANNEL_READ_ERR 
ADC_ERR_CHANNEL_WRITE_ERR 
ADC_ERR_INVALID_CHANNEL 
ADC_ERR_CHANNEL_BUSY 
ADC_ERR_INVALID_SAMPLE_COUNT 
ADC_ERR_SAMPLE_TIMEOUT 
ADC_ERR_SAMPLE_OVERFLOW 
ADC_ERR_SAMPLE_UNDERFLOW 
ADC_ERR_HARDWARE_FAULT 
ADC_ERR_COMMUNICATION_FAILURE 
ADC_ERR_DEVICE_NOT_RESPONDING 
ADC_ERR_CALIBRATION_FAILURE 
ADC_ERR_VOLTAGE_OUT_OF_RANGE 
ADC_ERR_INVALID_CONFIGURATION 
ADC_ERR_UNSUPPORTED_OPERATION 
ADC_ERR_RESOURCE_BUSY 
ADC_ERR_RESOURCE_UNAVAILABLE 
ADC_ERR_CALIBRATION_NOT_FOUND 
ADC_ERR_CALIBRATION_INVALID 
ADC_ERR_CALIBRATION_EXPIRED 
ADC_ERR_CALIBRATION_DRIFT 
ADC_ERR_CALIBRATION_POINTS_INSUFFICIENT 
ADC_ERR_CALIBRATION_POINTS_INVALID 
ADC_ERR_CALIBRATION_LINEARITY_ERROR 
ADC_ERR_CALIBRATION_STORAGE_FAILURE 
ADC_ERR_CALIBRATION_LOAD_FAILURE 
ADC_ERR_CALIBRATION_VERIFICATION_FAILED 
ADC_ERR_CALIBRATION_TEMPERATURE_ERROR 
ADC_ERR_CALIBRATION_POLYNOMIAL_ERROR 
ADC_ERR_SYSTEM_ERROR 
ADC_ERR_PERMISSION_DENIED 
ADC_ERR_OPERATION_ABORTED 
ADC_ERR_INITIALIZATION_FAILED 
ADC_ERR_INVALID_PARAM 
ADC_ERR_TIMEOUT 
ADC_ERR_NOT_SUPPORTED 
ADC_ERR_INVALID_STATE 
ADC_ERR_DRIVER_ERROR 
ADC_ERR_DMA_ERROR 
ADC_ERR_FILTER_ERROR 
ADC_ERR_NO_CALLBACK 
ADC_ERR_NOT_STARTED 
ADC_ERR_CALIBRATION 
ADC_ERR_BUSY 
ADC_ERR_HARDWARE_FAILURE 
ADC_ERR_CHANNEL_DISABLED 
ADC_ERR_UNKNOWN 

Function Documentation

◆ HfAdcErrToString()

constexpr std::string_view HfAdcErrToString ( hf_adc_err_t err)
constexprnoexcept

Convert hf_adc_err_t to human-readable string.

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