UART Command Parser Time Manager Data Store for SD Card for stm32l476 [it's not Licensed as BSD/GPLx]
Dependencies: mbed SDFileSystem
include/CommandParser.h@19:36072b9b79f3, 2019-07-05 (annotated)
- Committer:
- Inscape_ao
- Date:
- Fri Jul 05 01:26:19 2019 +0000
- Revision:
- 19:36072b9b79f3
- Parent:
- 2:a694440145e9
add LICENSE.txt
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Inscape_ao | 0:c347f602596d | 1 | #ifndef _COMMANDPARSER_H_ |
Inscape_ao | 0:c347f602596d | 2 | #define _COMMANDPARSER_H_ |
Inscape_ao | 0:c347f602596d | 3 | |
Inscape_ao | 0:c347f602596d | 4 | #include "UartReceiver.h" |
Inscape_ao | 0:c347f602596d | 5 | |
Inscape_ao | 1:71c9c97c9f3d | 6 | class CommandParser; |
Inscape_ao | 1:71c9c97c9f3d | 7 | |
Inscape_ao | 2:a694440145e9 | 8 | /** |
Inscape_ao | 2:a694440145e9 | 9 | * Parsing Rules |
Inscape_ao | 2:a694440145e9 | 10 | * if (cmdName) CALL func with exarg. |
Inscape_ao | 2:a694440145e9 | 11 | */ |
Inscape_ao | 0:c347f602596d | 12 | typedef struct _command_parser_rule_s { |
Inscape_ao | 0:c347f602596d | 13 | char* cmdName; |
Inscape_ao | 2:a694440145e9 | 14 | int(*func)(CommandParser*, char*, int); |
Inscape_ao | 2:a694440145e9 | 15 | int exarg; |
Inscape_ao | 0:c347f602596d | 16 | } CmdParseRule; |
Inscape_ao | 0:c347f602596d | 17 | |
Inscape_ao | 2:a694440145e9 | 18 | /* CommandParser */ |
Inscape_ao | 0:c347f602596d | 19 | class CommandParser |
Inscape_ao | 0:c347f602596d | 20 | { |
Inscape_ao | 0:c347f602596d | 21 | public: |
Inscape_ao | 2:a694440145e9 | 22 | /* CMD length */ |
Inscape_ao | 0:c347f602596d | 23 | const static int CmdNameLen = 3; |
Inscape_ao | 2:a694440145e9 | 24 | /* CMD total length */ |
Inscape_ao | 0:c347f602596d | 25 | const static int CmdLen = sizeof(":0 CMD 0000") - 1 /* EOL */; |
Inscape_ao | 2:a694440145e9 | 26 | /* reply code (for ACK/NAK) */ |
Inscape_ao | 19:36072b9b79f3 | 27 | class NakCode |
Inscape_ao | 1:71c9c97c9f3d | 28 | { |
Inscape_ao | 1:71c9c97c9f3d | 29 | public: |
Inscape_ao | 19:36072b9b79f3 | 30 | const static int NAK_UNDEFINED = 0000; |
Inscape_ao | 19:36072b9b79f3 | 31 | const static int NAK_INVAL_CMD = 1000; |
Inscape_ao | 19:36072b9b79f3 | 32 | const static int NAK_INVAL_LEN = 1001; |
Inscape_ao | 19:36072b9b79f3 | 33 | const static int NAK_INVAL_FMT = 1002; |
Inscape_ao | 19:36072b9b79f3 | 34 | const static int NAK_INVAL_PARAM = 1003; |
Inscape_ao | 19:36072b9b79f3 | 35 | const static int NAK_INVAL_SEQ = 1004; |
Inscape_ao | 19:36072b9b79f3 | 36 | const static int NAK_IN_RUNNING = 2000; |
Inscape_ao | 19:36072b9b79f3 | 37 | const static int NAK_IN_STOPPED = 2010; |
Inscape_ao | 19:36072b9b79f3 | 38 | const static int NAK_INTERNAL_ERR = 4000; |
Inscape_ao | 1:71c9c97c9f3d | 39 | }; |
Inscape_ao | 0:c347f602596d | 40 | private: |
Inscape_ao | 0:c347f602596d | 41 | int deviceID; |
Inscape_ao | 0:c347f602596d | 42 | UartReceiver *pR; |
Inscape_ao | 0:c347f602596d | 43 | Serial *pUart; |
Inscape_ao | 0:c347f602596d | 44 | CmdParseRule *ruleTable; |
Inscape_ao | 0:c347f602596d | 45 | int ruleTableLen; |
Inscape_ao | 0:c347f602596d | 46 | private: |
Inscape_ao | 2:a694440145e9 | 47 | /* (INVALIDED) constructor */ |
Inscape_ao | 0:c347f602596d | 48 | CommandParser(void); |
Inscape_ao | 0:c347f602596d | 49 | public: |
Inscape_ao | 2:a694440145e9 | 50 | /* constructor */ |
Inscape_ao | 0:c347f602596d | 51 | CommandParser(UartReceiver *setUartReceiver, int setDeviceID, |
Inscape_ao | 0:c347f602596d | 52 | CmdParseRule *setRuleTable, int setRuleTableLen); |
Inscape_ao | 2:a694440145e9 | 53 | /* start parsing */ |
Inscape_ao | 0:c347f602596d | 54 | void run(void); |
Inscape_ao | 2:a694440145e9 | 55 | /* process parsing */ |
Inscape_ao | 0:c347f602596d | 56 | int parse(char *pStr); |
Inscape_ao | 2:a694440145e9 | 57 | /* get my Device ID */ |
Inscape_ao | 1:71c9c97c9f3d | 58 | int getDeviceID(void); |
Inscape_ao | 2:a694440145e9 | 59 | /* generate ACK/NAK with int code */ |
Inscape_ao | 1:71c9c97c9f3d | 60 | void reply(bool ack = true, int replyCode = 0); |
Inscape_ao | 2:a694440145e9 | 61 | /* generate ACK/NAK with String */ |
Inscape_ao | 1:71c9c97c9f3d | 62 | void reply(bool ack, char *replyStr); |
Inscape_ao | 2:a694440145e9 | 63 | /* get currentUart */ |
Inscape_ao | 2:a694440145e9 | 64 | Serial *getCurrentUart(void); |
Inscape_ao | 0:c347f602596d | 65 | }; |
Inscape_ao | 0:c347f602596d | 66 | #endif /* _COMMANDPARSER_H_ */ |