Skip to content

Commit

Permalink
Fix: state logic on main trans
Browse files Browse the repository at this point in the history
  • Loading branch information
jasonyang-ee committed Jul 4, 2023
1 parent fc054ff commit f37bfed
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 6 deletions.
4 changes: 2 additions & 2 deletions Application/Inc/State.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@ struct MainState {
// clang-format off
return make_transition_table(
*state<begin> + event<start> / act_idle = state<Idle>,
state<Idle> + event<dac_update> / (act_dac, process(start{})) = state<DACState>,
state<DACState> + event<function_ended> / state<Idle>
state<Idle> + event<dac_update> / act_dac = state<DACState>,
state<DACState> + event<function_ended> = state<Idle>

);
// clang-format on
Expand Down
2 changes: 2 additions & 0 deletions Application/Src/CLI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ int32_t CLI::cmd_idle(int32_t argc, char** argv) {
if (argc == 1) {
main_sm.process_event(shutdown{});
main_sm.process_event(start{});
main_sm.process_event(start{});
} else {
serialCOM.sendString("Unknown Command\n");
}
Expand All @@ -139,6 +140,7 @@ int32_t CLI::cmd_dac(int32_t argc, char** argv) {
if (argc ==1) {
main_sm.process_event(shutdown{});
main_sm.process_event(dac_update{});
main_sm.process_event(start{});
} else if (argc == 2) {
if (!strcmp(argv[1], "help")) {
serialCOM.sendString(help_text);
Expand Down
12 changes: 8 additions & 4 deletions Application/Src/Thread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ Thread::Thread() {
// xTaskCreate(_task, "", 512, this, 2, &_Handle);

auto t1 = [](void *arg) { static_cast<Thread *>(arg)->telemetry_human(); };
xTaskCreate(t1, "telemetry_human", 150, this, 2, &telemetry_human_handle);
xTaskCreate(t1, "telemetry_human", 300, this, 2, &telemetry_human_handle);
vTaskSuspend(telemetry_human_handle);

auto a1 = [](void *arg) { static_cast<Thread *>(arg)->idle(); };
xTaskCreate(a1, "idle", 300, this, 2, &idle_handle);
xTaskCreate(a1, "idle", 400, this, 2, &idle_handle);
vTaskSuspend(idle_handle);

auto a2 = [](void *arg) { static_cast<Thread *>(arg)->dacUpdate(); };
xTaskCreate(a2, "dacUpdate", 300, this, 2, &dac_handle);
xTaskCreate(a2, "dacUpdate", 400, this, 2, &dac_handle);
vTaskSuspend(dac_handle);

auto s0 = [](void *arg) { static_cast<Thread *>(arg)->init(); };
Expand All @@ -31,7 +31,7 @@ Thread::Thread() {
xTaskCreate(s11, "serial send out", 64, this, 0, &serial_send_handle);

auto s12 = [](void *arg) { static_cast<Thread *>(arg)->parse(); };
xTaskCreate(s12, "cli parsing", 400, this, 3, &parse_handle);
xTaskCreate(s12, "cli parsing", 800, this, 3, &parse_handle);
}

Thread::~Thread() {}
Expand All @@ -43,6 +43,10 @@ void Thread::telemetry_human() {
serialCOM.sendNumber(dac.getLevel());
serialCOM.sendString("\nADC Sensing Value:\t");
serialCOM.sendNumber(adc.volt_from_dac);

// State machine debug
serialCOM.sendString("\n\nCurrent State:\t");
main_sm.visit_current_states([](auto s) { serialCOM.sendString(s.c_str()); });
serialCOM.sendLn();

stream_sm.process_event(finish{});
Expand Down

0 comments on commit f37bfed

Please sign in to comment.