|
@ -32,48 +32,18 @@ class CmdSchedulerV2 : public ICmdParser { |
|
|
char cmdcache[1024] = {0}; |
|
|
char cmdcache[1024] = {0}; |
|
|
|
|
|
|
|
|
public: |
|
|
public: |
|
|
void initialize(UART_HandleTypeDef* huart, uint32_t rxbufsize); |
|
|
|
|
|
void registerCmd(const char* cmdname, const char* helpinfo, int paraNum, ICmdFunction_t cmdimpl); |
|
|
|
|
|
|
|
|
void initialize(UART_HandleTypeDef* huart, uint32_t rxbufsize); |
|
|
|
|
|
virtual void regCMD(const char* cmdname, const char* helpinfo, int paraNum, ICmdFunction_t cmdimpl) override { registerCmd(cmdname, helpinfo, paraNum, cmdimpl); } |
|
|
|
|
|
void registerCmd(const char* cmdname, const char* helpinfo, int paraNum, ICmdFunction_t cmdimpl); |
|
|
// void tx(const char* data, int len);
|
|
|
// void tx(const char* data, int len);
|
|
|
void schedule(); |
|
|
void schedule(); |
|
|
|
|
|
|
|
|
private: |
|
|
private: |
|
|
void regbasiccmd(); |
|
|
void regbasiccmd(); |
|
|
int32_t callcmd(const char* cmd, ICmdParserACK* ack); |
|
|
int32_t callcmd(const char* cmd, ICmdParserACK* ack); |
|
|
void prase_cmd(char* input, int inputlen, int& argc, char* argv[]); |
|
|
|
|
|
|
|
|
void prase_cmd(char* input, int inputlen, int32_t& argc, char* argv[]); |
|
|
void remove_note(char* input, int inputlen); |
|
|
void remove_note(char* input, int inputlen); |
|
|
void dumpack(ICmdParserACK* ack); |
|
|
void dumpack(ICmdParserACK* ack); |
|
|
}; |
|
|
}; |
|
|
#if 0
|
|
|
|
|
|
|
|
|
|
|
|
#define DO_CMD(cond) \
|
|
|
|
|
|
{ \ |
|
|
|
|
|
int32_t ret = cond; \ |
|
|
|
|
|
if (ret != 0) { \ |
|
|
|
|
|
return ret; \ |
|
|
|
|
|
} \ |
|
|
|
|
|
} |
|
|
|
|
|
#define IMPL_CMD(cmd, ...) \
|
|
|
|
|
|
DO_CMD(findmodule(con->getInt(1), &module)); \ |
|
|
|
|
|
DO_CMD(module->cmd(__VA_ARGS__)); \ |
|
|
|
|
|
return (int32_t)0; |
|
|
|
|
|
|
|
|
|
|
|
#define IMPL_READ_STATE(cmd, ...) \
|
|
|
|
|
|
DO_CMD(findmodule(con->getInt(1), &module)); \ |
|
|
|
|
|
DO_CMD(module->cmd(__VA_ARGS__)); \ |
|
|
|
|
|
cmd_dump_ack(ack); \ |
|
|
|
|
|
return (int32_t)0; |
|
|
|
|
|
|
|
|
|
|
|
#define REG_CMD___NO_ACK(prefix, cmd, para, npara, ...) /**/ \
|
|
|
|
|
|
m_cmdScheduler->registerCmd(prefix #cmd, para, npara, [this](CmdSchedulerV2::Context* con) { /**/ \ |
|
|
|
|
|
IMPL_CMD(cmd, __VA_ARGS__); /**/ \ |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
#define REG_CMD_WITH_ACK(prefix, cmd, para, npara, acktype, ...) /**/ \
|
|
|
|
|
|
m_cmdScheduler->registerCmd(prefix #cmd, para, npara, [this](CmdSchedulerV2::Context* con) { /**/ \ |
|
|
|
|
|
acktype ack; /**/ \ |
|
|
|
|
|
IMPL_READ_STATE(cmd, __VA_ARGS__); /**/ \ |
|
|
|
|
|
}); |
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
} // namespace iflytop
|
|
|
} // namespace iflytop
|