Skip to content

Commit

Permalink
numerous readability enhancements, re-worked decimal string converter…
Browse files Browse the repository at this point in the history
…, simplified debug monitor interpreter code
  • Loading branch information
tvago1972 committed Jun 6, 2023
1 parent a50af8e commit 419973f
Show file tree
Hide file tree
Showing 30 changed files with 2,861 additions and 2,591 deletions.
25 changes: 13 additions & 12 deletions mpguino_tav/configs.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ const unsigned long myBaudRate1 = 19200ul; // (Atmega2560 board)
//
#define trackIdleEOCdata true // Ability to track engine idling and EOC modes
#define useSpiffyTripLabels true // Ability to use enhanced trip labels on main display screens
//#define useSpiffyBigChars true
#define useSpiffyBigChars true
//#define useSoftwareClock true // Shows 24 hour clock driven off of timer0, and provides a means to set it
//#define useBigFE true // Show big fuel economy displays
//#define useBigDTE true // Show big distance-to-empty displays
//#define useBigTTE true // Show big time-to-empty displays
#define useBigFE true // Show big fuel economy displays
#define useBigDTE true // Show big distance-to-empty displays
#define useBigTTE true // Show big time-to-empty displays
//#define useBarFuelEconVsTime true // Show Fuel Economy over Time bar graph
//#define useBarFuelEconVsSpeed true // Show Fuel Economy vs Speed, Fuel Used vs Speed bar graphs
#define usePartialRefuel true // Provide means to enter partial refuel amount into MPGuino
Expand All @@ -53,7 +53,7 @@ const unsigned long myBaudRate1 = 19200ul; // (Atmega2560 board)
#define useCPUreading true // Show CPU loading and available RAM usage
//#define useChryslerMAPCorrection true // Ability to perform on-the-fly fuel injector data correction for late-model Chrysler vehicles
//#define useChryslerBaroSensor true // allows use of a separate MAP sensor wired to MPGuino to read barometric pressure, for even more accurate correction
//#define useExpansionPins true // Generate analog 0-5VDC output voltage on expansion pins to drive LEDs or feed signal to external gauges
#define useOutputPins true // Generate analog 0-5VDC output voltage on expansion pins to drive LEDs or feed signal to external gauges
//#define blankScreenOnMessage true // Completely blank display screen upon display of message
//#define useImperialGallon true // when selected, uses Imperial gallons instead of default US gallons
//#define useCarVoltageOutput true // Ability to display alternator voltage and optional secondary sensor (via meelis11)
Expand Down Expand Up @@ -96,12 +96,13 @@ const unsigned long myBaudRate1 = 19200ul; // (Atmega2560 board)
// program measurement and debugging tools
//
#define useDebugTerminal true // (inw) terminal interface between PC and MPGuino
//#define useDebugTerminalHelp true // entering '?' in debug terminal displays brief help
#define useDebugTerminalLabels true // nice labels for various terminal interface output lists - requires useDebugTerminal
#define useDebugCPUreading true // Show enhanced CPU loading and available RAM usage - requires useDebugTerminal
//#define useSWEET64trace true // Ability to view real-time 64-bit calculations from SWEET64 kernel - requires useDebugTerminal
//#define useTestButtonValues true // Allows observation of button mapping
#define useSimulatedFIandVSS true // forces simulation of VSS and fuel injector events
//#define useStatusLEDpins true // allows usage of LEDs to show status of certain bits - currently used to indicate when MPGuino is awake
#define useActivityLED true // allows usage of LEDs to show status of certain bits - currently used to indicate when MPGuino is awake
#define useDebugAnalog true // forces ADC support to be compiled in, along with a dedicated analog screen
//#define useObsoleteMult64 true // use obsolete slower bit-based 64-bit multiplication
//#define useSWEET64mult true // shift mult64 from native C++ to SWEET64 bytecode (saves 36 bytes)
Expand Down Expand Up @@ -179,7 +180,7 @@ const unsigned long myBaudRate1 = 19200ul; // (Atmega2560 board)
#undef useAnalogMuxButtons
#undef useParallax5PositionSwitch
#undef useAdafruitRGBLCDshield
#undef useStatusLEDpins
#undef useActivityLED
#endif // defined (useJellyBeanDriverBoard) || defined (useLegacyBoard)

