Library to use a wifly module: RN 131 C/G

Dependents:   RN-XV_simple_server

Revision:
0:2f38aaabc810
Child:
1:e2f18a3d5215
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Wifly.h	Fri Aug 12 11:20:42 2011 +0000
@@ -0,0 +1,190 @@
+/**
+* @author Samuel Mokrani
+*
+* @section LICENSE
+*
+* Copyright (c) 2011 mbed
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+* THE SOFTWARE.
+*
+* @section DESCRIPTION
+*
+* Wifly RN131-C, wifi module
+*
+* Datasheet:
+*
+* http://www.sparkfun.com/datasheets/Wireless/WiFi/WiFlyGSX-um2.pdf
+*/ 
+
+#ifndef WIFLY_H
+#define WIFLY_H
+
+#include "mbed.h"
+
+/** Wifly Class
+ *
+ * Example:
+ * @code
+ * #include "mbed.h"
+ * #include "Wifly.h"
+ *
+ * Wifly * wifly;
+ * Serial pc(USBTX, USBRX);
+ * 
+ * int main()
+ * {
+ *   wifly = new Wifly(p9, p10, p20, "network", "password", true);
+ *   
+ *   if(wifly->Join())
+ *       pc.printf("network joined!\r\n");
+ *   else
+ *       pc.printf("join failed!\r\n");
+ *       
+ *}
+ * @endcode
+ */
+class Wifly {
+
+    public:
+        /**
+        * Constructor for joining open, wep or wpa securized networks
+        *
+        * @param tx mbed pin to use for tx line of Serial interface
+        * @param rx mbed pin to use for rx line of Serial interface
+        * @param reset reset pin of the wifi module
+        * @param ssid ssid of the network
+        * @param phrase WEP or WPA key
+        * @param wpa true if wpa security false otherwise
+        * @param ip ip of the wifi module (default: NULL)
+        * @param netmask netmask (default: NULL)
+        * @param baudrate speed of the communication (default: 9600)
+        * @param bits number of bits for the communication (default: 8)
+        * @param parity parity used for the communication (default: Serial::None)
+        * @param stop_bits number of stop bits (default: 1)
+        */
+        Wifly(  PinName tx, PinName rx, PinName reset, char * ssid, char * phrase, bool wpa, 
+                char * ip = NULL, char * netmask = NULL, bool dhcp = true, int baudrate = 9600, int bits = 8, 
+                Serial::Parity parity = Serial::None, int stop_bits = 1);
+        
+        
+        
+        /**
+        * Constructor to create an adhoc network
+        *
+        * @param tx mbed pin to use for tx line of Serial interface
+        * @param rx mbed pin to use for rx line of Serial interface
+        * @param ssid ssid of the adhoc network which will be created
+        * @param ip ip of the wifi module (default: "169.254.1.1")
+        * @param netmask netmask (default: "255.255.0.0")
+        * @param channelchannel (default: "1")
+        * @param baudrate speed of the communication (default: 9600)
+        * @param bits number of bits for the communication (default: 8)
+        * @param parity parity used for the communication (default: Serial::None)
+        * @param stop_bits number of stop bits (default: 1)
+        */
+        Wifly(  PinName tx, PinName rx, PinName reset, char * ssid, char * ip = "169.254.1.1", 
+                char * netmask = "255.255.0.0", int channel = 1, int baudrate = 9600, int bits = 8, Serial::Parity parity = Serial::None, int stop_bits = 1);
+        
+        /**
+        * Send a string to the wifi module by serial port
+        *
+        * @ param str string to be sent
+        * @ param ACK string which must be acknowledge by the wifi module
+        *
+        * @ return true if ACK has been found in the response from the wifi module. False otherwise or if there is no response in 3s.
+        */
+        bool Send(char * str, char * ACK); 
+        
+        /**
+        * Connect the wifi module to the network. Return true if set correctly, false if not.
+        *
+        * @ return true if connected, false otherwise
+        */
+        bool Join();
+        
+        /**
+        * Create an adhoc network with the ssid contained in the constructor
+        *
+        * @ return true if the network is well created, false otherwise
+        */
+        bool CreateAdhocNetwork();
+        
+        /**
+        * Receive a string to the wifi module by serial port
+        *
+        *@ param str string to be read
+        */
+        void read(char * str);
+        
+        /**
+        * To enter in command mode (we can configure the module)
+        *
+        * @ return true if successful, false otherwise
+        */
+        bool CmdMode();
+        
+        /**
+        * To exit the command mode
+        *
+        * @ return true if successful, false otherwise
+        */
+        bool exit();
+        
+        /**
+        * Reset the wifi module
+        */
+        void reset();
+        
+        /**
+        * To check if a character is available
+        *
+        * @ return true if a character is available, false otherwise
+        */
+        bool readable();
+        
+        /**
+        * Read a character
+        *
+        * @ return the character read
+        */
+        char getc();
+        
+        /**
+        * Write a character
+        *
+        * @ param the character which will be written
+        */
+        void putc(char c);
+        
+        
+    
+    private:
+        Serial wifi;
+        DigitalOut reset_pin;
+        bool wpa;
+        bool adhoc;
+        bool dhcp;
+        char * phrase;
+        char * ssid;
+        char * ip;
+        char * netmask;
+        int channel;
+};
+
+#endif
\ No newline at end of file