Janus Erasmus / Console

Dependents:   Nucleo_blink_led

Committer:
jcerasmus@gmail.com
Date:
Sat Mar 17 15:25:04 2018 +0200
Revision:
4:8e1c0e634ba6
Parent:
2:4c8b24eb7ad5
Time?

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