with 36errors

Dependencies:   MTS-Serial libxDot-dev-mbed5-deprecated

Fork of Dot-AT-Firmware by MultiTech

Committer:
Mike Fiore
Date:
Mon Apr 04 09:00:31 2016 -0500
Revision:
9:ff62b20f7000
Parent:
4:666017851052
Child:
14:f9a77400b622
update to version 1.0.8 of AT firmware

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 9:ff62b20f7000 36 #include "ATSerial.h"
Mike Fiore 1:e52ae6584f1c 37 #include "MTSSerial.h"
Mike Fiore 9:ff62b20f7000 38 #include "MTSSerialFlowControl.h"
Mike Fiore 1:e52ae6584f1c 39 #include "Commands.h"
Mike Fiore 1:e52ae6584f1c 40 #include "mDot.h"
Mike Fiore 9:ff62b20f7000 41 #include "mDotEvent.h"
Mike Fiore 1:e52ae6584f1c 42
Mike Fiore 1:e52ae6584f1c 43 /* Define to prevent recursive inclusion -------------------------------------*/
Mike Fiore 1:e52ae6584f1c 44 #ifndef __command_terminal_H__
Mike Fiore 1:e52ae6584f1c 45 #define __command_terminal_H__
Mike Fiore 1:e52ae6584f1c 46
Mike Fiore 1:e52ae6584f1c 47 class CommandTerminal {
Mike Fiore 1:e52ae6584f1c 48
Mike Fiore 9:ff62b20f7000 49 class RadioEvent : public mDotEvent {
Mike Fiore 9:ff62b20f7000 50
Mike Fiore 9:ff62b20f7000 51 mts::ATSerial& _serial;
Mike Fiore 9:ff62b20f7000 52 public:
Mike Fiore 9:ff62b20f7000 53 RadioEvent(mts::ATSerial& serial) : _serial(serial) {}
Mike Fiore 9:ff62b20f7000 54
Mike Fiore 9:ff62b20f7000 55 virtual ~RadioEvent() {}
Mike Fiore 9:ff62b20f7000 56
Mike Fiore 9:ff62b20f7000 57 /*!
Mike Fiore 9:ff62b20f7000 58 * MAC layer event callback prototype.
Mike Fiore 9:ff62b20f7000 59 *
Mike Fiore 9:ff62b20f7000 60 * \param [IN] flags Bit field indicating the MAC events occurred
Mike Fiore 9:ff62b20f7000 61 * \param [IN] info Details about MAC events occurred
Mike Fiore 9:ff62b20f7000 62 */
Mike Fiore 9:ff62b20f7000 63 virtual void MacEvent(LoRaMacEventFlags *flags, LoRaMacEventInfo *info);
Mike Fiore 9:ff62b20f7000 64
Mike Fiore 9:ff62b20f7000 65 virtual uint8_t MeasureBattery(void) {
Mike Fiore 9:ff62b20f7000 66 return 255;
Mike Fiore 9:ff62b20f7000 67 }
Mike Fiore 9:ff62b20f7000 68 };
Mike Fiore 9:ff62b20f7000 69
Mike Fiore 9:ff62b20f7000 70
Mike Fiore 1:e52ae6584f1c 71 public:
Mike Fiore 1:e52ae6584f1c 72
Mike Fiore 1:e52ae6584f1c 73 enum WaitType {
Mike Fiore 1:e52ae6584f1c 74 WAIT_JOIN,
Mike Fiore 1:e52ae6584f1c 75 WAIT_RECV,
Mike Fiore 1:e52ae6584f1c 76 WAIT_LINK,
Mike Fiore 1:e52ae6584f1c 77 WAIT_SEND,
Mike Fiore 1:e52ae6584f1c 78 WAIT_NA
Mike Fiore 1:e52ae6584f1c 79 };
Mike Fiore 1:e52ae6584f1c 80
Mike Fiore 9:ff62b20f7000 81 CommandTerminal(mts::ATSerial& serial, mDot* dot);
Mike Fiore 9:ff62b20f7000 82 virtual ~CommandTerminal();
Mike Fiore 1:e52ae6584f1c 83
Mike Fiore 1:e52ae6584f1c 84 // Command prompt text...
Mike Fiore 1:e52ae6584f1c 85 static const char banner[];
Mike Fiore 1:e52ae6584f1c 86 static const char helpline[];
Mike Fiore 1:e52ae6584f1c 87 static const char prompt[];
Mike Fiore 1:e52ae6584f1c 88
Mike Fiore 1:e52ae6584f1c 89 // Command error text...
Mike Fiore 1:e52ae6584f1c 90 static const char command_error[];
Mike Fiore 1:e52ae6584f1c 91
Mike Fiore 1:e52ae6584f1c 92 // Response texts...
Mike Fiore 1:e52ae6584f1c 93 static const char help[];
Mike Fiore 1:e52ae6584f1c 94 static const char cmd_error[];
Mike Fiore 1:e52ae6584f1c 95 static const char newline[];
Mike Fiore 9:ff62b20f7000 96 static const char connect[];
Mike Fiore 9:ff62b20f7000 97 static const char no_carrier[];
Mike Fiore 1:e52ae6584f1c 98 static const char done[];
Mike Fiore 1:e52ae6584f1c 99 static const char error[];
Mike Fiore 1:e52ae6584f1c 100
Mike Fiore 1:e52ae6584f1c 101 // Escape sequence
Mike Fiore 1:e52ae6584f1c 102 static const char escape_sequence[];
Mike Fiore 1:e52ae6584f1c 103
Mike Fiore 1:e52ae6584f1c 104 static std::string formatPacketData(const std::vector<uint8_t>& data, const uint8_t& format);
Mike Fiore 1:e52ae6584f1c 105 static bool waitForEscape(int timeout, mDot* dot=NULL, WaitType wait=WAIT_NA);
Mike Fiore 1:e52ae6584f1c 106
Mike Fiore 1:e52ae6584f1c 107 void start();
Mike Fiore 1:e52ae6584f1c 108
Mike Fiore 1:e52ae6584f1c 109 private:
Mike Fiore 1:e52ae6584f1c 110
Mike Fiore 4:666017851052 111 static void idle(void const* args) {
Mike Fiore 4:666017851052 112 while (1)
Mike Fiore 4:666017851052 113 __WFI();
Mike Fiore 4:666017851052 114 }
Mike Fiore 4:666017851052 115
Mike Fiore 9:ff62b20f7000 116 mts::ATSerial& _serial;
Mike Fiore 9:ff62b20f7000 117 static mts::ATSerial* _serialp;
Mike Fiore 1:e52ae6584f1c 118
Mike Fiore 1:e52ae6584f1c 119 mDot* _dot;
Mike Fiore 9:ff62b20f7000 120 CommandTerminal::RadioEvent* _events;
Mike Fiore 1:e52ae6584f1c 121 mDot::Mode _mode;
Mike Fiore 1:e52ae6584f1c 122 std::vector<Command*> _commands;
Mike Fiore 4:666017851052 123 Thread _idle_thread;
Mike Fiore 1:e52ae6584f1c 124 bool _sleep_standby;
Mike Fiore 1:e52ae6584f1c 125 DigitalOut _xbee_on_sleep;
Mike Fiore 1:e52ae6584f1c 126
Mike Fiore 1:e52ae6584f1c 127 void addCommand(Command* cmd);
Mike Fiore 1:e52ae6584f1c 128
Mike Fiore 9:ff62b20f7000 129 void serialLoop();
Mike Fiore 1:e52ae6584f1c 130 bool autoJoinCheck();
Mike Fiore 1:e52ae6584f1c 131
Mike Fiore 1:e52ae6584f1c 132 void printHelp();
Mike Fiore 1:e52ae6584f1c 133
Mike Fiore 1:e52ae6584f1c 134 bool readable();
Mike Fiore 1:e52ae6584f1c 135 bool writeable();
Mike Fiore 1:e52ae6584f1c 136 char read();
Mike Fiore 1:e52ae6584f1c 137 void write(const char* message);
Mike Fiore 1:e52ae6584f1c 138 void writef(const char* format, ... );
Mike Fiore 1:e52ae6584f1c 139
Mike Fiore 1:e52ae6584f1c 140 void sleep(bool standby);
Mike Fiore 9:ff62b20f7000 141 void wakeup(void);
Mike Fiore 1:e52ae6584f1c 142
Mike Fiore 1:e52ae6584f1c 143 };
Mike Fiore 1:e52ae6584f1c 144
Mike Fiore 1:e52ae6584f1c 145 #endif // __command_terminal_H__
Mike Fiore 1:e52ae6584f1c 146