Speeduino
Loading...
Searching...
No Matches
Files | Classes | Typedefs | Enumerations | Functions | Variables
3D Tables

Structures and functions related to 3D tables, such as VE, Spark Advance, AFR etc. More...

Files

file  table3d.h
 3D table data types and functions
 
file  table3d_axes.h
 3D table axis types and iterators
 
file  table3d_typedefs.h
 Typedefs for primitive 3D table elements.
 
file  table3d_values.h
 3D table value structs and iterators
 

Classes

struct  table3d_t
 
class  table_axis_iterator
 Iterate over table axis elements. More...
 
class  table_row_iterator
 Iterate through a table row. I.e. constant Y, changing X. More...
 
class  table_value_iterator
 Iterate through a tables values, row by row. More...
 

Typedefs

using table3d_dim_t = uint8_t
 Encodes the length of the axes.
 
using table3d_value_t = uint8_t
 The type of each table value.
 
using table3d_axis_t = uint8_t
 The type of each axis value.
 

Enumerations

enum class  TableType : uint8_t { TableType::table_type_None }
 Table type identifiers. Limited compile time RTTI. More...
 
enum class  AxisDomain : uint8_t { AxisDomain::Rpm , AxisDomain::Load }
 Encodes the real world measurement that a table axis captures. More...
 

Functions

table_value_iterator rows_begin (table3d_t *pTable, TableType key)
 
table_axis_iterator x_begin (table3d_t *pTable, TableType key)
 
table_axis_iterator x_rbegin (table3d_t *pTable, TableType key)
 
table_axis_iterator y_begin (table3d_t *pTable, TableType key)
 
table_axis_iterator y_rbegin (table3d_t *pTable, TableType key)
 
static constexpr uint16_t getConversionFactor (AxisDomain domain)
 

Variables

 Rpm
 
 Load
 

Detailed Description

Structures and functions related to 3D tables, such as VE, Spark Advance, AFR etc.

Logical:

E.g. for a 3x3 table, this is what the TS table editor would show:

     Y-Max    V6      V7      V8
     Y-Int    V3      V4      V5
     Y-Min    V0      V1      V2
             X-Min   X-Int   X-Max

In memory, we store rows in reverse:

I.e.

     Y-Min    V0      V1      V2
     Y-Int    V3      V4      V5
     Y-Max    V6      V7      V8
             X-Min   X-Int   X-Max

Typedef Documentation

◆ table3d_axis_t

The type of each axis value.

◆ table3d_dim_t

Encodes the length of the axes.

◆ table3d_value_t

The type of each table value.

Enumeration Type Documentation

◆ AxisDomain

Encodes the real world measurement that a table axis captures.

Enumerator
Rpm 

RPM (engine speed)

Load 

Load

◆ TableType

Table type identifiers. Limited compile time RTTI.

With no virtual functions (they have quite a bit of overhead in both space & time), we have to pass void* around in certain cases. In order to cast that back to a concrete table type, we need to somehow identify the type.

Once approach is to register each type - but that requires a central registry which will use RAM.

Since we have a compile time fixed set of table types, we can map a unique identifier to the type via a cast - this enum is that unique identifier.

Typically used in conjunction with visitTable3d()

Enumerator
table_type_None 

Function Documentation

◆ getConversionFactor()

static constexpr uint16_t getConversionFactor ( AxisDomain  domain)
staticconstexpr
Here is the call graph for this function:

◆ rows_begin()

table_value_iterator rows_begin ( table3d_t pTable,
TableType  key 
)
Here is the call graph for this function:

◆ x_begin()

table_axis_iterator x_begin ( table3d_t pTable,
TableType  key 
)
Here is the call graph for this function:

◆ x_rbegin()

table_axis_iterator x_rbegin ( table3d_t pTable,
TableType  key 
)
Here is the call graph for this function:

◆ y_begin()

table_axis_iterator y_begin ( table3d_t pTable,
TableType  key 
)
Here is the call graph for this function:

◆ y_rbegin()

table_axis_iterator y_rbegin ( table3d_t pTable,
TableType  key 
)
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ Load

Load

◆ Rpm

Rpm