mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
targets/TARGET_Realtek/TARGET_AMEBA/RTWInterface.cpp@189:f392fc9709a3, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 22:31:08 2019 +0000
- Revision:
- 189:f392fc9709a3
- Parent:
- 188:bcfe06ba3d64
mbed library release version 165
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 167:e84263d55307 | 1 | /* Ameba implementation of NetworkInterfaceAPI |
AnnaBridge | 167:e84263d55307 | 2 | * Copyright (c) 2015 ARM Limited |
AnnaBridge | 167:e84263d55307 | 3 | * |
AnnaBridge | 167:e84263d55307 | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
AnnaBridge | 167:e84263d55307 | 5 | * you may not use this file except in compliance with the License. |
AnnaBridge | 167:e84263d55307 | 6 | * You may obtain a copy of the License at |
AnnaBridge | 167:e84263d55307 | 7 | * |
AnnaBridge | 167:e84263d55307 | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
AnnaBridge | 167:e84263d55307 | 9 | * |
AnnaBridge | 167:e84263d55307 | 10 | * Unless required by applicable law or agreed to in writing, software |
AnnaBridge | 167:e84263d55307 | 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
AnnaBridge | 167:e84263d55307 | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
AnnaBridge | 167:e84263d55307 | 13 | * See the License for the specific language governing permissions and |
AnnaBridge | 167:e84263d55307 | 14 | * limitations under the License. |
AnnaBridge | 167:e84263d55307 | 15 | */ |
AnnaBridge | 167:e84263d55307 | 16 | |
AnnaBridge | 167:e84263d55307 | 17 | #include "mbed.h" |
AnnaBridge | 167:e84263d55307 | 18 | #include "rtos.h" |
AnnaBridge | 167:e84263d55307 | 19 | |
AnnaBridge | 167:e84263d55307 | 20 | #include "RTWInterface.h" |
AnnaBridge | 167:e84263d55307 | 21 | #include "mbed_interface.h" |
Anna Bridge |
186:707f6e361f3e | 22 | |
AnnaBridge | 167:e84263d55307 | 23 | #include "rtw_emac.h" |
Anna Bridge |
186:707f6e361f3e | 24 | #include "EMAC.h" |
AnnaBridge | 167:e84263d55307 | 25 | #include "wifi_constants.h" |
AnnaBridge | 167:e84263d55307 | 26 | #include "wifi_conf.h" |
AnnaBridge | 167:e84263d55307 | 27 | |
Anna Bridge |
186:707f6e361f3e | 28 | #include "OnboardNetworkStack.h" |
Anna Bridge |
186:707f6e361f3e | 29 | #include "EMACMemoryManager.h" |
AnnaBridge | 167:e84263d55307 | 30 | #include "osdep_service.h" |
AnnaBridge | 167:e84263d55307 | 31 | |
AnnaBridge | 167:e84263d55307 | 32 | typedef struct _wifi_scan_hdl { |
AnnaBridge | 174:b96e65c34a4d | 33 | _sema scan_sema; |
AnnaBridge | 167:e84263d55307 | 34 | nsapi_size_t ap_num; |
AnnaBridge | 167:e84263d55307 | 35 | nsapi_size_t scan_num; |
AnnaBridge | 167:e84263d55307 | 36 | WiFiAccessPoint *ap_details; |
AnnaBridge | 167:e84263d55307 | 37 | } wifi_scan_hdl; |
AnnaBridge | 167:e84263d55307 | 38 | |
AnnaBridge | 167:e84263d55307 | 39 | #define MAX_SCAN_TIMEOUT (15000) |
AnnaBridge | 167:e84263d55307 | 40 | |
AnnaBridge | 167:e84263d55307 | 41 | static rtw_result_t scan_result_handler( rtw_scan_handler_result_t* malloced_scan_result ) |
AnnaBridge | 167:e84263d55307 | 42 | { |
AnnaBridge | 167:e84263d55307 | 43 | wifi_scan_hdl *scan_handler = (wifi_scan_hdl *)malloced_scan_result->user_data; |
AnnaBridge | 167:e84263d55307 | 44 | if (malloced_scan_result->scan_complete != RTW_TRUE) { |
Anna Bridge |
186:707f6e361f3e | 45 | if (scan_handler->ap_details && scan_handler->scan_num > scan_handler->ap_num) { |
Anna Bridge |
180:96ed750bd169 | 46 | nsapi_wifi_ap_t ap; |
AnnaBridge | 167:e84263d55307 | 47 | rtw_scan_result_t* record = &malloced_scan_result->ap_details; |
Anna Bridge |
180:96ed750bd169 | 48 | record->SSID.val[record->SSID.len] = 0; /* Ensure the SSID is null terminated */ |
AnnaBridge | 167:e84263d55307 | 49 | memset((void*)&ap, 0x00, sizeof(nsapi_wifi_ap_t)); |
AnnaBridge | 167:e84263d55307 | 50 | memcpy(ap.ssid, record->SSID.val, record->SSID.len); |
AnnaBridge | 167:e84263d55307 | 51 | memcpy(ap.bssid, record->BSSID.octet, 6); |
Anna Bridge |
186:707f6e361f3e | 52 | switch (record->security) { |
AnnaBridge | 167:e84263d55307 | 53 | case RTW_SECURITY_OPEN: |
AnnaBridge | 167:e84263d55307 | 54 | ap.security = NSAPI_SECURITY_NONE; |
AnnaBridge | 167:e84263d55307 | 55 | break; |
AnnaBridge | 167:e84263d55307 | 56 | case RTW_SECURITY_WEP_PSK: |
AnnaBridge | 167:e84263d55307 | 57 | case RTW_SECURITY_WEP_SHARED: |
AnnaBridge | 167:e84263d55307 | 58 | ap.security = NSAPI_SECURITY_WEP; |
AnnaBridge | 167:e84263d55307 | 59 | break; |
AnnaBridge | 167:e84263d55307 | 60 | case RTW_SECURITY_WPA_TKIP_PSK: |
AnnaBridge | 167:e84263d55307 | 61 | case RTW_SECURITY_WPA_AES_PSK: |
AnnaBridge | 167:e84263d55307 | 62 | ap.security = NSAPI_SECURITY_WPA; |
AnnaBridge | 167:e84263d55307 | 63 | break; |
AnnaBridge | 167:e84263d55307 | 64 | case RTW_SECURITY_WPA2_AES_PSK: |
AnnaBridge | 167:e84263d55307 | 65 | case RTW_SECURITY_WPA2_TKIP_PSK: |
AnnaBridge | 167:e84263d55307 | 66 | case RTW_SECURITY_WPA2_MIXED_PSK: |
AnnaBridge | 167:e84263d55307 | 67 | ap.security = NSAPI_SECURITY_WPA2; |
AnnaBridge | 167:e84263d55307 | 68 | break; |
AnnaBridge | 167:e84263d55307 | 69 | case RTW_SECURITY_WPA_WPA2_MIXED: |
AnnaBridge | 167:e84263d55307 | 70 | ap.security = NSAPI_SECURITY_WPA_WPA2; |
AnnaBridge | 167:e84263d55307 | 71 | break; |
AnnaBridge | 167:e84263d55307 | 72 | default: |
AnnaBridge | 167:e84263d55307 | 73 | ap.security = NSAPI_SECURITY_UNKNOWN; |
AnnaBridge | 167:e84263d55307 | 74 | break; |
AnnaBridge | 167:e84263d55307 | 75 | } |
AnnaBridge | 167:e84263d55307 | 76 | ap.rssi = record->signal_strength; |
AnnaBridge | 167:e84263d55307 | 77 | ap.channel = record->channel; |
AnnaBridge | 172:7d866c31b3c5 | 78 | scan_handler->ap_details[scan_handler->ap_num] = WiFiAccessPoint(ap); |
AnnaBridge | 167:e84263d55307 | 79 | } |
AnnaBridge | 167:e84263d55307 | 80 | scan_handler->ap_num++; |
Anna Bridge |
186:707f6e361f3e | 81 | } else { |
AnnaBridge | 167:e84263d55307 | 82 | // scan done |
AnnaBridge | 167:e84263d55307 | 83 | rtw_up_sema(&scan_handler->scan_sema); |
AnnaBridge | 167:e84263d55307 | 84 | } |
AnnaBridge | 167:e84263d55307 | 85 | return RTW_SUCCESS; |
AnnaBridge | 167:e84263d55307 | 86 | } |
AnnaBridge | 167:e84263d55307 | 87 | |
AnnaBridge | 189:f392fc9709a3 | 88 | RTWInterface::RTWInterface(RTW_EMAC &get_rtw_emac, OnboardNetworkStack &get_rtw_obn_stack, bool debug) : |
AnnaBridge | 188:bcfe06ba3d64 | 89 | EMACInterface(get_rtw_emac, get_rtw_obn_stack), |
Anna Bridge |
186:707f6e361f3e | 90 | rtw_emac(get_rtw_emac), |
AnnaBridge | 188:bcfe06ba3d64 | 91 | rtw_obn_stack(get_rtw_obn_stack) |
AnnaBridge | 167:e84263d55307 | 92 | { |
AnnaBridge | 189:f392fc9709a3 | 93 | extern __u32 GlobalDebugEnable; |
AnnaBridge | 189:f392fc9709a3 | 94 | GlobalDebugEnable = debug?1:0; //Conditional statement: display debugging message |
Anna Bridge |
186:707f6e361f3e | 95 | rtw_emac.power_up(); |
AnnaBridge | 167:e84263d55307 | 96 | } |
AnnaBridge | 167:e84263d55307 | 97 | |
AnnaBridge | 167:e84263d55307 | 98 | RTWInterface::~RTWInterface() |
AnnaBridge | 167:e84263d55307 | 99 | { |
Anna Bridge |
186:707f6e361f3e | 100 | rtw_emac.wlan_emac_link_change(false); |
AnnaBridge | 188:bcfe06ba3d64 | 101 | EMACInterface::disconnect(); |
AnnaBridge | 167:e84263d55307 | 102 | } |
AnnaBridge | 167:e84263d55307 | 103 | |
AnnaBridge | 167:e84263d55307 | 104 | /* |
AnnaBridge | 167:e84263d55307 | 105 | * we may call connect multiple times |
AnnaBridge | 167:e84263d55307 | 106 | */ |
AnnaBridge | 167:e84263d55307 | 107 | nsapi_error_t RTWInterface::set_credentials(const char *ssid, const char *pass, nsapi_security_t security) |
AnnaBridge | 167:e84263d55307 | 108 | { |
AnnaBridge | 189:f392fc9709a3 | 109 | _security = security; |
AnnaBridge | 189:f392fc9709a3 | 110 | // Check if ssid is empty |
AnnaBridge | 189:f392fc9709a3 | 111 | if (!ssid) { |
AnnaBridge | 189:f392fc9709a3 | 112 | return NSAPI_ERROR_PARAMETER; |
AnnaBridge | 189:f392fc9709a3 | 113 | } |
AnnaBridge | 189:f392fc9709a3 | 114 | |
AnnaBridge | 189:f392fc9709a3 | 115 | // Check if ssid is too long |
AnnaBridge | 189:f392fc9709a3 | 116 | int ssid_length = strlen(ssid); |
AnnaBridge | 189:f392fc9709a3 | 117 | |
AnnaBridge | 189:f392fc9709a3 | 118 | if (ssid_length > 0 && ssid_length <= SSID_MAX_LENGTH) { |
AnnaBridge | 189:f392fc9709a3 | 119 | memset(_ssid, 0, sizeof(_ssid)); |
AnnaBridge | 189:f392fc9709a3 | 120 | strncpy(_ssid, ssid, sizeof(_ssid)); |
AnnaBridge | 189:f392fc9709a3 | 121 | } else { |
Anna Bridge |
180:96ed750bd169 | 122 | return NSAPI_ERROR_PARAMETER; |
Anna Bridge |
180:96ed750bd169 | 123 | } |
Anna Bridge |
180:96ed750bd169 | 124 | |
AnnaBridge | 189:f392fc9709a3 | 125 | // Check if it is an open access point |
AnnaBridge | 189:f392fc9709a3 | 126 | if (_security != NSAPI_SECURITY_NONE) { |
AnnaBridge | 189:f392fc9709a3 | 127 | // Check if passphase is empty |
AnnaBridge | 189:f392fc9709a3 | 128 | if (!pass) { |
Anna Bridge |
180:96ed750bd169 | 129 | return NSAPI_ERROR_PARAMETER; |
AnnaBridge | 189:f392fc9709a3 | 130 | } |
AnnaBridge | 189:f392fc9709a3 | 131 | // Check if passphase too long |
AnnaBridge | 189:f392fc9709a3 | 132 | if (strlen(pass) >= PASSPHRASE_MIN_LENGTH && strlen(pass) <= PASSPHRASE_MAX_LENGTH ) { |
AnnaBridge | 189:f392fc9709a3 | 133 | memset(_pass, 0, sizeof(_pass)); |
AnnaBridge | 189:f392fc9709a3 | 134 | strncpy(_pass, pass, sizeof(_pass)); |
AnnaBridge | 189:f392fc9709a3 | 135 | } else { |
AnnaBridge | 189:f392fc9709a3 | 136 | return NSAPI_ERROR_PARAMETER; |
AnnaBridge | 189:f392fc9709a3 | 137 | } |
AnnaBridge | 189:f392fc9709a3 | 138 | } else { // It is an open access point |
AnnaBridge | 189:f392fc9709a3 | 139 | memset(_pass, 0, sizeof(_pass)); |
Anna Bridge |
180:96ed750bd169 | 140 | } |
AnnaBridge | 167:e84263d55307 | 141 | return NSAPI_ERROR_OK; |
AnnaBridge | 167:e84263d55307 | 142 | } |
AnnaBridge | 167:e84263d55307 | 143 | |
AnnaBridge | 167:e84263d55307 | 144 | nsapi_error_t RTWInterface::connect() |
AnnaBridge | 167:e84263d55307 | 145 | { |
AnnaBridge | 167:e84263d55307 | 146 | int ret; |
AnnaBridge | 167:e84263d55307 | 147 | rtw_security_t sec; |
AnnaBridge | 167:e84263d55307 | 148 | |
AnnaBridge | 189:f392fc9709a3 | 149 | // Check if the ssid is empty |
AnnaBridge | 189:f392fc9709a3 | 150 | if (strlen(_ssid) == 0) { |
AnnaBridge | 189:f392fc9709a3 | 151 | return NSAPI_ERROR_NO_SSID; |
AnnaBridge | 167:e84263d55307 | 152 | } |
AnnaBridge | 189:f392fc9709a3 | 153 | // Check the security is empty and the passphase is valid |
AnnaBridge | 189:f392fc9709a3 | 154 | if ((_security != NSAPI_SECURITY_NONE) && (strlen(_pass) < PASSPHRASE_MIN_LENGTH)) { |
AnnaBridge | 189:f392fc9709a3 | 155 | return NSAPI_ERROR_PARAMETER; |
AnnaBridge | 189:f392fc9709a3 | 156 | } |
AnnaBridge | 189:f392fc9709a3 | 157 | // Based on security type set, adapt to Ameba SDK format |
AnnaBridge | 167:e84263d55307 | 158 | switch (_security) { |
AnnaBridge | 167:e84263d55307 | 159 | case NSAPI_SECURITY_WPA: |
AnnaBridge | 167:e84263d55307 | 160 | case NSAPI_SECURITY_WPA2: |
AnnaBridge | 167:e84263d55307 | 161 | case NSAPI_SECURITY_WPA_WPA2: |
AnnaBridge | 167:e84263d55307 | 162 | sec = RTW_SECURITY_WPA_WPA2_MIXED; |
AnnaBridge | 167:e84263d55307 | 163 | break; |
AnnaBridge | 167:e84263d55307 | 164 | case NSAPI_SECURITY_WEP: |
AnnaBridge | 167:e84263d55307 | 165 | sec = RTW_SECURITY_WEP_PSK; |
AnnaBridge | 167:e84263d55307 | 166 | break; |
AnnaBridge | 167:e84263d55307 | 167 | case NSAPI_SECURITY_NONE: |
AnnaBridge | 167:e84263d55307 | 168 | sec = RTW_SECURITY_OPEN; |
Anna Bridge |
180:96ed750bd169 | 169 | break; |
AnnaBridge | 167:e84263d55307 | 170 | default: |
AnnaBridge | 167:e84263d55307 | 171 | return NSAPI_ERROR_PARAMETER; |
AnnaBridge | 167:e84263d55307 | 172 | } |
AnnaBridge | 189:f392fc9709a3 | 173 | // Check if channel number is valid |
Anna Bridge |
186:707f6e361f3e | 174 | if (_channel > 0 && _channel < 14) { |
Anna Bridge |
186:707f6e361f3e | 175 | uint8_t pscan_config = PSCAN_ENABLE; |
AnnaBridge | 189:f392fc9709a3 | 176 | wifi_set_pscan_chan(&_channel, &pscan_config, 1); // Indicate which channel will be scanned |
Anna Bridge |
186:707f6e361f3e | 177 | } |
AnnaBridge | 189:f392fc9709a3 | 178 | ret = wifi_connect(_ssid, sec, _pass, strlen(_ssid), strlen(_pass), 0, (void *)NULL); // Join a WiFi network |
AnnaBridge | 189:f392fc9709a3 | 179 | // Check if the WiFi is connected. Return RTW_SUCCESS for succeful; Return RTW_ERROR for error |
AnnaBridge | 167:e84263d55307 | 180 | if (ret != RTW_SUCCESS) { |
AnnaBridge | 189:f392fc9709a3 | 181 | if(_ssid == "NULL"){ |
AnnaBridge | 189:f392fc9709a3 | 182 | return NSAPI_ERROR_PARAMETER; |
AnnaBridge | 189:f392fc9709a3 | 183 | } |
AnnaBridge | 189:f392fc9709a3 | 184 | else{ |
AnnaBridge | 189:f392fc9709a3 | 185 | printf("failed: %d\r\n", ret); |
AnnaBridge | 189:f392fc9709a3 | 186 | return NSAPI_ERROR_NO_CONNECTION; |
AnnaBridge | 189:f392fc9709a3 | 187 | } |
AnnaBridge | 167:e84263d55307 | 188 | } |
Anna Bridge |
186:707f6e361f3e | 189 | rtw_emac.wlan_emac_link_change(true); |
AnnaBridge | 188:bcfe06ba3d64 | 190 | ret = EMACInterface::connect(); |
AnnaBridge | 188:bcfe06ba3d64 | 191 | return ret; |
AnnaBridge | 167:e84263d55307 | 192 | } |
AnnaBridge | 167:e84263d55307 | 193 | |
AnnaBridge | 167:e84263d55307 | 194 | nsapi_error_t RTWInterface::scan(WiFiAccessPoint *res, unsigned count) |
AnnaBridge | 167:e84263d55307 | 195 | { |
AnnaBridge | 167:e84263d55307 | 196 | static wifi_scan_hdl scan_handler; |
AnnaBridge | 167:e84263d55307 | 197 | scan_handler.ap_num = 0; |
Anna Bridge |
186:707f6e361f3e | 198 | if (!scan_handler.scan_sema) { |
AnnaBridge | 167:e84263d55307 | 199 | rtw_init_sema(&scan_handler.scan_sema, 0); |
Anna Bridge |
186:707f6e361f3e | 200 | } |
AnnaBridge | 167:e84263d55307 | 201 | scan_handler.scan_num = count; |
AnnaBridge | 167:e84263d55307 | 202 | scan_handler.ap_details = res; |
Anna Bridge |
186:707f6e361f3e | 203 | if (wifi_scan_networks(scan_result_handler, (void *)&scan_handler) != RTW_SUCCESS) { |
AnnaBridge | 167:e84263d55307 | 204 | printf("wifi scan failed\n\r"); |
AnnaBridge | 167:e84263d55307 | 205 | return NSAPI_ERROR_DEVICE_ERROR; |
AnnaBridge | 167:e84263d55307 | 206 | } |
Anna Bridge |
186:707f6e361f3e | 207 | if (rtw_down_timeout_sema( &scan_handler.scan_sema, MAX_SCAN_TIMEOUT ) == RTW_FALSE) { |
AnnaBridge | 167:e84263d55307 | 208 | printf("wifi scan timeout\r\n"); |
AnnaBridge | 167:e84263d55307 | 209 | return NSAPI_ERROR_DEVICE_ERROR; |
AnnaBridge | 167:e84263d55307 | 210 | } |
Anna Bridge |
186:707f6e361f3e | 211 | if (count <= 0 || count > scan_handler.ap_num) { |
AnnaBridge | 167:e84263d55307 | 212 | count = scan_handler.ap_num; |
Anna Bridge |
186:707f6e361f3e | 213 | } |
AnnaBridge | 167:e84263d55307 | 214 | return count; |
AnnaBridge | 167:e84263d55307 | 215 | } |
AnnaBridge | 167:e84263d55307 | 216 | |
AnnaBridge | 167:e84263d55307 | 217 | nsapi_error_t RTWInterface::set_channel(uint8_t channel) |
AnnaBridge | 167:e84263d55307 | 218 | { |
Anna Bridge |
186:707f6e361f3e | 219 | _channel = channel; |
AnnaBridge | 189:f392fc9709a3 | 220 | return NSAPI_ERROR_UNSUPPORTED; |
AnnaBridge | 167:e84263d55307 | 221 | } |
AnnaBridge | 167:e84263d55307 | 222 | |
AnnaBridge | 167:e84263d55307 | 223 | int8_t RTWInterface::get_rssi() |
AnnaBridge | 167:e84263d55307 | 224 | { |
AnnaBridge | 167:e84263d55307 | 225 | int rssi = 0; |
Anna Bridge |
186:707f6e361f3e | 226 | if (wifi_get_rssi(&rssi) == 0) { |
AnnaBridge | 167:e84263d55307 | 227 | return (int8_t)rssi; |
Anna Bridge |
186:707f6e361f3e | 228 | } |
AnnaBridge | 167:e84263d55307 | 229 | return NSAPI_ERROR_OK; |
AnnaBridge | 167:e84263d55307 | 230 | } |
AnnaBridge | 167:e84263d55307 | 231 | |
AnnaBridge | 167:e84263d55307 | 232 | nsapi_error_t RTWInterface::connect(const char *ssid, const char *pass, |
Anna Bridge |
180:96ed750bd169 | 233 | nsapi_security_t security, uint8_t channel) |
AnnaBridge | 167:e84263d55307 | 234 | { |
Anna Bridge |
186:707f6e361f3e | 235 | set_channel(channel); |
AnnaBridge | 189:f392fc9709a3 | 236 | int err = set_credentials(ssid, pass, security); |
AnnaBridge | 189:f392fc9709a3 | 237 | if(err) { |
AnnaBridge | 189:f392fc9709a3 | 238 | return err; |
AnnaBridge | 189:f392fc9709a3 | 239 | } |
AnnaBridge | 167:e84263d55307 | 240 | return connect(); |
AnnaBridge | 167:e84263d55307 | 241 | } |
AnnaBridge | 167:e84263d55307 | 242 | |
AnnaBridge | 167:e84263d55307 | 243 | nsapi_error_t RTWInterface::disconnect() |
AnnaBridge | 167:e84263d55307 | 244 | { |
AnnaBridge | 167:e84263d55307 | 245 | char essid[33]; |
AnnaBridge | 167:e84263d55307 | 246 | |
Anna Bridge |
186:707f6e361f3e | 247 | rtw_emac.wlan_emac_link_change(false); |
AnnaBridge | 188:bcfe06ba3d64 | 248 | |
AnnaBridge | 188:bcfe06ba3d64 | 249 | EMACInterface::disconnect(); |
AnnaBridge | 188:bcfe06ba3d64 | 250 | |
Anna Bridge |
186:707f6e361f3e | 251 | if (wifi_is_connected_to_ap() != RTW_SUCCESS) { |
AnnaBridge | 167:e84263d55307 | 252 | return NSAPI_ERROR_NO_CONNECTION; |
Anna Bridge |
186:707f6e361f3e | 253 | } |
Anna Bridge |
186:707f6e361f3e | 254 | if (wifi_disconnect()<0) { |
AnnaBridge | 167:e84263d55307 | 255 | return NSAPI_ERROR_DEVICE_ERROR; |
AnnaBridge | 167:e84263d55307 | 256 | } |
Anna Bridge |
186:707f6e361f3e | 257 | while(1) { |
Anna Bridge |
186:707f6e361f3e | 258 | if (wext_get_ssid(WLAN0_NAME, (unsigned char *) essid) < 0) { |
AnnaBridge | 167:e84263d55307 | 259 | break; |
AnnaBridge | 167:e84263d55307 | 260 | } |
AnnaBridge | 167:e84263d55307 | 261 | } |
AnnaBridge | 167:e84263d55307 | 262 | return NSAPI_ERROR_OK; |
AnnaBridge | 167:e84263d55307 | 263 | } |
AnnaBridge | 167:e84263d55307 | 264 | |
AnnaBridge | 167:e84263d55307 | 265 | int RTWInterface::is_connected() |
AnnaBridge | 167:e84263d55307 | 266 | { |
AnnaBridge | 167:e84263d55307 | 267 | return !wifi_is_connected_to_ap(); |
AnnaBridge | 167:e84263d55307 | 268 | } |
AnnaBridge | 167:e84263d55307 | 269 | |
AnnaBridge | 167:e84263d55307 | 270 | NetworkStack *RTWInterface::get_stack() |
AnnaBridge | 167:e84263d55307 | 271 | { |
Anna Bridge |
186:707f6e361f3e | 272 | return &rtw_obn_stack; |
Anna Bridge |
180:96ed750bd169 | 273 | } |