LWIPBP3595Interface library for mbed-os.

Dependents:   LWIPBP3595Interface_STA_for_mbed-os

Fork of LWIPBP3595Interface by Rohm

Committer:
dkato
Date:
Tue Mar 28 09:50:17 2017 +0000
Revision:
6:993197aaf5a4
Parent:
5:d03489ec5033
Fixed static IP address setting.

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
tousaki 0:a933851e5d22 76 // Set SSID
tousaki 0:a933851e5d22 77 tBAWidData.pucData = (grp_u8 *)ssid;
tousaki 0:a933851e5d22 78 tBAWidData.ulSize = strlen((char *)tBAWidData.pucData);
tousaki 0:a933851e5d22 79 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_SSID, &tBAWidData);
tousaki 0:a933851e5d22 80 if (ret != 0) {
dkato 4:b49b4b36aaa4 81 return NSAPI_ERROR_AUTH_FAILURE;
tousaki 0:a933851e5d22 82 }
tousaki 0:a933851e5d22 83
dkato 5:d03489ec5033 84 if ((security == NSAPI_SECURITY_WPA)
dkato 5:d03489ec5033 85 || (security == NSAPI_SECURITY_WPA2)
dkato 5:d03489ec5033 86 || (security == NSAPI_SECURITY_WPA_WPA2)) {
tousaki 0:a933851e5d22 87 // Set PSK
tousaki 0:a933851e5d22 88 tBAWidData.pucData = (grp_u8 *)pass;
tousaki 0:a933851e5d22 89 tBAWidData.ulSize = strlen((char *)tBAWidData.pucData);
tousaki 0:a933851e5d22 90 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_11I_PSK, &tBAWidData);
tousaki 0:a933851e5d22 91 if (ret != 0) {
dkato 4:b49b4b36aaa4 92 return NSAPI_ERROR_AUTH_FAILURE;
tousaki 0:a933851e5d22 93 }
tousaki 0:a933851e5d22 94 }
tousaki 0:a933851e5d22 95
tousaki 0:a933851e5d22 96 // Set 11i mode
tousaki 0:a933851e5d22 97 switch (security) {
tousaki 0:a933851e5d22 98 case NSAPI_SECURITY_WEP:
tousaki 0:a933851e5d22 99 ret = strlen(pass);
tousaki 0:a933851e5d22 100 if (ret == 5) {
tousaki 0:a933851e5d22 101 ucWidData8 = 0x03; // WEP64
tousaki 0:a933851e5d22 102 } else if (ret == 13) {
tousaki 0:a933851e5d22 103 ucWidData8 = 0x07; // WEP128
tousaki 0:a933851e5d22 104 } else {
dkato 4:b49b4b36aaa4 105 return NSAPI_ERROR_PARAMETER;
tousaki 0:a933851e5d22 106 }
tousaki 0:a933851e5d22 107 break;
tousaki 0:a933851e5d22 108 case NSAPI_SECURITY_WPA:
dkato 4:b49b4b36aaa4 109 ucWidData8 = 0x69; // WPA-TKIP/AES(PSK)
dkato 4:b49b4b36aaa4 110 break;
tousaki 0:a933851e5d22 111 case NSAPI_SECURITY_WPA2:
dkato 4:b49b4b36aaa4 112 ucWidData8 = 0x71; // WPA2-TKIP/AES(PSK)
dkato 4:b49b4b36aaa4 113 break;
dkato 4:b49b4b36aaa4 114 case NSAPI_SECURITY_WPA_WPA2:
tousaki 0:a933851e5d22 115 ucWidData8 = 0x79; // WPA/WPA2 Mixed
tousaki 0:a933851e5d22 116 break;
tousaki 0:a933851e5d22 117 case NSAPI_SECURITY_NONE:
tousaki 0:a933851e5d22 118 default:
tousaki 0:a933851e5d22 119 ucWidData8 = 0x00;
tousaki 0:a933851e5d22 120 break;
tousaki 0:a933851e5d22 121 }
tousaki 0:a933851e5d22 122 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_11I_MODE, &ucWidData8);
tousaki 0:a933851e5d22 123 if (ret != 0) {
dkato 4:b49b4b36aaa4 124 return NSAPI_ERROR_AUTH_FAILURE;
tousaki 0:a933851e5d22 125 }
tousaki 0:a933851e5d22 126
tousaki 0:a933851e5d22 127 if (security == NSAPI_SECURITY_WEP) {
tousaki 0:a933851e5d22 128 // Set WEP KEY
tousaki 0:a933851e5d22 129 tBAWidData.pucData = (grp_u8 *)pass;
tousaki 0:a933851e5d22 130 tBAWidData.ulSize = strlen((char *)tBAWidData.pucData);
tousaki 0:a933851e5d22 131 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_WEP_KEY, &tBAWidData);
tousaki 0:a933851e5d22 132 if (ret != 0) {
dkato 4:b49b4b36aaa4 133 return NSAPI_ERROR_AUTH_FAILURE;
tousaki 0:a933851e5d22 134 }
tousaki 0:a933851e5d22 135 }
tousaki 0:a933851e5d22 136
tousaki 0:a933851e5d22 137 return 0;
tousaki 0:a933851e5d22 138 }
tousaki 0:a933851e5d22 139
dkato 2:c7e325599570 140 /* Interface implementation */
dkato 3:2ff2514e4fca 141 LWIPBP3595Interface::LWIPBP3595Interface()
dkato 4:b49b4b36aaa4 142 : _dhcp(true), _ip_address(), _netmask(), _gateway()
dkato 3:2ff2514e4fca 143 {
dkato 3:2ff2514e4fca 144 }
dkato 3:2ff2514e4fca 145
dkato 5:d03489ec5033 146 nsapi_error_t LWIPBP3595Interface::set_network(const char *ip_address, const char *netmask, const char *gateway)
dkato 3:2ff2514e4fca 147 {
dkato 3:2ff2514e4fca 148 _dhcp = false;
dkato 3:2ff2514e4fca 149 strncpy(_ip_address, ip_address ? ip_address : "", sizeof(_ip_address));
dkato 3:2ff2514e4fca 150 strncpy(_netmask, netmask ? netmask : "", sizeof(_netmask));
dkato 3:2ff2514e4fca 151 strncpy(_gateway, gateway ? gateway : "", sizeof(_gateway));
dkato 5:d03489ec5033 152 return NSAPI_ERROR_OK;
dkato 3:2ff2514e4fca 153 }
dkato 3:2ff2514e4fca 154
dkato 5:d03489ec5033 155 nsapi_error_t LWIPBP3595Interface::set_dhcp(bool dhcp)
dkato 3:2ff2514e4fca 156 {
dkato 3:2ff2514e4fca 157 _dhcp = dhcp;
dkato 5:d03489ec5033 158 return NSAPI_ERROR_OK;
dkato 3:2ff2514e4fca 159 }
dkato 3:2ff2514e4fca 160
dkato 5:d03489ec5033 161 nsapi_error_t LWIPBP3595Interface::set_credentials(const char *ssid, const char *pass, nsapi_security_t security)
dkato 3:2ff2514e4fca 162 {
dkato 4:b49b4b36aaa4 163 memset(_ssid, 0, sizeof(_ssid));
dkato 4:b49b4b36aaa4 164 strncpy(_ssid, ssid, sizeof(_ssid));
dkato 3:2ff2514e4fca 165
dkato 4:b49b4b36aaa4 166 memset(_pass, 0, sizeof(_pass));
dkato 4:b49b4b36aaa4 167 strncpy(_pass, pass, sizeof(_pass));
dkato 3:2ff2514e4fca 168
dkato 3:2ff2514e4fca 169 _security = security;
dkato 3:2ff2514e4fca 170
dkato 3:2ff2514e4fca 171 return 0;
dkato 3:2ff2514e4fca 172 }
dkato 3:2ff2514e4fca 173
dkato 5:d03489ec5033 174 nsapi_error_t LWIPBP3595Interface::set_channel(uint8_t channel)
dkato 3:2ff2514e4fca 175 {
dkato 4:b49b4b36aaa4 176 int ret;
dkato 4:b49b4b36aaa4 177 grp_u8 ucWidData8; // 8bit wid data
dkato 4:b49b4b36aaa4 178
dkato 4:b49b4b36aaa4 179 if (_wlan_init() != 0) {
dkato 4:b49b4b36aaa4 180 return NSAPI_ERROR_DEVICE_ERROR;
dkato 4:b49b4b36aaa4 181 }
dkato 4:b49b4b36aaa4 182
dkato 4:b49b4b36aaa4 183 if (channel != 0) {
dkato 4:b49b4b36aaa4 184 ucWidData8 = channel;
dkato 4:b49b4b36aaa4 185 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_CHANNEL, &ucWidData8);
dkato 4:b49b4b36aaa4 186 if (ret != 0) {
dkato 4:b49b4b36aaa4 187 return NSAPI_ERROR_PARAMETER;
dkato 4:b49b4b36aaa4 188 }
dkato 4:b49b4b36aaa4 189 }
dkato 4:b49b4b36aaa4 190
dkato 3:2ff2514e4fca 191 return 0;
dkato 3:2ff2514e4fca 192 }
dkato 3:2ff2514e4fca 193
dkato 3:2ff2514e4fca 194 int8_t LWIPBP3595Interface::get_rssi()
dkato 3:2ff2514e4fca 195 {
dkato 4:b49b4b36aaa4 196 int ret;
dkato 4:b49b4b36aaa4 197 grp_u8 ucWidData8; // 8bit wid data
dkato 4:b49b4b36aaa4 198
dkato 4:b49b4b36aaa4 199 if (_init_end) {
dkato 4:b49b4b36aaa4 200 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_GET_RSSI, &ucWidData8);
dkato 4:b49b4b36aaa4 201 if (ret != 0) {
dkato 4:b49b4b36aaa4 202 return 0;
dkato 4:b49b4b36aaa4 203 }
dkato 4:b49b4b36aaa4 204
dkato 4:b49b4b36aaa4 205 return ucWidData8;
dkato 4:b49b4b36aaa4 206 }
dkato 3:2ff2514e4fca 207 return 0;
dkato 3:2ff2514e4fca 208 }
dkato 3:2ff2514e4fca 209
dkato 5:d03489ec5033 210 nsapi_error_t LWIPBP3595Interface::connect(const char *ssid, const char *pass, nsapi_security_t security, uint8_t channel)
dkato 3:2ff2514e4fca 211 {
dkato 3:2ff2514e4fca 212 set_credentials(ssid, pass, security);
dkato 3:2ff2514e4fca 213 set_channel(channel);
dkato 3:2ff2514e4fca 214 return connect();
dkato 3:2ff2514e4fca 215 }
dkato 3:2ff2514e4fca 216
dkato 5:d03489ec5033 217 nsapi_error_t LWIPBP3595Interface::connect()
tousaki 0:a933851e5d22 218 {
dkato 4:b49b4b36aaa4 219 int ret;
dkato 4:b49b4b36aaa4 220
dkato 6:993197aaf5a4 221 if (_wlan_init() != 0) {
dkato 6:993197aaf5a4 222 return NSAPI_ERROR_DEVICE_ERROR;
dkato 6:993197aaf5a4 223 }
dkato 6:993197aaf5a4 224
dkato 6:993197aaf5a4 225 if (mbed_lwip_wifi_init(NULL) != NSAPI_ERROR_OK) {
dkato 6:993197aaf5a4 226 return NSAPI_ERROR_DEVICE_ERROR;
dkato 6:993197aaf5a4 227 }
dkato 6:993197aaf5a4 228
dkato 4:b49b4b36aaa4 229 ret = _wlan_setting(_ssid, _pass, _security);
dkato 4:b49b4b36aaa4 230 if (ret != 0) {
dkato 4:b49b4b36aaa4 231 return ret;
tousaki 0:a933851e5d22 232 }
tousaki 0:a933851e5d22 233
dkato 3:2ff2514e4fca 234 return mbed_lwip_wifi_bringup(_dhcp,
dkato 3:2ff2514e4fca 235 _ip_address[0] ? _ip_address : 0,
dkato 3:2ff2514e4fca 236 _netmask[0] ? _netmask : 0,
dkato 3:2ff2514e4fca 237 _gateway[0] ? _gateway : 0);
tousaki 0:a933851e5d22 238 }
tousaki 0:a933851e5d22 239
dkato 5:d03489ec5033 240 nsapi_error_t LWIPBP3595Interface::disconnect()
tousaki 0:a933851e5d22 241 {
dkato 3:2ff2514e4fca 242 return mbed_lwip_wifi_bringdown();
dkato 3:2ff2514e4fca 243 }
dkato 3:2ff2514e4fca 244
dkato 5:d03489ec5033 245 nsapi_size_or_error_t LWIPBP3595Interface::scan(WiFiAccessPoint *res, unsigned count)
dkato 3:2ff2514e4fca 246 {
dkato 4:b49b4b36aaa4 247 int cnt;
dkato 4:b49b4b36aaa4 248 int ret;
dkato 4:b49b4b36aaa4 249 grp_u8 ucWidData8; // 8bit wid data
dkato 4:b49b4b36aaa4 250 nsapi_wifi_ap_t ap;
dkato 4:b49b4b36aaa4 251
dkato 4:b49b4b36aaa4 252 if (_wlan_init() != 0) {
dkato 4:b49b4b36aaa4 253 return NSAPI_ERROR_DEVICE_ERROR;
dkato 4:b49b4b36aaa4 254 }
dkato 4:b49b4b36aaa4 255
dkato 4:b49b4b36aaa4 256 ucWidData8 = 0x01; // All channel
dkato 4:b49b4b36aaa4 257 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_SITE_SURVEY, &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 ucWidData8 = 0x01;
dkato 4:b49b4b36aaa4 263 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_START_SCAN_REQ, &ucWidData8);
dkato 4:b49b4b36aaa4 264 if (ret != 0) {
dkato 4:b49b4b36aaa4 265 return NSAPI_ERROR_DEVICE_ERROR;
dkato 4:b49b4b36aaa4 266 }
dkato 4:b49b4b36aaa4 267
dkato 4:b49b4b36aaa4 268 while (1) {
dkato 4:b49b4b36aaa4 269 ucWidData8 = 0x00;
dkato 4:b49b4b36aaa4 270 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_GET_CHECK_SCAN_END, &ucWidData8);
dkato 4:b49b4b36aaa4 271 if (ret != 0) {
dkato 4:b49b4b36aaa4 272 return NSAPI_ERROR_DEVICE_ERROR;
dkato 4:b49b4b36aaa4 273 }
dkato 4:b49b4b36aaa4 274 if (ucWidData8 == 0) {
dkato 4:b49b4b36aaa4 275 break;
dkato 4:b49b4b36aaa4 276 }
dkato 4:b49b4b36aaa4 277 Thread::wait(100);
dkato 4:b49b4b36aaa4 278 }
dkato 4:b49b4b36aaa4 279
dkato 4:b49b4b36aaa4 280 ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_GET_SITE_SURVEY_RESULT, &survey_result);
dkato 4:b49b4b36aaa4 281 if (ret != 0) {
dkato 4:b49b4b36aaa4 282 return NSAPI_ERROR_DEVICE_ERROR;
dkato 4:b49b4b36aaa4 283 }
dkato 4:b49b4b36aaa4 284
dkato 4:b49b4b36aaa4 285 for (cnt = 0; (cnt < count) && (cnt < survey_result.iCnt); cnt++) {
dkato 4:b49b4b36aaa4 286 grp_wld_site_survey_result * wk_result = &survey_result.atResult[cnt];
dkato 4:b49b4b36aaa4 287
dkato 4:b49b4b36aaa4 288 memcpy(ap.ssid, wk_result->aucSsid, 33);
dkato 4:b49b4b36aaa4 289 memcpy(ap.bssid, wk_result->aucBssid, 6);
dkato 4:b49b4b36aaa4 290 switch (wk_result->ucSecurity) {
dkato 4:b49b4b36aaa4 291 case 0x00:
dkato 4:b49b4b36aaa4 292 ap.security = NSAPI_SECURITY_NONE;
dkato 4:b49b4b36aaa4 293 break;
dkato 4:b49b4b36aaa4 294 case 0x01:
dkato 4:b49b4b36aaa4 295 ap.security = NSAPI_SECURITY_WEP;
dkato 4:b49b4b36aaa4 296 break;
dkato 4:b49b4b36aaa4 297 case 0x29:
dkato 4:b49b4b36aaa4 298 case 0x49:
dkato 4:b49b4b36aaa4 299 case 0x69:
dkato 4:b49b4b36aaa4 300 ap.security = NSAPI_SECURITY_WPA;
dkato 4:b49b4b36aaa4 301 break;
dkato 4:b49b4b36aaa4 302 case 0x31:
dkato 4:b49b4b36aaa4 303 case 0x51:
dkato 4:b49b4b36aaa4 304 case 0x71:
dkato 4:b49b4b36aaa4 305 ap.security = NSAPI_SECURITY_WPA2;
dkato 4:b49b4b36aaa4 306 break;
dkato 4:b49b4b36aaa4 307 case 0x79:
dkato 4:b49b4b36aaa4 308 ap.security = NSAPI_SECURITY_WPA_WPA2;
dkato 4:b49b4b36aaa4 309 break;
dkato 4:b49b4b36aaa4 310 default:
dkato 4:b49b4b36aaa4 311 ap.security = NSAPI_SECURITY_UNKNOWN;
dkato 4:b49b4b36aaa4 312 break;
dkato 4:b49b4b36aaa4 313 }
dkato 4:b49b4b36aaa4 314 ap.rssi = wk_result->ucRxPower;
dkato 4:b49b4b36aaa4 315 ap.channel = wk_result->ucChannel;
dkato 4:b49b4b36aaa4 316
dkato 4:b49b4b36aaa4 317 res[cnt] = WiFiAccessPoint(ap);
dkato 4:b49b4b36aaa4 318 }
dkato 4:b49b4b36aaa4 319
dkato 4:b49b4b36aaa4 320 return cnt;
dkato 3:2ff2514e4fca 321 }
dkato 3:2ff2514e4fca 322
dkato 3:2ff2514e4fca 323 const char *LWIPBP3595Interface::get_mac_address()
dkato 3:2ff2514e4fca 324 {
dkato 3:2ff2514e4fca 325 return mbed_lwip_wifi_get_mac_address();
tousaki 0:a933851e5d22 326 }
tousaki 0:a933851e5d22 327
tousaki 0:a933851e5d22 328 const char *LWIPBP3595Interface::get_ip_address()
tousaki 0:a933851e5d22 329 {
dkato 3:2ff2514e4fca 330 if (mbed_lwip_wifi_get_ip_address(_ip_address, sizeof _ip_address)) {
dkato 3:2ff2514e4fca 331 return _ip_address;
dkato 3:2ff2514e4fca 332 }
dkato 3:2ff2514e4fca 333
dkato 5:d03489ec5033 334 return NULL;
tousaki 0:a933851e5d22 335 }
tousaki 0:a933851e5d22 336
dkato 3:2ff2514e4fca 337 const char *LWIPBP3595Interface::get_netmask()
tousaki 0:a933851e5d22 338 {
dkato 3:2ff2514e4fca 339 if (mbed_lwip_wifi_get_netmask(_netmask, sizeof _netmask)) {
dkato 3:2ff2514e4fca 340 return _netmask;
dkato 3:2ff2514e4fca 341 }
dkato 3:2ff2514e4fca 342
dkato 5:d03489ec5033 343 return NULL;
dkato 3:2ff2514e4fca 344 }
dkato 3:2ff2514e4fca 345
dkato 3:2ff2514e4fca 346 const char *LWIPBP3595Interface::get_gateway()
dkato 3:2ff2514e4fca 347 {
dkato 3:2ff2514e4fca 348 if (mbed_lwip_wifi_get_gateway(_gateway, sizeof _gateway)) {
dkato 3:2ff2514e4fca 349 return _gateway;
dkato 3:2ff2514e4fca 350 }
dkato 3:2ff2514e4fca 351
dkato 5:d03489ec5033 352 return NULL;
tousaki 0:a933851e5d22 353 }
dkato 2:c7e325599570 354
dkato 2:c7e325599570 355 NetworkStack *LWIPBP3595Interface::get_stack()
dkato 2:c7e325599570 356 {
dkato 2:c7e325599570 357 return nsapi_create_stack(&lwip_wifi_stack);
dkato 2:c7e325599570 358 }
dkato 4:b49b4b36aaa4 359