uses pushing box to write to google spreadsheets

Dependencies:   GSM_PUSHING_BOX_STATE_MACHINE MBed_Adafruit-GPS-Library SDFileSystem mbed

Fork of DCS by DCS_TEAM

Committer:
DeWayneDennis
Date:
Wed Oct 21 19:46:32 2015 +0000
Revision:
20:84661ac75715
Parent:
19:404594768414
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DeWayneDennis 19:404594768414 1 /*
DeWayneDennis 19:404594768414 2 GPRS.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 __GPRS_H__
DeWayneDennis 19:404594768414 24 #define __GPRS_H__
DeWayneDennis 19:404594768414 25
DeWayneDennis 19:404594768414 26 #include "mbed.h"
DeWayneDennis 19:404594768414 27 #include "modem.h"
DeWayneDennis 19:404594768414 28
DeWayneDennis 19:404594768414 29 #define DEFAULT_WAIT_RESP_TIMEOUT 500
DeWayneDennis 19:404594768414 30 #define MAX_SOCK_NUM 7 //(0~6)
DeWayneDennis 19:404594768414 31 #define FIELD_BOX 0
DeWayneDennis 19:404594768414 32 enum Protocol {
DeWayneDennis 19:404594768414 33 CLOSED = 0,
DeWayneDennis 19:404594768414 34 TCP = 1,
DeWayneDennis 19:404594768414 35 UDP = 2,
DeWayneDennis 19:404594768414 36 };
DeWayneDennis 19:404594768414 37
DeWayneDennis 19:404594768414 38 /** The GPRS class
DeWayneDennis 19:404594768414 39 *
DeWayneDennis 19:404594768414 40 */
DeWayneDennis 19:404594768414 41 class GPRS: public Modem
DeWayneDennis 19:404594768414 42 {
DeWayneDennis 19:404594768414 43
DeWayneDennis 19:404594768414 44 public:
DeWayneDennis 19:404594768414 45 /** Constructor
DeWayneDennis 19:404594768414 46 * @param tx mbed pin to use for tx line of Serial interface
DeWayneDennis 19:404594768414 47 * @param rx mbed pin to use for rx line of Serial interface
DeWayneDennis 19:404594768414 48 * @param baudRate serial communicate baud rate
DeWayneDennis 19:404594768414 49 * @param apn name of the gateway for GPRS to connect to the network
DeWayneDennis 19:404594768414 50 * @param userName apn's username, usually is NULL
DeWayneDennis 19:404594768414 51 * @param passWord apn's password, usually is NULL
DeWayneDennis 19:404594768414 52 */
DeWayneDennis 19:404594768414 53 GPRS(PinName tx, PinName rx, int baudRate, const char* apn, const char* userName = NULL, const char *passWord = NULL);
DeWayneDennis 19:404594768414 54
DeWayneDennis 19:404594768414 55 /** Get instance of GPRS class
DeWayneDennis 19:404594768414 56 */
DeWayneDennis 19:404594768414 57 static GPRS* getInstance() {
DeWayneDennis 19:404594768414 58 return inst;
DeWayneDennis 19:404594768414 59 };
DeWayneDennis 19:404594768414 60
DeWayneDennis 19:404594768414 61 /** Connect the GPRS module to the network.
DeWayneDennis 19:404594768414 62 * @return true if connected, false otherwise
DeWayneDennis 19:404594768414 63 */
DeWayneDennis 19:404594768414 64 bool join(void);
DeWayneDennis 19:404594768414 65 // added by Noah Milam
DeWayneDennis 19:404594768414 66 void start_server();
DeWayneDennis 19:404594768414 67 void send_SMS(char*, char*);
DeWayneDennis 19:404594768414 68 char* read_SMS();
DeWayneDennis 19:404594768414 69 void listen_server();
DeWayneDennis 19:404594768414 70
DeWayneDennis 19:404594768414 71 // end of what Noah Milam added
DeWayneDennis 19:404594768414 72 /** Disconnect the GPRS module from the network
DeWayneDennis 19:404594768414 73 * @returns true if successful
DeWayneDennis 19:404594768414 74 */
DeWayneDennis 19:404594768414 75 bool disconnect(void);
DeWayneDennis 19:404594768414 76
DeWayneDennis 19:404594768414 77 /** Close a tcp connection
DeWayneDennis 19:404594768414 78 * @returns true if successful
DeWayneDennis 19:404594768414 79 */
DeWayneDennis 19:404594768414 80 bool close(int socket);
DeWayneDennis 19:404594768414 81
DeWayneDennis 19:404594768414 82 /** Open a tcp/udp connection with the specified host on the specified port
DeWayneDennis 19:404594768414 83 * @param socket an endpoint of an inter-process communication flow of GPRS module,for SIM900 module, it is in [0,6]
DeWayneDennis 19:404594768414 84 * @param ptl protocol for socket, TCP/UDP can be choosen
DeWayneDennis 19:404594768414 85 * @param host host (can be either an ip address or a name. If a name is provided, a dns request will be established)
DeWayneDennis 19:404594768414 86 * @param port port
DeWayneDennis 19:404594768414 87 * @param timeout wait seconds till connected
DeWayneDennis 19:404594768414 88 * @returns true if successful
DeWayneDennis 19:404594768414 89 */
DeWayneDennis 19:404594768414 90 bool connect(int socket, Protocol ptl, const char * host, int port, int timeout = DEFAULT_TIMEOUT);
DeWayneDennis 19:404594768414 91
DeWayneDennis 19:404594768414 92 /** Set the protocol (UDP or TCP)
DeWayneDennis 19:404594768414 93 * @param socket socket
DeWayneDennis 19:404594768414 94 * @param p protocol
DeWayneDennis 19:404594768414 95 * @returns true if successful
DeWayneDennis 19:404594768414 96 */
DeWayneDennis 19:404594768414 97 bool setProtocol(int socket, Protocol p);
DeWayneDennis 19:404594768414 98
DeWayneDennis 19:404594768414 99 /** Reset the GPRS module
DeWayneDennis 19:404594768414 100 */
DeWayneDennis 19:404594768414 101 void reset();
DeWayneDennis 19:404594768414 102
DeWayneDennis 19:404594768414 103 /** Check if GPRS module is readable or not
DeWayneDennis 19:404594768414 104 * @returns true if readable
DeWayneDennis 19:404594768414 105 */
DeWayneDennis 19:404594768414 106 bool readable(void);
DeWayneDennis 19:404594768414 107
DeWayneDennis 19:404594768414 108 /** Wait a few time to check if GPRS module is readable or not
DeWayneDennis 19:404594768414 109 * @param socket socket
DeWayneDennis 19:404594768414 110 * @param wait_time time of waiting
DeWayneDennis 19:404594768414 111 */
DeWayneDennis 19:404594768414 112 int wait_readable(int socket, int wait_time);
DeWayneDennis 19:404594768414 113
DeWayneDennis 19:404594768414 114 /** Wait a few time to check if GPRS module is writeable or not
DeWayneDennis 19:404594768414 115 * @param socket socket
DeWayneDennis 19:404594768414 116 * @param wait_time time of waiting
DeWayneDennis 19:404594768414 117 */
DeWayneDennis 19:404594768414 118 int wait_writeable(int socket, int req_size);
DeWayneDennis 19:404594768414 119
DeWayneDennis 19:404594768414 120 /** Check if a tcp link is active
DeWayneDennis 19:404594768414 121 * @returns true if successful
DeWayneDennis 19:404594768414 122 */
DeWayneDennis 19:404594768414 123 bool is_connected(int socket);
DeWayneDennis 19:404594768414 124
DeWayneDennis 19:404594768414 125 /** Send data to socket
DeWayneDennis 19:404594768414 126 * @param socket socket
DeWayneDennis 19:404594768414 127 * @param str string to be sent
DeWayneDennis 19:404594768414 128 * @param len string length
DeWayneDennis 19:404594768414 129 * @returns return bytes that actually been send
DeWayneDennis 19:404594768414 130 */
DeWayneDennis 19:404594768414 131 int send(int socket, const char * str, int len);
DeWayneDennis 19:404594768414 132
DeWayneDennis 19:404594768414 133 /** Read data from socket
DeWayneDennis 19:404594768414 134 * @param socket socket
DeWayneDennis 19:404594768414 135 * @param buf buffer that will store the data read from socket
DeWayneDennis 19:404594768414 136 * @param len string length need to read from socket
DeWayneDennis 19:404594768414 137 * @returns bytes that actually read
DeWayneDennis 19:404594768414 138 */
DeWayneDennis 19:404594768414 139 int recv(int socket, char* buf, int len);
DeWayneDennis 19:404594768414 140
DeWayneDennis 19:404594768414 141 /** Convert the host to ip
DeWayneDennis 19:404594768414 142 * @param host host ip string, ex. 10.11.12.13
DeWayneDennis 19:404594768414 143 * @param ip long int ip address, ex. 0x11223344
DeWayneDennis 19:404594768414 144 * @returns true if successful
DeWayneDennis 19:404594768414 145 */
DeWayneDennis 19:404594768414 146 bool gethostbyname(const char* host, uint32_t* ip);
DeWayneDennis 19:404594768414 147
DeWayneDennis 19:404594768414 148 int new_socket();
DeWayneDennis 19:404594768414 149 uint16_t new_port();
DeWayneDennis 19:404594768414 150 uint32_t _ip;
DeWayneDennis 19:404594768414 151 bool preInit();
DeWayneDennis 19:404594768414 152 protected:
DeWayneDennis 19:404594768414 153
DeWayneDennis 19:404594768414 154
DeWayneDennis 19:404594768414 155 bool checkSIMStatus(void);
DeWayneDennis 19:404594768414 156 uint32_t str_to_ip(const char* str);
DeWayneDennis 19:404594768414 157 static GPRS* inst;
DeWayneDennis 19:404594768414 158 int socketID;
DeWayneDennis 19:404594768414 159 const char* _apn;
DeWayneDennis 19:404594768414 160 const char* _userName;
DeWayneDennis 19:404594768414 161 const char* _passWord;
DeWayneDennis 19:404594768414 162 };
DeWayneDennis 19:404594768414 163
DeWayneDennis 19:404594768414 164 #endif