#ifndef SHELLTERM_H #define SHELLTERM_H #include "sclient.h" #include #include #include #include #include #include #include #include typedef enum { TERM_BLACK, TERM_RED, TERM_GREEN, TERM_YELLOW, TERM_BLUE, TERM_MAGENTA, TERM_CYAN, TERM_WHITE, TERM_BRIGHT_BLACK, TERM_BRIGHT_RED, TERM_BRIGHT_GREEN, TERM_BRIGHT_YELLOW, TERM_BRIGHT_BLUE, TERM_BRIGHT_MAGENTA, TERM_BRIGHT_CYAN, TERM_BRIGHT_WHITE } TERM_COLOR; #define PRINTTAG(color) \ shellT_printf("\r%s[~]%s ", shellT_getForeColor(color), shellT_getForeColor(TERM_BRIGHT_WHITE)) #define PRINTINFO(...) \ do { \ PRINTTAG(TERM_BRIGHT_YELLOW); \ shellT_printf(__VA_ARGS__); \ } while (0); #define PRINTSUCC(...) \ do { \ PRINTTAG(TERM_BRIGHT_GREEN); \ shellT_printf(__VA_ARGS__); \ } while (0); #define PRINTERROR(...) \ do { \ PRINTTAG(TERM_BRIGHT_RED); \ shellT_printf(__VA_ARGS__); \ } while (0); void shellT_conioTerm(void); void shellT_resetTerm(void); const char *shellT_getForeColor(TERM_COLOR); void shellT_printf(const char *format, ...); /* waits for input for timeout (in ms). returns true if input is ready to be read, false if no * events */ bool shellT_waitForInput(int timeout); int shellT_readRawInput(uint8_t *buf, size_t max); void shellT_writeRawOutput(uint8_t *buf, size_t sz); void shellT_getTermSize(int *col, int *row); char shellT_getch(void); int shellT_kbget(void); void shellT_printPrompt(void); void shellT_setPrompt(char *prompt); /* processes input, moving cursor, adding char to cmd, etc. */ void shellT_addChar(tShell_client *client, int c); #endif