X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=test_src%2Fcli.h;h=70c421072ab1018c8e52fc225adf12f59c218747;hb=7edc452f9303d020656a094a465a3f45cacf8587;hp=6504ee2e9ed579f5424fa13921ab9fd6d0ee8f12;hpb=e9d58dce0a1eca2c78aec260406e1605ae29fff7;p=avr-crypto-lib.git diff --git a/test_src/cli.h b/test_src/cli.h index 6504ee2..70c4210 100644 --- a/test_src/cli.h +++ b/test_src/cli.h @@ -16,31 +16,57 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ + #ifndef CLI_H_ #define CLI_H_ #include #include +#ifndef VOID_FPT +#define VOID_FPT typedef void(*void_fpt)(void); +#endif typedef char (*cli_rx_fpt)(void); typedef void (*cli_tx_fpt)(char); #define CLI_BUFFER_BS 20 +#define CMDLIST_ENTRY_SIZE 8 + +typedef struct { + uint16_t option_flags; + PGM_VOID_P options[]; +} cmdoption_t; + +#define CLI_OPTION_DESC 0x01 +#define CLI_OPTION_MANP 0x02 typedef struct { - PGM_P cmd_name; /* string containing the function name */ - PGM_P cmd_param_str; /* param descriptor string */ - void_fpt cmd_function; /* function pointer */ + PGM_P cmd_name; /* string containing the function name */ + PGM_P cmd_param_str; /* param descriptor string */ + void_fpt cmd_function; /* function pointer */ + cmdoption_t* options; } cmdlist_entry_t; extern cli_rx_fpt cli_rx; extern cli_tx_fpt cli_tx; extern uint8_t cli_echo; -void cli_putstr(char* s); + + +void cli_putc(char c); +uint16_t cli_getc(void); +uint16_t cli_getc_cecho(void); +uint8_t cli_getsn(char* s, size_t n); +uint8_t cli_getsn_cecho(char* s, uint16_t n); +void cli_putstr(const char* s); void cli_putstr_P(PGM_P s); -void cli_hexdump(void* data, uint16_t length); +void cli_hexdump_byte(uint8_t byte); +void cli_hexdump(const void* data, size_t length); +void cli_hexdump_rev(const void* data, size_t length); +void cli_hexdump2(const void* data, size_t length); +void cli_hexdump_block(const void* data, size_t length, uint8_t indent, uint8_t width); + void echo_ctrl(char* s); int8_t cmd_interface(PGM_VOID_P cmd_desc);