SAE Teensy ECU
IIT SAE Microcontroller programming
Loading...
Searching...
No Matches
SDBC_gen.hpp
1
7#pragma once
8
9#include <stdint.h>
10#include <unordered_map>
11
12#include "Canbus.h"
13#include "ECUGlobalConfig.h"
14
15#include "SDBC_class.hpp"
16#include "SDBC_type.hpp"
17
18namespace SDBC {
19
20// All messages, numbers are their addresses
21MSG Messages[6] = {
22 // TODO: initialize LINKs as messages
23
24 {3, true},
25 {10, false},
26 {0xA0, true},
27};
28
29const std::unordered_map<const uint32_t, MSG *> MessageMap = {
30 {8, Messages + 0},
31 {5, Messages + 1},
32 {2, Messages + 2},
33 {3, Messages + 3},
34 {10, Messages + 4},
35 {0xA0, Messages + 5},
36};
37
38const struct FRONT_ECU {
39 static const int nodeID = 0; // ID based on order of appearance in sdbc
40 // TODO: Take note of only one value setter per signal
41 static const struct PIN {
42 const GPIO ONBOARD_LED = {13, &SIGNAL.ONBOARD_LED, 1, 1}; // TODO: only signal or pin can have setter defined, not both
43 const GPIO ANALOG_TEST = {24, nullptr, 0, 1};
44 const GPIO BUTTON_OFF = {2, nullptr, 1, 0};
45 const GPIO WHEEL_1 = {21, nullptr, 0, 0};
46 const GPIO WHEEL_0 = {20, nullptr, 0, 0};
47 const VIRT CHARGE_SIGNAL = {128 + 0, nullptr, 1, 1, true};
48 const VIRT START_LED = {128 + 1, nullptr, 1, 1, true};
49 } PIN;
50 static const int virtCount = 2;
51 static const int gpioMax = 55; // CORE_NUM_PINS
52
53 static const struct MESSAGE {
54 const SIG *MSGBLK_FRONT_LED_SIGNALS[2] = {
55 &SIGNAL.ONBOARD_LED,
56 &SIGNAL.OTHER_CTRL_SIG,
57 };
58 const SIG *MSGBLK_FRONT_DEBUG_SIGNALS[1] = {
59 &SIGNAL.DEBUG_INTEGER,
60 };
61 const SIG *MSGBLK_FRONT_WHEEL_SPEED_SIGNALS[2] = {
62 &SIGNAL.WHEEL_SPEED_FRONT_LEFT,
63 &SIGNAL.WHEEL_SPEED_FRONT_RIGHT,
64 };
65 const MSG MSGBLK_FRONT_LED = {8, false, MSGBLK_FRONT_LED_SIGNALS, 2, true};
66 const MSG MSGBLK_FRONT_DEBUG = {5, true, MSGBLK_FRONT_DEBUG_SIGNALS, 1, false};
67 const MSG MSGBLK_FRONT_WHEEL_SPEED = {2, true, MSGBLK_FRONT_WHEEL_SPEED_SIGNALS, 2, true};
68 } MESSAGE;
69
70 static const struct SIGNAL {
71 const SIG ONBOARD_LED = {0x00000000FFFFFFFF, Messages + 0, &PIN.ONBOARD_LED, dt::int_t, 0, 0};
72 const SIG OTHER_CTRL_SIG = {0x0000FFFF00000000, Messages + 0, nullptr, dt::short_t, 32, 0};
73 const SIG DEBUG_INTEGER = {0x00000000FFFFFFFF, Messages + 1, nullptr, dt::int_t, 0, 0};
74 const SIG WHEEL_SPEED_FRONT_LEFT = {0x00000000FFFFFFFF, Messages + 2, &PIN.WHEEL_0, dt::int_t, 0, 0};
75 const SIG WHEEL_SPEED_FRONT_RIGHT = {0xFFFFFFFF00000000, Messages + 2, &PIN.WHEEL_1, dt::int_t, 32, 0};
76 } SIGNAL;
77 const std::unordered_map<const uint16_t, const GPIO *> __pinMap = {
78 {13, &PIN.ONBOARD_LED},
79 {24, &PIN.ANALOG_TEST},
80 {2, &PIN.BUTTON_OFF},
81 {21, &PIN.WHEEL_1},
82 {20, &PIN.WHEEL_0},
83 {128 + 0, &PIN.CHARGE_SIGNAL},
84 {128 + 1, &PIN.START_LED},
85 };
86} FRONT_ECU;
87
88const struct BACK_ECU {
89 const int nodeID = 1;
90 const struct PIN {
91 const GPIO ONBOARD_LED = {13, nullptr, 1, 1};
92 const GPIO SERVO_OFF = {0, nullptr, 1, 1};
93 const GPIO TSV_SIGNAL = {3, nullptr, 1, 0};
94 const GPIO WHEEL_1 = {21, nullptr, 0, 0};
95 const GPIO WHEEL_0 = {20, nullptr, 0, 0};
96 const GPIO AIR2 = {4, nullptr, 1, 1};
97 const VIRT STATE = {128 + 0, nullptr, 0, 1, true};
98 } PIN;
99 const SIG WHEEL_SPEED_BACK_LEFT = {0x00000000FFFFFFFF, Messages + 3, &PIN.WHEEL_0, dt::int_t, 0, 1};
100 const SIG WHEEL_SPEED_BACK_RIGHT = {0xFFFFFFFF00000000, Messages + 3, &PIN.WHEEL_1, dt::int_t, 32, 1};
101 const SIG ONBOARD_LED = {0x00000000FFFFFFFF, Messages + 4, &PIN.ONBOARD_LED, dt::int_t, 0, 0};
102} BACK_ECU;
103
104const struct MC0 {
105 const int nodeID = 2;
106 // const SIG FAULT_GEN_0 = {0xA0, 0};
107 // const SIG FAULT_GEN_1 = {0xA0, 1};
108 // const SIG FAULT_GEN_2 = {0xA0, 2};
109 // const SIG FAULT_GEN_3 = {0xA0, 3};
110 // const SIG FAULT_GEN_4 = {0xA0, 4};
111 // const SIG FAULT_GEN_5 = {0xA0, 5};
112 // const SIG FAULT_GEN_6 = {0xA0, 6};
113 // const SIG FAULT_GEN_7 = {0xA0, 7};
114 // const SIG FAULT_GEN_8 = {0xA0, 8};
115 // const SIG FAULT_GEN_9 = {0xA0, 9};
116 // const SIG FAULT_GEN_10 = {0xA0, 10};
117 // const SIG FAULT_GEN_11 = {0xA0, 11};
118 // const SIG FAULT_GEN_12 = {0xA0, 12};
119 // const SIG FAULT_GEN_13 = {0xA0, 13};
120 // const SIG FAULT_GEN_14 = {0xA0, 14};
121 // const SIG FAULT_GEN_15 = {0xA0, 15};
122 // const SIG FAULT_GEN_16 = {0xA0, 16};
123 // const SIG FAULT_GEN_17 = {0xA0, 17};
124 // const SIG FAULT_GEN_18 = {0xA0, 18};
125 // const SIG FAULT_GEN_19 = {0xA0, 19};
126 // const SIG FAULT_GEN_20 = {0xA0, 20};
127 // const SIG FAULT_GEN_21 = {0xA0, 21};
128 // const SIG FAULT_GEN_22 = {0xA0, 22};
129 // const SIG FAULT_GEN_23 = {0xA0, 23};
130 // const SIG FAULT_GEN_24 = {0xA0, 24};
131 // const SIG FAULT_GEN_25 = {0xA0, 25};
132 // const SIG FAULT_GEN_26 = {0xA0, 26};
133 // const SIG FAULT_GEN_27 = {0xA0, 27};
134 // const SIG FAULT_GEN_28 = {0xA0, 28};
135 // const SIG FAULT_GEN_29 = {0xA0, 29};
136 // const SIG FAULT_GEN_30 = {0xA0, 30};
137 // const SIG FAULT_GEN_31 = {0xA0, 31};
138 // const SIG FAULT_GEN_32 = {0xA0, 32};
139 // const SIG FAULT_GEN_33 = {0xA0, 33};
140 // const SIG FAULT_GEN_34 = {0xA0, 34};
141 // const SIG FAULT_GEN_35 = {0xA0, 35};
142 // const SIG FAULT_GEN_36 = {0xA0, 36};
143 // const SIG FAULT_GEN_37 = {0xA0, 37};
144 // const SIG FAULT_GEN_38 = {0xA0, 38};
145 // const SIG FAULT_GEN_39 = {0xA0, 39};
146 // const SIG FAULT_GEN_40 = {0xA0, 40};
147 // const SIG FAULT_GEN_41 = {0xA0, 41};
148 // const SIG FAULT_GEN_42 = {0xA0, 42};
149 // const SIG FAULT_GEN_43 = {0xA0, 43};
150 // const SIG FAULT_GEN_44 = {0xA0, 44};
151 // const SIG FAULT_GEN_45 = {0xA0, 45};
152 // const SIG FAULT_GEN_46 = {0xA0, 46};
153 // const SIG FAULT_GEN_47 = {0xA0, 47};
154 // const SIG FAULT_GEN_48 = {0xA0, 48};
155 // const SIG FAULT_GEN_49 = {0xA0, 49};
156 // const SIG FAULT_GEN_50 = {0xA0, 50};
157 // const SIG FAULT_GEN_51 = {0xA0, 51};
158 // const SIG FAULT_GEN_52 = {0xA0, 52};
159 // const SIG FAULT_GEN_53 = {0xA0, 53};
160 // const SIG FAULT_GEN_54 = {0xA0, 54};
161 // const SIG FAULT_GEN_55 = {0xA0, 55};
162 // const SIG FAULT_GEN_56 = {0xA0, 56};
163 // const SIG FAULT_GEN_57 = {0xA0, 57};
164 // const SIG FAULT_GEN_58 = {0xA0, 58};
165 // const SIG FAULT_GEN_59 = {0xA0, 59};
166 // const SIG FAULT_GEN_60 = {0xA0, 60};
167 // const SIG FAULT_GEN_61 = {0xA0, 61};
168 // const SIG FAULT_GEN_62 = {0xA0, 62};
169 // const SIG FAULT_GEN_63 = {0xA0, 63};
170} MC0;
171
172const struct MC1 {
173 const int nodeID = 3;
174} MC1;
175
176const struct AMS {
177 const int nodeID = 4;
178} AMS;
179
180/* ACTIVE NODE SELECTOR */
181#ifdef CONFIG_ACTIVE_NODE == FRONT_ECU
182#define ACTIVE_NODE SDBC::FRONT_ECU
183#endif
184// #ifdef CONFIG_ACTIVE_NODE == BACK_ECU
185// #define ACTIVE_NODE SDBC::BACK_ECU
186// #endif
187
188} // namespace SDBC
FlexCAN_T4 wrapper.
Configure global build properties.
Definition SDBC.h:11