diff --git a/platformio.ini b/platformio.ini index ecaa4ca..057ac93 100644 --- a/platformio.ini +++ b/platformio.ini @@ -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} diff --git a/src/globals.h b/src/globals.h index 6855776..134402f 100644 --- a/src/globals.h +++ b/src/globals.h @@ -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; diff --git a/src/presets.h b/src/presets.h index a194fcf..409e58e 100644 --- a/src/presets.h +++ b/src/presets.h @@ -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 }; diff --git a/src/settings.h b/src/settings.h index 5de3f77..0672b6c 100644 --- a/src/settings.h +++ b/src/settings.h @@ -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); diff --git a/src/utils.h b/src/utils.h index 6b6135c..9c9c5f1 100644 --- a/src/utils.h +++ b/src/utils.h @@ -315,5 +315,16 @@ void readPotis() raw_brems = sampleMultipleTimes(PINS_BREMS); brems = scaleBetween(raw_brems, settings.boardcomputerHardware.bremsMin, settings.boardcomputerHardware.bremsMax, 0., 1000.); + +#ifdef FEATURE_GAMETRAK + raw_gametrakX = sampleMultipleTimes(PINS_GAMETRAKX); + gametrakX = scaleBetween(raw_gametrakX, settings.boardcomputerHardware.gametrakXMin, settings.boardcomputerHardware.gametrakXMax, 0., 1000.); + + raw_gametrakY = sampleMultipleTimes(PINS_GAMETRAKY); + gametrakY = scaleBetween(raw_gametrakY, settings.boardcomputerHardware.gametrakYMin, settings.boardcomputerHardware.gametrakYMax, 0., 1000.); + + raw_gametrakDist = sampleMultipleTimes(PINS_GAMETRAKDIST); + gametrakDist = scaleBetween(raw_gametrakDist, settings.boardcomputerHardware.gametrakDistMin, settings.boardcomputerHardware.gametrakDistMax, 0., 1000.); +#endif } }