Open FFBoard
Open source force feedback firmware
AnalogAxisProcessing Class Reference

#include <AnalogAxisProcessing.h>

Inheritance diagram for AnalogAxisProcessing:
ADS111X_AnalogSource LocalAnalog

Classes

struct  AnalogProcessingMode
 

Public Member Functions

 AnalogAxisProcessing (const uint32_t axisAmount, AnalogSource *analogSource, CommandHandler *cmdHandler=nullptr, bool allowFilters=true, bool allowAutoscale=true, bool allowRawValues=false, bool allowManualScale=false)
 
virtual ~AnalogAxisProcessing ()
 
CommandStatus command (const ParsedCommand &cmd, std::vector< CommandReply > &replies)
 
void setupFilters ()
 
void processAxes (std::vector< int32_t > &buf)
 
AnalogProcessingConfiggetAnalogProcessingConfig ()
 
void setAnalogProcessingConfig (AnalogProcessingConfig conf)
 
template<size_t size>
void restoreMinMaxValues (const std::array< std::pair< uint16_t, uint16_t >, size > &minMaxAddresses)
 
template<size_t size>
void saveMinMaxValues (const std::array< std::pair< uint16_t, uint16_t >, size > &minMaxAddresses)
 

Static Public Member Functions

static AnalogProcessingConfig decodeAnalogProcessingConfFromInt (uint16_t val)
 
static uint16_t encodeAnalogProcessingConfToInt (AnalogProcessingConfig &conf)
 

Protected Attributes

AnalogProcessingConfig conf
 
const uint32_t axisAmount
 
AnalogSourceanalogSource
 
std::vector< Biquadfilters
 
std::vector< MinMaxPairminMaxVals
 
const float filterF = 30.0/1000.0
 
const float filterQ = 0.5
 
uint32_t filterSamples = 0
 
const uint32_t waitFilterSamples = 500
 
float autorangeScale = 1.05
 
std::vector< int32_t > rawValues
 

Private Types

enum class  AnalogAxisProcessing_commands {
  values =0xAA0 , filter =0xAA2 , autoscale =0xAA3 , rawvalues =0XAA1 ,
  min =0xAA4 , max =0xAA5
}
 

Private Attributes

const struct AnalogAxisProcessing::AnalogProcessingMode modes
 

Detailed Description

Definition at line 29 of file AnalogAxisProcessing.h.

Member Enumeration Documentation

◆ AnalogAxisProcessing_commands

Enumerator
values 
filter 
autoscale 
rawvalues 
min 
max 

Definition at line 31 of file AnalogAxisProcessing.h.

Constructor & Destructor Documentation

◆ AnalogAxisProcessing()

AnalogAxisProcessing::AnalogAxisProcessing ( const uint32_t  axisAmount,
AnalogSource analogSource,
CommandHandler cmdHandler = nullptr,
bool  allowFilters = true,
bool  allowAutoscale = true,
bool  allowRawValues = false,
bool  allowManualScale = false 
)

Constructs an analog axis processing class

Parameters
[in]axisAmountmaximum amount of axes to be processed
[in]cmdHandlercommand handler to register commands to. nullptr to disable commands
[in]allowFiltersenable the use of filters. Creates filters and activates filter command
[in]allowAutoscaleenable autoscaling command
[in]allowRawvaluesenable raw value command. Required if manual scale should be used with the GUI
[in]allowManualScaleactivates min/max commands if set

Definition at line 20 of file AnalogAxisProcessing.cpp.

◆ ~AnalogAxisProcessing()

AnalogAxisProcessing::~AnalogAxisProcessing ( )
virtual

Definition at line 62 of file AnalogAxisProcessing.cpp.

Member Function Documentation

◆ command()

CommandStatus AnalogAxisProcessing::command ( const ParsedCommand cmd,
std::vector< CommandReply > &  replies 
)

To be called by the class using this. Not an actual command handler

Definition at line 131 of file AnalogAxisProcessing.cpp.

◆ decodeAnalogProcessingConfFromInt()

