Delta / Mbed OS NNN50_CLI

Dependencies:   NNN50_WIFI_API

Fork of NNN50_WiFi_HelloWorld by Delta

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?

UserRevisionLine numberNew 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