DCS_TEAM / Mbed 2 deprecated DCS_FINAL_CODE

Dependencies:   Chemical_Sensor_DMA GPRS DPG_FINAL MBed_Adafruit-GPS-Library SDFileSystem Socket mbed

Committer:
DeWayneDennis
Date:
Wed Oct 21 19:44:47 2015 +0000
Revision:
19:404594768414
Child:
21:3d922bea5d77
changed to work with pushing box via http post

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DeWayneDennis 19:404594768414 1 /*
DeWayneDennis 19:404594768414 2 modem.h
DeWayneDennis 19:404594768414 3 2014 Copyright (c) Seeed Technology Inc. All right reserved.
DeWayneDennis 19:404594768414 4
DeWayneDennis 19:404594768414 5 Author:lawliet zou(lawliet.zou@gmail.com)
DeWayneDennis 19:404594768414 6 2014-2-24
DeWayneDennis 19:404594768414 7
DeWayneDennis 19:404594768414 8 This library is free software; you can redistribute it and/or
DeWayneDennis 19:404594768414 9 modify it under the terms of the GNU Lesser General Public
DeWayneDennis 19:404594768414 10 License as published by the Free Software Foundation; either
DeWayneDennis 19:404594768414 11 version 2.1 of the License, or (at your option) any later version.
DeWayneDennis 19:404594768414 12
DeWayneDennis 19:404594768414 13 This library is distributed in the hope that it will be useful,
DeWayneDennis 19:404594768414 14 but WITHOUT ANY WARRANTY; without even the implied warranty of
DeWayneDennis 19:404594768414 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
DeWayneDennis 19:404594768414 16 Lesser General Public License for more details.
DeWayneDennis 19:404594768414 17
DeWayneDennis 19:404594768414 18 You should have received a copy of the GNU Lesser General Public
DeWayneDennis 19:404594768414 19 License along with this library; if not, write to the Free Software
DeWayneDennis 19:404594768414 20 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
DeWayneDennis 19:404594768414 21 */
DeWayneDennis 19:404594768414 22
DeWayneDennis 19:404594768414 23 #ifndef __MODEM_H__
DeWayneDennis 19:404594768414 24 #define __MODEM_H__
DeWayneDennis 19:404594768414 25
DeWayneDennis 19:404594768414 26 #include "mbed.h"
DeWayneDennis 19:404594768414 27 #include "SDFileSystem.h"
DeWayneDennis 19:404594768414 28 #define DEFAULT_TIMEOUT 5
DeWayneDennis 19:404594768414 29
DeWayneDennis 19:404594768414 30 enum DataType {
DeWayneDennis 19:404594768414 31 CMD = 0,
DeWayneDennis 19:404594768414 32 DATA = 1,
DeWayneDennis 19:404594768414 33 };
DeWayneDennis 19:404594768414 34
DeWayneDennis 19:404594768414 35 /** Modem class.
DeWayneDennis 19:404594768414 36 * Used for Modem communication. attention that Modem module communicate with MCU in serial protocol
DeWayneDennis 19:404594768414 37 */
DeWayneDennis 19:404594768414 38 class Modem
DeWayneDennis 19:404594768414 39 {
DeWayneDennis 19:404594768414 40
DeWayneDennis 19:404594768414 41 public:
DeWayneDennis 19:404594768414 42 /** Create Modem Instance
DeWayneDennis 19:404594768414 43 * @param tx uart transmit pin to communicate with Modem
DeWayneDennis 19:404594768414 44 * @param rx uart receive pin to communicate with Modem
DeWayneDennis 19:404594768414 45 * @param baudRate baud rate of uart communication
DeWayneDennis 19:404594768414 46 */
DeWayneDennis 19:404594768414 47 Modem(PinName tx, PinName rx, int baudRate) : serialModem(tx, rx) {
DeWayneDennis 19:404594768414 48 serialModem.baud(baudRate);
DeWayneDennis 19:404594768414 49 };
DeWayneDennis 19:404594768414 50 // added by Noah Milam
DeWayneDennis 19:404594768414 51 char IPAdd[100];
DeWayneDennis 19:404594768414 52 void sendCmdResp(const char*);
DeWayneDennis 19:404594768414 53 void getResp();
DeWayneDennis 19:404594768414 54 void gprs_response();
DeWayneDennis 19:404594768414 55 void storeResp();
DeWayneDennis 19:404594768414 56 void wait_for_sms();
DeWayneDennis 19:404594768414 57 void get_message();
DeWayneDennis 19:404594768414 58 char* get_server_IP();
DeWayneDennis 19:404594768414 59 //
DeWayneDennis 19:404594768414 60 Serial serialModem;
DeWayneDennis 19:404594768414 61 protected:
DeWayneDennis 19:404594768414 62 /** Power on Modem
DeWayneDennis 19:404594768414 63 */
DeWayneDennis 19:404594768414 64 void preInit(void);
DeWayneDennis 19:404594768414 65
DeWayneDennis 19:404594768414 66 /** check serialModem is readable or not
DeWayneDennis 19:404594768414 67 * @returns
DeWayneDennis 19:404594768414 68 * true on readable
DeWayneDennis 19:404594768414 69 * false on not readable
DeWayneDennis 19:404594768414 70 */
DeWayneDennis 19:404594768414 71 bool readable();
DeWayneDennis 19:404594768414 72
DeWayneDennis 19:404594768414 73 /** read one byte from serialModem
DeWayneDennis 19:404594768414 74 * @returns
DeWayneDennis 19:404594768414 75 * one byte read from serialModem
DeWayneDennis 19:404594768414 76 */
DeWayneDennis 19:404594768414 77 char readByte(void);
DeWayneDennis 19:404594768414 78
DeWayneDennis 19:404594768414 79 /** read from Modem module and save to buffer array
DeWayneDennis 19:404594768414 80 * @param buffer buffer array to save what read from Modem module
DeWayneDennis 19:404594768414 81 * @param count the maximal bytes number read from Modem module
DeWayneDennis 19:404594768414 82 * @param timeOut time to wait for reading from Modem module
DeWayneDennis 19:404594768414 83 * @returns
DeWayneDennis 19:404594768414 84 * 0 on success
DeWayneDennis 19:404594768414 85 * -1 on error
DeWayneDennis 19:404594768414 86 */
DeWayneDennis 19:404594768414 87 int readBuffer(char* buffer,int count, unsigned int timeOut);
DeWayneDennis 19:404594768414 88
DeWayneDennis 19:404594768414 89
DeWayneDennis 19:404594768414 90 /** clean Buffer
DeWayneDennis 19:404594768414 91 * @param buffer buffer to clean
DeWayneDennis 19:404594768414 92 * @param count number of bytes to clean
DeWayneDennis 19:404594768414 93 */
DeWayneDennis 19:404594768414 94 void cleanBuffer(char* buffer, int count);
DeWayneDennis 19:404594768414 95
DeWayneDennis 19:404594768414 96 /** send AT command to Modem module
DeWayneDennis 19:404594768414 97 * @param cmd command array which will be send to GPRS module
DeWayneDennis 19:404594768414 98 */
DeWayneDennis 19:404594768414 99 void sendCmd(const char* cmd);
DeWayneDennis 19:404594768414 100
DeWayneDennis 19:404594768414 101 /**send "AT" to Modem module
DeWayneDennis 19:404594768414 102 */
DeWayneDennis 19:404594768414 103 void sendATTest(void);
DeWayneDennis 19:404594768414 104
DeWayneDennis 19:404594768414 105 /** compare the response from GPRS module with a string
DeWayneDennis 19:404594768414 106 * @param resp buffer to be compared
DeWayneDennis 19:404594768414 107 * @param len length that will be compared
DeWayneDennis 19:404594768414 108 * @param timeout waiting seconds till timeout
DeWayneDennis 19:404594768414 109 */
DeWayneDennis 19:404594768414 110 bool respCmp(const char *resp, unsigned int len, unsigned int timeout);
DeWayneDennis 19:404594768414 111
DeWayneDennis 19:404594768414 112 /** check Modem module response before time out
DeWayneDennis 19:404594768414 113 * @param *resp correct response which Modem module will return
DeWayneDennis 19:404594768414 114 * @param *timeout waiting seconds till timeout
DeWayneDennis 19:404594768414 115 * @returns
DeWayneDennis 19:404594768414 116 * 0 on success
DeWayneDennis 19:404594768414 117 * -1 on error
DeWayneDennis 19:404594768414 118 */
DeWayneDennis 19:404594768414 119 int waitForResp(const char *resp, unsigned int timeout,DataType type);
DeWayneDennis 19:404594768414 120
DeWayneDennis 19:404594768414 121 /** send AT command to GPRS module and wait for correct response
DeWayneDennis 19:404594768414 122 * @param *cmd AT command which will be send to GPRS module
DeWayneDennis 19:404594768414 123 * @param *resp correct response which GPRS module will return
DeWayneDennis 19:404594768414 124 * @param *timeout waiting seconds till timeout
DeWayneDennis 19:404594768414 125 * @returns
DeWayneDennis 19:404594768414 126 * 0 on success
DeWayneDennis 19:404594768414 127 * -1 on error
DeWayneDennis 19:404594768414 128 */
DeWayneDennis 19:404594768414 129 int sendCmdAndWaitForResp(const char* data, const char *resp, unsigned timeout,DataType type);
DeWayneDennis 19:404594768414 130
DeWayneDennis 19:404594768414 131 Timer timeCnt;
DeWayneDennis 19:404594768414 132
DeWayneDennis 19:404594768414 133 private:
DeWayneDennis 19:404594768414 134
DeWayneDennis 19:404594768414 135 };
DeWayneDennis 19:404594768414 136
DeWayneDennis 19:404594768414 137 #endif