Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: Wifly.h
- Revision:
- 0:461ddbab4fd1
- Child:
- 1:acd37b0d1ddb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Wifly.h Mon Apr 16 23:10:37 2012 +0000
@@ -0,0 +1,241 @@
+/**
+* @author Steven Rhodes
+*
+* @section LICENSE
+*
+* Copyright (c) 2012 Steven Rhodes
+*
+* 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
+*
+* CNCAirbrush Berkeley ME102B Project
+*
+*/
+
+#ifndef WIFLY_H
+#define WIFLY_H
+
+#include "mbed.h"
+#include "CBuffer.h"
+#include "CmdBuffer.h"
+
+//LocalFileSystem local("local");
+
+
+/** Wifly Class
+ *
+ * Example:
+ * @code
+ * #include "mbed.h"
+ * #include "Wifly.h"
+ *
+ * Wifly wifly(p9, p10, p8);
+ * Serial pc(USBTX, USBRX);
+ *
+ * int main()
+ * {
+ * while(1){
+ * if(wifly.hasCmd()){
+ * Command * c;
+* wifly.getCmd(c)
+ * pc.printf("Msg: %d\r\n", c->cmd);
+ }
+ * }
+ * @endcode
+ */
+class Wifly {
+
+public:
+
+
+ /**
+ * 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 channel channel (default: "1")
+ * @param baudrate speed of the communication (default: 460800)
+ */
+ Wifly( PinName tx, PinName rx, PinName reset, char * ssid = "CNCAirbrush", char * ip = "169.254.1.1",
+ char * netmask = "255.255.0.0", int channel = 1, int baudrate = 460800);
+
+ /**
+ * Send a string to the wifi module by serial port. This function desactivates the user interrupt handler when a character is received to analyze the response from the wifi module.
+ * Useful to send a command to the module and wait a response.
+ *
+ *
+ * @param str string to be sent
+ * @param ACK string which must be acknowledge by the wifi module. If "ACK" == "NO", no string has to be acknoledged. (default: "NO")
+ * @param res this field will contain the response from the wifi module, result of a command sent. This field is available only if ACK = "NO" AND res != NULL (default: NULL)
+ *
+ * @return true if ACK has been found in the response from the wifi module. False otherwise or if there is no response in 5s.
+ */
+ bool send(char * str, char * ACK = "NO", char * res = NULL);
+
+ /**
+ * Report that there's a command waiting to be read.
+ *
+ * @return true if there's a command waiting to be read.
+ */
+ bool hasCmd();
+
+ /**
+ * Connect the wifi module to the ssid contained in the constructor.
+ *
+ * @return the command on top of the stack
+ */
+ Command * getCmd();
+
+ /**
+ * Connect the wifi module to the ssid contained in the constructor.
+ *
+ * @return true if successfully sent
+ */
+ bool sendCmd(Command * c);
+
+
+ /**
+ * Create an adhoc network with the ssid contained in the constructor
+ *
+ * @return true if the network is well created, false otherwise
+ */
+ bool createAdhocNetwork();
+
+ /**
+ * Read a string if available
+ *
+ *@param str pointer where will be stored the string read
+ */
+ bool read(char * str);
+
+
+ /**
+ * Reset the wifi module
+ */
+ void reset();
+
+ /**
+ * Check if characters are available
+ *
+ * @return number of available characters
+ */
+ int readable();
+
+ /**
+ * Read a character
+ *
+ * @return the character read
+ */
+ char getc();
+
+ /**
+ * Flush the buffer
+ */
+ void flush();
+
+ /**
+ * Write a character
+ *
+ * @param the character which will be written
+ */
+ void putc(char c);
+
+
+ /**
+ * 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();
+
+
+ /**
+ * Attach a member function to call when a character is received.
+ *
+ * @param tptr pointer to the object to call the member function on
+ * @param mptr pointer to the member function to be called
+ */
+ template<typename T>
+ void attach(T* tptr, void (T::*mptr)(void)) {
+ if ((mptr != NULL) && (tptr != NULL)) {
+ rx.attach(tptr, mptr);
+ }
+ }
+
+
+ /**
+ * Attach a callback for when a character is received
+ *
+ * @param fptr function pointer
+ */
+ void attach(void (*fn)(void)) {
+ if (fn != NULL) {
+ rx.attach(fn);
+ }
+ }
+
+private:
+ Serial wifi;
+ DigitalOut reset_pin;
+ bool wpa;
+ bool adhoc;
+ bool dhcp;
+ char phrase[30];
+ char ssid[30];
+ char ip[20];
+ char netmask[20];
+ char imgpos;
+ int channel;
+ FILE *fp;
+ CBuffer buf_wifly;
+ CmdBuffer cmd_buffer;
+
+ char char_to_num(char c);
+ char num_to_char(char n);
+ long str_to_long(char * str);
+ float str_to_float(char * str);
+ void long_to_str(char * str, long n);
+ void float_to_str(char * str, float f);
+ void attach_rx(bool null);
+ void attach_img(bool null);
+ void attach_cmd(bool null);
+ void handler_rx(void);
+ void handler_img(void);
+ void handler_cmd(void);
+
+ FunctionPointer rx;
+ bool gettingImg;
+ bool gotImg;
+
+
+};
+
+#endif
\ No newline at end of file