Added gametrak poti readout and range settings

This commit is contained in:
2020-05-25 21:27:44 +02:00
parent 71a4601aa7
commit d8ed3d770c
5 changed files with 41 additions and 0 deletions

View File

@@ -86,6 +86,15 @@ build_flags =
-DDEFAULT_BREMSMAX=4000
-DFEATURE_BMS
-DFEATURE_GAMETRAK
-DPINS_GAMETRAKX=31
-DPINS_GAMETRAKY=32
-DPINS_GAMETRAKDIST=34
-DDEFAULT_GAMETRAKXMIN=0
-DDEFAULT_GAMETRAKXMAX=4095
-DDEFAULT_GAMETRAKYMIN=0
-DDEFAULT_GAMETRAKYMAX=4095
-DDEFAULT_GAMETRAKDISTMIN=0
-DDEFAULT_GAMETRAKDISTMAX=4095
[env:feedc0de_usb]
platform = ${common_env_data.platform}

View File

@@ -18,6 +18,10 @@ using pin_t = int;
int16_t raw_gas, raw_brems;
float gas, brems;
#ifdef FEATURE_GAMETRAK
int16_t raw_gametrakX, raw_gametrakY, raw_gametrakDist;
float gametrakX, gametrakY, gametrakDist;
#endif
float avgSpeed, avgSpeedKmh, sumCurrent, sumAbsoluteCurrent;
Settings settings;

View File

@@ -73,6 +73,14 @@ constexpr Settings::BoardcomputerHardware defaultBoardcomputerHardware {
.gasMax = DEFAULT_GASMAX,
.bremsMin = DEFAULT_BREMSMIN,
.bremsMax = DEFAULT_BREMSMAX,
#ifdef FEATURE_GAMETRAK
.gametrakXMin = DEFAULT_GAMETRAKXMIN,
.gametrakXMax = DEFAULT_GAMETRAKXMAX,
.gametrakYMin = DEFAULT_GAMETRAKYMIN,
.gametrakYMax = DEFAULT_GAMETRAKYMAX,
.gametrakDistMin = DEFAULT_GAMETRAKDISTMIN,
.gametrakDistMax = DEFAULT_GAMETRAKDISTMAX,
#endif
.swapScreenBytes = DEFAULT_SWAPSCREENBYTES
};

View File

@@ -38,6 +38,9 @@ struct Settings
struct BoardcomputerHardware {
int16_t sampleCount;
int16_t gasMin, gasMax, bremsMin, bremsMax;
#ifdef FEATURE_GAMETRAK
int16_t gametrakXMin, gametrakXMax, gametrakYMin, gametrakYMax, gametrakDistMin, gametrakDistMax;
#endif
bool swapScreenBytes;
} boardcomputerHardware;
@@ -105,6 +108,12 @@ void Settings::executeForEverySetting(T &&callable)
callable("gasMax", boardcomputerHardware.gasMax);
callable("bremsMin", boardcomputerHardware.bremsMin);
callable("bremsMax", boardcomputerHardware.bremsMax);
callable("gametrakXMin", boardcomputerHardware.gametrakXMin);
callable("gametrakXMax", boardcomputerHardware.gametrakXMax);
callable("gametrakYMin", boardcomputerHardware.gametrakYMin);
callable("gametrakYMax", boardcomputerHardware.gametrakYMax);
callable("gametrakDistMin", boardcomputerHardware.gametrakDistMin);
callable("gametrakDistMax", boardcomputerHardware.gametrakDistMax);
callable("swapScreenBytes", boardcomputerHardware.swapScreenBytes);
callable("default.ctrlTyp", defaultMode.ctrlTyp);

View File

@@ -315,5 +315,16 @@ void readPotis()
raw_brems = sampleMultipleTimes(PINS_BREMS);
brems = scaleBetween<float>(raw_brems, settings.boardcomputerHardware.bremsMin, settings.boardcomputerHardware.bremsMax, 0., 1000.);
#ifdef FEATURE_GAMETRAK
raw_gametrakX = sampleMultipleTimes(PINS_GAMETRAKX);
gametrakX = scaleBetween<float>(raw_gametrakX, settings.boardcomputerHardware.gametrakXMin, settings.boardcomputerHardware.gametrakXMax, 0., 1000.);
raw_gametrakY = sampleMultipleTimes(PINS_GAMETRAKY);
gametrakY = scaleBetween<float>(raw_gametrakY, settings.boardcomputerHardware.gametrakYMin, settings.boardcomputerHardware.gametrakYMax, 0., 1000.);
raw_gametrakDist = sampleMultipleTimes(PINS_GAMETRAKDIST);
gametrakDist = scaleBetween<float>(raw_gametrakDist, settings.boardcomputerHardware.gametrakDistMin, settings.boardcomputerHardware.gametrakDistMax, 0., 1000.);
#endif
}
}