// // Created by zemon on 11.11.22. // #ifndef UVEOS_ON_NATION_CLIREDIRECTTABLE_H #define UVEOS_ON_NATION_CLIREDIRECTTABLE_H #include #include #include "CliCmd.h" #include "BaseTypes.h" typedef int32_t (*cliCall)(void *env, tCliCmd *cli); typedef struct { tStringStatic cmd; cliCall method; void *env; } tCliRedirectItem; typedef struct { tCliRedirectItem *items; uint16_t count; uint16_t itemsLimit; } tCliRedirectTable; void CliRedirectionTable_Init(tCliRedirectTable *baseTable, tCliRedirectItem *mem, uint16_t itemsLimit); #define CliRedirectionTable_InitStatic(TAB, MEM) CliRedirectionTable_Init(TAB,MEM,sizeof(MEM)/sizeof(tCliRedirectItem)) bool CliRedirectionTable_RecAdd(tCliRedirectTable *baseTable, char *cmdStatic, uint8_t cmdLen, cliCall mtd, void *env); #define CliRedirectionTable_RecAddStatic(TAB, CMD, CALL, ENV) CliRedirectionTable_RecAdd(TAB,CMD,sizeof (CMD)-1,CALL,ENV) int32_t CliRedirectionTable_ProcessCmd(tCliRedirectTable *env, tCliCmd *cmd); int32_t CliRedirectionTable_ListCmd(tCliRedirectTable *env, tCliCmd *cmd, char divider); #endif //UVEOS_ON_NATION_CLIREDIRECTTABLE_H