2013-02-04 13:05:35 -08:00
|
|
|
/*
|
|
|
|
This file is used for everything related to maps/tables including their definition, functions etc
|
|
|
|
*/
|
2015-02-14 05:11:43 -08:00
|
|
|
#ifndef TABLE_H
|
|
|
|
#define TABLE_H
|
2013-07-09 05:12:35 -07:00
|
|
|
#include <Arduino.h>
|
2014-01-07 00:01:14 -08:00
|
|
|
|
2016-10-26 14:48:44 -07:00
|
|
|
#define TABLE_RPM_MULTIPLIER 100
|
2017-01-16 15:51:53 -08:00
|
|
|
#define TABLE_LOAD_MULTIPLIER 2
|
2016-10-26 14:48:44 -07:00
|
|
|
|
2014-05-12 04:27:22 -07:00
|
|
|
/*
|
|
|
|
The 2D table can contain either 8-bit (byte) or 16-bit (int) values
|
|
|
|
The valueSize variable should be set to either 8 or 16 to indicate this BEFORE the table is used
|
|
|
|
*/
|
2014-02-26 18:26:04 -08:00
|
|
|
struct table2D {
|
2014-05-12 04:27:22 -07:00
|
|
|
byte valueSize;
|
2014-02-26 20:17:14 -08:00
|
|
|
byte xSize;
|
2014-01-07 00:01:14 -08:00
|
|
|
|
2014-02-26 18:26:04 -08:00
|
|
|
byte *values;
|
2014-02-26 20:17:14 -08:00
|
|
|
byte *axisX;
|
2014-05-12 04:27:22 -07:00
|
|
|
|
|
|
|
int *values16;
|
|
|
|
int *axisX16;
|
2015-06-05 01:02:47 -07:00
|
|
|
|
|
|
|
//Store the last X and Y coordinates in the table. This is used to make the next check faster
|
2016-01-04 13:01:31 -08:00
|
|
|
int lastXMax, lastXMin;
|
2014-01-07 00:01:14 -08:00
|
|
|
};
|
|
|
|
|
2014-02-26 18:26:04 -08:00
|
|
|
void table2D_setSize(struct table2D targetTable, byte newSize);
|
|
|
|
|
2014-01-07 00:01:14 -08:00
|
|
|
struct table3D {
|
2015-09-17 22:06:21 -07:00
|
|
|
|
2013-02-04 13:05:35 -08:00
|
|
|
//All tables must be the same size for simplicity
|
|
|
|
|
2015-09-17 22:06:21 -07:00
|
|
|
byte xSize;
|
|
|
|
byte ySize;
|
|
|
|
|
|
|
|
byte **values;
|
|
|
|
int *axisX;
|
|
|
|
int *axisY;
|
2013-02-04 13:05:35 -08:00
|
|
|
|
2015-06-04 04:54:11 -07:00
|
|
|
//Store the last X and Y coordinates in the table. This is used to make the next check faster
|
|
|
|
byte lastXMax, lastXMin;
|
|
|
|
byte lastYMax, lastYMin;
|
2013-02-04 13:05:35 -08:00
|
|
|
};
|
|
|
|
|
2015-09-17 22:06:21 -07:00
|
|
|
void table3D_setSize(struct table3D *targetTable, byte newSize);
|
|
|
|
|
2013-02-05 00:27:06 -08:00
|
|
|
/*
|
2014-01-07 00:01:14 -08:00
|
|
|
3D Tables have an origin (0,0) in the top left hand corner. Vertical axis is expressed first.
|
2013-02-05 00:27:06 -08:00
|
|
|
Eg: 2x2 table
|
|
|
|
-----
|
|
|
|
|2 7|
|
|
|
|
|1 4|
|
|
|
|
-----
|
|
|
|
|
|
|
|
(0,1) = 7
|
|
|
|
(0,0) = 2
|
|
|
|
(1,0) = 1
|
|
|
|
|
|
|
|
*/
|
2015-06-04 04:54:11 -07:00
|
|
|
int get3DTableValue(struct table3D *fromTable, int, int);
|
2015-06-05 01:02:47 -07:00
|
|
|
int table2D_getValue(struct table2D *fromTable, int);
|
2015-02-14 05:11:43 -08:00
|
|
|
|
|
|
|
#endif // TABLE_H
|