Host library for controlling a WiConnect enabled Wi-Fi module.
Dependents: wiconnect-ota_example wiconnect-web_setup_example wiconnect-test-console wiconnect-tcp_server_example ... more
NetworkInterface.h@11:ea484e1b7fc4, 2014-08-12 (annotated)
- Committer:
- dan_ackme
- Date:
- Tue Aug 12 02:34:46 2014 -0700
- Revision:
- 11:ea484e1b7fc4
- Parent:
- 1:6ec9998427ad
- Child:
- 13:2b51f5267c92
updated documnetation
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dan_ackme | 0:ea85c4bb5e1f | 1 | /* |
dan_ackme | 0:ea85c4bb5e1f | 2 | * Copyright 2014, ACKme Networks |
dan_ackme | 0:ea85c4bb5e1f | 3 | * All Rights Reserved. |
dan_ackme | 0:ea85c4bb5e1f | 4 | * |
dan_ackme | 0:ea85c4bb5e1f | 5 | * This is UNPUBLISHED PROPRIETARY SOURCE CODE of ACKme Networks; |
dan_ackme | 0:ea85c4bb5e1f | 6 | * the contents of this file may not be disclosed to third parties, copied |
dan_ackme | 0:ea85c4bb5e1f | 7 | * or duplicated in any form, in whole or in part, without the prior |
dan_ackme | 0:ea85c4bb5e1f | 8 | * written permission of ACKme Networks. |
dan_ackme | 0:ea85c4bb5e1f | 9 | */ |
dan_ackme | 0:ea85c4bb5e1f | 10 | |
dan_ackme | 0:ea85c4bb5e1f | 11 | #pragma once |
dan_ackme | 0:ea85c4bb5e1f | 12 | |
dan_ackme | 0:ea85c4bb5e1f | 13 | |
dan_ackme | 0:ea85c4bb5e1f | 14 | #include "WiconnectTypes.h" |
dan_ackme | 0:ea85c4bb5e1f | 15 | #include "types/ScanResultList.h" |
dan_ackme | 0:ea85c4bb5e1f | 16 | |
dan_ackme | 0:ea85c4bb5e1f | 17 | |
dan_ackme | 11:ea484e1b7fc4 | 18 | /** |
dan_ackme | 11:ea484e1b7fc4 | 19 | * @namespace wiconnect |
dan_ackme | 11:ea484e1b7fc4 | 20 | */ |
dan_ackme | 0:ea85c4bb5e1f | 21 | namespace wiconnect { |
dan_ackme | 0:ea85c4bb5e1f | 22 | |
dan_ackme | 0:ea85c4bb5e1f | 23 | |
dan_ackme | 11:ea484e1b7fc4 | 24 | /** |
dan_ackme | 11:ea484e1b7fc4 | 25 | * @ingroup types_network |
dan_ackme | 11:ea484e1b7fc4 | 26 | * |
dan_ackme | 11:ea484e1b7fc4 | 27 | * @brief The provides an interface for joining and/or creating a network. |
dan_ackme | 11:ea484e1b7fc4 | 28 | * It provides other utilities such as scanning for networks, pinging a network, |
dan_ackme | 11:ea484e1b7fc4 | 29 | * resolving a domain name to IP address. |
dan_ackme | 11:ea484e1b7fc4 | 30 | * |
dan_ackme | 11:ea484e1b7fc4 | 31 | */ |
dan_ackme | 0:ea85c4bb5e1f | 32 | class NetworkInterface |
dan_ackme | 0:ea85c4bb5e1f | 33 | { |
dan_ackme | 0:ea85c4bb5e1f | 34 | public: |
dan_ackme | 11:ea484e1b7fc4 | 35 | /** |
dan_ackme | 11:ea484e1b7fc4 | 36 | * @ingroup api_network_setup |
dan_ackme | 11:ea484e1b7fc4 | 37 | * |
dan_ackme | 11:ea484e1b7fc4 | 38 | * @brief Start the WiConnect WiFi module 'web setup' feature. |
dan_ackme | 11:ea484e1b7fc4 | 39 | */ |
dan_ackme | 0:ea85c4bb5e1f | 40 | WiconnectResult startWebSetup(const char *ssid = NULL, const char *password = NULL, const Callback &completeHandler = Callback()); |
dan_ackme | 11:ea484e1b7fc4 | 41 | |
dan_ackme | 11:ea484e1b7fc4 | 42 | /** |
dan_ackme | 11:ea484e1b7fc4 | 43 | * @ingroup api_network_setup |
dan_ackme | 11:ea484e1b7fc4 | 44 | * |
dan_ackme | 11:ea484e1b7fc4 | 45 | * @brief Stop the WiConnect WiFi module 'web setup' feature. |
dan_ackme | 11:ea484e1b7fc4 | 46 | */ |
dan_ackme | 0:ea85c4bb5e1f | 47 | WiconnectResult stopWebSetup(); |
dan_ackme | 11:ea484e1b7fc4 | 48 | |
dan_ackme | 11:ea484e1b7fc4 | 49 | /** |
dan_ackme | 11:ea484e1b7fc4 | 50 | * @ingroup api_network_setup |
dan_ackme | 11:ea484e1b7fc4 | 51 | * |
dan_ackme | 11:ea484e1b7fc4 | 52 | * @brief Return status of WiConnect WiFi module 'web setup' feature. |
dan_ackme | 11:ea484e1b7fc4 | 53 | */ |
dan_ackme | 0:ea85c4bb5e1f | 54 | WiconnectResult isWebSetupRunning(bool *isRunningPtr); |
dan_ackme | 0:ea85c4bb5e1f | 55 | |
dan_ackme | 11:ea484e1b7fc4 | 56 | |
dan_ackme | 11:ea484e1b7fc4 | 57 | // ------------------------------------------------------------------------ |
dan_ackme | 11:ea484e1b7fc4 | 58 | |
dan_ackme | 11:ea484e1b7fc4 | 59 | |
dan_ackme | 11:ea484e1b7fc4 | 60 | /** |
dan_ackme | 11:ea484e1b7fc4 | 61 | * @ingroup api_network_wlan |
dan_ackme | 11:ea484e1b7fc4 | 62 | * |
dan_ackme | 11:ea484e1b7fc4 | 63 | * @brief Join a WiFi network. |
dan_ackme | 11:ea484e1b7fc4 | 64 | */ |
dan_ackme | 0:ea85c4bb5e1f | 65 | WiconnectResult join(const char* ssid = NULL, const char *password = NULL, const Callback &completeHandler = Callback()); |
dan_ackme | 11:ea484e1b7fc4 | 66 | |
dan_ackme | 11:ea484e1b7fc4 | 67 | /** |
dan_ackme | 11:ea484e1b7fc4 | 68 | * @ingroup api_network_wlan |
dan_ackme | 11:ea484e1b7fc4 | 69 | * |
dan_ackme | 11:ea484e1b7fc4 | 70 | * @brief Leave a WiFi network. |
dan_ackme | 11:ea484e1b7fc4 | 71 | */ |
dan_ackme | 0:ea85c4bb5e1f | 72 | WiconnectResult leave(); |
dan_ackme | 11:ea484e1b7fc4 | 73 | |
dan_ackme | 11:ea484e1b7fc4 | 74 | /** |
dan_ackme | 11:ea484e1b7fc4 | 75 | * @ingroup api_network_wlan |
dan_ackme | 11:ea484e1b7fc4 | 76 | * |
dan_ackme | 11:ea484e1b7fc4 | 77 | * @brief Get connection status to WiFi network. |
dan_ackme | 11:ea484e1b7fc4 | 78 | */ |
dan_ackme | 0:ea85c4bb5e1f | 79 | WiconnectResult getNetworkStatus(NetworkStatus *statusPtr); |
dan_ackme | 0:ea85c4bb5e1f | 80 | |
dan_ackme | 11:ea484e1b7fc4 | 81 | // ------------------------------------------------------------------------ |
dan_ackme | 11:ea484e1b7fc4 | 82 | |
dan_ackme | 11:ea484e1b7fc4 | 83 | |
dan_ackme | 0:ea85c4bb5e1f | 84 | // WiconnectResult startSoftAp(const char* ssid = NULL, const char *password = NULL, const Callback &clientConnectedCallback = Callback()); |
dan_ackme | 0:ea85c4bb5e1f | 85 | // WiconnectResult stopSoftAp(); |
dan_ackme | 0:ea85c4bb5e1f | 86 | // WiconnectResult getSoftApClientList(); |
dan_ackme | 0:ea85c4bb5e1f | 87 | |
dan_ackme | 11:ea484e1b7fc4 | 88 | |
dan_ackme | 11:ea484e1b7fc4 | 89 | // ------------------------------------------------------------------------ |
dan_ackme | 11:ea484e1b7fc4 | 90 | |
dan_ackme | 11:ea484e1b7fc4 | 91 | |
dan_ackme | 11:ea484e1b7fc4 | 92 | /** |
dan_ackme | 11:ea484e1b7fc4 | 93 | * @ingroup api_network_util |
dan_ackme | 11:ea484e1b7fc4 | 94 | * |
dan_ackme | 11:ea484e1b7fc4 | 95 | * @brief Scan for available WiFi networks. |
dan_ackme | 11:ea484e1b7fc4 | 96 | */ |
dan_ackme | 0:ea85c4bb5e1f | 97 | WiconnectResult scan(ScanResultList &resultList, const uint8_t *channelList = NULL, const char* ssid = NULL); |
dan_ackme | 11:ea484e1b7fc4 | 98 | |
dan_ackme | 11:ea484e1b7fc4 | 99 | /** |
dan_ackme | 11:ea484e1b7fc4 | 100 | * @ingroup api_network_util |
dan_ackme | 11:ea484e1b7fc4 | 101 | * |
dan_ackme | 11:ea484e1b7fc4 | 102 | * @brief Ping a WiFi network. |
dan_ackme | 11:ea484e1b7fc4 | 103 | */ |
dan_ackme | 0:ea85c4bb5e1f | 104 | WiconnectResult ping(const char *domain = NULL, uint32_t *timeMsPtr = NULL); |
dan_ackme | 11:ea484e1b7fc4 | 105 | |
dan_ackme | 11:ea484e1b7fc4 | 106 | /** |
dan_ackme | 11:ea484e1b7fc4 | 107 | * @ingroup api_network_util |
dan_ackme | 11:ea484e1b7fc4 | 108 | * |
dan_ackme | 11:ea484e1b7fc4 | 109 | * @brief Resolve domain name into IP address. |
dan_ackme | 11:ea484e1b7fc4 | 110 | */ |
dan_ackme | 0:ea85c4bb5e1f | 111 | WiconnectResult lookup(const char *domain, uint32_t *ipAddressPtr); |
dan_ackme | 0:ea85c4bb5e1f | 112 | |
dan_ackme | 11:ea484e1b7fc4 | 113 | |
dan_ackme | 11:ea484e1b7fc4 | 114 | // ------------------------------------------------------------------------ |
dan_ackme | 11:ea484e1b7fc4 | 115 | |
dan_ackme | 11:ea484e1b7fc4 | 116 | |
dan_ackme | 11:ea484e1b7fc4 | 117 | /** |
dan_ackme | 11:ea484e1b7fc4 | 118 | * @ingroup api_network_settings |
dan_ackme | 11:ea484e1b7fc4 | 119 | * |
dan_ackme | 11:ea484e1b7fc4 | 120 | * @brief Set DHCP enabled. |
dan_ackme | 11:ea484e1b7fc4 | 121 | */ |
dan_ackme | 0:ea85c4bb5e1f | 122 | WiconnectResult setDhcpEnabled(bool enabled); |
dan_ackme | 11:ea484e1b7fc4 | 123 | |
dan_ackme | 11:ea484e1b7fc4 | 124 | /** |
dan_ackme | 11:ea484e1b7fc4 | 125 | * @ingroup api_network_settings |
dan_ackme | 11:ea484e1b7fc4 | 126 | * |
dan_ackme | 11:ea484e1b7fc4 | 127 | * @brief Get if DHCP enabled. |
dan_ackme | 11:ea484e1b7fc4 | 128 | */ |
dan_ackme | 0:ea85c4bb5e1f | 129 | WiconnectResult getDhcpEnabled(bool *enabledPtr); |
dan_ackme | 11:ea484e1b7fc4 | 130 | |
dan_ackme | 11:ea484e1b7fc4 | 131 | /** |
dan_ackme | 11:ea484e1b7fc4 | 132 | * @ingroup api_network_settings |
dan_ackme | 11:ea484e1b7fc4 | 133 | * |
dan_ackme | 11:ea484e1b7fc4 | 134 | * @brief Set static IP settings |
dan_ackme | 11:ea484e1b7fc4 | 135 | */ |
dan_ackme | 0:ea85c4bb5e1f | 136 | WiconnectResult setIpSettings(uint32_t ip, uint32_t netmask, uint32_t gateway); |
dan_ackme | 11:ea484e1b7fc4 | 137 | |
dan_ackme | 11:ea484e1b7fc4 | 138 | /** |
dan_ackme | 11:ea484e1b7fc4 | 139 | * @ingroup api_network_settings |
dan_ackme | 11:ea484e1b7fc4 | 140 | * |
dan_ackme | 11:ea484e1b7fc4 | 141 | * @brief Set static IP settings (with string parameters) |
dan_ackme | 11:ea484e1b7fc4 | 142 | */ |
dan_ackme | 0:ea85c4bb5e1f | 143 | WiconnectResult setIpSettings(const char* ip, const char* netmask, const char* gateway); |
dan_ackme | 11:ea484e1b7fc4 | 144 | |
dan_ackme | 11:ea484e1b7fc4 | 145 | /** |
dan_ackme | 11:ea484e1b7fc4 | 146 | * @ingroup api_network_settings |
dan_ackme | 11:ea484e1b7fc4 | 147 | * |
dan_ackme | 11:ea484e1b7fc4 | 148 | * @brief Get network IP settings |
dan_ackme | 11:ea484e1b7fc4 | 149 | */ |
dan_ackme | 0:ea85c4bb5e1f | 150 | WiconnectResult getIpSettings(uint32_t *ip, uint32_t *netmask, uint32_t *gateway); |
dan_ackme | 11:ea484e1b7fc4 | 151 | |
dan_ackme | 11:ea484e1b7fc4 | 152 | /** |
dan_ackme | 11:ea484e1b7fc4 | 153 | * @ingroup api_network_settings |
dan_ackme | 11:ea484e1b7fc4 | 154 | * |
dan_ackme | 11:ea484e1b7fc4 | 155 | * @brief Get signal strength to WiFi network |
dan_ackme | 11:ea484e1b7fc4 | 156 | */ |
dan_ackme | 0:ea85c4bb5e1f | 157 | WiconnectResult getSignalStrength(NetworkSignalStrength *signalStrengthPtr); |
dan_ackme | 0:ea85c4bb5e1f | 158 | |
dan_ackme | 11:ea484e1b7fc4 | 159 | |
dan_ackme | 11:ea484e1b7fc4 | 160 | // ------------------------------------------------------------------------ |
dan_ackme | 11:ea484e1b7fc4 | 161 | |
dan_ackme | 11:ea484e1b7fc4 | 162 | |
dan_ackme | 11:ea484e1b7fc4 | 163 | /** |
dan_ackme | 11:ea484e1b7fc4 | 164 | * @ingroup conversion_util |
dan_ackme | 11:ea484e1b7fc4 | 165 | * |
dan_ackme | 11:ea484e1b7fc4 | 166 | * @brief Convert string to IP address |
dan_ackme | 11:ea484e1b7fc4 | 167 | */ |
dan_ackme | 0:ea85c4bb5e1f | 168 | static bool strToIp(const char *str, uint32_t *intPtr); |
dan_ackme | 11:ea484e1b7fc4 | 169 | |
dan_ackme | 11:ea484e1b7fc4 | 170 | /** |
dan_ackme | 11:ea484e1b7fc4 | 171 | * @ingroup conversion_util |
dan_ackme | 11:ea484e1b7fc4 | 172 | * |
dan_ackme | 11:ea484e1b7fc4 | 173 | * @brief Convert IP address to string |
dan_ackme | 11:ea484e1b7fc4 | 174 | */ |
dan_ackme | 0:ea85c4bb5e1f | 175 | static const char* ipToStr(uint32_t ip, char *ipStrBuffer = NULL); |
dan_ackme | 11:ea484e1b7fc4 | 176 | |
dan_ackme | 11:ea484e1b7fc4 | 177 | /** |
dan_ackme | 11:ea484e1b7fc4 | 178 | * @ingroup conversion_util |
dan_ackme | 11:ea484e1b7fc4 | 179 | * |
dan_ackme | 11:ea484e1b7fc4 | 180 | * @brief Convert @ref NetworkStatus to string |
dan_ackme | 11:ea484e1b7fc4 | 181 | */ |
dan_ackme | 0:ea85c4bb5e1f | 182 | static const char* networkStatusToStr(NetworkStatus status); |
dan_ackme | 11:ea484e1b7fc4 | 183 | |
dan_ackme | 11:ea484e1b7fc4 | 184 | /** |
dan_ackme | 11:ea484e1b7fc4 | 185 | * @ingroup conversion_util |
dan_ackme | 11:ea484e1b7fc4 | 186 | * |
dan_ackme | 11:ea484e1b7fc4 | 187 | * @brief Convert @ref NetworkSignalStrength to string |
dan_ackme | 11:ea484e1b7fc4 | 188 | */ |
dan_ackme | 0:ea85c4bb5e1f | 189 | static const char* signalStrengthToStr(NetworkSignalStrength signalStrenth); |
dan_ackme | 11:ea484e1b7fc4 | 190 | |
dan_ackme | 11:ea484e1b7fc4 | 191 | /** |
dan_ackme | 11:ea484e1b7fc4 | 192 | * @ingroup conversion_util |
dan_ackme | 11:ea484e1b7fc4 | 193 | * |
dan_ackme | 11:ea484e1b7fc4 | 194 | * @brief Convert RSSI (in dBm) to @ref NetworkSignalStrength |
dan_ackme | 11:ea484e1b7fc4 | 195 | */ |
dan_ackme | 0:ea85c4bb5e1f | 196 | static NetworkSignalStrength rssiToSignalStrength(int rssi); |
dan_ackme | 11:ea484e1b7fc4 | 197 | |
dan_ackme | 11:ea484e1b7fc4 | 198 | /** |
dan_ackme | 11:ea484e1b7fc4 | 199 | * @ingroup conversion_util |
dan_ackme | 11:ea484e1b7fc4 | 200 | * |
dan_ackme | 11:ea484e1b7fc4 | 201 | * @brief Convert string to @ref NetworkSecurity |
dan_ackme | 11:ea484e1b7fc4 | 202 | */ |
dan_ackme | 0:ea85c4bb5e1f | 203 | static NetworkSecurity strToNetworkSecurity(const char *str); |
dan_ackme | 11:ea484e1b7fc4 | 204 | |
dan_ackme | 11:ea484e1b7fc4 | 205 | /** |
dan_ackme | 11:ea484e1b7fc4 | 206 | * @ingroup conversion_util |
dan_ackme | 11:ea484e1b7fc4 | 207 | * |
dan_ackme | 11:ea484e1b7fc4 | 208 | * @brief Convert @ref NetworkSecurity to string |
dan_ackme | 11:ea484e1b7fc4 | 209 | */ |
dan_ackme | 0:ea85c4bb5e1f | 210 | static const char* networkSecurityToStr(NetworkSecurity security); |
dan_ackme | 11:ea484e1b7fc4 | 211 | |
dan_ackme | 11:ea484e1b7fc4 | 212 | /** |
dan_ackme | 11:ea484e1b7fc4 | 213 | * @ingroup conversion_util |
dan_ackme | 11:ea484e1b7fc4 | 214 | * |
dan_ackme | 11:ea484e1b7fc4 | 215 | * @brief Convert string @ref Ssid |
dan_ackme | 11:ea484e1b7fc4 | 216 | */ |
dan_ackme | 0:ea85c4bb5e1f | 217 | static bool strToSsid(const char *str, Ssid *ssid); |
dan_ackme | 11:ea484e1b7fc4 | 218 | |
dan_ackme | 11:ea484e1b7fc4 | 219 | /** |
dan_ackme | 11:ea484e1b7fc4 | 220 | * @ingroup conversion_util |
dan_ackme | 11:ea484e1b7fc4 | 221 | * |
dan_ackme | 11:ea484e1b7fc4 | 222 | * @brief Convert @ref Ssid to string |
dan_ackme | 11:ea484e1b7fc4 | 223 | */ |
dan_ackme | 0:ea85c4bb5e1f | 224 | static const char* ssidToStr(const Ssid *ssid, char *ssidStrBuffer = NULL); |
dan_ackme | 11:ea484e1b7fc4 | 225 | |
dan_ackme | 11:ea484e1b7fc4 | 226 | /** |
dan_ackme | 11:ea484e1b7fc4 | 227 | * @ingroup conversion_util |
dan_ackme | 11:ea484e1b7fc4 | 228 | * |
dan_ackme | 11:ea484e1b7fc4 | 229 | * @brief Convert string @ref MacAddress |
dan_ackme | 11:ea484e1b7fc4 | 230 | */ |
dan_ackme | 0:ea85c4bb5e1f | 231 | static bool strToMacAddress(const char *str, MacAddress *macAddress); |
dan_ackme | 11:ea484e1b7fc4 | 232 | |
dan_ackme | 11:ea484e1b7fc4 | 233 | /** |
dan_ackme | 11:ea484e1b7fc4 | 234 | * @ingroup conversion_util |
dan_ackme | 11:ea484e1b7fc4 | 235 | * |
dan_ackme | 11:ea484e1b7fc4 | 236 | * @brief Convert @ref MacAddress to string |
dan_ackme | 11:ea484e1b7fc4 | 237 | */ |
dan_ackme | 0:ea85c4bb5e1f | 238 | static const char* macAddressToStr(const MacAddress *macAddress, char *macStrBuffer = NULL); |
dan_ackme | 0:ea85c4bb5e1f | 239 | |
dan_ackme | 0:ea85c4bb5e1f | 240 | protected: |
dan_ackme | 0:ea85c4bb5e1f | 241 | NetworkInterface(Wiconnect *wiconnect); |
dan_ackme | 0:ea85c4bb5e1f | 242 | |
dan_ackme | 0:ea85c4bb5e1f | 243 | WiconnectResult processScanResults(char *resultStr, ScanResultList &resultList); |
dan_ackme | 0:ea85c4bb5e1f | 244 | |
dan_ackme | 0:ea85c4bb5e1f | 245 | #ifdef WICONNECT_ASYNC_TIMER_ENABLED |
dan_ackme | 0:ea85c4bb5e1f | 246 | Callback completeHandler; |
dan_ackme | 0:ea85c4bb5e1f | 247 | PeriodicTimer monitorTimer; |
dan_ackme | 0:ea85c4bb5e1f | 248 | |
dan_ackme | 0:ea85c4bb5e1f | 249 | void webSetupStatusMonitor(); |
dan_ackme | 0:ea85c4bb5e1f | 250 | void webSetupStatusCheckCallback(WiconnectResult result, void *arg1, void *arg2); |
dan_ackme | 0:ea85c4bb5e1f | 251 | |
dan_ackme | 0:ea85c4bb5e1f | 252 | void joinStatusMonitor(); |
dan_ackme | 0:ea85c4bb5e1f | 253 | void joinStatusCheckCallback(WiconnectResult result, void *arg1, void *arg2); |
dan_ackme | 0:ea85c4bb5e1f | 254 | |
dan_ackme | 0:ea85c4bb5e1f | 255 | //void scanCompleteCallback(WiconnectResult result, void *arg1, void *arg2); |
dan_ackme | 0:ea85c4bb5e1f | 256 | #endif |
dan_ackme | 0:ea85c4bb5e1f | 257 | |
dan_ackme | 0:ea85c4bb5e1f | 258 | private: |
dan_ackme | 0:ea85c4bb5e1f | 259 | Wiconnect *wiconnect; |
dan_ackme | 0:ea85c4bb5e1f | 260 | }; |
dan_ackme | 0:ea85c4bb5e1f | 261 | |
dan_ackme | 0:ea85c4bb5e1f | 262 | } |