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

Committer:
jengbrecht
Date:
Fri Dec 27 14:41:03 2013 +0000
Revision:
79:f356009dbc12
Parent:
76:371aab9902a4
Child:
93:aa7a48e65974
Added a few more features to Wifi.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jengbrecht 69:f3e696bbb0d5 1 #ifndef WIFI_H
jengbrecht 69:f3e696bbb0d5 2 #define WIFI_H
jengbrecht 69:f3e696bbb0d5 3
jengbrecht 69:f3e696bbb0d5 4 #include "IPStack.h"
jengbrecht 69:f3e696bbb0d5 5 #include "MTSBufferedIO.h"
jengbrecht 69:f3e696bbb0d5 6 #include "mbed.h"
jengbrecht 69:f3e696bbb0d5 7 #include "Cellular.h"
jengbrecht 69:f3e696bbb0d5 8 #include <string>
jengbrecht 69:f3e696bbb0d5 9 #include <vector>
jengbrecht 69:f3e696bbb0d5 10
jengbrecht 69:f3e696bbb0d5 11 using namespace mts;
jengbrecht 69:f3e696bbb0d5 12
jengbrecht 69:f3e696bbb0d5 13 class Wifi : public IPStack
jengbrecht 69:f3e696bbb0d5 14 {
jengbrecht 69:f3e696bbb0d5 15 public:
jengbrecht 69:f3e696bbb0d5 16 enum SecurityType {
jengbrecht 69:f3e696bbb0d5 17 NONE, WEP64, WEP128, WPA, WPA2
jengbrecht 69:f3e696bbb0d5 18 };
jengbrecht 69:f3e696bbb0d5 19
jengbrecht 69:f3e696bbb0d5 20 ~Wifi();
jengbrecht 69:f3e696bbb0d5 21
jengbrecht 69:f3e696bbb0d5 22 static Wifi* getInstance();
jengbrecht 69:f3e696bbb0d5 23 bool init(MTSBufferedIO* io);
jengbrecht 69:f3e696bbb0d5 24
jengbrecht 69:f3e696bbb0d5 25 virtual bool connect();
jengbrecht 69:f3e696bbb0d5 26 virtual void disconnect();
jengbrecht 69:f3e696bbb0d5 27 virtual bool isConnected();
jengbrecht 69:f3e696bbb0d5 28
jengbrecht 69:f3e696bbb0d5 29 // TCP and UDP Socket related commands
jengbrecht 69:f3e696bbb0d5 30 // For behavior of the following methods refer to IPStack.h documentation
jengbrecht 69:f3e696bbb0d5 31 virtual bool bind(unsigned int port);
jengbrecht 69:f3e696bbb0d5 32 virtual bool open(const std::string& address, unsigned int port, Mode mode);
jengbrecht 69:f3e696bbb0d5 33 virtual bool isOpen();
jengbrecht 69:f3e696bbb0d5 34 virtual bool close();
jengbrecht 69:f3e696bbb0d5 35 virtual int read(char* data, int max, int timeout = -1);
jengbrecht 69:f3e696bbb0d5 36 virtual int write(const char* data, int length, int timeout = -1);
jengbrecht 69:f3e696bbb0d5 37 virtual unsigned int readable();
jengbrecht 69:f3e696bbb0d5 38 virtual unsigned int writeable();
jengbrecht 69:f3e696bbb0d5 39
jengbrecht 69:f3e696bbb0d5 40 virtual void reset();
jengbrecht 69:f3e696bbb0d5 41
sgodinez 73:bb5bbca971ae 42 std::string sendCommand(std::string command, int timeoutMillis, char esc = CR);
sgodinez 73:bb5bbca971ae 43 Code sendBasicCommand(std::string command, int timeoutMillis, char esc = CR);
jengbrecht 69:f3e696bbb0d5 44
sgodinez 73:bb5bbca971ae 45 Code setNetwork(const std::string& ssid, const std::string& key, SecurityType type);
jengbrecht 69:f3e696bbb0d5 46 int getSignalStrength();
jengbrecht 79:f356009dbc12 47 bool setCmdMode(bool on);
jengbrecht 69:f3e696bbb0d5 48
jengbrecht 69:f3e696bbb0d5 49 private:
jengbrecht 69:f3e696bbb0d5 50 static Wifi* instance; //Static pointer to the single Cellular object.
jengbrecht 69:f3e696bbb0d5 51
jengbrecht 69:f3e696bbb0d5 52 MTSBufferedIO* io; //IO interface obect that the radio is accessed through.
jengbrecht 69:f3e696bbb0d5 53 bool echoMode; //Specifies if the echo mode is currently enabled.
jengbrecht 69:f3e696bbb0d5 54
jengbrecht 69:f3e696bbb0d5 55 bool wifiConnected; //Specifies if a Wifi network session is currently connected.
jengbrecht 69:f3e696bbb0d5 56 std::string _ssid; //A string that holds the SSID for the Wifi module.
jengbrecht 69:f3e696bbb0d5 57
jengbrecht 69:f3e696bbb0d5 58 Mode mode; //The current socket Mode.
jengbrecht 69:f3e696bbb0d5 59 bool socketOpened; //Specifies if a Socket is presently opened.
jengbrecht 69:f3e696bbb0d5 60 bool socketCloseable; //Specifies is a Socket can be closed.
jengbrecht 69:f3e696bbb0d5 61 unsigned int local_port; //Holds the local port for socket connections.
jengbrecht 69:f3e696bbb0d5 62 std::string local_address; //Holds the local address for socket connections.
jengbrecht 69:f3e696bbb0d5 63 unsigned int host_port; //Holds the remote port for socket connections.
jengbrecht 69:f3e696bbb0d5 64 std::string host_address; //Holds the remote address for socket connections.
jengbrecht 79:f356009dbc12 65 bool cmdOn;
jengbrecht 69:f3e696bbb0d5 66
jengbrecht 69:f3e696bbb0d5 67 Wifi(); //Private constructor, use the getInstance() method.
jengbrecht 69:f3e696bbb0d5 68 Wifi(MTSBufferedIO* io); //Private constructor, use the getInstance() method.
jengbrecht 69:f3e696bbb0d5 69 };
jengbrecht 69:f3e696bbb0d5 70
jengbrecht 69:f3e696bbb0d5 71 #endif /* WIFI_H */