Library to use a wifly module: RN 131 C/G
Dependents: RN-XV_simple_server
Diff: Wifly.h
- 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