#ifndef CMD_H_ #define CMD_H_ #include #include #include #include #include static const uint8_t NUM_OF_COMMANDS = 10; class CmdServer; class Cmd { public: virtual ~Cmd() {}; void setClient(Stream *p_stream) { m_stream = p_stream; }; virtual String exec(String params) =0; virtual String getCmdName() =0; virtual String getHelp() =0; virtual void registerYourself(CmdServer *cmdServer); protected: Stream *m_stream; }; class CmdServer { public: CmdServer(Stream *p_stream); void begin(); void exec(); void registerCmd(Cmd *cmdObj); private: void parseCommand(); Stream *m_stream; String cmd; String params; uint8_t cmdListIdx; Cmd *cmdList[NUM_OF_COMMANDS]; }; #endif /* CMD_H_ */