#if not(__AVR_ATmega32U4__) && not(__AVR_ATmega2560__) && not(__AVR_ATmega328P__)
Expand Down Expand Up @@ -401,7 +402,7 @@ const unsigned long myBaudRate1 = 19200ul; // (Atmega2560 board)
#define useTimer1 true
#endif // useTimer1Interrupt

#ifdef useExpansionPins
#if defined(useOutputPins)
#if defined(__AVR_ATmega32U4__)
#define useTimer4 true
#endif // defined(__AVR_ATmega32U4__)
Expand All @@ -412,7 +413,7 @@ const unsigned long myBaudRate1 = 19200ul; // (Atmega2560 board)
#define useTimer1 true
#define useTimer2 true
#endif // defined(__AVR_ATmega328P__)
#endif // useExpansionPins
#endif // defined(useOutputPins)

#ifdef useDragRaceFunction
#define useVehicleMass true
Expand Down Expand Up @@ -526,9 +527,9 @@ const unsigned long myBaudRate1 = 19200ul; // (Atmega2560 board)
#endif // useSerial0Port && __AVR_ATmega32U4__

// Really, dcb? Really? You couldn't have used something else for LCD data bit 3?
#if useLegacyLCD && __AVR_ATmega328P__ && useStatusLEDpins
#error *** CANNOT use useLegacyLCD and useStatusLEDpins!!! ***
#endif // useLegacyLCD && __AVR_ATmega328P__ && useStatusLEDpins
#if useLegacyLCD && __AVR_ATmega328P__ && useActivityLED
#error *** CANNOT use useLegacyLCD and useActivityLED!!! ***
#endif // useLegacyLCD && __AVR_ATmega328P__ && useActivityLED

#if useSoftwareClock && useDeepSleep
#error *** CANNOT use both useSoftwareClock and useDeepSleep!!! ***
Expand Down
134 changes: 134 additions & 0 deletions mpguino_tav/feature_base.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
uint8_t mainScreenDisplayHandler(uint8_t cmd, uint8_t cursorPos, uint8_t cursorChanged);
void doReturnToMainScreen(void);
#ifdef useScreenEditor // Programmable main display screen edit support section
void doCursorUpdateScreenEdit(void);
void doScreenEditDisplay(void);
void doGoScreenEdit(void);
void doScreenEditBump(void);
void doSaveScreen(void);
void doScreenReturnToMain(void);
#endif // useScreenEditor

uint8_t topScreenLevel;

const uint8_t displayPageCount = 9 // count of base number of data screens
#ifdef trackIdleEOCdata
+ 3 // count of Idle/EOC tracking data screens
#endif // trackIdleEOCdata
;
const uint8_t mainScreenDisplayFormatSize = displayPageCount * 4;

const char mainScreenFuncNames[] PROGMEM = {
"Instrument\r"
"Custom\r"
"Instant/Current\r"
"Instant/Tank\r"
"Current\r"
"Tank\r"
#ifdef trackIdleEOCdata
"EOC/Idle\r"
#endif // trackIdleEOCdata
"Current Data\r"
"Tank Data\r"
#ifdef trackIdleEOCdata
"Current EOC/Idle\r"
"Tank EOC/Idle\r"
#endif // trackIdleEOCdata
"Remaining\r"
};

