Cellular library for MTS Socket Modem Arduino Shield devices from Multi-Tech Systems

Dependents:   mtsas mtsas mtsas mtsas

Revision:
82:5b33b670adb7
Parent:
78:fc9d2b983744
--- a/Cellular/EasyIP.h	Wed Nov 15 16:53:29 2017 -0600
+++ b/Cellular/EasyIP.h	Mon Feb 19 14:25:58 2018 -0600
@@ -1,154 +1,154 @@
-#ifndef EASYIP_H
-#define EASYIP_H
-
-#include <string>
-#include <vector>
-
-#include "MTSBufferedIO.h"
-#include "Cellular.h"
-
-namespace mts
-{
-    /** This class implements the same interface used for UIP version radios on an Easy IP radio
-    * using the Hayes AT command set.
-    * (See the UIP class and documentation, "UIP.h")
-    * This class supports four main types of cellular radio interactions including:
-    * configuration and status AT-command processing, SMS processing, TCP Socket data connections,
-    * and UDP data connections. It should be noted that the radio can not process commands or
-    * SMS messages while having an open data connection at the same time. The concurrent
-    * capability may be added in a future release. This class also inherits from IPStack
-    * providing a common set of commands for communication devices that have an onboard
-    * IP Stack. It is also integrated with the standard mbed Sockets package and can therefore
-    * be used seamlessly with clients and services built on top of this interface already within
-    * the mbed library.
-    * The default baud rate for the cellular radio is 115200 bps.
-    *
-    * Example code is found under Cellular.h
-    */
-class EasyIP : public Cellular
-{
-public:
-    /** This static function is used to create or get a reference to a
-    * Cellular object. Cellular uses the singleton pattern, which means
-    * that you can only have one existing at a time. The first time you
-    * call getInstance this method creates a new uninitialized Cellular
-    * object and returns it. All future calls to this method will return
-    * a reference to the instance created during the first call. Note that
-    * you must call init on the returned instance before mnaking any other
-    * calls. If using this class's bindings to any of the Socket package
-    * classes like TCPSocketConnection, you must call this method and the
-    * init method on the returned object first, before even creating the
-    * other objects.
-    *
-    * @returns a reference to the single Cellular obect that has been created.
-    */
-    EasyIP(Radio type);
-    
-    /** Destructs a Cellular object and frees all related resources.
-    */
-    ~EasyIP();
-    
-    /** Initializes the MTS IO buffer
-    */
-    virtual bool init(MTSBufferedIO* io);
-    
-    /** PPP connect command.
-    * Connects the radio to the cellular network.
-    *
-    * @returns true if PPP connection to the network succeeded,
-    * false if the PPP connection failed.
-    */
-    virtual bool connect();
-    
-    /** PPP disconnect command.
-    * Disconnects from the PPP network, and will also close active socket
-    * connection if open. 
-    */
-    virtual void disconnect();
-    
-    /** Checks if the radio is connected to the cell network.
-    * Checks antenna signal, cell tower registration, and context activation
-    * before finally pinging (4 pings, 32 bytes each) to confirm PPP connection
-    * to network. Will return true if there is an open socket connection as well.
-    *
-    * @returns true if there is a PPP connection to the cell network, false
-    * if there is no PPP connection to the cell network.
-    */
-    virtual bool isConnected();
-    
-    /** Resets the radio/modem.
-    * Disconnects all active PPP and socket connections to do so.
-    */
-    virtual void reset();
-
-    // TCP and UDP Socket related commands
-    // For behavior of the following methods refer to IPStack.h documentation
-    
-    virtual bool open(const std::string& address, unsigned int port, Mode mode);
-    virtual bool close(bool shutdown);
-    virtual int read(char* data, int max, int timeout = -1);    
-    virtual int write(const char* data, int length, int timeout = -1);
-    
-    /** Pings specified DNS or IP address
-     * Google DNS server used as default ping address
-     * @returns true if ping received alive response else false
-     */
-    virtual bool ping(const std::string& address = "8.8.8.8"); 
-    
-    /** Sets the APN
-    * 
-    * @param apn c-string of the APN to use
-    *
-    * @returns MTS_SUCCESS if the APN was set, or is not needed, else it
-    * returns the result of the AT command sent to the radio to set the APN
-    */
-    virtual Code setApn(const std::string& apn);
-    
-    /** Enables GPS.
-    * @returns true if GPS gets or is enabled, false if GPS is not supported.
-    */
-    virtual bool GPSenable();
-
-    /** Disables GPS.
-    * @returns true if GPS gets or is disabled, false if GPS failed to disable.
-    */
-    virtual bool GPSdisable();
-
-    /** Checks if GPS is enabled.
-    * @returns true if GPS is enabled, false if GPS is disabled.
-    */
-    virtual bool GPSenabled();
-        
-    /** Get GPS position.
-    * @returns a string containing the GPS position.
-    */
-    virtual Cellular::gpsData GPSgetPosition();
-
-    /** Check for GPS fix.
-    * @returns true if there is a fix and false otherwise.
-    */
-    virtual bool GPSgotFix();
-        
-private:
-    /** Function that sends +++ to the radio to exit data mode
-    * returns true if it successfully exits from online mode, else
-    * it returns false. Used due to the fact that AT commands
-    * cannot be sent while in data mode.
-    *
-    * @returns true if the radio dropped from data mode to commande mode
-    * or is already in command mode (socket is still open in the background),
-    * and false if the radio failed to switch to command mode.
-    */
-    virtual bool sendEscapeCommand(); 
-    
-    /** Switches to command mode, queries the status of the socket connection,
-    * and then returns back to the active socket connection (if still open)
-    *
-    * @returns true if a socket is currently open, otherwise it returns false
-    */
-    virtual bool socketCheck();
-};
-
-}
-
+#ifndef EASYIP_H
+#define EASYIP_H
+
+#include <string>
+#include <vector>
+
+#include "MTSBufferedIO.h"
+#include "Cellular.h"
+
+namespace mts
+{
+    /** This class implements the same interface used for UIP version radios on an Easy IP radio
+    * using the Hayes AT command set.
+    * (See the UIP class and documentation, "UIP.h")
+    * This class supports four main types of cellular radio interactions including:
+    * configuration and status AT-command processing, SMS processing, TCP Socket data connections,
+    * and UDP data connections. It should be noted that the radio can not process commands or
+    * SMS messages while having an open data connection at the same time. The concurrent
+    * capability may be added in a future release. This class also inherits from IPStack
+    * providing a common set of commands for communication devices that have an onboard
+    * IP Stack. It is also integrated with the standard mbed Sockets package and can therefore
+    * be used seamlessly with clients and services built on top of this interface already within
+    * the mbed library.
+    * The default baud rate for the cellular radio is 115200 bps.
+    *
+    * Example code is found under Cellular.h
+    */
+class EasyIP : public Cellular
+{
+public:
+    /** This static function is used to create or get a reference to a
+    * Cellular object. Cellular uses the singleton pattern, which means
+    * that you can only have one existing at a time. The first time you
+    * call getInstance this method creates a new uninitialized Cellular
+    * object and returns it. All future calls to this method will return
+    * a reference to the instance created during the first call. Note that
+    * you must call init on the returned instance before mnaking any other
+    * calls. If using this class's bindings to any of the Socket package
+    * classes like TCPSocketConnection, you must call this method and the
+    * init method on the returned object first, before even creating the
+    * other objects.
+    *
+    * @returns a reference to the single Cellular obect that has been created.
+    */
+    EasyIP(Radio type);
+    
+    /** Destructs a Cellular object and frees all related resources.
+    */
+    ~EasyIP();
+    
+    /** Initializes the MTS IO buffer
+    */
+    virtual bool init(MTSBufferedIO* io);
+    
+    /** PPP connect command.
+    * Connects the radio to the cellular network.
+    *
+    * @returns true if PPP connection to the network succeeded,
+    * false if the PPP connection failed.
+    */
+    virtual bool connect();
+    
+    /** PPP disconnect command.
+    * Disconnects from the PPP network, and will also close active socket
+    * connection if open. 
+    */
+    virtual void disconnect();
+    
+    /** Checks if the radio is connected to the cell network.
+    * Checks antenna signal, cell tower registration, and context activation
+    * before finally pinging (4 pings, 32 bytes each) to confirm PPP connection
+    * to network. Will return true if there is an open socket connection as well.
+    *
+    * @returns true if there is a PPP connection to the cell network, false
+    * if there is no PPP connection to the cell network.
+    */
+    virtual bool isConnected();
+    
+    /** Resets the radio/modem.
+    * Disconnects all active PPP and socket connections to do so.
+    */
+    virtual void reset();
+
+    // TCP and UDP Socket related commands
+    // For behavior of the following methods refer to IPStack.h documentation
+    
+    virtual bool open(const std::string& address, unsigned int port, Mode mode);
+    virtual bool close(bool shutdown);
+    virtual int read(char* data, int max, int timeout = -1);    
+    virtual int write(const char* data, int length, int timeout = -1);
+    
+    /** Pings specified DNS or IP address
+     * Google DNS server used as default ping address
+     * @returns true if ping received alive response else false
+     */
+    virtual bool ping(const std::string& address = "8.8.8.8"); 
+    
+    /** Sets the APN
+    * 
+    * @param apn c-string of the APN to use
+    *
+    * @returns MTS_SUCCESS if the APN was set, or is not needed, else it
+    * returns the result of the AT command sent to the radio to set the APN
+    */
+    virtual Code setApn(const std::string& apn);
+    
+    /** Enables GPS.
+    * @returns true if GPS gets or is enabled, false if GPS is not supported.
+    */
+    virtual bool GPSenable();
+
+    /** Disables GPS.
+    * @returns true if GPS gets or is disabled, false if GPS failed to disable.
+    */
+    virtual bool GPSdisable();
+
+    /** Checks if GPS is enabled.
+    * @returns true if GPS is enabled, false if GPS is disabled.
+    */
+    virtual bool GPSenabled();
+        
+    /** Get GPS position.
+    * @returns a string containing the GPS position.
+    */
+    virtual Cellular::gpsData GPSgetPosition();
+
+    /** Check for GPS fix.
+    * @returns true if there is a fix and false otherwise.
+    */
+    virtual bool GPSgotFix();
+        
+private:
+    /** Function that sends +++ to the radio to exit data mode
+    * returns true if it successfully exits from online mode, else
+    * it returns false. Used due to the fact that AT commands
+    * cannot be sent while in data mode.
+    *
+    * @returns true if the radio dropped from data mode to commande mode
+    * or is already in command mode (socket is still open in the background),
+    * and false if the radio failed to switch to command mode.
+    */
+    virtual bool sendEscapeCommand(); 
+    
+    /** Switches to command mode, queries the status of the socket connection,
+    * and then returns back to the active socket connection (if still open)
+    *
+    * @returns true if a socket is currently open, otherwise it returns false
+    */
+    virtual bool socketCheck();
+};
+
+}
+
 #endif /* EASYIP_H */
\ No newline at end of file