AnalogProcessingConfig AnalogAxisProcessing::decodeAnalogProcessingConfFromInt ( uint16_t  val)
static

Config takes 2 lowest bits

Definition at line 209 of file AnalogAxisProcessing.cpp.

◆ encodeAnalogProcessingConfToInt()

uint16_t AnalogAxisProcessing::encodeAnalogProcessingConfToInt ( AnalogProcessingConfig conf)
static

Config returns 2 lowest bits

Definition at line 219 of file AnalogAxisProcessing.cpp.

◆ getAnalogProcessingConfig()

AnalogProcessingConfig & AnalogAxisProcessing::getAnalogProcessingConfig ( )

Returns processing config. Use this to save settings

Definition at line 77 of file AnalogAxisProcessing.cpp.

◆ processAxes()

void AnalogAxisProcessing::processAxes ( std::vector< int32_t > &  buf)

Definition at line 88 of file AnalogAxisProcessing.cpp.

◆ restoreMinMaxValues()

template<size_t size>
void AnalogAxisProcessing::restoreMinMaxValues ( const std::array< std::pair< uint16_t, uint16_t >, size > &  minMaxAddresses)
inline

Loads min and max values

Parameters
[in]minMaxAddressesaddresses to store manual min/max values in (pair of min,max addresses).

Definition at line 56 of file AnalogAxisProcessing.h.

◆ saveMinMaxValues()

template<size_t size>
void AnalogAxisProcessing::saveMinMaxValues ( const std::array< std::pair< uint16_t, uint16_t >, size > &  minMaxAddresses)
inline

Saves min and max values

Parameters
[in]minMaxAddressesaddresses to store manual min/max values in (pair of min,max addresses).

Definition at line 73 of file AnalogAxisProcessing.h.

◆ setAnalogProcessingConfig()

void AnalogAxisProcessing::setAnalogProcessingConfig ( AnalogProcessingConfig  conf)

Sets the processing config. Use this to restore settings

Definition at line 84 of file AnalogAxisProcessing.cpp.

◆ setupFilters()

void AnalogAxisProcessing::setupFilters ( )

Definition at line 67 of file AnalogAxisProcessing.cpp.

Member Data Documentation

◆ analogSource

AnalogSource* AnalogAxisProcessing::analogSource
protected

Definition at line 86 of file AnalogAxisProcessing.h.

◆ autorangeScale

float AnalogAxisProcessing::autorangeScale = 1.05
protected

Definition at line 96 of file AnalogAxisProcessing.h.

◆ axisAmount

const uint32_t AnalogAxisProcessing::axisAmount
protected

Definition at line 85 of file AnalogAxisProcessing.h.

◆ conf

AnalogProcessingConfig AnalogAxisProcessing::conf
protected

Definition at line 84 of file AnalogAxisProcessing.h.

◆ filterF

const float AnalogAxisProcessing::filterF = 30.0/1000.0
protected

Definition at line 92 of file AnalogAxisProcessing.h.

◆ filterQ

const float AnalogAxisProcessing::filterQ = 0.5
protected

Definition at line 92 of file AnalogAxisProcessing.h.

◆ filters

std::vector<Biquad> AnalogAxisProcessing::filters
protected

Definition at line 88 of file AnalogAxisProcessing.h.

◆ filterSamples

uint32_t AnalogAxisProcessing::filterSamples = 0
protected

Definition at line 93 of file AnalogAxisProcessing.h.

◆ minMaxVals

std::vector<MinMaxPair> AnalogAxisProcessing::minMaxVals
protected

Definition at line 89 of file AnalogAxisProcessing.h.

◆ modes

const struct AnalogAxisProcessing::AnalogProcessingMode AnalogAxisProcessing::modes
private

◆ rawValues

std::vector<int32_t> AnalogAxisProcessing::rawValues
protected

Definition at line 98 of file AnalogAxisProcessing.h.

◆ waitFilterSamples

const uint32_t AnalogAxisProcessing::waitFilterSamples = 500
protected

Definition at line 94 of file AnalogAxisProcessing.h.


The documentation for this class was generated from the following files: