#pragma once #include #include #include "sdk/os/zos.hpp" namespace iflytop { using namespace std; class CmdScheduler { public: class CmdProcessContext { public: bool breakflag = false; }; typedef function call_cmd_t; private: map m_cmdMap; ZUART* m_uart; char* rxbuf; int32_t m_rxsize = 0; uint32_t m_rxbufsize; bool m_dataisready = false; char cmdcache[100]; public: void initialize(UART_HandleTypeDef* huart, uint32_t rxbufsize); void registerCmd(std::string cmd, call_cmd_t call_cmd); void schedule(); private: void callcmd(const char* cmd, CmdProcessContext& context); void prase_cmd(char* input, int inputlen, int& argc, char* argv[]); }; } // namespace iflytop