Janus Erasmus / Console

Dependents:   Nucleo_blink_led

Committer:
JanusErasmus
Date:
Mon Apr 23 16:06:02 2018 +0000
Revision:
5:4624aed3b143
Parent:
2:4c8b24eb7ad5
Print thread info in tables

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JanusErasmus 0:cda1bfa06c7c 1 /*
JanusErasmus 0:cda1bfa06c7c 2 * Console.h
JanusErasmus 0:cda1bfa06c7c 3 *
JanusErasmus 0:cda1bfa06c7c 4 * Created on: 17 Mar 2018
JanusErasmus 0:cda1bfa06c7c 5 * Author: Janus
JanusErasmus 0:cda1bfa06c7c 6 */
JanusErasmus 0:cda1bfa06c7c 7
JanusErasmus 0:cda1bfa06c7c 8 #ifndef CONSOLE_H_
JanusErasmus 0:cda1bfa06c7c 9 #define CONSOLE_H_
JanusErasmus 0:cda1bfa06c7c 10
JanusErasmus 0:cda1bfa06c7c 11 #include "mbed.h"
JanusErasmus 0:cda1bfa06c7c 12
JanusErasmus 0:cda1bfa06c7c 13
JanusErasmus 0:cda1bfa06c7c 14 #define INFO_TRACE(_class, _string, ...) diag_printf( "%15s : " _string, _class, ##__VA_ARGS__)
JanusErasmus 0:cda1bfa06c7c 15 #define DEBUG_TRACE(_lvl, _class, _string, ...) dbg_printf(_lvl, "%15s : " _string, _class, ##__VA_ARGS__)
JanusErasmus 0:cda1bfa06c7c 16 #define PRINT_REG(_base, _x) diag_printf(#_x": 0x%08X\n", *((volatile CYG_WORD32 *)(_base + _x)));
JanusErasmus 0:cda1bfa06c7c 17
JanusErasmus 0:cda1bfa06c7c 18 #ifndef VT100_OFF
JanusErasmus 0:cda1bfa06c7c 19 #define COLOR(__c,__x) "\x1b[3" #__c "m" __x "\x1b[0m"
JanusErasmus 0:cda1bfa06c7c 20 #define COLOR_BOLD(__c,__x) "\x1b[3" #__c ";1m" __x "\x1b[0m"
JanusErasmus 0:cda1bfa06c7c 21 #define UNDERLINE(__x) "\x1b[4m" __x "\x1b[0m"
JanusErasmus 0:cda1bfa06c7c 22 #define CLEAR_SCREEN "\x1b[2J\x1b[H"
JanusErasmus 0:cda1bfa06c7c 23 #else
JanusErasmus 0:cda1bfa06c7c 24 #define COLOR(__c,__x) __x
JanusErasmus 0:cda1bfa06c7c 25 #define COLOR_BOLD(__c,__x) __x
JanusErasmus 0:cda1bfa06c7c 26 #define UNDERLINE(__x) __x
JanusErasmus 0:cda1bfa06c7c 27 #define CLEAR_SCREEN
JanusErasmus 0:cda1bfa06c7c 28 #endif
JanusErasmus 0:cda1bfa06c7c 29 #define RED(__x) COLOR(1, __x )
JanusErasmus 0:cda1bfa06c7c 30 #define GREEN(__x) COLOR(2, __x )
JanusErasmus 0:cda1bfa06c7c 31 #define YELLOW(__x) COLOR(3, __x )
JanusErasmus 0:cda1bfa06c7c 32 #define BLUE(__x) COLOR(4, __x )
JanusErasmus 0:cda1bfa06c7c 33 #define MAGENTA(__x) COLOR(5, __x )
JanusErasmus 0:cda1bfa06c7c 34 #define CYAN(__x) COLOR(6, __x )
JanusErasmus 0:cda1bfa06c7c 35 #define RED_B(__x) COLOR_BOLD(1, __x )
JanusErasmus 0:cda1bfa06c7c 36 #define GREEN_B(__x) COLOR_BOLD(2, __x )
JanusErasmus 0:cda1bfa06c7c 37 #define YELLOW_B(__x) COLOR_BOLD(3, __x )
JanusErasmus 0:cda1bfa06c7c 38 #define BLUE_B(__x) COLOR_BOLD(4, __x )
JanusErasmus 0:cda1bfa06c7c 39 #define MAGENTA_B(__x) COLOR_BOLD(5, __x )
JanusErasmus 0:cda1bfa06c7c 40 #define CYAN_B(__x) COLOR_BOLD(6, __x )
JanusErasmus 0:cda1bfa06c7c 41
JanusErasmus 0:cda1bfa06c7c 42 class Console
JanusErasmus 0:cda1bfa06c7c 43 {
JanusErasmus 0:cda1bfa06c7c 44 public:
JanusErasmus 0:cda1bfa06c7c 45 typedef void (*func_t)(int argc,char *argv[]);
JanusErasmus 0:cda1bfa06c7c 46
JanusErasmus 0:cda1bfa06c7c 47 typedef struct
JanusErasmus 0:cda1bfa06c7c 48 {
jcerasmus@gmail.com 1:ffc6a669f391 49 const char* cmd;
jcerasmus@gmail.com 1:ffc6a669f391 50 const char* argDesc;
jcerasmus@gmail.com 1:ffc6a669f391 51 const char* desc;
JanusErasmus 0:cda1bfa06c7c 52 func_t f;
JanusErasmus 0:cda1bfa06c7c 53 } cmd_list_t;
JanusErasmus 0:cda1bfa06c7c 54
JanusErasmus 0:cda1bfa06c7c 55 static cmd_list_t *mCmdTable[];
JanusErasmus 0:cda1bfa06c7c 56 static void help(int argc,char *argv[]);
jcerasmus@gmail.com 1:ffc6a669f391 57 static void dumpThreadInfo(int argc,char *argv[]);
JanusErasmus 0:cda1bfa06c7c 58
JanusErasmus 0:cda1bfa06c7c 59 private:
JanusErasmus 0:cda1bfa06c7c 60 static Console *__instance;
JanusErasmus 0:cda1bfa06c7c 61 Serial *mSerial;
JanusErasmus 0:cda1bfa06c7c 62
jcerasmus@gmail.com 2:4c8b24eb7ad5 63 const char *mPrompt;
JanusErasmus 0:cda1bfa06c7c 64 rtos::Thread work;
JanusErasmus 0:cda1bfa06c7c 65
JanusErasmus 0:cda1bfa06c7c 66 char mBuffer[128];
JanusErasmus 0:cda1bfa06c7c 67 int mIndex;
JanusErasmus 0:cda1bfa06c7c 68
JanusErasmus 0:cda1bfa06c7c 69 static void ReceiveSerial(Console *instance);
JanusErasmus 0:cda1bfa06c7c 70 void handleByte(char byte);
JanusErasmus 0:cda1bfa06c7c 71 void handleCommand(char *cmd);
JanusErasmus 0:cda1bfa06c7c 72 void process(int argc,char *argv[]);
JanusErasmus 0:cda1bfa06c7c 73
jcerasmus@gmail.com 2:4c8b24eb7ad5 74 Console(Serial *serial, const char *prompt);
JanusErasmus 0:cda1bfa06c7c 75
JanusErasmus 0:cda1bfa06c7c 76 public:
jcerasmus@gmail.com 2:4c8b24eb7ad5 77 static void init(Serial *serial, const char *prompt);
JanusErasmus 0:cda1bfa06c7c 78 virtual ~Console();
JanusErasmus 0:cda1bfa06c7c 79
JanusErasmus 0:cda1bfa06c7c 80 };
JanusErasmus 0:cda1bfa06c7c 81
jcerasmus@gmail.com 1:ffc6a669f391 82 extern const Console::cmd_list_t shellCommands[];
jcerasmus@gmail.com 1:ffc6a669f391 83
JanusErasmus 0:cda1bfa06c7c 84 #endif /* CONSOLE_H_ */