mDot AT-Firmware for testing

Dependencies:   MTS-Serial libmDot-mbed5

Fork of Dot-AT-Firmware by MultiTech

Committer:
Mike Fiore
Date:
Thu Jun 25 10:23:41 2015 -0500
Revision:
1:e52ae6584f1c
Child:
4:666017851052
update debug, add command source files

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mike Fiore 1:e52ae6584f1c 1 /**
Mike Fiore 1:e52ae6584f1c 2 ******************************************************************************
Mike Fiore 1:e52ae6584f1c 3 * File Name : command.h
Mike Fiore 1:e52ae6584f1c 4 * Date : 18/04/2014 10:57:12
Mike Fiore 1:e52ae6584f1c 5 * Description : This file provides code for command line prompt
Mike Fiore 1:e52ae6584f1c 6 ******************************************************************************
Mike Fiore 1:e52ae6584f1c 7 *
Mike Fiore 1:e52ae6584f1c 8 * COPYRIGHT(c) 2014 MultiTech Systems, Inc.
Mike Fiore 1:e52ae6584f1c 9 *
Mike Fiore 1:e52ae6584f1c 10 * Redistribution and use in source and binary forms, with or without modification,
Mike Fiore 1:e52ae6584f1c 11 * are permitted provided that the following conditions are met:
Mike Fiore 1:e52ae6584f1c 12 * 1. Redistributions of source code must retain the above copyright notice,
Mike Fiore 1:e52ae6584f1c 13 * this list of conditions and the following disclaimer.
Mike Fiore 1:e52ae6584f1c 14 * 2. Redistributions in binary form must reproduce the above copyright notice,
Mike Fiore 1:e52ae6584f1c 15 * this list of conditions and the following disclaimer in the documentation
Mike Fiore 1:e52ae6584f1c 16 * and/or other materials provided with the distribution.
Mike Fiore 1:e52ae6584f1c 17 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Mike Fiore 1:e52ae6584f1c 18 * may be used to endorse or promote products derived from this software
Mike Fiore 1:e52ae6584f1c 19 * without specific prior written permission.
Mike Fiore 1:e52ae6584f1c 20 *
Mike Fiore 1:e52ae6584f1c 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Mike Fiore 1:e52ae6584f1c 22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Mike Fiore 1:e52ae6584f1c 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Mike Fiore 1:e52ae6584f1c 24 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Mike Fiore 1:e52ae6584f1c 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Mike Fiore 1:e52ae6584f1c 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Mike Fiore 1:e52ae6584f1c 27 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Mike Fiore 1:e52ae6584f1c 28 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Mike Fiore 1:e52ae6584f1c 29 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Mike Fiore 1:e52ae6584f1c 30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Mike Fiore 1:e52ae6584f1c 31 *
Mike Fiore 1:e52ae6584f1c 32 ******************************************************************************
Mike Fiore 1:e52ae6584f1c 33 */
Mike Fiore 1:e52ae6584f1c 34
Mike Fiore 1:e52ae6584f1c 35 #include "mbed.h"
Mike Fiore 1:e52ae6584f1c 36 #include "MTSSerial.h"
Mike Fiore 1:e52ae6584f1c 37 #include "Commands.h"
Mike Fiore 1:e52ae6584f1c 38 #include "mDot.h"
Mike Fiore 1:e52ae6584f1c 39
Mike Fiore 1:e52ae6584f1c 40 /* Define to prevent recursive inclusion -------------------------------------*/
Mike Fiore 1:e52ae6584f1c 41 #ifndef __command_terminal_H__
Mike Fiore 1:e52ae6584f1c 42 #define __command_terminal_H__
Mike Fiore 1:e52ae6584f1c 43
Mike Fiore 1:e52ae6584f1c 44 class CommandTerminal {
Mike Fiore 1:e52ae6584f1c 45
Mike Fiore 1:e52ae6584f1c 46 public:
Mike Fiore 1:e52ae6584f1c 47
Mike Fiore 1:e52ae6584f1c 48 enum WaitType {
Mike Fiore 1:e52ae6584f1c 49 WAIT_JOIN,
Mike Fiore 1:e52ae6584f1c 50 WAIT_RECV,
Mike Fiore 1:e52ae6584f1c 51 WAIT_LINK,
Mike Fiore 1:e52ae6584f1c 52 WAIT_SEND,
Mike Fiore 1:e52ae6584f1c 53 WAIT_NA
Mike Fiore 1:e52ae6584f1c 54 };
Mike Fiore 1:e52ae6584f1c 55
Mike Fiore 1:e52ae6584f1c 56 CommandTerminal(mts::MTSSerial& serial, mDot* dot);
Mike Fiore 1:e52ae6584f1c 57
Mike Fiore 1:e52ae6584f1c 58 // Command prompt text...
Mike Fiore 1:e52ae6584f1c 59 static const char banner[];
Mike Fiore 1:e52ae6584f1c 60 static const char helpline[];
Mike Fiore 1:e52ae6584f1c 61 static const char prompt[];
Mike Fiore 1:e52ae6584f1c 62
Mike Fiore 1:e52ae6584f1c 63 // Command error text...
Mike Fiore 1:e52ae6584f1c 64 static const char command_error[];
Mike Fiore 1:e52ae6584f1c 65
Mike Fiore 1:e52ae6584f1c 66 // Response texts...
Mike Fiore 1:e52ae6584f1c 67 static const char help[];
Mike Fiore 1:e52ae6584f1c 68 static const char cmd_error[];
Mike Fiore 1:e52ae6584f1c 69 static const char newline[];
Mike Fiore 1:e52ae6584f1c 70 static const char done[];
Mike Fiore 1:e52ae6584f1c 71 static const char error[];
Mike Fiore 1:e52ae6584f1c 72
Mike Fiore 1:e52ae6584f1c 73 // Escape sequence
Mike Fiore 1:e52ae6584f1c 74 static const char escape_sequence[];
Mike Fiore 1:e52ae6584f1c 75
Mike Fiore 1:e52ae6584f1c 76 static std::string formatPacketData(const std::vector<uint8_t>& data, const uint8_t& format);
Mike Fiore 1:e52ae6584f1c 77 static bool waitForEscape(int timeout, mDot* dot=NULL, WaitType wait=WAIT_NA);
Mike Fiore 1:e52ae6584f1c 78
Mike Fiore 1:e52ae6584f1c 79 void start();
Mike Fiore 1:e52ae6584f1c 80
Mike Fiore 1:e52ae6584f1c 81 private:
Mike Fiore 1:e52ae6584f1c 82
Mike Fiore 1:e52ae6584f1c 83 mts::MTSSerial& _serial;
Mike Fiore 1:e52ae6584f1c 84 static mts::MTSSerial* _serialp;
Mike Fiore 1:e52ae6584f1c 85
Mike Fiore 1:e52ae6584f1c 86 mDot* _dot;
Mike Fiore 1:e52ae6584f1c 87 mDot::Mode _mode;
Mike Fiore 1:e52ae6584f1c 88 std::vector<Command*> _commands;
Mike Fiore 1:e52ae6584f1c 89 bool _sleep_standby;
Mike Fiore 1:e52ae6584f1c 90 DigitalOut _xbee_on_sleep;
Mike Fiore 1:e52ae6584f1c 91 bool _serial_up;
Mike Fiore 1:e52ae6584f1c 92
Mike Fiore 1:e52ae6584f1c 93 void addCommand(Command* cmd);
Mike Fiore 1:e52ae6584f1c 94
Mike Fiore 1:e52ae6584f1c 95 void serial_loop();
Mike Fiore 1:e52ae6584f1c 96 bool autoJoinCheck();
Mike Fiore 1:e52ae6584f1c 97
Mike Fiore 1:e52ae6584f1c 98 void printHelp();
Mike Fiore 1:e52ae6584f1c 99
Mike Fiore 1:e52ae6584f1c 100 bool readable();
Mike Fiore 1:e52ae6584f1c 101 bool writeable();
Mike Fiore 1:e52ae6584f1c 102 char read();
Mike Fiore 1:e52ae6584f1c 103 void write(const char* message);
Mike Fiore 1:e52ae6584f1c 104 void writef(const char* format, ... );
Mike Fiore 1:e52ae6584f1c 105
Mike Fiore 1:e52ae6584f1c 106 void sleep(bool standby);
Mike Fiore 1:e52ae6584f1c 107 void wakeup(bool standby);
Mike Fiore 1:e52ae6584f1c 108
Mike Fiore 1:e52ae6584f1c 109 };
Mike Fiore 1:e52ae6584f1c 110
Mike Fiore 1:e52ae6584f1c 111 #endif // __command_terminal_H__
Mike Fiore 1:e52ae6584f1c 112