This is Wi-Fi interface of WizFi310 for mbed os 5
Dependents: mbed-os-example-wifi
WizFi310/WizFi310.h@1:8e468bb83e1e, 2017-12-19 (annotated)
- Committer:
- kaizen
- Date:
- Tue Dec 19 16:59:33 2017 +0900
- Revision:
- 1:8e468bb83e1e
- Parent:
- 0:d0e3f515f99d
This is WizFi310 Library for mbed os5
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kaizen | 0:d0e3f515f99d | 1 | |
kaizen | 0:d0e3f515f99d | 2 | #ifndef WIZFI310_H_ |
kaizen | 0:d0e3f515f99d | 3 | #define WIZFI310_H_ |
kaizen | 0:d0e3f515f99d | 4 | |
kaizen | 0:d0e3f515f99d | 5 | #include "ATCmdParser.h" |
kaizen | 0:d0e3f515f99d | 6 | |
kaizen | 0:d0e3f515f99d | 7 | /** WizFi310Interface class. |
kaizen | 0:d0e3f515f99d | 8 | This is an interface to a WizFi310Interface radio. |
kaizen | 0:d0e3f515f99d | 9 | */ |
kaizen | 0:d0e3f515f99d | 10 | class WizFi310 |
kaizen | 0:d0e3f515f99d | 11 | { |
kaizen | 0:d0e3f515f99d | 12 | public: |
kaizen | 0:d0e3f515f99d | 13 | WizFi310(PinName tx, PinName rx, bool debug=false); |
kaizen | 0:d0e3f515f99d | 14 | |
kaizen | 0:d0e3f515f99d | 15 | /** |
kaizen | 0:d0e3f515f99d | 16 | * Check firmware version of WizFi310 |
kaizen | 0:d0e3f515f99d | 17 | * |
kaizen | 0:d0e3f515f99d | 18 | * @return character array firmware version or 0 if firmware query command gives outdated response |
kaizen | 0:d0e3f515f99d | 19 | */ |
kaizen | 0:d0e3f515f99d | 20 | const char* get_firmware_version(void); |
kaizen | 0:d0e3f515f99d | 21 | |
kaizen | 0:d0e3f515f99d | 22 | /** |
kaizen | 0:d0e3f515f99d | 23 | * Startup the WizFi310 |
kaizen | 0:d0e3f515f99d | 24 | * |
kaizen | 0:d0e3f515f99d | 25 | * @param mode mode of WIFI 0-client, 1-host |
kaizen | 0:d0e3f515f99d | 26 | * @return true only if WizFi310 was setup correctly |
kaizen | 0:d0e3f515f99d | 27 | */ |
kaizen | 0:d0e3f515f99d | 28 | bool startup(int mode); |
kaizen | 0:d0e3f515f99d | 29 | |
kaizen | 0:d0e3f515f99d | 30 | /** |
kaizen | 0:d0e3f515f99d | 31 | * Reset WizFi310 |
kaizen | 0:d0e3f515f99d | 32 | * |
kaizen | 0:d0e3f515f99d | 33 | * @return true only if WizFi310 resets successfully |
kaizen | 0:d0e3f515f99d | 34 | */ |
kaizen | 0:d0e3f515f99d | 35 | bool reset(void); |
kaizen | 0:d0e3f515f99d | 36 | |
kaizen | 0:d0e3f515f99d | 37 | /** |
kaizen | 0:d0e3f515f99d | 38 | * Enable/Disable DHCP |
kaizen | 0:d0e3f515f99d | 39 | * |
kaizen | 0:d0e3f515f99d | 40 | * @param enabled DHCP enabled when true |
kaizen | 0:d0e3f515f99d | 41 | * @return true only if WizFi310 enables/disables DHCP successfully |
kaizen | 0:d0e3f515f99d | 42 | */ |
kaizen | 0:d0e3f515f99d | 43 | bool dhcp(bool enabled); |
kaizen | 0:d0e3f515f99d | 44 | |
kaizen | 0:d0e3f515f99d | 45 | /** |
kaizen | 0:d0e3f515f99d | 46 | * Connect WizFi310 to AP |
kaizen | 0:d0e3f515f99d | 47 | * |
kaizen | 0:d0e3f515f99d | 48 | * @param ap the name of the AP |
kaizen | 0:d0e3f515f99d | 49 | * @param passPhrase the password of AP |
kaizen | 0:d0e3f515f99d | 50 | * @param security type of AP |
kaizen | 0:d0e3f515f99d | 51 | * @return true only if WizFi310 is connected successfully |
kaizen | 0:d0e3f515f99d | 52 | */ |
kaizen | 0:d0e3f515f99d | 53 | bool connect(const char *ap, const char *passPhrase, const char *sec); |
kaizen | 0:d0e3f515f99d | 54 | |
kaizen | 0:d0e3f515f99d | 55 | /** |
kaizen | 0:d0e3f515f99d | 56 | * Disconnect WizFi310 from AP |
kaizen | 0:d0e3f515f99d | 57 | * |
kaizen | 0:d0e3f515f99d | 58 | * @return true only if WizFi310 is disconnected successfully |
kaizen | 0:d0e3f515f99d | 59 | */ |
kaizen | 0:d0e3f515f99d | 60 | bool disconnect(void); |
kaizen | 0:d0e3f515f99d | 61 | |
kaizen | 0:d0e3f515f99d | 62 | /** |
kaizen | 0:d0e3f515f99d | 63 | * Get the IP address of WizFi310 |
kaizen | 0:d0e3f515f99d | 64 | * |
kaizen | 0:d0e3f515f99d | 65 | * @return null-teriminated IP address or null if no IP address is assigned |
kaizen | 0:d0e3f515f99d | 66 | */ |
kaizen | 0:d0e3f515f99d | 67 | const char *getIPAddress(void); |
kaizen | 0:d0e3f515f99d | 68 | |
kaizen | 0:d0e3f515f99d | 69 | /** |
kaizen | 0:d0e3f515f99d | 70 | * Get the MAC address of WizFi310 |
kaizen | 0:d0e3f515f99d | 71 | * |
kaizen | 0:d0e3f515f99d | 72 | * @return null-terminated MAC address or null if no MAC address is assigned |
kaizen | 0:d0e3f515f99d | 73 | */ |
kaizen | 0:d0e3f515f99d | 74 | const char *getMACAddress(void); |
kaizen | 0:d0e3f515f99d | 75 | |
kaizen | 0:d0e3f515f99d | 76 | /** Get the local gateway |
kaizen | 0:d0e3f515f99d | 77 | * |
kaizen | 0:d0e3f515f99d | 78 | * @return Null-terminated representation of the local gateway |
kaizen | 0:d0e3f515f99d | 79 | * or null if no network mask has been recieved |
kaizen | 0:d0e3f515f99d | 80 | */ |
kaizen | 0:d0e3f515f99d | 81 | const char *getGateway(); |
kaizen | 0:d0e3f515f99d | 82 | |
kaizen | 0:d0e3f515f99d | 83 | /** Get the local network mask |
kaizen | 0:d0e3f515f99d | 84 | * |
kaizen | 0:d0e3f515f99d | 85 | * @return Null-terminated representation of the local network mask |
kaizen | 0:d0e3f515f99d | 86 | * or null if no network mask has been recieved |
kaizen | 0:d0e3f515f99d | 87 | */ |
kaizen | 0:d0e3f515f99d | 88 | const char *getNetmask(); |
kaizen | 0:d0e3f515f99d | 89 | |
kaizen | 0:d0e3f515f99d | 90 | /* Return RSSI for active connection |
kaizen | 0:d0e3f515f99d | 91 | * |
kaizen | 0:d0e3f515f99d | 92 | * @return Measured RSSI |
kaizen | 0:d0e3f515f99d | 93 | */ |
kaizen | 0:d0e3f515f99d | 94 | int8_t getRSSI(); |
kaizen | 0:d0e3f515f99d | 95 | |
kaizen | 0:d0e3f515f99d | 96 | /** |
kaizen | 0:d0e3f515f99d | 97 | * Check if WizFi310 is conenected |
kaizen | 0:d0e3f515f99d | 98 | * |
kaizen | 0:d0e3f515f99d | 99 | * @return true only if the chip has an IP address |
kaizen | 0:d0e3f515f99d | 100 | */ |
kaizen | 0:d0e3f515f99d | 101 | bool isConnected(void); |
kaizen | 0:d0e3f515f99d | 102 | |
kaizen | 0:d0e3f515f99d | 103 | /** Scan for available networks |
kaizen | 0:d0e3f515f99d | 104 | * |
kaizen | 0:d0e3f515f99d | 105 | * @param ap Pointer to allocated array to store discovered AP |
kaizen | 0:d0e3f515f99d | 106 | * @param limit Size of allocated @a res array, or 0 to only count available AP |
kaizen | 0:d0e3f515f99d | 107 | * @return Number of entries in @a res, or if @a count was 0 number of available networks, negative on error |
kaizen | 0:d0e3f515f99d | 108 | * see @a nsapi_error |
kaizen | 0:d0e3f515f99d | 109 | */ |
kaizen | 0:d0e3f515f99d | 110 | int scan(WiFiAccessPoint *res, unsigned limit); |
kaizen | 0:d0e3f515f99d | 111 | |
kaizen | 0:d0e3f515f99d | 112 | /**Perform a dns query |
kaizen | 0:d0e3f515f99d | 113 | * |
kaizen | 0:d0e3f515f99d | 114 | * @param name Hostname to resolve |
kaizen | 0:d0e3f515f99d | 115 | * @param ip Buffer to store IP address |
kaizen | 0:d0e3f515f99d | 116 | * @return 0 true on success, false on failure |
kaizen | 0:d0e3f515f99d | 117 | */ |
kaizen | 0:d0e3f515f99d | 118 | bool dns_lookup(const char *name, char *ip); |
kaizen | 0:d0e3f515f99d | 119 | |
kaizen | 0:d0e3f515f99d | 120 | /** |
kaizen | 0:d0e3f515f99d | 121 | * Open a socketed connection |
kaizen | 0:d0e3f515f99d | 122 | * |
kaizen | 0:d0e3f515f99d | 123 | * @param type the type of socket to open "UDP" or "TCP" |
kaizen | 0:d0e3f515f99d | 124 | * @param id id to give the new socket, valid 0-4 |
kaizen | 0:d0e3f515f99d | 125 | * @param port port to open connection with |
kaizen | 0:d0e3f515f99d | 126 | * @param addr the IP address of the destination |
kaizen | 0:d0e3f515f99d | 127 | * @return true only if socket opened successfully |
kaizen | 0:d0e3f515f99d | 128 | */ |
kaizen | 0:d0e3f515f99d | 129 | bool open(const char *type, int id, const char* addr, int port); |
kaizen | 0:d0e3f515f99d | 130 | |
kaizen | 0:d0e3f515f99d | 131 | /** |
kaizen | 0:d0e3f515f99d | 132 | * Sends data to an open socket |
kaizen | 0:d0e3f515f99d | 133 | * |
kaizen | 0:d0e3f515f99d | 134 | * @param id id of socket to send to |
kaizen | 0:d0e3f515f99d | 135 | * @param data data to be sent |
kaizen | 0:d0e3f515f99d | 136 | * @param amount amount of data to be sent - max 1024 |
kaizen | 0:d0e3f515f99d | 137 | * @return true only if data sent successfully |
kaizen | 0:d0e3f515f99d | 138 | */ |
kaizen | 0:d0e3f515f99d | 139 | bool send(int id, const void *data, uint32_t amount); |
kaizen | 0:d0e3f515f99d | 140 | |
kaizen | 0:d0e3f515f99d | 141 | /** |
kaizen | 0:d0e3f515f99d | 142 | * Receives data from an open socket |
kaizen | 0:d0e3f515f99d | 143 | * |
kaizen | 0:d0e3f515f99d | 144 | * @param id id to receive from |
kaizen | 0:d0e3f515f99d | 145 | * @param data placeholder for returned information |
kaizen | 0:d0e3f515f99d | 146 | * @param amount number of bytes to be received |
kaizen | 0:d0e3f515f99d | 147 | * @return the number of bytes received |
kaizen | 0:d0e3f515f99d | 148 | */ |
kaizen | 0:d0e3f515f99d | 149 | int32_t recv(int id, void *data, uint32_t amount); |
kaizen | 0:d0e3f515f99d | 150 | |
kaizen | 0:d0e3f515f99d | 151 | /** |
kaizen | 0:d0e3f515f99d | 152 | * Closes a socket |
kaizen | 0:d0e3f515f99d | 153 | * |
kaizen | 0:d0e3f515f99d | 154 | * @param id id of socket to close, valid only 0-4 |
kaizen | 0:d0e3f515f99d | 155 | * @return true only if socket is closed successfully |
kaizen | 0:d0e3f515f99d | 156 | */ |
kaizen | 0:d0e3f515f99d | 157 | bool close(int id); |
kaizen | 0:d0e3f515f99d | 158 | |
kaizen | 0:d0e3f515f99d | 159 | /** |
kaizen | 0:d0e3f515f99d | 160 | * Allows timeout to be changed between commands |
kaizen | 0:d0e3f515f99d | 161 | * |
kaizen | 0:d0e3f515f99d | 162 | * @param timeout_ms timeout of the connection |
kaizen | 0:d0e3f515f99d | 163 | */ |
kaizen | 0:d0e3f515f99d | 164 | void setTimeout(uint32_t timeout_ms); |
kaizen | 0:d0e3f515f99d | 165 | |
kaizen | 0:d0e3f515f99d | 166 | /** |
kaizen | 0:d0e3f515f99d | 167 | * Checks if data is available |
kaizen | 0:d0e3f515f99d | 168 | */ |
kaizen | 0:d0e3f515f99d | 169 | bool readable(); |
kaizen | 0:d0e3f515f99d | 170 | |
kaizen | 0:d0e3f515f99d | 171 | /** |
kaizen | 0:d0e3f515f99d | 172 | * Checks if data can be written |
kaizen | 0:d0e3f515f99d | 173 | */ |
kaizen | 0:d0e3f515f99d | 174 | bool writeable(); |
kaizen | 0:d0e3f515f99d | 175 | |
kaizen | 0:d0e3f515f99d | 176 | /** |
kaizen | 0:d0e3f515f99d | 177 | * Attach a function to call whenever network state has changed |
kaizen | 0:d0e3f515f99d | 178 | * |
kaizen | 0:d0e3f515f99d | 179 | * @param func A pointer to a void function, or 0 to set as none |
kaizen | 0:d0e3f515f99d | 180 | */ |
kaizen | 0:d0e3f515f99d | 181 | void attach(Callback<void()> func); |
kaizen | 0:d0e3f515f99d | 182 | |
kaizen | 0:d0e3f515f99d | 183 | /** |
kaizen | 0:d0e3f515f99d | 184 | * Attach a function to call whenever network state has changed |
kaizen | 0:d0e3f515f99d | 185 | * |
kaizen | 0:d0e3f515f99d | 186 | * @param obj pointer to the object to call the member function on |
kaizen | 0:d0e3f515f99d | 187 | * @param method pointer to the member function to call |
kaizen | 0:d0e3f515f99d | 188 | */ |
kaizen | 0:d0e3f515f99d | 189 | template <typename T, typename M> |
kaizen | 0:d0e3f515f99d | 190 | void attach(T *obj, M method) { |
kaizen | 0:d0e3f515f99d | 191 | attach(Callback<void()>(obj, method)); |
kaizen | 0:d0e3f515f99d | 192 | } |
kaizen | 0:d0e3f515f99d | 193 | |
kaizen | 0:d0e3f515f99d | 194 | private: |
kaizen | 0:d0e3f515f99d | 195 | UARTSerial _serial; |
kaizen | 0:d0e3f515f99d | 196 | ATCmdParser _parser; |
kaizen | 0:d0e3f515f99d | 197 | |
kaizen | 0:d0e3f515f99d | 198 | struct packet { |
kaizen | 0:d0e3f515f99d | 199 | struct packet *next; |
kaizen | 0:d0e3f515f99d | 200 | int id; |
kaizen | 0:d0e3f515f99d | 201 | uint32_t len; |
kaizen | 0:d0e3f515f99d | 202 | // data follows |
kaizen | 0:d0e3f515f99d | 203 | } *_packets, **_packets_end; |
kaizen | 0:d0e3f515f99d | 204 | void _packet_handler(); |
kaizen | 0:d0e3f515f99d | 205 | bool recv_ap(nsapi_wifi_ap_t *ap); |
kaizen | 0:d0e3f515f99d | 206 | nsapi_security_t str2sec(const char *str_sec); |
kaizen | 0:d0e3f515f99d | 207 | int hex_str_to_int(const char* hex_str); |
kaizen | 0:d0e3f515f99d | 208 | |
kaizen | 0:d0e3f515f99d | 209 | char _ip_buffer[16]; |
kaizen | 0:d0e3f515f99d | 210 | char _gateway_buffer[16]; |
kaizen | 0:d0e3f515f99d | 211 | char _netmask_buffer[16]; |
kaizen | 0:d0e3f515f99d | 212 | char _mac_buffer[18]; |
kaizen | 0:d0e3f515f99d | 213 | char _firmware_version[8]; |
kaizen | 0:d0e3f515f99d | 214 | |
kaizen | 0:d0e3f515f99d | 215 | int _op_mode; // 0 : Station Mode, 1 : AP Mode |
kaizen | 0:d0e3f515f99d | 216 | bool _dhcp; |
kaizen | 0:d0e3f515f99d | 217 | }; |
kaizen | 0:d0e3f515f99d | 218 | |
kaizen | 0:d0e3f515f99d | 219 | |
kaizen | 0:d0e3f515f99d | 220 | |
kaizen | 0:d0e3f515f99d | 221 | //#include "WizFi310_conf.h" |
kaizen | 0:d0e3f515f99d | 222 | // |
kaizen | 0:d0e3f515f99d | 223 | //#include "mbed.h" |
kaizen | 0:d0e3f515f99d | 224 | //#include "RawSerial.h" |
kaizen | 0:d0e3f515f99d | 225 | //#include "Serial.h" |
kaizen | 0:d0e3f515f99d | 226 | //#include "CBuffer.h" |
kaizen | 0:d0e3f515f99d | 227 | //#include <ctype.h> |
kaizen | 0:d0e3f515f99d | 228 | //#include <stdlib.h> |
kaizen | 0:d0e3f515f99d | 229 | //#include <string> |
kaizen | 0:d0e3f515f99d | 230 | //#include "WiFiInterface.h" |
kaizen | 0:d0e3f515f99d | 231 | // |
kaizen | 0:d0e3f515f99d | 232 | //using namespace std; |
kaizen | 0:d0e3f515f99d | 233 | // |
kaizen | 0:d0e3f515f99d | 234 | //#define BUF_SIZE 1600 |
kaizen | 0:d0e3f515f99d | 235 | // |
kaizen | 0:d0e3f515f99d | 236 | ////Debug is disabled by default |
kaizen | 0:d0e3f515f99d | 237 | //#if 1 |
kaizen | 0:d0e3f515f99d | 238 | //#define WIZ_DBG(x, ...) std::printf("[WizFi310: DBG]" x "\r\n", ##__VA_ARGS__); |
kaizen | 0:d0e3f515f99d | 239 | //#define WIZ_WARN(x, ...) std::printf("[WizFi310: WARN]" x "\r\n", ##__VA_ARGS__); |
kaizen | 0:d0e3f515f99d | 240 | //#define WIZ_ERR(x, ...) std::printf("[WizFi310: ERR]" x "\r\n", ##__VA_ARGS__); |
kaizen | 0:d0e3f515f99d | 241 | //#define WIZ_INFO(x, ...) std::printf("[WizFi310: INFO]" x "\r\n", ##__VA_ARGS__); |
kaizen | 0:d0e3f515f99d | 242 | //#else |
kaizen | 0:d0e3f515f99d | 243 | //#define WIZ_DBG(x, ...) |
kaizen | 0:d0e3f515f99d | 244 | //#define WIZ_WARN(x, ...) |
kaizen | 0:d0e3f515f99d | 245 | //#define WIZ_ERR(x, ...) |
kaizen | 0:d0e3f515f99d | 246 | //#define WIZ_INFO(x, ...) |
kaizen | 0:d0e3f515f99d | 247 | //#endif |
kaizen | 0:d0e3f515f99d | 248 | // |
kaizen | 0:d0e3f515f99d | 249 | // |
kaizen | 0:d0e3f515f99d | 250 | //class WizFi310 |
kaizen | 0:d0e3f515f99d | 251 | //{ |
kaizen | 0:d0e3f515f99d | 252 | //public: |
kaizen | 0:d0e3f515f99d | 253 | // |
kaizen | 0:d0e3f515f99d | 254 | // enum AntennaMode{ |
kaizen | 0:d0e3f515f99d | 255 | // PCB = 0, |
kaizen | 0:d0e3f515f99d | 256 | // UFL = 1, |
kaizen | 0:d0e3f515f99d | 257 | // AUTO = 3, |
kaizen | 0:d0e3f515f99d | 258 | // }; |
kaizen | 0:d0e3f515f99d | 259 | // |
kaizen | 0:d0e3f515f99d | 260 | // enum WiFiMode { |
kaizen | 0:d0e3f515f99d | 261 | // WM_STATION = 0, |
kaizen | 0:d0e3f515f99d | 262 | // WM_AP = 1, |
kaizen | 0:d0e3f515f99d | 263 | // }; |
kaizen | 0:d0e3f515f99d | 264 | // |
kaizen | 0:d0e3f515f99d | 265 | // /** Wi-Fi security |
kaizen | 0:d0e3f515f99d | 266 | // */ |
kaizen | 0:d0e3f515f99d | 267 | // enum Security { |
kaizen | 0:d0e3f515f99d | 268 | // // kaizen need to change |
kaizen | 0:d0e3f515f99d | 269 | // SEC_AUTO = 0, |
kaizen | 0:d0e3f515f99d | 270 | // SEC_OPEN = 1, |
kaizen | 0:d0e3f515f99d | 271 | // SEC_WEP = 2, |
kaizen | 0:d0e3f515f99d | 272 | // SEC_WPA_TKIP = 3, |
kaizen | 0:d0e3f515f99d | 273 | // SEC_WPA_AES = 4, |
kaizen | 0:d0e3f515f99d | 274 | // SEC_WPA2_AES = 5, |
kaizen | 0:d0e3f515f99d | 275 | // SEC_WPA2_TKIP = 6, |
kaizen | 0:d0e3f515f99d | 276 | // SEC_WPA2_MIXED = 7, |
kaizen | 0:d0e3f515f99d | 277 | // }; |
kaizen | 0:d0e3f515f99d | 278 | // |
kaizen | 0:d0e3f515f99d | 279 | // /** TCP/IP protocol |
kaizen | 0:d0e3f515f99d | 280 | // */ |
kaizen | 0:d0e3f515f99d | 281 | // enum Protocol { |
kaizen | 0:d0e3f515f99d | 282 | // PROTO_UDP = 0, |
kaizen | 0:d0e3f515f99d | 283 | // PROTO_TCP = 1, |
kaizen | 0:d0e3f515f99d | 284 | // }; |
kaizen | 0:d0e3f515f99d | 285 | // |
kaizen | 0:d0e3f515f99d | 286 | // /** Client/Server |
kaizen | 0:d0e3f515f99d | 287 | // */ |
kaizen | 0:d0e3f515f99d | 288 | // enum Type { |
kaizen | 0:d0e3f515f99d | 289 | // TYPE_CLIENT = 0, |
kaizen | 0:d0e3f515f99d | 290 | // TYPE_SERVER = 1, |
kaizen | 0:d0e3f515f99d | 291 | // }; |
kaizen | 0:d0e3f515f99d | 292 | // |
kaizen | 0:d0e3f515f99d | 293 | // enum Response { |
kaizen | 0:d0e3f515f99d | 294 | // RES_NULL, |
kaizen | 0:d0e3f515f99d | 295 | // RES_MACADDRESS, |
kaizen | 0:d0e3f515f99d | 296 | // RES_WJOIN, |
kaizen | 0:d0e3f515f99d | 297 | // RES_CONNECT, |
kaizen | 0:d0e3f515f99d | 298 | // RES_SSEND, |
kaizen | 0:d0e3f515f99d | 299 | // RES_FDNS, |
kaizen | 0:d0e3f515f99d | 300 | // RES_SMGMT, |
kaizen | 0:d0e3f515f99d | 301 | // RES_WSTATUS, |
kaizen | 0:d0e3f515f99d | 302 | // |
kaizen | 0:d0e3f515f99d | 303 | // }; |
kaizen | 0:d0e3f515f99d | 304 | // |
kaizen | 0:d0e3f515f99d | 305 | // enum Mode { |
kaizen | 0:d0e3f515f99d | 306 | // MODE_COMMAND, |
kaizen | 0:d0e3f515f99d | 307 | // MODE_CMDRESP, |
kaizen | 0:d0e3f515f99d | 308 | // MODE_DATA_RX, |
kaizen | 0:d0e3f515f99d | 309 | // MODE_DATA_RXUDP, |
kaizen | 0:d0e3f515f99d | 310 | // MODE_DATA_RXUDP_BULK, |
kaizen | 0:d0e3f515f99d | 311 | // }; |
kaizen | 0:d0e3f515f99d | 312 | // |
kaizen | 0:d0e3f515f99d | 313 | // enum Status { |
kaizen | 0:d0e3f515f99d | 314 | // STAT_NONE, |
kaizen | 0:d0e3f515f99d | 315 | // STAT_READY, |
kaizen | 0:d0e3f515f99d | 316 | // STAT_STANDBY, |
kaizen | 0:d0e3f515f99d | 317 | // STAT_WAKEUP, |
kaizen | 0:d0e3f515f99d | 318 | // STAT_DEEPSLEEP, |
kaizen | 0:d0e3f515f99d | 319 | // }; |
kaizen | 0:d0e3f515f99d | 320 | // |
kaizen | 0:d0e3f515f99d | 321 | // |
kaizen | 0:d0e3f515f99d | 322 | // WizFi310 (PinName tx, PinName rx, PinName cts, PinName rts, PinName reset, PinName alarm = NC, int baud = 115200); |
kaizen | 0:d0e3f515f99d | 323 | // |
kaizen | 0:d0e3f515f99d | 324 | // // --------- WizFi250_at.cpp --------- |
kaizen | 0:d0e3f515f99d | 325 | // void clearFlags (); |
kaizen | 0:d0e3f515f99d | 326 | // int sendCommand (const char * cmd, Response res = RES_NULL, int timeout = DEFAULT_WAIT_RESP_TIMEOUT, int opt = 2); |
kaizen | 0:d0e3f515f99d | 327 | // |
kaizen | 0:d0e3f515f99d | 328 | // int cmdAT (); |
kaizen | 0:d0e3f515f99d | 329 | // int cmdMECHO (bool flg); |
kaizen | 0:d0e3f515f99d | 330 | // int cmdUSET (int baud, char *flow); |
kaizen | 0:d0e3f515f99d | 331 | // int cmdMMAC (const char *mac = NULL); |
kaizen | 0:d0e3f515f99d | 332 | // int cmdWSET (WiFiMode mode, const char *ssid, const char *bssid = NULL, int channel = 1); |
kaizen | 0:d0e3f515f99d | 333 | // int cmdWANT (AntennaMode mode); |
kaizen | 0:d0e3f515f99d | 334 | // int cmdWNET (bool is_dhcp); |
kaizen | 0:d0e3f515f99d | 335 | // int cmdWSEC (WiFiMode mode, const char *key, const char *sec = NULL); |
kaizen | 0:d0e3f515f99d | 336 | // int cmdWJOIN (); |
kaizen | 0:d0e3f515f99d | 337 | // int cmdWLEAVE (); |
kaizen | 0:d0e3f515f99d | 338 | // int cmdWSTATUS (); |
kaizen | 0:d0e3f515f99d | 339 | // int cmdSCON ( const char *openType, const char *socketType, int localPort, const char *dataMode = "0"); |
kaizen | 0:d0e3f515f99d | 340 | // int cmdSCON ( const char *openType, const char *socketType, const char *remoteIp, int remotePort, int localPort = 0, const char *dataMode = "0"); |
kaizen | 0:d0e3f515f99d | 341 | // int cmdSSEND ( const char *data, int cid, int sendSize, const char *remoteIp = NULL, int remotePort = 0, int Timeout = 2000 ); |
kaizen | 0:d0e3f515f99d | 342 | // int cmdCLOSE ( int cid ); |
kaizen | 0:d0e3f515f99d | 343 | // int cmdFDNS (const char *host); |
kaizen | 0:d0e3f515f99d | 344 | // int cmdSMGMT ( int cid ); |
kaizen | 0:d0e3f515f99d | 345 | // |
kaizen | 0:d0e3f515f99d | 346 | // |
kaizen | 0:d0e3f515f99d | 347 | // static WizFi310 * getInstance() { |
kaizen | 0:d0e3f515f99d | 348 | // return _inst; |
kaizen | 0:d0e3f515f99d | 349 | // }; |
kaizen | 0:d0e3f515f99d | 350 | // |
kaizen | 0:d0e3f515f99d | 351 | // |
kaizen | 0:d0e3f515f99d | 352 | // // --------- WizFi2550_sock.cpp --------- |
kaizen | 0:d0e3f515f99d | 353 | // int getHostByName (const char * host, char *ip); |
kaizen | 0:d0e3f515f99d | 354 | // int open (Protocol proto, const char *ip, int remotePort, int localPort = 0, void(*func)(int) = NULL); |
kaizen | 0:d0e3f515f99d | 355 | // int listen (Protocol proto, int port, void(*func)(int)=NULL); |
kaizen | 0:d0e3f515f99d | 356 | // int close (int cid); |
kaizen | 0:d0e3f515f99d | 357 | // void initCon (int cid, bool connected); |
kaizen | 0:d0e3f515f99d | 358 | // int send (int cid, const char *buf, int len); |
kaizen | 0:d0e3f515f99d | 359 | // int sendto (int cid, const char *buf, int len, const char *ip, int port); |
kaizen | 0:d0e3f515f99d | 360 | // int recv (int cid, char *buf, int len); |
kaizen | 0:d0e3f515f99d | 361 | // int recvfrom (int cid, char *buf, int len, char *ip, int *port); |
kaizen | 0:d0e3f515f99d | 362 | // int readable (int cid); |
kaizen | 0:d0e3f515f99d | 363 | // bool isConnected (int cid); |
kaizen | 0:d0e3f515f99d | 364 | // int accept (int cid); |
kaizen | 0:d0e3f515f99d | 365 | // int getRemote (int cid, char **ip, int *port); |
kaizen | 0:d0e3f515f99d | 366 | // |
kaizen | 0:d0e3f515f99d | 367 | // |
kaizen | 0:d0e3f515f99d | 368 | //protected: |
kaizen | 0:d0e3f515f99d | 369 | // static WizFi310 * _inst; |
kaizen | 0:d0e3f515f99d | 370 | // |
kaizen | 0:d0e3f515f99d | 371 | // // Serial _wizfi |
kaizen | 0:d0e3f515f99d | 372 | // RawSerial _wizfi; |
kaizen | 0:d0e3f515f99d | 373 | // |
kaizen | 0:d0e3f515f99d | 374 | // int _baud; |
kaizen | 0:d0e3f515f99d | 375 | // DigitalIn *_cts; |
kaizen | 0:d0e3f515f99d | 376 | // DigitalOut *_rts; |
kaizen | 0:d0e3f515f99d | 377 | // int _flow; |
kaizen | 0:d0e3f515f99d | 378 | // |
kaizen | 0:d0e3f515f99d | 379 | // DigitalInOut _reset; |
kaizen | 0:d0e3f515f99d | 380 | // |
kaizen | 0:d0e3f515f99d | 381 | // struct STATE { |
kaizen | 0:d0e3f515f99d | 382 | // WiFiMode wm; |
kaizen | 0:d0e3f515f99d | 383 | // |
kaizen | 0:d0e3f515f99d | 384 | // //daniel |
kaizen | 0:d0e3f515f99d | 385 | // //Security sec; |
kaizen | 0:d0e3f515f99d | 386 | // nsapi_security_t sec; |
kaizen | 0:d0e3f515f99d | 387 | // char ssid[35]; |
kaizen | 0:d0e3f515f99d | 388 | // char pass[66]; |
kaizen | 0:d0e3f515f99d | 389 | // char ip[16]; |
kaizen | 0:d0e3f515f99d | 390 | // char netmask[16]; |
kaizen | 0:d0e3f515f99d | 391 | // char gateway[16]; |
kaizen | 0:d0e3f515f99d | 392 | // char nameserver[16]; |
kaizen | 0:d0e3f515f99d | 393 | // char mac[18]; |
kaizen | 0:d0e3f515f99d | 394 | // char resolv[16]; |
kaizen | 0:d0e3f515f99d | 395 | // char name[32]; |
kaizen | 0:d0e3f515f99d | 396 | // int rssi; |
kaizen | 0:d0e3f515f99d | 397 | // bool dhcp; |
kaizen | 0:d0e3f515f99d | 398 | // time_t time; |
kaizen | 0:d0e3f515f99d | 399 | // |
kaizen | 0:d0e3f515f99d | 400 | // bool initialized; |
kaizen | 0:d0e3f515f99d | 401 | // bool associated; |
kaizen | 0:d0e3f515f99d | 402 | // volatile Mode mode; |
kaizen | 0:d0e3f515f99d | 403 | // volatile Status status; |
kaizen | 0:d0e3f515f99d | 404 | // bool escape; |
kaizen | 0:d0e3f515f99d | 405 | // volatile bool ok, failure; |
kaizen | 0:d0e3f515f99d | 406 | // volatile Response res; |
kaizen | 0:d0e3f515f99d | 407 | // int cid; |
kaizen | 0:d0e3f515f99d | 408 | // int n; |
kaizen | 0:d0e3f515f99d | 409 | // CircBuffer<char> *buf; |
kaizen | 0:d0e3f515f99d | 410 | // } _state; |
kaizen | 0:d0e3f515f99d | 411 | // |
kaizen | 0:d0e3f515f99d | 412 | // |
kaizen | 0:d0e3f515f99d | 413 | //public: |
kaizen | 0:d0e3f515f99d | 414 | // struct CONNECTION { |
kaizen | 0:d0e3f515f99d | 415 | // Protocol protocol; |
kaizen | 0:d0e3f515f99d | 416 | // Type type; |
kaizen | 0:d0e3f515f99d | 417 | // bool connected; |
kaizen | 0:d0e3f515f99d | 418 | // char ip[16]; |
kaizen | 0:d0e3f515f99d | 419 | // int port; |
kaizen | 0:d0e3f515f99d | 420 | // int send_length; |
kaizen | 0:d0e3f515f99d | 421 | // int recv_length; |
kaizen | 0:d0e3f515f99d | 422 | // CircBuffer<char> *buf; |
kaizen | 0:d0e3f515f99d | 423 | // volatile bool received; |
kaizen | 0:d0e3f515f99d | 424 | // volatile int parent; |
kaizen | 0:d0e3f515f99d | 425 | // volatile bool accept; |
kaizen | 0:d0e3f515f99d | 426 | // void(*func)(int); |
kaizen | 0:d0e3f515f99d | 427 | // } _con[8]; |
kaizen | 0:d0e3f515f99d | 428 | // |
kaizen | 0:d0e3f515f99d | 429 | // // --------- WizFi310.cpp --------- |
kaizen | 0:d0e3f515f99d | 430 | // |
kaizen | 0:d0e3f515f99d | 431 | // int join(WiFiMode mode); |
kaizen | 0:d0e3f515f99d | 432 | // bool isAssociated(); |
kaizen | 0:d0e3f515f99d | 433 | // |
kaizen | 0:d0e3f515f99d | 434 | // //int limitedap (); |
kaizen | 0:d0e3f515f99d | 435 | // //int dissociate (); |
kaizen | 0:d0e3f515f99d | 436 | // /* |
kaizen | 0:d0e3f515f99d | 437 | // int disconnect () { |
kaizen | 0:d0e3f515f99d | 438 | // return dissociate(); |
kaizen | 0:d0e3f515f99d | 439 | // } |
kaizen | 0:d0e3f515f99d | 440 | // */ |
kaizen | 0:d0e3f515f99d | 441 | // |
kaizen | 0:d0e3f515f99d | 442 | // Status getStatus (); |
kaizen | 0:d0e3f515f99d | 443 | // |
kaizen | 0:d0e3f515f99d | 444 | // int setMacAddress (const char *mac); |
kaizen | 0:d0e3f515f99d | 445 | // int getMacAddress (char *mac); |
kaizen | 0:d0e3f515f99d | 446 | // int setAddress (const char *name = NULL); |
kaizen | 0:d0e3f515f99d | 447 | // int setAddress (const char *ip, const char *netmask, const char *gateway, const char *dns = NULL, const char *name = NULL); |
kaizen | 0:d0e3f515f99d | 448 | // int getAddress (char *ip, char *netmask, char *gateway); |
kaizen | 0:d0e3f515f99d | 449 | // int setSsid (const char *ssid); |
kaizen | 0:d0e3f515f99d | 450 | // //daniel |
kaizen | 0:d0e3f515f99d | 451 | //// int setSec (Security sec, const char *phrase); |
kaizen | 0:d0e3f515f99d | 452 | // int setSec (nsapi_security_t sec, const char *phrase); |
kaizen | 0:d0e3f515f99d | 453 | // |
kaizen | 0:d0e3f515f99d | 454 | // const char* getIPAddress (void); |
kaizen | 0:d0e3f515f99d | 455 | // const char* getMACAddress (void); |
kaizen | 0:d0e3f515f99d | 456 | // |
kaizen | 0:d0e3f515f99d | 457 | // // --------- WizFi250_msg.cpp --------- |
kaizen | 0:d0e3f515f99d | 458 | // void recvData ( char c ); |
kaizen | 0:d0e3f515f99d | 459 | // int parseMessage (); |
kaizen | 0:d0e3f515f99d | 460 | // void msgOk (const char *buf); |
kaizen | 0:d0e3f515f99d | 461 | // void msgError (const char *buf); |
kaizen | 0:d0e3f515f99d | 462 | // void msgConnect (const char *buf); |
kaizen | 0:d0e3f515f99d | 463 | // void msgDisconnect (const char *buf); |
kaizen | 0:d0e3f515f99d | 464 | // void msgListen (const char *buf); |
kaizen | 0:d0e3f515f99d | 465 | // //daniel |
kaizen | 0:d0e3f515f99d | 466 | // void msgMQTTConnect (const char *buf); |
kaizen | 0:d0e3f515f99d | 467 | // void msgMQTTDisconnect (const char *buf); |
kaizen | 0:d0e3f515f99d | 468 | // |
kaizen | 0:d0e3f515f99d | 469 | // void resMacAddress (const char *buf); |
kaizen | 0:d0e3f515f99d | 470 | // void resWJOIN (const char *buf); |
kaizen | 0:d0e3f515f99d | 471 | // void resConnect (const char *buf); |
kaizen | 0:d0e3f515f99d | 472 | // void resSSEND (const char *buf); |
kaizen | 0:d0e3f515f99d | 473 | // void resFDNS (const char *buf); |
kaizen | 0:d0e3f515f99d | 474 | // void resSMGMT (const char *buf); |
kaizen | 0:d0e3f515f99d | 475 | // void resWSTATUS (const char *buf); |
kaizen | 0:d0e3f515f99d | 476 | // |
kaizen | 0:d0e3f515f99d | 477 | // |
kaizen | 0:d0e3f515f99d | 478 | // // --------- WizFi250_hal.cpp --------- |
kaizen | 0:d0e3f515f99d | 479 | // void setReset (bool flg); |
kaizen | 0:d0e3f515f99d | 480 | // void isrUart (); |
kaizen | 0:d0e3f515f99d | 481 | // int getUart (); |
kaizen | 0:d0e3f515f99d | 482 | // void putUart (char c); |
kaizen | 0:d0e3f515f99d | 483 | // void setRts (bool flg); |
kaizen | 0:d0e3f515f99d | 484 | // int lockUart (int ms); |
kaizen | 0:d0e3f515f99d | 485 | // void unlockUart (); |
kaizen | 0:d0e3f515f99d | 486 | // void initUart (PinName cts, PinName rts, PinName alarm, int baud); |
kaizen | 0:d0e3f515f99d | 487 | // |
kaizen | 0:d0e3f515f99d | 488 | // |
kaizen | 0:d0e3f515f99d | 489 | // // --------- WizFi2550_util.cpp --------- |
kaizen | 0:d0e3f515f99d | 490 | // int x2i (char c); |
kaizen | 0:d0e3f515f99d | 491 | // int i2x (int i); |
kaizen | 0:d0e3f515f99d | 492 | // |
kaizen | 0:d0e3f515f99d | 493 | // // --------- WizFi250_ifc.cpp (For NetworkSocketAPI) --------- |
kaizen | 0:d0e3f515f99d | 494 | // /** |
kaizen | 0:d0e3f515f99d | 495 | // * Startup the WizFi310 |
kaizen | 0:d0e3f515f99d | 496 | // * |
kaizen | 0:d0e3f515f99d | 497 | // * @return true only if WizFi310 was setup correctly |
kaizen | 0:d0e3f515f99d | 498 | // */ |
kaizen | 0:d0e3f515f99d | 499 | // bool startup(void); |
kaizen | 0:d0e3f515f99d | 500 | // |
kaizen | 0:d0e3f515f99d | 501 | // /** |
kaizen | 0:d0e3f515f99d | 502 | // * Reset WizFi310 |
kaizen | 0:d0e3f515f99d | 503 | // * |
kaizen | 0:d0e3f515f99d | 504 | // * @return true only if WizFi310 resets successfully |
kaizen | 0:d0e3f515f99d | 505 | // */ |
kaizen | 0:d0e3f515f99d | 506 | // bool reset(void); |
kaizen | 0:d0e3f515f99d | 507 | // |
kaizen | 0:d0e3f515f99d | 508 | // /** |
kaizen | 0:d0e3f515f99d | 509 | // * Disconnect WizFi310 from AP |
kaizen | 0:d0e3f515f99d | 510 | // * |
kaizen | 0:d0e3f515f99d | 511 | // * @return true only if WizFi310 is disconnected successfully |
kaizen | 0:d0e3f515f99d | 512 | // */ |
kaizen | 0:d0e3f515f99d | 513 | // bool disconnect(void); |
kaizen | 0:d0e3f515f99d | 514 | // |
kaizen | 0:d0e3f515f99d | 515 | // /** |
kaizen | 0:d0e3f515f99d | 516 | // * Check if WizFi310 is conenected |
kaizen | 0:d0e3f515f99d | 517 | // * |
kaizen | 0:d0e3f515f99d | 518 | // * @return true only if the chip has an IP address |
kaizen | 0:d0e3f515f99d | 519 | // */ |
kaizen | 0:d0e3f515f99d | 520 | // bool isConnected(void); |
kaizen | 0:d0e3f515f99d | 521 | // |
kaizen | 0:d0e3f515f99d | 522 | // |
kaizen | 0:d0e3f515f99d | 523 | // //daniel for mqtt |
kaizen | 0:d0e3f515f99d | 524 | // char rcvd_mqtt_topic[128]; |
kaizen | 0:d0e3f515f99d | 525 | // |
kaizen | 0:d0e3f515f99d | 526 | //}; |
kaizen | 0:d0e3f515f99d | 527 | |
kaizen | 0:d0e3f515f99d | 528 | #endif /* WIZFI250_H_ */ |