reworked String Handling of Enums
This commit is contained in:
@@ -1,7 +1,20 @@
|
||||
#include "common.h"
|
||||
|
||||
static const char kUnknownStr[] = "Unknown";
|
||||
|
||||
// ---- System status string table ----
|
||||
const char *const SystemStatusString[SYSSTAT_COUNT] = {
|
||||
"Startup",
|
||||
"Normal",
|
||||
"Rain",
|
||||
"Wash",
|
||||
"Purge",
|
||||
"Error",
|
||||
"Shutdown",
|
||||
};
|
||||
|
||||
// String representation of SpeedSource enum
|
||||
const char *SpeedSourceString[] = {
|
||||
const char *const SpeedSourceString[SPEEDSOURCE_COUNT] = {
|
||||
#ifdef FEATURE_ENABLE_TIMER
|
||||
"Timer",
|
||||
#endif
|
||||
@@ -12,10 +25,8 @@ const char *SpeedSourceString[] = {
|
||||
"OBD2 (CAN)",
|
||||
};
|
||||
|
||||
const size_t SpeedSourceString_Elements = sizeof(SpeedSourceString) / sizeof(SpeedSourceString[0]);
|
||||
|
||||
// String representation of GPSBaudRate enum
|
||||
const char *GPSBaudRateString[] = {
|
||||
const char *const GPSBaudRateString[GPSBAUDRATE_COUNT] = {
|
||||
"4800",
|
||||
"9600",
|
||||
"19200",
|
||||
@@ -24,12 +35,49 @@ const char *GPSBaudRateString[] = {
|
||||
"115200",
|
||||
};
|
||||
|
||||
const size_t GPSBaudRateString_Elements = sizeof(GPSBaudRateString) / sizeof(GPSBaudRateString[0]);
|
||||
|
||||
// String representation of CANSource enum
|
||||
const char *CANSourceString[] = {
|
||||
const char *const CANSourceString[CANSOURCE_COUNT] = {
|
||||
"KTM 890 Adventure R (2021)",
|
||||
"KTM 1290 Superduke R (2023)",
|
||||
};
|
||||
|
||||
const size_t CANSourceString_Elements = sizeof(CANSourceString) / sizeof(CANSourceString[0]);
|
||||
// ---- Centralized, safe getters ----
|
||||
|
||||
// ---- Local helper for range check ----
|
||||
static inline bool in_range(int v, int max_exclusive)
|
||||
{
|
||||
return (v >= 0) && (v < max_exclusive);
|
||||
}
|
||||
|
||||
// ---- Safe getter ----
|
||||
const char *ToString(tSystem_Status v)
|
||||
{
|
||||
const int i = static_cast<int>(v);
|
||||
return in_range(i, static_cast<int>(SYSSTAT_COUNT))
|
||||
? SystemStatusString[i]
|
||||
: kUnknownStr;
|
||||
}
|
||||
|
||||
const char *ToString(SpeedSource_t v)
|
||||
{
|
||||
const int i = static_cast<int>(v);
|
||||
return in_range(i, static_cast<int>(SPEEDSOURCE_COUNT))
|
||||
? SpeedSourceString[i]
|
||||
: kUnknownStr;
|
||||
}
|
||||
|
||||
const char *ToString(GPSBaudRate_t v)
|
||||
{
|
||||
const int i = static_cast<int>(v);
|
||||
return in_range(i, static_cast<int>(GPSBAUDRATE_COUNT))
|
||||
? GPSBaudRateString[i]
|
||||
: kUnknownStr;
|
||||
}
|
||||
|
||||
const char *ToString(CANSource_t v)
|
||||
{
|
||||
const int i = static_cast<int>(v);
|
||||
return in_range(i, static_cast<int>(CANSOURCE_COUNT))
|
||||
? CANSourceString[i]
|
||||
: kUnknownStr;
|
||||
}
|
||||
|
Reference in New Issue
Block a user