Janus Erasmus / Console

Dependents:   Nucleo_blink_led

Committer:
JanusErasmus
Date:
Sat Mar 17 11:13:55 2018 +0000
Revision:
0:cda1bfa06c7c
Child:
1:ffc6a669f391
Initial Commit for Console

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 {
JanusErasmus 0:cda1bfa06c7c 50 char* cmd;
JanusErasmus 0:cda1bfa06c7c 51 char* argDesc;
JanusErasmus 0:cda1bfa06c7c 52 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[]);
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
JanusErasmus 0:cda1bfa06c7c 63 rtos::Thread work;
JanusErasmus 0:cda1bfa06c7c 64
JanusErasmus 0:cda1bfa06c7c 65 char mBuffer[128];
JanusErasmus 0:cda1bfa06c7c 66 int mIndex;
JanusErasmus 0:cda1bfa06c7c 67
JanusErasmus 0:cda1bfa06c7c 68 static void ReceiveSerial(Console *instance);
JanusErasmus 0:cda1bfa06c7c 69 void handleByte(char byte);
JanusErasmus 0:cda1bfa06c7c 70 void handleCommand(char *cmd);
JanusErasmus 0:cda1bfa06c7c 71 void process(int argc,char *argv[]);
JanusErasmus 0:cda1bfa06c7c 72
JanusErasmus 0:cda1bfa06c7c 73 Console(Serial *serial);
JanusErasmus 0:cda1bfa06c7c 74
JanusErasmus 0:cda1bfa06c7c 75 public:
JanusErasmus 0:cda1bfa06c7c 76 static void init(Serial *serial);
JanusErasmus 0:cda1bfa06c7c 77 virtual ~Console();
JanusErasmus 0:cda1bfa06c7c 78
JanusErasmus 0:cda1bfa06c7c 79 };
JanusErasmus 0:cda1bfa06c7c 80
JanusErasmus 0:cda1bfa06c7c 81 #endif /* CONSOLE_H_ */