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:
Mon Dec 30 16:18:49 2013 +0000
Revision:
94:1baa587e89ae
Parent:
93:aa7a48e65974
Child:
95:4fdf968b5b37
Added several improvements and robustness stuff to the Wifi class, starting to be pretty stable, still issue with Disconnect....

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
jengbrecht 93:aa7a48e65974 42 std::string sendCommand(std::string command, int timeoutMillis, std::string response = "", 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 94:1baa587e89ae 46 Code setDNS(const std::string& dnsName);
jengbrecht 69:f3e696bbb0d5 47 int getSignalStrength();
jengbrecht 79:f356009dbc12 48 bool setCmdMode(bool on);
jengbrecht 69:f3e696bbb0d5 49
jengbrecht 69:f3e696bbb0d5 50 private:
jengbrecht 69:f3e696bbb0d5 51 static Wifi* instance; //Static pointer to the single Cellular object.
jengbrecht 69:f3e696bbb0d5 52
jengbrecht 69:f3e696bbb0d5 53 MTSBufferedIO* io; //IO interface obect that the radio is accessed through.
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 */