rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
controllers
generated
enums
rusefi_config_generated_enums.h
Go to the documentation of this file.
1
// Not yet generated
2
3
#pragma once
4
5
#include <cstdint>
6
#include <cstring>
7
#include <type_traits>
8
9
namespace
rusefi::generated::enums
10
{
11
template
<
typename
T>
12
constexpr
auto
Enum2Underlying
(T
const
e)
requires
std::is_enum_v<T> {
13
return
static_cast<
std::underlying_type_t<T>
>
(e);
14
}
15
16
template
<
typename
T>
17
struct
EnumStringPair
{
18
T
const
enumValue
;
19
char
const
*
const
name
;
20
};
21
22
template
<
typename
T>
23
constexpr
EnumStringPair<T>
EnumLookUp
[]{};
24
25
template
<
typename
T>
26
constexpr
char
const
*
Enum2String
(T
const
e) {
27
for
(
auto
& entry : EnumLookUp<T>) {
28
if
(entry.enumValue == e) {
29
return
entry.name;
30
}
31
}
32
return
"UNSUPPORTED_ENUM_VALUE"
;
33
}
34
35
template
<
typename
T>
36
constexpr
T
String2Enum
(
char
const
*
const
s) {
37
for
(
auto
& entry : EnumLookUp<T>) {
38
if
(std::strncmp(entry.name, s, std::strlen(entry.name) + 1) == 0) {
39
return
entry.enumValue;
40
}
41
}
42
return
T::UNSUPPORTED_ENUM_VALUE;
// Invalid value (may need adjustment)
43
}
44
45
/* This enum is used to select your desired Engine Load calculation algorithm */
46
enum class
engine_load_mode_e
: uint8_t {
47
/* Speed Density algorithm - Engine Load is a function of MAP, VE and target AFR
48
* http://articles.sae.org/8539/ */
49
LM_SPEED_DENSITY
= 0,
50
/* MAF with a known kg/hour function */
51
LM_REAL_MAF
= 1,
52
LM_ALPHA_N
= 2,
53
LM_LUA
= 3,
54
UNSUPPORTED_ENUM_VALUE
55
};
56
57
template
<>
58
inline
constexpr
EnumStringPair<engine_load_mode_e>
EnumLookUp<engine_load_mode_e>
[] = {
59
{
engine_load_mode_e::LM_SPEED_DENSITY
,
"LM_SPEED_DENSITY"
},
60
{
engine_load_mode_e::LM_REAL_MAF
,
"LM_REAL_MAF"
},
61
{
engine_load_mode_e::LM_ALPHA_N
,
"LM_ALPHA_N"
},
62
{
engine_load_mode_e::LM_LUA
,
"LM_LUA"
}
63
};
64
}
rusefi::generated::enums
Definition
rusefi_config_generated_enums.h:10
rusefi::generated::enums::Enum2String
constexpr char const * Enum2String(T const e)
Definition
rusefi_config_generated_enums.h:26
rusefi::generated::enums::EnumLookUp< engine_load_mode_e >
constexpr EnumStringPair< engine_load_mode_e > EnumLookUp< engine_load_mode_e >[]
Definition
rusefi_config_generated_enums.h:58
rusefi::generated::enums::EnumLookUp
constexpr EnumStringPair< T > EnumLookUp[]
Definition
rusefi_config_generated_enums.h:23
rusefi::generated::enums::String2Enum
constexpr T String2Enum(char const *const s)
Definition
rusefi_config_generated_enums.h:36
rusefi::generated::enums::Enum2Underlying
constexpr auto Enum2Underlying(T const e)
Definition
rusefi_config_generated_enums.h:12
rusefi::generated::enums::engine_load_mode_e
engine_load_mode_e
Definition
rusefi_config_generated_enums.h:46
rusefi::generated::enums::engine_load_mode_e::LM_LUA
@ LM_LUA
rusefi::generated::enums::engine_load_mode_e::UNSUPPORTED_ENUM_VALUE
@ UNSUPPORTED_ENUM_VALUE
rusefi::generated::enums::engine_load_mode_e::LM_SPEED_DENSITY
@ LM_SPEED_DENSITY
rusefi::generated::enums::engine_load_mode_e::LM_REAL_MAF
@ LM_REAL_MAF
rusefi::generated::enums::engine_load_mode_e::LM_ALPHA_N
@ LM_ALPHA_N
rusefi::generated::enums::EnumStringPair
Definition
rusefi_config_generated_enums.h:17
rusefi::generated::enums::EnumStringPair::enumValue
T const enumValue
Definition
rusefi_config_generated_enums.h:18
rusefi::generated::enums::EnumStringPair::name
char const *const name
Definition
rusefi_config_generated_enums.h:19
Generated on Sat Sep 27 2025 00:10:06 for rusEFI by
1.9.8