LWIPBP3595Interface library for mbed-os.

Dependents:   LWIPBP3595Interface_STA_for_mbed-os

Fork of LWIPBP3595Interface by Rohm

Committer:
dkato
Date:
Thu Nov 24 09:13:23 2016 +0000
Revision:
5:d03489ec5033
Parent:
4:b49b4b36aaa4
Child:
6:993197aaf5a4
Supports mbed os 5.2.3.

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