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@2:a694440145e9, 2019-04-23 (annotated)
- Committer:
- Inscape_ao
- Date:
- Tue Apr 23 08:47:11 2019 +0000
- Revision:
- 2:a694440145e9
- Parent:
- 1:71c9c97c9f3d
- Child:
- 19:36072b9b79f3
add TimeManager
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 | 1:71c9c97c9f3d | 27 | class CmdReply |
Inscape_ao | 1:71c9c97c9f3d | 28 | { |
Inscape_ao | 1:71c9c97c9f3d | 29 | public: |
Inscape_ao | 1:71c9c97c9f3d | 30 | const static int Success = 0; |
Inscape_ao | 1:71c9c97c9f3d | 31 | const static int InvalidFmt = 1; |
Inscape_ao | 1:71c9c97c9f3d | 32 | const static int InvalidCmd = 2; |
Inscape_ao | 1:71c9c97c9f3d | 33 | const static int InvalidLen = 3; |
Inscape_ao | 1:71c9c97c9f3d | 34 | }; |
Inscape_ao | 0:c347f602596d | 35 | private: |
Inscape_ao | 0:c347f602596d | 36 | int deviceID; |
Inscape_ao | 0:c347f602596d | 37 | UartReceiver *pR; |
Inscape_ao | 0:c347f602596d | 38 | Serial *pUart; |
Inscape_ao | 0:c347f602596d | 39 | CmdParseRule *ruleTable; |
Inscape_ao | 0:c347f602596d | 40 | int ruleTableLen; |
Inscape_ao | 0:c347f602596d | 41 | private: |
Inscape_ao | 2:a694440145e9 | 42 | /* (INVALIDED) constructor */ |
Inscape_ao | 0:c347f602596d | 43 | CommandParser(void); |
Inscape_ao | 0:c347f602596d | 44 | public: |
Inscape_ao | 2:a694440145e9 | 45 | /* constructor */ |
Inscape_ao | 0:c347f602596d | 46 | CommandParser(UartReceiver *setUartReceiver, int setDeviceID, |
Inscape_ao | 0:c347f602596d | 47 | CmdParseRule *setRuleTable, int setRuleTableLen); |
Inscape_ao | 2:a694440145e9 | 48 | /* start parsing */ |
Inscape_ao | 0:c347f602596d | 49 | void run(void); |
Inscape_ao | 2:a694440145e9 | 50 | /* process parsing */ |
Inscape_ao | 0:c347f602596d | 51 | int parse(char *pStr); |
Inscape_ao | 2:a694440145e9 | 52 | /* get my Device ID */ |
Inscape_ao | 1:71c9c97c9f3d | 53 | int getDeviceID(void); |
Inscape_ao | 2:a694440145e9 | 54 | /* generate ACK/NAK with int code */ |
Inscape_ao | 1:71c9c97c9f3d | 55 | void reply(bool ack = true, int replyCode = 0); |
Inscape_ao | 2:a694440145e9 | 56 | /* generate ACK/NAK with String */ |
Inscape_ao | 1:71c9c97c9f3d | 57 | void reply(bool ack, char *replyStr); |
Inscape_ao | 2:a694440145e9 | 58 | /* get currentUart */ |
Inscape_ao | 2:a694440145e9 | 59 | Serial *getCurrentUart(void); |
Inscape_ao | 0:c347f602596d | 60 | }; |
Inscape_ao | 0:c347f602596d | 61 | #endif /* _COMMANDPARSER_H_ */ |