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

Dependents:   RN-XV_simple_server

Committer:
samux
Date:
Fri Aug 12 11:20:42 2011 +0000
Revision:
0:2f38aaabc810
Child:
1:e2f18a3d5215

        

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