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

Dependents:   RN-XV_simple_server

Committer:
samux
Date:
Fri Aug 12 15:12:57 2011 +0000
Revision:
5:9890eb81f730
Parent:
4:06ca04e2e279
Child:
6:f2d3f1528280

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
samux 0:2f38aaabc810 1 /**
samux 0:2f38aaabc810 2 * @author Samuel Mokrani
samux 0:2f38aaabc810 3 *
samux 0:2f38aaabc810 4 * @section LICENSE
samux 0:2f38aaabc810 5 *
samux 0:2f38aaabc810 6 * Copyright (c) 2011 mbed
samux 0:2f38aaabc810 7 *
samux 0:2f38aaabc810 8 * Permission is hereby granted, free of charge, to any person obtaining a copy
samux 0:2f38aaabc810 9 * of this software and associated documentation files (the "Software"), to deal
samux 0:2f38aaabc810 10 * in the Software without restriction, including without limitation the rights
samux 0:2f38aaabc810 11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
samux 0:2f38aaabc810 12 * copies of the Software, and to permit persons to whom the Software is
samux 0:2f38aaabc810 13 * furnished to do so, subject to the following conditions:
samux 0:2f38aaabc810 14 *
samux 0:2f38aaabc810 15 * The above copyright notice and this permission notice shall be included in
samux 0:2f38aaabc810 16 * all copies or substantial portions of the Software.
samux 0:2f38aaabc810 17 *
samux 0:2f38aaabc810 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
samux 0:2f38aaabc810 19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
samux 0:2f38aaabc810 20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
samux 0:2f38aaabc810 21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
samux 0:2f38aaabc810 22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
samux 0:2f38aaabc810 23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
samux 0:2f38aaabc810 24 * THE SOFTWARE.
samux 0:2f38aaabc810 25 *
samux 0:2f38aaabc810 26 * @section DESCRIPTION
samux 0:2f38aaabc810 27 *
samux 0:2f38aaabc810 28 * Wifly RN131-C, wifi module
samux 0:2f38aaabc810 29 *
samux 0:2f38aaabc810 30 * Datasheet:
samux 0:2f38aaabc810 31 *
samux 0:2f38aaabc810 32 * http://www.sparkfun.com/datasheets/Wireless/WiFi/WiFlyGSX-um2.pdf
samux 0:2f38aaabc810 33 */
samux 0:2f38aaabc810 34
samux 0:2f38aaabc810 35 #ifndef WIFLY_H
samux 0:2f38aaabc810 36 #define WIFLY_H
samux 0:2f38aaabc810 37
samux 0:2f38aaabc810 38 #include "mbed.h"
samux 0:2f38aaabc810 39
samux 0:2f38aaabc810 40 /** Wifly Class
samux 0:2f38aaabc810 41 *
samux 0:2f38aaabc810 42 * Example:
samux 0:2f38aaabc810 43 * @code
samux 0:2f38aaabc810 44 * #include "mbed.h"
samux 0:2f38aaabc810 45 * #include "Wifly.h"
samux 0:2f38aaabc810 46 *
samux 0:2f38aaabc810 47 * Wifly * wifly;
samux 0:2f38aaabc810 48 * Serial pc(USBTX, USBRX);
samux 0:2f38aaabc810 49 *
samux 0:2f38aaabc810 50 * int main()
samux 0:2f38aaabc810 51 * {
samux 0:2f38aaabc810 52 * wifly = new Wifly(p9, p10, p20, "network", "password", true);
samux 0:2f38aaabc810 53 *
samux 0:2f38aaabc810 54 * if(wifly->Join())
samux 0:2f38aaabc810 55 * pc.printf("network joined!\r\n");
samux 0:2f38aaabc810 56 * else
samux 0:2f38aaabc810 57 * pc.printf("join failed!\r\n");
samux 0:2f38aaabc810 58 *
samux 2:dd0911f3af8e 59 * }
samux 0:2f38aaabc810 60 * @endcode
samux 0:2f38aaabc810 61 */
samux 0:2f38aaabc810 62 class Wifly {
samux 0:2f38aaabc810 63
samux 0:2f38aaabc810 64 public:
samux 0:2f38aaabc810 65 /**
samux 3:e6f1c618da66 66 * Constructor for joining open, wep or wpa secured networks
samux 0:2f38aaabc810 67 *
samux 0:2f38aaabc810 68 * @param tx mbed pin to use for tx line of Serial interface
samux 0:2f38aaabc810 69 * @param rx mbed pin to use for rx line of Serial interface
samux 0:2f38aaabc810 70 * @param reset reset pin of the wifi module
samux 0:2f38aaabc810 71 * @param ssid ssid of the network
samux 0:2f38aaabc810 72 * @param phrase WEP or WPA key
samux 0:2f38aaabc810 73 * @param wpa true if wpa security false otherwise
samux 0:2f38aaabc810 74 * @param ip ip of the wifi module (default: NULL)
samux 0:2f38aaabc810 75 * @param netmask netmask (default: NULL)
samux 0:2f38aaabc810 76 * @param baudrate speed of the communication (default: 9600)
samux 0:2f38aaabc810 77 */
samux 0:2f38aaabc810 78 Wifly( PinName tx, PinName rx, PinName reset, char * ssid, char * phrase, bool wpa,
samux 5:9890eb81f730 79 char * ip = NULL, char * netmask = NULL, bool dhcp = true, int baudrate = 9600);
samux 0:2f38aaabc810 80
samux 0:2f38aaabc810 81
samux 0:2f38aaabc810 82
samux 0:2f38aaabc810 83 /**
samux 0:2f38aaabc810 84 * Constructor to create an adhoc network
samux 0:2f38aaabc810 85 *
samux 0:2f38aaabc810 86 * @param tx mbed pin to use for tx line of Serial interface
samux 0:2f38aaabc810 87 * @param rx mbed pin to use for rx line of Serial interface
samux 0:2f38aaabc810 88 * @param ssid ssid of the adhoc network which will be created
samux 0:2f38aaabc810 89 * @param ip ip of the wifi module (default: "169.254.1.1")
samux 0:2f38aaabc810 90 * @param netmask netmask (default: "255.255.0.0")
samux 0:2f38aaabc810 91 * @param channelchannel (default: "1")
samux 0:2f38aaabc810 92 * @param baudrate speed of the communication (default: 9600)
samux 0:2f38aaabc810 93 */
samux 0:2f38aaabc810 94 Wifly( PinName tx, PinName rx, PinName reset, char * ssid, char * ip = "169.254.1.1",
samux 5:9890eb81f730 95 char * netmask = "255.255.0.0", int channel = 1, int baudrate = 9600);
samux 0:2f38aaabc810 96
samux 0:2f38aaabc810 97 /**
samux 0:2f38aaabc810 98 * Send a string to the wifi module by serial port
samux 0:2f38aaabc810 99 *
samux 1:e2f18a3d5215 100 * @param str string to be sent
samux 1:e2f18a3d5215 101 * @param ACK string which must be acknowledge by the wifi module
samux 0:2f38aaabc810 102 *
samux 1:e2f18a3d5215 103 * @return true if ACK has been found in the response from the wifi module. False otherwise or if there is no response in 3s.
samux 0:2f38aaabc810 104 */
samux 0:2f38aaabc810 105 bool Send(char * str, char * ACK);
samux 0:2f38aaabc810 106
samux 0:2f38aaabc810 107 /**
samux 0:2f38aaabc810 108 * Connect the wifi module to the network. Return true if set correctly, false if not.
samux 0:2f38aaabc810 109 *
samux 1:e2f18a3d5215 110 * @return true if connected, false otherwise
samux 0:2f38aaabc810 111 */
samux 0:2f38aaabc810 112 bool Join();
samux 0:2f38aaabc810 113
samux 0:2f38aaabc810 114 /**
samux 0:2f38aaabc810 115 * Create an adhoc network with the ssid contained in the constructor
samux 0:2f38aaabc810 116 *
samux 1:e2f18a3d5215 117 * @return true if the network is well created, false otherwise
samux 0:2f38aaabc810 118 */
samux 0:2f38aaabc810 119 bool CreateAdhocNetwork();
samux 0:2f38aaabc810 120
samux 0:2f38aaabc810 121 /**
samux 0:2f38aaabc810 122 * Receive a string to the wifi module by serial port
samux 0:2f38aaabc810 123 *
samux 1:e2f18a3d5215 124 *@param str string to be read
samux 0:2f38aaabc810 125 */
samux 0:2f38aaabc810 126 void read(char * str);
samux 0:2f38aaabc810 127
samux 0:2f38aaabc810 128 /**
samux 0:2f38aaabc810 129 * To enter in command mode (we can configure the module)
samux 0:2f38aaabc810 130 *
samux 1:e2f18a3d5215 131 * @return true if successful, false otherwise
samux 0:2f38aaabc810 132 */
samux 0:2f38aaabc810 133 bool CmdMode();
samux 0:2f38aaabc810 134
samux 0:2f38aaabc810 135 /**
samux 0:2f38aaabc810 136 * To exit the command mode
samux 0:2f38aaabc810 137 *
samux 1:e2f18a3d5215 138 * @return true if successful, false otherwise
samux 0:2f38aaabc810 139 */
samux 0:2f38aaabc810 140 bool exit();
samux 0:2f38aaabc810 141
samux 0:2f38aaabc810 142 /**
samux 0:2f38aaabc810 143 * Reset the wifi module
samux 0:2f38aaabc810 144 */
samux 0:2f38aaabc810 145 void reset();
samux 0:2f38aaabc810 146
samux 0:2f38aaabc810 147 /**
samux 0:2f38aaabc810 148 * To check if a character is available
samux 0:2f38aaabc810 149 *
samux 1:e2f18a3d5215 150 * @return true if a character is available, false otherwise
samux 0:2f38aaabc810 151 */
samux 0:2f38aaabc810 152 bool readable();
samux 0:2f38aaabc810 153
samux 0:2f38aaabc810 154 /**
samux 0:2f38aaabc810 155 * Read a character
samux 0:2f38aaabc810 156 *
samux 1:e2f18a3d5215 157 * @return the character read
samux 0:2f38aaabc810 158 */
samux 0:2f38aaabc810 159 char getc();
samux 0:2f38aaabc810 160
samux 0:2f38aaabc810 161 /**
samux 0:2f38aaabc810 162 * Write a character
samux 0:2f38aaabc810 163 *
samux 1:e2f18a3d5215 164 * @param the character which will be written
samux 0:2f38aaabc810 165 */
samux 0:2f38aaabc810 166 void putc(char c);
samux 0:2f38aaabc810 167
samux 4:06ca04e2e279 168 /**
samux 4:06ca04e2e279 169 * Change the baudrate of the wifi module. The modification will be effective after a reboot.
samux 4:06ca04e2e279 170 * After a baudrate modification, you have to use the correct parameters in the Wifly constructor.
samux 4:06ca04e2e279 171 *
samux 4:06ca04e2e279 172 * @param baudrate new baudrate
samux 4:06ca04e2e279 173 * @return true if the baudrate has been changed, false otherwise
samux 4:06ca04e2e279 174 */
samux 4:06ca04e2e279 175 bool changeBaudrate(int baudrate);
samux 4:06ca04e2e279 176
samux 0:2f38aaabc810 177
samux 0:2f38aaabc810 178
samux 0:2f38aaabc810 179 private:
samux 0:2f38aaabc810 180 Serial wifi;
samux 0:2f38aaabc810 181 DigitalOut reset_pin;
samux 0:2f38aaabc810 182 bool wpa;
samux 0:2f38aaabc810 183 bool adhoc;
samux 0:2f38aaabc810 184 bool dhcp;
samux 0:2f38aaabc810 185 char * phrase;
samux 0:2f38aaabc810 186 char * ssid;
samux 0:2f38aaabc810 187 char * ip;
samux 0:2f38aaabc810 188 char * netmask;
samux 0:2f38aaabc810 189 int channel;
samux 0:2f38aaabc810 190 };
samux 0:2f38aaabc810 191
samux 0:2f38aaabc810 192 #endif