|
5 | 5 | #include "OBCCU/Leds.hpp"
|
6 | 6 | #include "OBCCU/Contactors.hpp"
|
7 | 7 | #include "OBCCU/IMD.hpp"
|
| 8 | +#include "OBCCU/Actions.hpp" |
| 9 | +#include "OBCCU/StateMachine.hpp" |
8 | 10 |
|
9 | 11 | namespace OBCCU {
|
10 |
| - namespace Orders { |
11 |
| - void start_charging() { |
12 |
| - Conditions::want_to_charge = true; |
13 |
| - }; |
14 |
| - |
15 |
| - void stop_charging() { |
16 |
| - Conditions::want_to_charge = false; |
17 |
| - }; |
18 |
| - |
19 |
| - void open_contactors() { |
20 |
| - Contactors::high.turn_off(); |
21 |
| - Contactors::low.turn_off(); |
22 |
| - Conditions::contactors_closed = false; |
23 |
| - |
24 |
| - Leds::can.turn_off(); |
25 |
| - }; |
26 |
| - |
27 |
| - // void close_contactors() { |
28 |
| - // Contactors::low.turn_on(); |
29 |
| - // Contactors::high.turn_on(); |
30 |
| - // Conditions::contactors_closed = true; |
31 |
| - |
32 |
| - // Leds::can.turn_on(); |
33 |
| - // }; |
34 |
| - |
35 |
| - // TSD |
36 |
| - void close_contactors() { |
37 |
| - Contactors::low.turn_on(); |
38 |
| - |
39 |
| - Time::set_timeout(1500, []() { |
40 |
| - Contactors::high.turn_on(); |
41 |
| - Time::set_timeout(500, [&]() { |
42 |
| - Contactors::low.turn_off(); |
43 |
| - Conditions::contactors_closed = true; |
44 |
| - Leds::can.turn_on(); |
45 |
| - }); |
46 |
| - }); |
47 |
| - }; |
48 |
| - |
49 |
| - void turn_on_IMD() { |
50 |
| - imd.power.turn_on(); |
51 |
| - Leds::full_charge.turn_on(); |
52 |
| - }; |
53 |
| - |
54 |
| - void turn_off_IMD() { |
55 |
| - imd.power.turn_off(); |
56 |
| - Leds::full_charge.turn_off(); |
57 |
| - }; |
58 |
| - |
59 |
| - void reset() { |
60 |
| - NVIC_SystemReset(); |
61 |
| - } |
62 |
| - }; |
63 |
| - |
64 | 12 | class IncomingOrders {
|
65 | 13 | public:
|
66 |
| - HeapOrder start_charging_order; |
67 |
| - HeapOrder stop_charging_order; |
68 |
| - HeapOrder open_contactors_order; |
69 |
| - HeapOrder close_contactors_order; |
70 |
| - HeapOrder turn_on_IMD; |
71 |
| - HeapOrder turn_off_IMD; |
| 14 | + HeapStateOrder start_charging_order; |
| 15 | + HeapStateOrder stop_charging_order; |
| 16 | + HeapStateOrder open_contactors_order; |
| 17 | + HeapStateOrder close_contactors_order; |
| 18 | + HeapStateOrder turn_on_IMD; |
| 19 | + HeapStateOrder turn_off_IMD; |
72 | 20 | HeapOrder reset_board;
|
73 | 21 |
|
74 |
| - IncomingOrders() : start_charging_order(900, Orders::start_charging), |
75 |
| - stop_charging_order(901, Orders::stop_charging), |
76 |
| - open_contactors_order(902, Orders::open_contactors), |
77 |
| - close_contactors_order(903, Orders::close_contactors), |
78 |
| - turn_on_IMD(904, Orders::turn_on_IMD), |
79 |
| - turn_off_IMD(905, Orders::turn_off_IMD), |
80 |
| - reset_board(906, Orders::reset) {} |
| 22 | + IncomingOrders() : start_charging_order(900, Actions::start_charging, StateMachines::operational, States::Operational::IDLE), |
| 23 | + stop_charging_order(901, Actions::stop_charging, StateMachines::operational, States::Operational::CHARGING), |
| 24 | + open_contactors_order(902, Actions::open_contactors, StateMachines::contactors_sm, States::Contactors::CLOSED), |
| 25 | + close_contactors_order(903, Actions::close_contactors, StateMachines::contactors_sm, States::Contactors::OPEN), |
| 26 | + turn_on_IMD(904, Actions::turn_on_IMD, StateMachines::imd_sm, States::IMD::OFF), |
| 27 | + turn_off_IMD(905, Actions::turn_off_IMD, StateMachines::imd_sm, States::IMD::ON), |
| 28 | + reset_board(906, Actions::reset) {} |
81 | 29 | };
|
82 | 30 |
|
83 | 31 | class TCP {
|
|
0 commit comments