const uint8_t mainDisplayScreenFormats[(unsigned int)(mainScreenDisplayFormatSize)][2] PROGMEM = {
{lblInstantIdx, tSpeed} // Instrument
,{lblInstantIdx, tEngineSpeed}
,{lblInstantIdx, tFuelRate}
,{lblInstantIdx, tFuelEcon}

,{lblInstantIdx, tFuelEcon} // Custom
,{lblInstantIdx, tSpeed}
,{lblInstantIdx, tFuelRate}
,{lblCurrentIdx, tFuelEcon}

,{lblInstantIdx, tFuelEcon} // Instant / Current
,{lblInstantIdx, tSpeed}
,{lblCurrentIdx, tFuelEcon}
,{lblCurrentIdx, tDistance}

,{lblInstantIdx, tFuelEcon} // Instant / Tank
,{lblInstantIdx, tSpeed}
,{lblTankIdx, tFuelEcon}
,{lblTankIdx, tDistance}

,{lblCurrentIdx, tSpeed} // Current
,{lblCurrentIdx, tFuelEcon}
,{lblCurrentIdx, tDistance}
,{lblCurrentIdx, tFuelUsed}

,{lblTankIdx, tSpeed} // Tank
,{lblTankIdx, tFuelEcon}
,{lblTankIdx, tDistance}
,{lblTankIdx, tFuelUsed}

#ifdef trackIdleEOCdata
,{lblEOCidleCurrentIdx, tDistance} // EOC / Idle
,{lblEOCidleCurrentIdx, tFuelUsed}
,{lblEOCidleTankIdx, tDistance}
,{lblEOCidleTankIdx, tFuelUsed}

#endif // trackIdleEOCdata
,{lblCurrentIdx, tEngineRunTime} // Current data
,{lblCurrentIdx, tFuelUsed}
,{lblCurrentIdx, tMotionTime}
,{lblCurrentIdx, tDistance}

,{lblTankIdx, tEngineRunTime} // Tank data
,{lblTankIdx, tFuelUsed}
,{lblTankIdx, tMotionTime}
,{lblTankIdx, tDistance}

#ifdef trackIdleEOCdata
,{lblEOCidleCurrentIdx, tEngineRunTime} // Current EOC / Idle
,{lblEOCidleCurrentIdx, tFuelUsed}
,{lblEOCidleCurrentIdx, tMotionTime}
,{lblEOCidleCurrentIdx, tDistance}

,{lblEOCidleTankIdx, tEngineRunTime} // Tank EOC / Idle
,{lblEOCidleTankIdx, tFuelUsed}
,{lblEOCidleTankIdx, tMotionTime}
,{lblEOCidleTankIdx, tDistance}

#endif // trackIdleEOCdata
,{lblTankIdx, tFuelUsed} // Remaining
,{lblTankIdx, tRemainingFuel}
,{lblTankIdx, tTimeToEmpty}
,{lblTankIdx, tDistanceToEmpty}
};

#ifdef trackIdleEOCdata
const uint8_t mainEOCscreenFormats[(unsigned int)(4)][2] PROGMEM = {
{lblInstantIdx, tSpeed}
,{lblCurrentIdx, tFuelEcon}
,{lblEOCidleCurrentIdx, tDistance}
,{lblEOCidleTankIdx, tDistance}
};

const uint8_t mainIdleScreenFormats[(unsigned int)(4)][2] PROGMEM = {
{lblInstantIdx, tFuelRate}
,{lblCurrentIdx, tFuelEcon}
,{lblEOCidleCurrentIdx, tFuelUsed}
,{lblEOCidleTankIdx, tFuelUsed}
};

#endif // trackIdleEOCdata
#if defined(useScreenEditor)
/* Programmable main display screen edit support section */

uint8_t screenTripValue = 0;
uint8_t screenFunctionValue = 0;
uint8_t screenEditDirty = 0;

const uint8_t screenEditFlag_dirty = 0x80;

const char seFormatRevertedString[] PROGMEM = "Format reverted";
const char seExitScreenEditString[] PROGMEM = "Screen Display";

#endif // defined(useScreenEditor)
Loading

0 comments on commit 419973f

Please sign in to comment.