A library for talking to Multi-Tech's Cellular SocketModem Devices.

Dependents:   M2X_dev axeda_wrapper_dev MTS_M2x_Example1 MTS_Cellular_Connect_Example ... more

Socket/Transport.h

Committer:
jengbrecht
Date:
2013-12-31
Revision:
113:7238f9b8db17
Parent:
66:a170496ec5cf
Child:
141:571e0ef6c8dc

File content as of revision 113:7238f9b8db17:

#ifndef TRANSPORT_H
#define TRANSPORT_H

#include "mbed.h"
#include "IPStack.h"

using namespace mts;

/** This class has been added to the standard mbed Socket library enabling people
* to use the Socket library interfaces for different transports that have
* their own internal IP-Stack. Use this class prior to instantiating any of the
* other classes in this folder to determine the underlying transport that will
* be used by them. It is important to know that the transport classes themsleves
* like Cellular or WiFi, must be properly initialized and connected before any
* of the Socket package classes can be used or even instantiated.
*/
class Transport
{
public:
    ///An enumeration that holds the supported Transport Types.
    enum TransportType {
        CELLULAR, WIFI, NONE
    };
    
    /** This method allows you to set the transport to be used when creating other 
    * objects from the Socket folder like TCPSocketConnection and UDPSocket.  
    *
    * @param type the type of underlying transport to be used. The default is NONE.
    */
    static void setTransport(TransportType type);
    
    /** This method is used within the Socket class to get the appropraite transport
    * as an IPStack object.  In general you do not need to call this directly, but
    * simply use the other classes in this folder. 
    *
    * @returns a pointer to an object that implements IPStack.
    */
    static IPStack* getInstance();
    
private:
    static Transport::TransportType _type; // Member variable that holds the desired transport
};

#endif /* TRANSPORT_H */