diff --git a/UNOR4USBBridge/at_handler.cpp b/UNOR4USBBridge/at_handler.cpp index fc08c75..54f601f 100644 --- a/UNOR4USBBridge/at_handler.cpp +++ b/UNOR4USBBridge/at_handler.cpp @@ -67,9 +67,14 @@ CClientWrapper CAtHandler::getClient(int sock) { /* -------------------------------------------------------------------------- */ void CAtHandler::run() { -/* -------------------------------------------------------------------------- */ - at_srv.run(); - vTaskDelay(1); +/* -------------------------------------------------------------------------- */ + at_srv.run(); + if (at_srv.desiredBaudrate > 0) + { + serial->begin(at_srv.desiredBaudrate, SERIAL_8N1, 6, 5); + at_srv.desiredBaudrate = -1; + } + vTaskDelay(1); } diff --git a/UNOR4USBBridge/chAT.hpp b/UNOR4USBBridge/chAT.hpp index 1d25d2a..734d2d8 100644 --- a/UNOR4USBBridge/chAT.hpp +++ b/UNOR4USBBridge/chAT.hpp @@ -117,6 +117,8 @@ namespace SudoMaker::chAT { void write_line_end(); RunStatus run(); + + int desiredBaudrate = -1; // Set this to a positive value to indicate UARD baud rate change is needed. }; inline Server::RunStatus operator|(Server::RunStatus a, Server::RunStatus b) { diff --git a/UNOR4USBBridge/cmds_esp_generic.h b/UNOR4USBBridge/cmds_esp_generic.h index cd0e2d9..4d33e12 100644 --- a/UNOR4USBBridge/cmds_esp_generic.h +++ b/UNOR4USBBridge/cmds_esp_generic.h @@ -20,6 +20,13 @@ void CAtHandler::add_cmds_esp_generic() { return chAT::CommandStatus::ERROR; }; + /* ....................................................................... */ + command_table[_UART] = [this](auto & srv, auto & parser) { + /* ....................................................................... */ + srv.desiredBaudrate = std::stoi(parser.args[0]); + return chAT::CommandStatus::OK; + }; + /* ....................................................................... */ command_table[_RESTART_BOOTLOADER] = [this](auto & srv, auto & parser) { /* ....................................................................... */ diff --git a/UNOR4USBBridge/commands.h b/UNOR4USBBridge/commands.h index ffa9555..fb28c23 100644 --- a/UNOR4USBBridge/commands.h +++ b/UNOR4USBBridge/commands.h @@ -20,6 +20,7 @@ enum file_op { #define _ENDL "\r\n" #define _WIFISCAN "+WIFISCAN" +#define _UART "+UART" #define _RESET "+RESET" #define _RESTART_BOOTLOADER "+RESTARTBOOTLOADER" #define _GMR "+GMR"