LWIPBP3595Interface library for mbed-os.

Dependents:   LWIPBP3595Interface_STA_for_mbed-os

Fork of LWIPBP3595Interface by Rohm

Committer:
dkato
Date:
Fri Oct 28 06:27:14 2016 +0000
Revision:
4:b49b4b36aaa4
Parent:
3:2ff2514e4fca
Child:
5:d03489ec5033
Support the API set_channel(), get_rssi(), and scan().

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tousaki 0:a933851e5d22 1 /* LWIP implementation of NetworkInterfaceAPI
tousaki 0:a933851e5d22 2 * Copyright (c) 2015 ARM Limited
tousaki 0:a933851e5d22 3 *
tousaki 0:a933851e5d22 4 * Licensed under the Apache License, Version 2.0 (the "License");
tousaki 0:a933851e5d22 5 * you may not use this file except in compliance with the License.
tousaki 0:a933851e5d22 6 * You may obtain a copy of the License at
tousaki 0:a933851e5d22 7 *
tousaki 0:a933851e5d22 8 * http://www.apache.org/licenses/LICENSE-2.0
tousaki 0:a933851e5d22 9 *
tousaki 0:a933851e5d22 10 * Unless required by applicable law or agreed to in writing, software
tousaki 0:a933851e5d22 11 * distributed under the License is distributed on an "AS IS" BASIS,
tousaki 0:a933851e5d22 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
tousaki 0:a933851e5d22 13 * See the License for the specific language governing permissions and
tousaki 0:a933851e5d22 14 * limitations under the License.
tousaki 0:a933851e5d22 15 */
tousaki 0:a933851e5d22 16
tousaki 0:a933851e5d22 17 #include "LWIPBP3595Interface.h"
tousaki 0:a933851e5d22 18 #include "LWIPBP3595Interface_BssType.h"
dkato 2:c7e325599570 19 #include "lwip_wifi_stack.h"
tousaki 0:a933851e5d22 20 #include "WlanBP3595.h"
tousaki 0:a933851e5d22 21
dkato 4:b49b4b36aaa4 22 static bool _init_end = false;
dkato 4:b49b4b36aaa4 23 static grp_wld_site_survey_result_array survey_result;
dkato 4:b49b4b36aaa4 24
tousaki 0:a933851e5d22 25 static void _wlan_inf_callback(uint8_t ucType, uint16_t usWid, uint16_t usSize, uint8_t *pucData) {
tousaki 0:a933851e5d22 26 if ((ucType == 'I') && (usWid == 0x0005)) {
tousaki 0:a933851e5d22 27 if (pucData[0] == 0x01) { // CONNECTED
dkato 3:2ff2514e4fca 28 /* Notify the LWIPBP3595Interface driver that WLAN was connected */
tousaki 0:a933851e5d22 29 WlanBP3595_Connected();
tousaki 0:a933851e5d22 30 } else {
dkato 3:2ff2514e4fca 31 /* Notify the LWIPBP3595Interface driver that WLAN was disconnected */
tousaki 0:a933851e5d22 32 WlanBP3595_Disconnected();
tousaki 0:a933851e5d22 33 }
tousaki 0:a933851e5d22 34 }
tousaki 0:a933851e5d22 35 }
tousaki 0:a933851e5d22 36
tousaki 0:a933851e5d22 37 static int _wlan_init() {
tousaki 0:a933851e5d22 38 uint32_t status;
dkato 4:b49b4b36aaa4 39 grp_u8 ucWidData8; // 8bit wid data
tousaki 0:a933851e5d22 40
dkato 4:b49b4b36aaa4 41 if (_init_end == false) {
dkato 4:b49b4b36aaa4 42 // Initialize WlanBP3595
dkato 4:b49b4b36aaa4 43 if (WlanBP3595_Init(&_wlan_inf_callback) != 0) {
dkato 4:b49b4b36aaa4 44 return -1;
dkato 4:b49b4b36aaa4 45 }
tousaki 0:a933851e5d22 46
dkato 4:b49b4b36aaa4 47 // Wait until WLAN_BP3595_START timeout 60s
dkato 4:b49b4b36aaa4 48 while (1) {
dkato 4:b49b4b36aaa4 49 Thread::wait(200);
dkato 4:b49b4b36aaa4 50 status = WlanBP3595_GetWlanSts();
dkato 4:b49b4b36aaa4 51 if (status == WLAN_BP3595_START) {
dkato 4:b49b4b36aaa4 52 break;
dkato 4:b49b4b36aaa4 53 }
tousaki 0:a933851e5d22 54 }
dkato 4:b49b4b36aaa4 55
dkato 4:b49b4b36aaa4 56 // Set BSS type
dkato 4:b49b4b36aaa4 57 ucWidData8 = BSS_TYPE;
dkato 4:b49b4b36aaa4 58 if (WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_BSS_TYPE, &ucWidData8) != 0) {
dkato 4:b49b4b36aaa4 59 return -1;
dkato 4:b49b4b36aaa4 60 }
dkato 4:b49b4b36aaa4 61
dkato 4:b49b4b36aaa4 62 ucWidData8 = 0x02; // Diversity
dkato 4:b49b4b36aaa4 63 WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_SEL_ANTENNA, &ucWidData8);
dkato 4:b49b4b36aaa4 64 _init_end = true;
tousaki 0:a933851e5d22 65 }
tousaki 0:a933851e5d22 66
tousaki 0:a933851e5d22 67 return 0;
tousaki 0:a933851e5d22 68 }
tousaki 0:a933851e5d22 69
tousaki 0:a933851e5d22 70 static int _wlan_setting(const char *ssid, const char *pass, nsapi_security_t security)
tousaki 0:a933851e5d22 71 {
tousaki 0:a933851e5d22 72 int ret;
tousaki 0:a933851e5d22 73 grp_u8 ucWidData8; // 8bit wid data
tousaki 0:a933851e5d22 74 grp_wld_byte_array tBAWidData; // byte array wid data
tousaki 0:a933851e5d22 75
dkato 4:b49b4b36aaa4 76 if (_wlan_init() != 0) {
dkato 4:b49b4b36aaa4 77 return NSAPI_ERROR_DEVICE_ERROR;
tousaki 0:a933851e5d22 78 }
tousaki 0:a933851e5d22 79
tousaki 0:a933851e5d22 80 // Set SSID
tousaki 0:a933851e5d22 81 tBAWidData.pucData = (grp_u8 *)ssid;
tousaki 0:a933851e5d22 82 tBAWidData.ulSize = strlen((char *)tBAWidData.pucData);
tousaki 0:a933851e5d22 83 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_SSID, &tBAWidData);
tousaki 0:a933851e5d22 84 if (ret != 0) {
dkato 4:b49b4b36aaa4 85 return NSAPI_ERROR_AUTH_FAILURE;
tousaki 0:a933851e5d22 86 }
tousaki 0:a933851e5d22 87
tousaki 0:a933851e5d22 88 if ((security == NSAPI_SECURITY_WPA) || (security == NSAPI_SECURITY_WPA2)) {
tousaki 0:a933851e5d22 89 // Set PSK
tousaki 0:a933851e5d22 90 tBAWidData.pucData = (grp_u8 *)pass;
tousaki 0:a933851e5d22 91 tBAWidData.ulSize = strlen((char *)tBAWidData.pucData);
tousaki 0:a933851e5d22 92 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_11I_PSK, &tBAWidData);
tousaki 0:a933851e5d22 93 if (ret != 0) {
dkato 4:b49b4b36aaa4 94 return NSAPI_ERROR_AUTH_FAILURE;
tousaki 0:a933851e5d22 95 }
tousaki 0:a933851e5d22 96 }
tousaki 0:a933851e5d22 97
tousaki 0:a933851e5d22 98 // Set 11i mode
tousaki 0:a933851e5d22 99 switch (security) {
tousaki 0:a933851e5d22 100 case NSAPI_SECURITY_WEP:
tousaki 0:a933851e5d22 101 ret = strlen(pass);
tousaki 0:a933851e5d22 102 if (ret == 5) {
tousaki 0:a933851e5d22 103 ucWidData8 = 0x03; // WEP64
tousaki 0:a933851e5d22 104 } else if (ret == 13) {
tousaki 0:a933851e5d22 105 ucWidData8 = 0x07; // WEP128
tousaki 0:a933851e5d22 106 } else {
dkato 4:b49b4b36aaa4 107 return NSAPI_ERROR_PARAMETER;
tousaki 0:a933851e5d22 108 }
tousaki 0:a933851e5d22 109 break;
tousaki 0:a933851e5d22 110 case NSAPI_SECURITY_WPA:
dkato 4:b49b4b36aaa4 111 ucWidData8 = 0x69; // WPA-TKIP/AES(PSK)
dkato 4:b49b4b36aaa4 112 break;
tousaki 0:a933851e5d22 113 case NSAPI_SECURITY_WPA2:
dkato 4:b49b4b36aaa4 114 ucWidData8 = 0x71; // WPA2-TKIP/AES(PSK)
dkato 4:b49b4b36aaa4 115 break;
dkato 4:b49b4b36aaa4 116 case NSAPI_SECURITY_WPA_WPA2:
tousaki 0:a933851e5d22 117 ucWidData8 = 0x79; // WPA/WPA2 Mixed
tousaki 0:a933851e5d22 118 break;
tousaki 0:a933851e5d22 119 case NSAPI_SECURITY_NONE:
tousaki 0:a933851e5d22 120 default:
tousaki 0:a933851e5d22 121 ucWidData8 = 0x00;
tousaki 0:a933851e5d22 122 break;
tousaki 0:a933851e5d22 123 }
tousaki 0:a933851e5d22 124 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_11I_MODE, &ucWidData8);
tousaki 0:a933851e5d22 125 if (ret != 0) {
dkato 4:b49b4b36aaa4 126 return NSAPI_ERROR_AUTH_FAILURE;
tousaki 0:a933851e5d22 127 }
tousaki 0:a933851e5d22 128
tousaki 0:a933851e5d22 129 if (security == NSAPI_SECURITY_WEP) {
tousaki 0:a933851e5d22 130 // Set WEP KEY
tousaki 0:a933851e5d22 131 tBAWidData.pucData = (grp_u8 *)pass;
tousaki 0:a933851e5d22 132 tBAWidData.ulSize = strlen((char *)tBAWidData.pucData);
tousaki 0:a933851e5d22 133 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_WEP_KEY, &tBAWidData);
tousaki 0:a933851e5d22 134 if (ret != 0) {
dkato 4:b49b4b36aaa4 135 return NSAPI_ERROR_AUTH_FAILURE;
tousaki 0:a933851e5d22 136 }
tousaki 0:a933851e5d22 137 }
tousaki 0:a933851e5d22 138
tousaki 0:a933851e5d22 139 return 0;
tousaki 0:a933851e5d22 140 }
tousaki 0:a933851e5d22 141
dkato 2:c7e325599570 142 /* Interface implementation */
dkato 3:2ff2514e4fca 143 LWIPBP3595Interface::LWIPBP3595Interface()
dkato 4:b49b4b36aaa4 144 : _dhcp(true), _ip_address(), _netmask(), _gateway()
dkato 3:2ff2514e4fca 145 {
dkato 3:2ff2514e4fca 146 }
dkato 3:2ff2514e4fca 147
dkato 3:2ff2514e4fca 148 int LWIPBP3595Interface::set_network(const char *ip_address, const char *netmask, const char *gateway)
dkato 3:2ff2514e4fca 149 {
dkato 3:2ff2514e4fca 150 _dhcp = false;
dkato 3:2ff2514e4fca 151 strncpy(_ip_address, ip_address ? ip_address : "", sizeof(_ip_address));
dkato 3:2ff2514e4fca 152 strncpy(_netmask, netmask ? netmask : "", sizeof(_netmask));
dkato 3:2ff2514e4fca 153 strncpy(_gateway, gateway ? gateway : "", sizeof(_gateway));
dkato 3:2ff2514e4fca 154 return 0;
dkato 3:2ff2514e4fca 155 }
dkato 3:2ff2514e4fca 156
dkato 3:2ff2514e4fca 157 int LWIPBP3595Interface::set_dhcp(bool dhcp)
dkato 3:2ff2514e4fca 158 {
dkato 3:2ff2514e4fca 159 _dhcp = dhcp;
dkato 3:2ff2514e4fca 160 return 0;
dkato 3:2ff2514e4fca 161 }
dkato 3:2ff2514e4fca 162
dkato 3:2ff2514e4fca 163 int LWIPBP3595Interface::set_credentials(const char *ssid, const char *pass, nsapi_security_t security)
dkato 3:2ff2514e4fca 164 {
dkato 4:b49b4b36aaa4 165 memset(_ssid, 0, sizeof(_ssid));
dkato 4:b49b4b36aaa4 166 strncpy(_ssid, ssid, sizeof(_ssid));
dkato 3:2ff2514e4fca 167
dkato 4:b49b4b36aaa4 168 memset(_pass, 0, sizeof(_pass));
dkato 4:b49b4b36aaa4 169 strncpy(_pass, pass, sizeof(_pass));
dkato 3:2ff2514e4fca 170
dkato 3:2ff2514e4fca 171 _security = security;
dkato 3:2ff2514e4fca 172
dkato 3:2ff2514e4fca 173 return 0;
dkato 3:2ff2514e4fca 174 }
dkato 3:2ff2514e4fca 175
dkato 3:2ff2514e4fca 176 int LWIPBP3595Interface::set_channel(uint8_t channel)
dkato 3:2ff2514e4fca 177 {
dkato 4:b49b4b36aaa4 178 int ret;
dkato 4:b49b4b36aaa4 179 grp_u8 ucWidData8; // 8bit wid data
dkato 4:b49b4b36aaa4 180
dkato 4:b49b4b36aaa4 181 if (_wlan_init() != 0) {
dkato 4:b49b4b36aaa4 182 return NSAPI_ERROR_DEVICE_ERROR;
dkato 4:b49b4b36aaa4 183 }
dkato 4:b49b4b36aaa4 184
dkato 4:b49b4b36aaa4 185 if (channel != 0) {
dkato 4:b49b4b36aaa4 186 ucWidData8 = channel;
dkato 4:b49b4b36aaa4 187 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_CHANNEL, &ucWidData8);
dkato 4:b49b4b36aaa4 188 if (ret != 0) {
dkato 4:b49b4b36aaa4 189 return NSAPI_ERROR_PARAMETER;
dkato 4:b49b4b36aaa4 190 }
dkato 4:b49b4b36aaa4 191 }
dkato 4:b49b4b36aaa4 192
dkato 3:2ff2514e4fca 193 return 0;
dkato 3:2ff2514e4fca 194 }
dkato 3:2ff2514e4fca 195
dkato 3:2ff2514e4fca 196 int8_t LWIPBP3595Interface::get_rssi()
dkato 3:2ff2514e4fca 197 {
dkato 4:b49b4b36aaa4 198 int ret;
dkato 4:b49b4b36aaa4 199 grp_u8 ucWidData8; // 8bit wid data
dkato 4:b49b4b36aaa4 200
dkato 4:b49b4b36aaa4 201 if (_init_end) {
dkato 4:b49b4b36aaa4 202 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_GET_RSSI, &ucWidData8);
dkato 4:b49b4b36aaa4 203 if (ret != 0) {
dkato 4:b49b4b36aaa4 204 return 0;
dkato 4:b49b4b36aaa4 205 }
dkato 4:b49b4b36aaa4 206
dkato 4:b49b4b36aaa4 207 return ucWidData8;
dkato 4:b49b4b36aaa4 208 }
dkato 3:2ff2514e4fca 209 return 0;
dkato 3:2ff2514e4fca 210 }
dkato 3:2ff2514e4fca 211
dkato 3:2ff2514e4fca 212 int LWIPBP3595Interface::connect(const char *ssid, const char *pass, nsapi_security_t security, uint8_t channel)
dkato 3:2ff2514e4fca 213 {
dkato 3:2ff2514e4fca 214 set_credentials(ssid, pass, security);
dkato 3:2ff2514e4fca 215 set_channel(channel);
dkato 3:2ff2514e4fca 216 return connect();
dkato 3:2ff2514e4fca 217 }
dkato 3:2ff2514e4fca 218
dkato 3:2ff2514e4fca 219 int LWIPBP3595Interface::connect()
tousaki 0:a933851e5d22 220 {
dkato 4:b49b4b36aaa4 221 int ret;
dkato 4:b49b4b36aaa4 222
dkato 4:b49b4b36aaa4 223 ret = _wlan_setting(_ssid, _pass, _security);
dkato 4:b49b4b36aaa4 224 if (ret != 0) {
dkato 4:b49b4b36aaa4 225 return ret;
tousaki 0:a933851e5d22 226 }
tousaki 0:a933851e5d22 227
dkato 3:2ff2514e4fca 228 return mbed_lwip_wifi_bringup(_dhcp,
dkato 3:2ff2514e4fca 229 _ip_address[0] ? _ip_address : 0,
dkato 3:2ff2514e4fca 230 _netmask[0] ? _netmask : 0,
dkato 3:2ff2514e4fca 231 _gateway[0] ? _gateway : 0);
tousaki 0:a933851e5d22 232 }
tousaki 0:a933851e5d22 233
tousaki 0:a933851e5d22 234 int LWIPBP3595Interface::disconnect()
tousaki 0:a933851e5d22 235 {
dkato 3:2ff2514e4fca 236 return mbed_lwip_wifi_bringdown();
dkato 3:2ff2514e4fca 237 }
dkato 3:2ff2514e4fca 238
dkato 3:2ff2514e4fca 239 int LWIPBP3595Interface::scan(WiFiAccessPoint *res, unsigned count)
dkato 3:2ff2514e4fca 240 {
dkato 4:b49b4b36aaa4 241 int cnt;
dkato 4:b49b4b36aaa4 242 int ret;
dkato 4:b49b4b36aaa4 243 grp_u8 ucWidData8; // 8bit wid data
dkato 4:b49b4b36aaa4 244 nsapi_wifi_ap_t ap;
dkato 4:b49b4b36aaa4 245
dkato 4:b49b4b36aaa4 246 if (_wlan_init() != 0) {
dkato 4:b49b4b36aaa4 247 return NSAPI_ERROR_DEVICE_ERROR;
dkato 4:b49b4b36aaa4 248 }
dkato 4:b49b4b36aaa4 249
dkato 4:b49b4b36aaa4 250 ucWidData8 = 0x01; // All channel
dkato 4:b49b4b36aaa4 251 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_SITE_SURVEY, &ucWidData8);
dkato 4:b49b4b36aaa4 252 if (ret != 0) {
dkato 4:b49b4b36aaa4 253 return NSAPI_ERROR_DEVICE_ERROR;
dkato 4:b49b4b36aaa4 254 }
dkato 4:b49b4b36aaa4 255
dkato 4:b49b4b36aaa4 256 ucWidData8 = 0x01;
dkato 4:b49b4b36aaa4 257 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_START_SCAN_REQ, &ucWidData8);
dkato 4:b49b4b36aaa4 258 if (ret != 0) {
dkato 4:b49b4b36aaa4 259 return NSAPI_ERROR_DEVICE_ERROR;
dkato 4:b49b4b36aaa4 260 }
dkato 4:b49b4b36aaa4 261
dkato 4:b49b4b36aaa4 262 while (1) {
dkato 4:b49b4b36aaa4 263 ucWidData8 = 0x00;
dkato 4:b49b4b36aaa4 264 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_GET_CHECK_SCAN_END, &ucWidData8);
dkato 4:b49b4b36aaa4 265 if (ret != 0) {
dkato 4:b49b4b36aaa4 266 return NSAPI_ERROR_DEVICE_ERROR;
dkato 4:b49b4b36aaa4 267 }
dkato 4:b49b4b36aaa4 268 if (ucWidData8 == 0) {
dkato 4:b49b4b36aaa4 269 break;
dkato 4:b49b4b36aaa4 270 }
dkato 4:b49b4b36aaa4 271 Thread::wait(100);
dkato 4:b49b4b36aaa4 272 }
dkato 4:b49b4b36aaa4 273
dkato 4:b49b4b36aaa4 274 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_GET_SITE_SURVEY_RESULT, &survey_result);
dkato 4:b49b4b36aaa4 275 if (ret != 0) {
dkato 4:b49b4b36aaa4 276 return NSAPI_ERROR_DEVICE_ERROR;
dkato 4:b49b4b36aaa4 277 }
dkato 4:b49b4b36aaa4 278
dkato 4:b49b4b36aaa4 279 for (cnt = 0; (cnt < count) && (cnt < survey_result.iCnt); cnt++) {
dkato 4:b49b4b36aaa4 280 grp_wld_site_survey_result * wk_result = &survey_result.atResult[cnt];
dkato 4:b49b4b36aaa4 281
dkato 4:b49b4b36aaa4 282 memcpy(ap.ssid, wk_result->aucSsid, 33);
dkato 4:b49b4b36aaa4 283 memcpy(ap.bssid, wk_result->aucBssid, 6);
dkato 4:b49b4b36aaa4 284 switch (wk_result->ucSecurity) {
dkato 4:b49b4b36aaa4 285 case 0x00:
dkato 4:b49b4b36aaa4 286 ap.security = NSAPI_SECURITY_NONE;
dkato 4:b49b4b36aaa4 287 break;
dkato 4:b49b4b36aaa4 288 case 0x01:
dkato 4:b49b4b36aaa4 289 ap.security = NSAPI_SECURITY_WEP;
dkato 4:b49b4b36aaa4 290 break;
dkato 4:b49b4b36aaa4 291 case 0x29:
dkato 4:b49b4b36aaa4 292 case 0x49:
dkato 4:b49b4b36aaa4 293 case 0x69:
dkato 4:b49b4b36aaa4 294 ap.security = NSAPI_SECURITY_WPA;
dkato 4:b49b4b36aaa4 295 break;
dkato 4:b49b4b36aaa4 296 case 0x31:
dkato 4:b49b4b36aaa4 297 case 0x51:
dkato 4:b49b4b36aaa4 298 case 0x71:
dkato 4:b49b4b36aaa4 299 ap.security = NSAPI_SECURITY_WPA2;
dkato 4:b49b4b36aaa4 300 break;
dkato 4:b49b4b36aaa4 301 case 0x79:
dkato 4:b49b4b36aaa4 302 ap.security = NSAPI_SECURITY_WPA_WPA2;
dkato 4:b49b4b36aaa4 303 break;
dkato 4:b49b4b36aaa4 304 default:
dkato 4:b49b4b36aaa4 305 ap.security = NSAPI_SECURITY_UNKNOWN;
dkato 4:b49b4b36aaa4 306 break;
dkato 4:b49b4b36aaa4 307 }
dkato 4:b49b4b36aaa4 308 ap.rssi = wk_result->ucRxPower;
dkato 4:b49b4b36aaa4 309 ap.channel = wk_result->ucChannel;
dkato 4:b49b4b36aaa4 310
dkato 4:b49b4b36aaa4 311 res[cnt] = WiFiAccessPoint(ap);
dkato 4:b49b4b36aaa4 312 }
dkato 4:b49b4b36aaa4 313
dkato 4:b49b4b36aaa4 314 return cnt;
dkato 3:2ff2514e4fca 315 }
dkato 3:2ff2514e4fca 316
dkato 3:2ff2514e4fca 317 const char *LWIPBP3595Interface::get_mac_address()
dkato 3:2ff2514e4fca 318 {
dkato 3:2ff2514e4fca 319 return mbed_lwip_wifi_get_mac_address();
tousaki 0:a933851e5d22 320 }
tousaki 0:a933851e5d22 321
tousaki 0:a933851e5d22 322 const char *LWIPBP3595Interface::get_ip_address()
tousaki 0:a933851e5d22 323 {
dkato 3:2ff2514e4fca 324 if (mbed_lwip_wifi_get_ip_address(_ip_address, sizeof _ip_address)) {
dkato 3:2ff2514e4fca 325 return _ip_address;
dkato 3:2ff2514e4fca 326 }
dkato 3:2ff2514e4fca 327
dkato 3:2ff2514e4fca 328 return 0;
tousaki 0:a933851e5d22 329 }
tousaki 0:a933851e5d22 330
dkato 3:2ff2514e4fca 331 const char *LWIPBP3595Interface::get_netmask()
tousaki 0:a933851e5d22 332 {
dkato 3:2ff2514e4fca 333 if (mbed_lwip_wifi_get_netmask(_netmask, sizeof _netmask)) {
dkato 3:2ff2514e4fca 334 return _netmask;
dkato 3:2ff2514e4fca 335 }
dkato 3:2ff2514e4fca 336
dkato 3:2ff2514e4fca 337 return 0;
dkato 3:2ff2514e4fca 338 }
dkato 3:2ff2514e4fca 339
dkato 3:2ff2514e4fca 340 const char *LWIPBP3595Interface::get_gateway()
dkato 3:2ff2514e4fca 341 {
dkato 3:2ff2514e4fca 342 if (mbed_lwip_wifi_get_gateway(_gateway, sizeof _gateway)) {
dkato 3:2ff2514e4fca 343 return _gateway;
dkato 3:2ff2514e4fca 344 }
dkato 3:2ff2514e4fca 345
dkato 3:2ff2514e4fca 346 return 0;
tousaki 0:a933851e5d22 347 }
dkato 2:c7e325599570 348
dkato 2:c7e325599570 349 NetworkStack *LWIPBP3595Interface::get_stack()
dkato 2:c7e325599570 350 {
dkato 2:c7e325599570 351 return nsapi_create_stack(&lwip_wifi_stack);
dkato 2:c7e325599570 352 }
dkato 4:b49b4b36aaa4 353