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

Dependents:   RN-XV_simple_server

Committer:
samux
Date:
Mon Aug 15 16:05:21 2011 +0000
Revision:
9:984c1436dd42
Parent:
8:d72bfdccb5d8
Child:
10:d3e3e925f62f

        

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 6:f2d3f1528280 74 * @param ip ip of the wifi module if dhcp = false (default: NULL)
samux 6:f2d3f1528280 75 * @param netmask netmask if dhcp = false (default: NULL)
samux 6:f2d3f1528280 76 * @param dhcp enable or disable dhcp (default: true)
samux 0:2f38aaabc810 77 * @param baudrate speed of the communication (default: 9600)
samux 0:2f38aaabc810 78 */
samux 0:2f38aaabc810 79 Wifly( PinName tx, PinName rx, PinName reset, char * ssid, char * phrase, bool wpa,
samux 5:9890eb81f730 80 char * ip = NULL, char * netmask = NULL, bool dhcp = true, int baudrate = 9600);
samux 0:2f38aaabc810 81
samux 0:2f38aaabc810 82
samux 0:2f38aaabc810 83
samux 0:2f38aaabc810 84 /**
samux 0:2f38aaabc810 85 * Constructor to create an adhoc network
samux 0:2f38aaabc810 86 *
samux 0:2f38aaabc810 87 * @param tx mbed pin to use for tx line of Serial interface
samux 0:2f38aaabc810 88 * @param rx mbed pin to use for rx line of Serial interface
samux 0:2f38aaabc810 89 * @param ssid ssid of the adhoc network which will be created
samux 0:2f38aaabc810 90 * @param ip ip of the wifi module (default: "169.254.1.1")
samux 0:2f38aaabc810 91 * @param netmask netmask (default: "255.255.0.0")
samux 6:f2d3f1528280 92 * @param channel channel (default: "1")
samux 0:2f38aaabc810 93 * @param baudrate speed of the communication (default: 9600)
samux 0:2f38aaabc810 94 */
samux 0:2f38aaabc810 95 Wifly( PinName tx, PinName rx, PinName reset, char * ssid, char * ip = "169.254.1.1",
samux 5:9890eb81f730 96 char * netmask = "255.255.0.0", int channel = 1, int baudrate = 9600);
samux 0:2f38aaabc810 97
samux 0:2f38aaabc810 98 /**
samux 0:2f38aaabc810 99 * Send a string to the wifi module by serial port
samux 0:2f38aaabc810 100 *
samux 1:e2f18a3d5215 101 * @param str string to be sent
samux 1:e2f18a3d5215 102 * @param ACK string which must be acknowledge by the wifi module
samux 0:2f38aaabc810 103 *
samux 1:e2f18a3d5215 104 * @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 105 */
samux 0:2f38aaabc810 106 bool Send(char * str, char * ACK);
samux 0:2f38aaabc810 107
samux 0:2f38aaabc810 108 /**
samux 0:2f38aaabc810 109 * Connect the wifi module to the network. Return true if set correctly, false if not.
samux 0:2f38aaabc810 110 *
samux 1:e2f18a3d5215 111 * @return true if connected, false otherwise
samux 0:2f38aaabc810 112 */
samux 0:2f38aaabc810 113 bool Join();
samux 0:2f38aaabc810 114
samux 0:2f38aaabc810 115 /**
samux 0:2f38aaabc810 116 * Create an adhoc network with the ssid contained in the constructor
samux 0:2f38aaabc810 117 *
samux 1:e2f18a3d5215 118 * @return true if the network is well created, false otherwise
samux 0:2f38aaabc810 119 */
samux 0:2f38aaabc810 120 bool CreateAdhocNetwork();
samux 0:2f38aaabc810 121
samux 0:2f38aaabc810 122 /**
samux 9:984c1436dd42 123 * Receive a string to the wifi module by serial port
samux 0:2f38aaabc810 124 *
samux 1:e2f18a3d5215 125 *@param str string to be read
samux 0:2f38aaabc810 126 */
samux 0:2f38aaabc810 127 void read(char * str);
samux 0:2f38aaabc810 128
samux 0:2f38aaabc810 129 /**
samux 0:2f38aaabc810 130 * To enter in command mode (we can configure the module)
samux 0:2f38aaabc810 131 *
samux 1:e2f18a3d5215 132 * @return true if successful, false otherwise
samux 0:2f38aaabc810 133 */
samux 0:2f38aaabc810 134 bool CmdMode();
samux 0:2f38aaabc810 135
samux 0:2f38aaabc810 136 /**
samux 0:2f38aaabc810 137 * To exit the command mode
samux 0:2f38aaabc810 138 *
samux 1:e2f18a3d5215 139 * @return true if successful, false otherwise
samux 0:2f38aaabc810 140 */
samux 0:2f38aaabc810 141 bool exit();
samux 0:2f38aaabc810 142
samux 0:2f38aaabc810 143 /**
samux 0:2f38aaabc810 144 * Reset the wifi module
samux 0:2f38aaabc810 145 */
samux 0:2f38aaabc810 146 void reset();
samux 0:2f38aaabc810 147
samux 0:2f38aaabc810 148 /**
samux 0:2f38aaabc810 149 * To check if a character is available
samux 0:2f38aaabc810 150 *
samux 1:e2f18a3d5215 151 * @return true if a character is available, false otherwise
samux 0:2f38aaabc810 152 */
samux 0:2f38aaabc810 153 bool readable();
samux 0:2f38aaabc810 154
samux 0:2f38aaabc810 155 /**
samux 0:2f38aaabc810 156 * Read a character
samux 0:2f38aaabc810 157 *
samux 1:e2f18a3d5215 158 * @return the character read
samux 0:2f38aaabc810 159 */
samux 0:2f38aaabc810 160 char getc();
samux 0:2f38aaabc810 161
samux 0:2f38aaabc810 162 /**
samux 0:2f38aaabc810 163 * Write a character
samux 0:2f38aaabc810 164 *
samux 1:e2f18a3d5215 165 * @param the character which will be written
samux 0:2f38aaabc810 166 */
samux 0:2f38aaabc810 167 void putc(char c);
samux 0:2f38aaabc810 168
samux 4:06ca04e2e279 169 /**
samux 4:06ca04e2e279 170 * Change the baudrate of the wifi module. The modification will be effective after a reboot.
samux 4:06ca04e2e279 171 * After a baudrate modification, you have to use the correct parameters in the Wifly constructor.
samux 4:06ca04e2e279 172 *
samux 4:06ca04e2e279 173 * @param baudrate new baudrate
samux 4:06ca04e2e279 174 * @return true if the baudrate has been changed, false otherwise
samux 4:06ca04e2e279 175 */
samux 4:06ca04e2e279 176 bool changeBaudrate(int baudrate);
samux 4:06ca04e2e279 177
samux 0:2f38aaabc810 178
samux 0:2f38aaabc810 179
samux 0:2f38aaabc810 180 private:
samux 0:2f38aaabc810 181 Serial wifi;
samux 0:2f38aaabc810 182 DigitalOut reset_pin;
samux 0:2f38aaabc810 183 bool wpa;
samux 0:2f38aaabc810 184 bool adhoc;
samux 0:2f38aaabc810 185 bool dhcp;
samux 0:2f38aaabc810 186 char * phrase;
samux 0:2f38aaabc810 187 char * ssid;
samux 0:2f38aaabc810 188 char * ip;
samux 0:2f38aaabc810 189 char * netmask;
samux 0:2f38aaabc810 190 int channel;
samux 0:2f38aaabc810 191 };
samux 0:2f38aaabc810 192
samux 0:2f38aaabc810 193 #endif