Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: NNN50_WIFI_API
Fork of NNN50_WiFi_HelloWorld by
CLI_Source/command-interpreter.h@9:871fc0231c7f, 2017-09-14 (annotated)
- Committer:
- silviaChen
- Date:
- Thu Sep 14 01:48:08 2017 +0000
- Revision:
- 9:871fc0231c7f
Support both BLE UART service and WiFi CLI command
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| silviaChen | 9:871fc0231c7f | 1 | /** @file command-interpreter.h |
| silviaChen | 9:871fc0231c7f | 2 | * @brief Processes commands coming from the serial port. |
| silviaChen | 9:871fc0231c7f | 3 | * See @ref commands for documentation. |
| silviaChen | 9:871fc0231c7f | 4 | * |
| silviaChen | 9:871fc0231c7f | 5 | * Copyright 2014 by DELTA Corporation. All rights reserved. |
| silviaChen | 9:871fc0231c7f | 6 | */ |
| silviaChen | 9:871fc0231c7f | 7 | |
| silviaChen | 9:871fc0231c7f | 8 | #ifndef COMMAND_INTERPRETER_H |
| silviaChen | 9:871fc0231c7f | 9 | #define COMMAND_INTERPRETER_H |
| silviaChen | 9:871fc0231c7f | 10 | |
| silviaChen | 9:871fc0231c7f | 11 | #include <stdbool.h> |
| silviaChen | 9:871fc0231c7f | 12 | #include <stdint.h> |
| silviaChen | 9:871fc0231c7f | 13 | #include "mbed.h" |
| silviaChen | 9:871fc0231c7f | 14 | //#inlcude "nordic/boards.h" |
| silviaChen | 9:871fc0231c7f | 15 | |
| silviaChen | 9:871fc0231c7f | 16 | //#define DELTA_BLE_ON 1 |
| silviaChen | 9:871fc0231c7f | 17 | #define DELTA_WIFI_ON 1 |
| silviaChen | 9:871fc0231c7f | 18 | |
| silviaChen | 9:871fc0231c7f | 19 | #ifndef CYNTEC_COMMAND_BUFFER_LENGTH |
| silviaChen | 9:871fc0231c7f | 20 | #define CYNTEC_COMMAND_BUFFER_LENGTH 255 |
| silviaChen | 9:871fc0231c7f | 21 | #endif |
| silviaChen | 9:871fc0231c7f | 22 | |
| silviaChen | 9:871fc0231c7f | 23 | #ifndef MAX_TOKEN_COUNT |
| silviaChen | 9:871fc0231c7f | 24 | #define MAX_TOKEN_COUNT 16 |
| silviaChen | 9:871fc0231c7f | 25 | #endif |
| silviaChen | 9:871fc0231c7f | 26 | |
| silviaChen | 9:871fc0231c7f | 27 | #ifdef __cplusplus |
| silviaChen | 9:871fc0231c7f | 28 | extern "C" { |
| silviaChen | 9:871fc0231c7f | 29 | #endif |
| silviaChen | 9:871fc0231c7f | 30 | |
| silviaChen | 9:871fc0231c7f | 31 | enum { |
| silviaChen | 9:871fc0231c7f | 32 | CYNTEC_CMD_SUCCESS, |
| silviaChen | 9:871fc0231c7f | 33 | CYNTEC_CMD_ERR_NO_SUCH_COMMAND, |
| silviaChen | 9:871fc0231c7f | 34 | CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS, |
| silviaChen | 9:871fc0231c7f | 35 | CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE, |
| silviaChen | 9:871fc0231c7f | 36 | CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR, |
| silviaChen | 9:871fc0231c7f | 37 | CYNTEC_CMD_ERR_NO_MATCHED_ARGUMENT, |
| silviaChen | 9:871fc0231c7f | 38 | CYNTEC_CMD_ERR_WRONG_CMD_ORDER, |
| silviaChen | 9:871fc0231c7f | 39 | CYNTEC_CMD_ERR_INVALID_STATE_TO_PERFORM_OPERATION, |
| silviaChen | 9:871fc0231c7f | 40 | CYNTEC_CMD_ERR_CALL_FAIL |
| silviaChen | 9:871fc0231c7f | 41 | }; |
| silviaChen | 9:871fc0231c7f | 42 | |
| silviaChen | 9:871fc0231c7f | 43 | typedef void (*CommandAction)(void); |
| silviaChen | 9:871fc0231c7f | 44 | |
| silviaChen | 9:871fc0231c7f | 45 | typedef const struct { |
| silviaChen | 9:871fc0231c7f | 46 | /** Use letters, digits, and underscores, '_', for the command name. |
| silviaChen | 9:871fc0231c7f | 47 | * Command names are case-sensitive. |
| silviaChen | 9:871fc0231c7f | 48 | */ |
| silviaChen | 9:871fc0231c7f | 49 | const char *name; |
| silviaChen | 9:871fc0231c7f | 50 | /** A reference to a function in the application that implements the |
| silviaChen | 9:871fc0231c7f | 51 | * command. |
| silviaChen | 9:871fc0231c7f | 52 | * If this entry refers to a nested command, then action field |
| silviaChen | 9:871fc0231c7f | 53 | * has to be set to NULL. |
| silviaChen | 9:871fc0231c7f | 54 | */ |
| silviaChen | 9:871fc0231c7f | 55 | CommandAction action; |
| silviaChen | 9:871fc0231c7f | 56 | /* |
| silviaChen | 9:871fc0231c7f | 57 | * In case of a nested command (action is NULL), then this field |
| silviaChen | 9:871fc0231c7f | 58 | * contains a pointer to the nested CyntecCommandEntry array. |
| silviaChen | 9:871fc0231c7f | 59 | */ |
| silviaChen | 9:871fc0231c7f | 60 | const char *subMenu; |
| silviaChen | 9:871fc0231c7f | 61 | /** A description of the command. |
| silviaChen | 9:871fc0231c7f | 62 | */ |
| silviaChen | 9:871fc0231c7f | 63 | const char *description; |
| silviaChen | 9:871fc0231c7f | 64 | } CyntecCommandEntry; |
| silviaChen | 9:871fc0231c7f | 65 | |
| silviaChen | 9:871fc0231c7f | 66 | extern CyntecCommandEntry cyntecCommandTable[]; |
| silviaChen | 9:871fc0231c7f | 67 | |
| silviaChen | 9:871fc0231c7f | 68 | uint8_t cyntecAtoi(uint8_t *str, uint8_t len); |
| silviaChen | 9:871fc0231c7f | 69 | int cyntecAtoInt(uint8_t *str); |
| silviaChen | 9:871fc0231c7f | 70 | uint8_t cyntecArgToUint8(uint8_t *str, uint8_t len); |
| silviaChen | 9:871fc0231c7f | 71 | uint16_t cyntecAtoiUint16(uint8_t *str, uint8_t len); |
| silviaChen | 9:871fc0231c7f | 72 | uint16_t cyntecArgToUint16(uint8_t *str, uint8_t len); |
| silviaChen | 9:871fc0231c7f | 73 | uint32_t cyntecHexToUint32(uint8_t *str, uint8_t len); |
| silviaChen | 9:871fc0231c7f | 74 | uint8_t cyntecStrCmp(uint8_t *src, uint8_t *dst, uint8_t len); |
| silviaChen | 9:871fc0231c7f | 75 | |
| silviaChen | 9:871fc0231c7f | 76 | /** |
| silviaChen | 9:871fc0231c7f | 77 | * @brief Process the given char as a command. |
| silviaChen | 9:871fc0231c7f | 78 | **/ |
| silviaChen | 9:871fc0231c7f | 79 | void cyntecProcessCommandInput(uint8_t input); |
| silviaChen | 9:871fc0231c7f | 80 | |
| silviaChen | 9:871fc0231c7f | 81 | /** @brief Initialize the command interpreter. |
| silviaChen | 9:871fc0231c7f | 82 | */ |
| silviaChen | 9:871fc0231c7f | 83 | void cyntecCommandReaderInit(void); |
| silviaChen | 9:871fc0231c7f | 84 | |
| silviaChen | 9:871fc0231c7f | 85 | /** Retrieves unsigned integer arguments. */ |
| silviaChen | 9:871fc0231c7f | 86 | uint8_t *cyntecGetCommandArgument(uint8_t argNum, uint8_t *length); |
| silviaChen | 9:871fc0231c7f | 87 | uint8_t *cyntecGetMinusArgument(uint8_t argNum, uint8_t *length); |
| silviaChen | 9:871fc0231c7f | 88 | extern void clearBuffer(void); |
| silviaChen | 9:871fc0231c7f | 89 | |
| silviaChen | 9:871fc0231c7f | 90 | /** Retrieves the token count. */ |
| silviaChen | 9:871fc0231c7f | 91 | uint8_t cyntecGetCommandTokenCnt(void); |
| silviaChen | 9:871fc0231c7f | 92 | |
| silviaChen | 9:871fc0231c7f | 93 | //gill add for accept blank in name 20150904 |
| silviaChen | 9:871fc0231c7f | 94 | //uint8_t *cyntecGetCommandBuffer(void); |
| silviaChen | 9:871fc0231c7f | 95 | uint8_t *cyntecGetCommandTotalBuffer(void); |
| silviaChen | 9:871fc0231c7f | 96 | void cyntecWriteToTotalBuffer(uint8_t input); |
| silviaChen | 9:871fc0231c7f | 97 | uint8_t cyntecGetTotalIndex(void); |
| silviaChen | 9:871fc0231c7f | 98 | |
| silviaChen | 9:871fc0231c7f | 99 | #ifdef __cplusplus |
| silviaChen | 9:871fc0231c7f | 100 | } |
| silviaChen | 9:871fc0231c7f | 101 | #endif |
| silviaChen | 9:871fc0231c7f | 102 | #endif |
| silviaChen | 9:871fc0231c7f | 103 | |
| silviaChen | 9:871fc0231c7f | 104 |
