diff --git a/Application/Inc/Instances.hpp b/Application/Inc/Instances.hpp index 3f04e8e..e23a76a 100644 --- a/Application/Inc/Instances.hpp +++ b/Application/Inc/Instances.hpp @@ -21,6 +21,6 @@ extern CustomDAC dac; extern CustomADC adc; extern sml::sm stream_sm; -extern sml::sm> main_sm; +extern sml::sm, sml::defer_queue> main_sm; #endif /* APPLICATION_INC_INSTANCES */ diff --git a/Application/Inc/State.hpp b/Application/Inc/State.hpp index 6f5c469..b3aa10c 100644 --- a/Application/Inc/State.hpp +++ b/Application/Inc/State.hpp @@ -26,7 +26,10 @@ struct function_ended {}; struct sub_transit {}; // Application Events +struct goIdle {}; struct dac_update {}; +struct dac_direct {}; +struct dac_direct_t {}; struct Idle { auto operator()() { @@ -47,7 +50,7 @@ struct Idle { // State Machine Logics // clang-format off return make_transition_table( - *state / act_start = state, + *state + event / act_start = state, state + event / act_delay = state, state + event / act_shutdown = state, state / process(function_ended{}) = X @@ -90,24 +93,12 @@ struct MainState { auto operator()() { using namespace sml; - auto act_idle = [](Thread *thread, SerialCOM *serial) { - // thread->idling_start(); - // vTaskResume(thread->idle_handle); - serial->sendString("MainState act_idle completed\n"); - }; - auto act_dac = [](Thread *thread, SerialCOM *serial) { - // thread->dac_start(); - // xTaskResumeFromISR(thread->dac_handle); - serial->sendString("MainState act_dac completed\n"); - }; - // State Machine Logics // clang-format off return make_transition_table( - *state + event / act_idle = state, - state + event / act_dac = state, + *state + event = state, + state + event = state, state + event = state - ); // clang-format on } diff --git a/Application/Src/CLI.cpp b/Application/Src/CLI.cpp index bcf4c8f..d2ee6d1 100644 --- a/Application/Src/CLI.cpp +++ b/Application/Src/CLI.cpp @@ -13,7 +13,7 @@ void CLI::init() { lwshell_register_cmd("help", &CLI::cmd_help, NULL); lwshell_register_cmd("led", &CLI::cmd_led, NULL); lwshell_register_cmd("flash", &CLI::cmd_flash, NULL); - lwshell_register_cmd("idle", &CLI::cmd_idle, NULL); + lwshell_register_cmd("idle", &CLI::cmd_idle, NULL); lwshell_register_cmd("dac", &CLI::cmd_dac, NULL); lwshell_register_cmd("show", &CLI::cmd_show, NULL); } @@ -117,16 +117,15 @@ int32_t CLI::cmd_flash(int32_t argc, char** argv) { return 0; } -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"); - } - return 0; } +int32_t CLI::cmd_idle(int32_t argc, char** argv) { + if (argc == 1) { + main_sm.process_event(shutdown{}); + main_sm.process_event(start{}); + } else { + serialCOM.sendString("Unknown Command\n"); + } + return 0; +} int32_t CLI::cmd_dac(int32_t argc, char** argv) { // Detailed Menu @@ -137,11 +136,11 @@ int32_t CLI::cmd_dac(int32_t argc, char** argv) { " add #value\tIncrease or Decrease DAC level\n\n"; // Sub Command - if (argc ==1) { - main_sm.process_event(shutdown{}); - main_sm.process_event(dac_update{}); - main_sm.process_event(start{}); - } else if (argc == 2) { + 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); } else if (!strcmp(argv[1], "on")) { diff --git a/Application/Src/main.cpp b/Application/Src/main.cpp index 4c22aff..be0b2df 100644 --- a/Application/Src/main.cpp +++ b/Application/Src/main.cpp @@ -19,7 +19,7 @@ CustomDAC dac{}; CustomADC adc{}; sml::sm stream_sm{&thread}; -sml::sm> main_sm{&thread, &serialCOM}; +sml::sm, sml::defer_queue> main_sm{&thread, &serialCOM}; /** * @brief The application entry point.