Toyomasa Watarai
/
Mbed-example-WS-W27
Mbed Cloud example program for workshop in W27 2018.
easy-connect/easy-connect.cpp@0:119624335925, 2018-06-30 (annotated)
- Committer:
- MACRUM
- Date:
- Sat Jun 30 01:40:30 2018 +0000
- Revision:
- 0:119624335925
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MACRUM | 0:119624335925 | 1 | /* |
MACRUM | 0:119624335925 | 2 | * FILE: easy-connect.cpp |
MACRUM | 0:119624335925 | 3 | * |
MACRUM | 0:119624335925 | 4 | * Copyright (c) 2015 - 2017 ARM Limited. All rights reserved. |
MACRUM | 0:119624335925 | 5 | * SPDX-License-Identifier: Apache-2.0 |
MACRUM | 0:119624335925 | 6 | * Licensed under the Apache License, Version 2.0 (the License); you may |
MACRUM | 0:119624335925 | 7 | * not use this file except in compliance with the License. |
MACRUM | 0:119624335925 | 8 | * You may obtain a copy of the License at |
MACRUM | 0:119624335925 | 9 | * |
MACRUM | 0:119624335925 | 10 | * http://www.apache.org/licenses/LICENSE-2.0 |
MACRUM | 0:119624335925 | 11 | * |
MACRUM | 0:119624335925 | 12 | * Unless required by applicable law or agreed to in writing, software |
MACRUM | 0:119624335925 | 13 | * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
MACRUM | 0:119624335925 | 14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
MACRUM | 0:119624335925 | 15 | * See the License for the specific language governing permissions and |
MACRUM | 0:119624335925 | 16 | * limitations under the License. |
MACRUM | 0:119624335925 | 17 | */ |
MACRUM | 0:119624335925 | 18 | |
MACRUM | 0:119624335925 | 19 | #include "mbed.h" |
MACRUM | 0:119624335925 | 20 | #include "easy-connect.h" |
MACRUM | 0:119624335925 | 21 | |
MACRUM | 0:119624335925 | 22 | /* |
MACRUM | 0:119624335925 | 23 | * Instantiate the configured network interface |
MACRUM | 0:119624335925 | 24 | */ |
MACRUM | 0:119624335925 | 25 | #if MBED_CONF_APP_NETWORK_INTERFACE == WIFI_ESP8266 |
MACRUM | 0:119624335925 | 26 | #include "ESP8266Interface.h" |
MACRUM | 0:119624335925 | 27 | #define EASY_CONNECT_WIFI_TYPE "ESP8266" |
MACRUM | 0:119624335925 | 28 | |
MACRUM | 0:119624335925 | 29 | #ifdef MBED_CONF_APP_ESP8266_DEBUG |
MACRUM | 0:119624335925 | 30 | ESP8266Interface wifi(MBED_CONF_EASY_CONNECT_WIFI_ESP8266_TX, MBED_CONF_EASY_CONNECT_WIFI_ESP8266_RX, MBED_CONF_EASY_CONNECT_WIFI_ESP8266_DEBUG); |
MACRUM | 0:119624335925 | 31 | #else |
MACRUM | 0:119624335925 | 32 | ESP8266Interface wifi(MBED_CONF_EASY_CONNECT_WIFI_ESP8266_TX, MBED_CONF_EASY_CONNECT_WIFI_ESP8266_RX); |
MACRUM | 0:119624335925 | 33 | #endif |
MACRUM | 0:119624335925 | 34 | |
MACRUM | 0:119624335925 | 35 | #elif MBED_CONF_APP_NETWORK_INTERFACE == WIFI_ODIN |
MACRUM | 0:119624335925 | 36 | #define EASY_CONNECT_WIFI_TYPE "Odin" |
MACRUM | 0:119624335925 | 37 | #include "OdinWiFiInterface.h" |
MACRUM | 0:119624335925 | 38 | OdinWiFiInterface wifi; |
MACRUM | 0:119624335925 | 39 | |
MACRUM | 0:119624335925 | 40 | #elif MBED_CONF_APP_NETWORK_INTERFACE == WIFI_RTW |
MACRUM | 0:119624335925 | 41 | #define EASY_CONNECT_WIFI_TYPE "RTW" |
MACRUM | 0:119624335925 | 42 | #include "RTWInterface.h" |
MACRUM | 0:119624335925 | 43 | RTWInterface wifi; |
MACRUM | 0:119624335925 | 44 | |
MACRUM | 0:119624335925 | 45 | #elif MBED_CONF_APP_NETWORK_INTERFACE == WIFI_IDW0XX1 |
MACRUM | 0:119624335925 | 46 | #include "SpwfSAInterface.h" |
MACRUM | 0:119624335925 | 47 | |
MACRUM | 0:119624335925 | 48 | #if MBED_CONF_IDW0XX1_EXPANSION_BOARD == IDW01M1 |
MACRUM | 0:119624335925 | 49 | #define EASY_CONNECT_WIFI_TYPE "IDW01M1" |
MACRUM | 0:119624335925 | 50 | SpwfSAInterface wifi(MBED_CONF_EASY_CONNECT_WIFI_IDW01M1_TX, MBED_CONF_EASY_CONNECT_WIFI_IDW01M1_RX); |
MACRUM | 0:119624335925 | 51 | #endif // MBED_CONF_IDW0XX1_EXPANSION_BOARD == IDW01M1 |
MACRUM | 0:119624335925 | 52 | |
MACRUM | 0:119624335925 | 53 | #if MBED_CONF_IDW0XX1_EXPANSION_BOARD == IDW04A1 |
MACRUM | 0:119624335925 | 54 | #define EASY_CONNECT_WIFI_TYPE "IDW04A1" |
MACRUM | 0:119624335925 | 55 | SpwfSAInterface wifi(MBED_CONF_EASY_CONNECT_WIFI_IDW04A1_TX, MBED_CONF_EASY_CONNECT_WIFI_IDW04A1_RX); |
MACRUM | 0:119624335925 | 56 | #endif // MBED_CONF_IDW0XX1_EXPANSION_BOARD == IDW04A1 |
MACRUM | 0:119624335925 | 57 | |
MACRUM | 0:119624335925 | 58 | #elif MBED_CONF_APP_NETWORK_INTERFACE == WIFI_ISM43362 |
MACRUM | 0:119624335925 | 59 | #include "ISM43362Interface.h" |
MACRUM | 0:119624335925 | 60 | #define EASY_CONNECT_WIFI_TYPE "ISM43362" |
MACRUM | 0:119624335925 | 61 | |
MACRUM | 0:119624335925 | 62 | #ifdef MBED_CONF_APP_ISM43362_DEBUG |
MACRUM | 0:119624335925 | 63 | ISM43362Interface wifi(true); |
MACRUM | 0:119624335925 | 64 | #else |
MACRUM | 0:119624335925 | 65 | ISM43362Interface wifi; |
MACRUM | 0:119624335925 | 66 | #endif |
MACRUM | 0:119624335925 | 67 | |
MACRUM | 0:119624335925 | 68 | #elif MBED_CONF_APP_NETWORK_INTERFACE == ETHERNET |
MACRUM | 0:119624335925 | 69 | #include "EthernetInterface.h" |
MACRUM | 0:119624335925 | 70 | EthernetInterface eth; |
MACRUM | 0:119624335925 | 71 | |
MACRUM | 0:119624335925 | 72 | #elif MBED_CONF_APP_NETWORK_INTERFACE == MESH_LOWPAN_ND |
MACRUM | 0:119624335925 | 73 | #define EASY_CONNECT_MESH |
MACRUM | 0:119624335925 | 74 | #include "NanostackInterface.h" |
MACRUM | 0:119624335925 | 75 | LoWPANNDInterface mesh; |
MACRUM | 0:119624335925 | 76 | |
MACRUM | 0:119624335925 | 77 | #elif MBED_CONF_APP_NETWORK_INTERFACE == MESH_THREAD |
MACRUM | 0:119624335925 | 78 | #define EASY_CONNECT_MESH |
MACRUM | 0:119624335925 | 79 | #include "NanostackInterface.h" |
MACRUM | 0:119624335925 | 80 | ThreadInterface mesh; |
MACRUM | 0:119624335925 | 81 | |
MACRUM | 0:119624335925 | 82 | #elif MBED_CONF_APP_NETWORK_INTERFACE == CELLULAR_ONBOARD |
MACRUM | 0:119624335925 | 83 | #include "OnboardCellularInterface.h" |
MACRUM | 0:119624335925 | 84 | OnboardCellularInterface cellular; |
MACRUM | 0:119624335925 | 85 | |
MACRUM | 0:119624335925 | 86 | #elif MBED_CONF_APP_NETWORK_INTERFACE == CELLULAR |
MACRUM | 0:119624335925 | 87 | #include "EasyCellularConnection.h" |
MACRUM | 0:119624335925 | 88 | EasyCellularConnection cellular; |
MACRUM | 0:119624335925 | 89 | |
MACRUM | 0:119624335925 | 90 | #elif MBED_CONF_APP_NETWORK_INTERFACE == WIFI_WIZFI310 |
MACRUM | 0:119624335925 | 91 | #include "WizFi310Interface.h" |
MACRUM | 0:119624335925 | 92 | #define EASY_CONNECT_WIFI_TYPE "WizFi310" |
MACRUM | 0:119624335925 | 93 | |
MACRUM | 0:119624335925 | 94 | #ifdef MBED_CONF_APP_WIZFI310_DEBUG |
MACRUM | 0:119624335925 | 95 | WizFi310Interface wifi(MBED_CONF_EASY_CONNECT_WIFI_WIZFI310_TX, MBED_CONF_EASY_CONNECT_WIFI_WIZFI310_RX, MBED_CONF_EASY_CONNECT_WIFI_WIZFI310_DEBUG); |
MACRUM | 0:119624335925 | 96 | #else |
MACRUM | 0:119624335925 | 97 | WizFi310Interface wifi(MBED_CONF_EASY_CONNECT_WIFI_WIZFI310_TX, MBED_CONF_EASY_CONNECT_WIFI_WIZFI310_RX); |
MACRUM | 0:119624335925 | 98 | #endif |
MACRUM | 0:119624335925 | 99 | |
MACRUM | 0:119624335925 | 100 | #elif MBED_CONF_APP_NETWORK_INTERFACE == CELLULAR_WNC14A2A |
MACRUM | 0:119624335925 | 101 | #include "WNC14A2AInterface.h" |
MACRUM | 0:119624335925 | 102 | |
MACRUM | 0:119624335925 | 103 | #if MBED_CONF_APP_WNC_DEBUG == true |
MACRUM | 0:119624335925 | 104 | #include "WNCDebug.h" |
MACRUM | 0:119624335925 | 105 | WNCDebug dbgout(stderr); |
MACRUM | 0:119624335925 | 106 | WNC14A2AInterface wnc(&dbgout); |
MACRUM | 0:119624335925 | 107 | #else |
MACRUM | 0:119624335925 | 108 | WNC14A2AInterface wnc; |
MACRUM | 0:119624335925 | 109 | #endif |
MACRUM | 0:119624335925 | 110 | |
MACRUM | 0:119624335925 | 111 | |
MACRUM | 0:119624335925 | 112 | #else |
MACRUM | 0:119624335925 | 113 | #error "No connectivity method chosen. Please add 'config.network-interfaces.value' to your mbed_app.json (see README.md for more information)." |
MACRUM | 0:119624335925 | 114 | #endif // MBED_CONF_APP_NETWORK_INTERFACE |
MACRUM | 0:119624335925 | 115 | |
MACRUM | 0:119624335925 | 116 | /* |
MACRUM | 0:119624335925 | 117 | * In case of Mesh, instantiate the configured RF PHY. |
MACRUM | 0:119624335925 | 118 | */ |
MACRUM | 0:119624335925 | 119 | #if defined (EASY_CONNECT_MESH) |
MACRUM | 0:119624335925 | 120 | #if MBED_CONF_APP_MESH_RADIO_TYPE == ATMEL |
MACRUM | 0:119624335925 | 121 | #include "NanostackRfPhyAtmel.h" |
MACRUM | 0:119624335925 | 122 | #define EASY_CONNECT_MESH_TYPE "Atmel" |
MACRUM | 0:119624335925 | 123 | NanostackRfPhyAtmel rf_phy(ATMEL_SPI_MOSI, ATMEL_SPI_MISO, ATMEL_SPI_SCLK, ATMEL_SPI_CS, |
MACRUM | 0:119624335925 | 124 | ATMEL_SPI_RST, ATMEL_SPI_SLP, ATMEL_SPI_IRQ, ATMEL_I2C_SDA, ATMEL_I2C_SCL); |
MACRUM | 0:119624335925 | 125 | |
MACRUM | 0:119624335925 | 126 | #elif MBED_CONF_APP_MESH_RADIO_TYPE == MCR20 |
MACRUM | 0:119624335925 | 127 | #include "NanostackRfPhyMcr20a.h" |
MACRUM | 0:119624335925 | 128 | #define EASY_CONNECT_MESH_TYPE "Mcr20A" |
MACRUM | 0:119624335925 | 129 | NanostackRfPhyMcr20a rf_phy(MCR20A_SPI_MOSI, MCR20A_SPI_MISO, MCR20A_SPI_SCLK, MCR20A_SPI_CS, MCR20A_SPI_RST, MCR20A_SPI_IRQ); |
MACRUM | 0:119624335925 | 130 | |
MACRUM | 0:119624335925 | 131 | #elif MBED_CONF_APP_MESH_RADIO_TYPE == SPIRIT1 |
MACRUM | 0:119624335925 | 132 | #include "NanostackRfPhySpirit1.h" |
MACRUM | 0:119624335925 | 133 | #define EASY_CONNECT_MESH_TYPE "Spirit1" |
MACRUM | 0:119624335925 | 134 | NanostackRfPhySpirit1 rf_phy(SPIRIT1_SPI_MOSI, SPIRIT1_SPI_MISO, SPIRIT1_SPI_SCLK, |
MACRUM | 0:119624335925 | 135 | SPIRIT1_DEV_IRQ, SPIRIT1_DEV_CS, SPIRIT1_DEV_SDN, SPIRIT1_BRD_LED); |
MACRUM | 0:119624335925 | 136 | |
MACRUM | 0:119624335925 | 137 | #elif MBED_CONF_APP_MESH_RADIO_TYPE == EFR32 |
MACRUM | 0:119624335925 | 138 | #include "NanostackRfPhyEfr32.h" |
MACRUM | 0:119624335925 | 139 | #define EASY_CONNECT_MESH_TYPE "EFR32" |
MACRUM | 0:119624335925 | 140 | NanostackRfPhyEfr32 rf_phy; |
MACRUM | 0:119624335925 | 141 | |
MACRUM | 0:119624335925 | 142 | #endif // MBED_CONF_APP_RADIO_TYPE |
MACRUM | 0:119624335925 | 143 | #endif // EASY_CONNECT_MESH |
MACRUM | 0:119624335925 | 144 | |
MACRUM | 0:119624335925 | 145 | #if defined (EASY_CONNECT_WIFI) |
MACRUM | 0:119624335925 | 146 | #define WIFI_SSID_MAX_LEN 32 // As per IEEE 802.11 chapter 7.3.2.1 (SSID element) |
MACRUM | 0:119624335925 | 147 | #define WIFI_PASSWORD_MAX_LEN 64 // |
MACRUM | 0:119624335925 | 148 | |
MACRUM | 0:119624335925 | 149 | char* _ssid = NULL; |
MACRUM | 0:119624335925 | 150 | char* _password = NULL; |
MACRUM | 0:119624335925 | 151 | #endif // EASY_CONNECT_WIFI |
MACRUM | 0:119624335925 | 152 | |
MACRUM | 0:119624335925 | 153 | /* \brief print_MAC - print_MAC - helper function to print out MAC address |
MACRUM | 0:119624335925 | 154 | * in: network_interface - pointer to network i/f |
MACRUM | 0:119624335925 | 155 | * bool log-messages print out logs or not |
MACRUM | 0:119624335925 | 156 | * MAC address is printed, if it can be acquired & log_messages is true. |
MACRUM | 0:119624335925 | 157 | * |
MACRUM | 0:119624335925 | 158 | */ |
MACRUM | 0:119624335925 | 159 | void print_MAC(NetworkInterface* network_interface, bool log_messages) { |
MACRUM | 0:119624335925 | 160 | #if MBED_CONF_APP_NETWORK_INTERFACE != CELLULAR_ONBOARD && MBED_CONF_APP_NETWORK_INTERFACE != CELLULAR |
MACRUM | 0:119624335925 | 161 | const char *mac_addr = network_interface->get_mac_address(); |
MACRUM | 0:119624335925 | 162 | if (mac_addr == NULL) { |
MACRUM | 0:119624335925 | 163 | if (log_messages) { |
MACRUM | 0:119624335925 | 164 | printf("[EasyConnect] ERROR - No MAC address\n"); |
MACRUM | 0:119624335925 | 165 | } |
MACRUM | 0:119624335925 | 166 | return; |
MACRUM | 0:119624335925 | 167 | } |
MACRUM | 0:119624335925 | 168 | if (log_messages) { |
MACRUM | 0:119624335925 | 169 | printf("[EasyConnect] MAC address %s\n", mac_addr); |
MACRUM | 0:119624335925 | 170 | } |
MACRUM | 0:119624335925 | 171 | #endif |
MACRUM | 0:119624335925 | 172 | } |
MACRUM | 0:119624335925 | 173 | |
MACRUM | 0:119624335925 | 174 | |
MACRUM | 0:119624335925 | 175 | |
MACRUM | 0:119624335925 | 176 | /* \brief easy_connect easy_connect() function to connect the pre-defined network bearer, |
MACRUM | 0:119624335925 | 177 | * config done via mbed_app.json (see README.md for details). |
MACRUM | 0:119624335925 | 178 | * |
MACRUM | 0:119624335925 | 179 | * IN: bool log_messages print out diagnostics or not. |
MACRUM | 0:119624335925 | 180 | */ |
MACRUM | 0:119624335925 | 181 | NetworkInterface* easy_connect(bool log_messages) { |
MACRUM | 0:119624335925 | 182 | NetworkInterface* network_interface = NULL; |
MACRUM | 0:119624335925 | 183 | int connect_success = -1; |
MACRUM | 0:119624335925 | 184 | |
MACRUM | 0:119624335925 | 185 | #if defined (EASY_CONNECT_WIFI) |
MACRUM | 0:119624335925 | 186 | // We check if the _ssid and _password have already been set (via the easy_connect() |
MACRUM | 0:119624335925 | 187 | // that takes thoses parameters or not. |
MACRUM | 0:119624335925 | 188 | // If they have not been set, use the ones we can gain from mbed_app.json. |
MACRUM | 0:119624335925 | 189 | if (_ssid == NULL) { |
MACRUM | 0:119624335925 | 190 | if(strlen(MBED_CONF_APP_WIFI_SSID) > WIFI_SSID_MAX_LEN) { |
MACRUM | 0:119624335925 | 191 | printf("ERROR - MBED_CONF_APP_WIFI_SSID is too long %d vs. %d\n", |
MACRUM | 0:119624335925 | 192 | strlen(MBED_CONF_APP_WIFI_SSID), |
MACRUM | 0:119624335925 | 193 | WIFI_SSID_MAX_LEN); |
MACRUM | 0:119624335925 | 194 | return NULL; |
MACRUM | 0:119624335925 | 195 | } |
MACRUM | 0:119624335925 | 196 | } |
MACRUM | 0:119624335925 | 197 | |
MACRUM | 0:119624335925 | 198 | if (_password == NULL) { |
MACRUM | 0:119624335925 | 199 | if(strlen(MBED_CONF_APP_WIFI_PASSWORD) > WIFI_PASSWORD_MAX_LEN) { |
MACRUM | 0:119624335925 | 200 | printf("ERROR - MBED_CONF_APP_WIFI_PASSWORD is too long %d vs. %d\n", |
MACRUM | 0:119624335925 | 201 | strlen(MBED_CONF_APP_WIFI_PASSWORD), |
MACRUM | 0:119624335925 | 202 | WIFI_PASSWORD_MAX_LEN); |
MACRUM | 0:119624335925 | 203 | return NULL; |
MACRUM | 0:119624335925 | 204 | } |
MACRUM | 0:119624335925 | 205 | } |
MACRUM | 0:119624335925 | 206 | #endif // EASY_CONNECT_WIFI |
MACRUM | 0:119624335925 | 207 | |
MACRUM | 0:119624335925 | 208 | /// This should be removed once mbedOS supports proper dual-stack |
MACRUM | 0:119624335925 | 209 | if (log_messages) { |
MACRUM | 0:119624335925 | 210 | #if defined (EASY_CONNECT_MESH) || (MBED_CONF_LWIP_IPV6_ENABLED==true) |
MACRUM | 0:119624335925 | 211 | printf("[EasyConnect] IPv6 mode\n"); |
MACRUM | 0:119624335925 | 212 | #else |
MACRUM | 0:119624335925 | 213 | printf("[EasyConnect] IPv4 mode\n"); |
MACRUM | 0:119624335925 | 214 | #endif |
MACRUM | 0:119624335925 | 215 | } |
MACRUM | 0:119624335925 | 216 | |
MACRUM | 0:119624335925 | 217 | #if defined (EASY_CONNECT_WIFI) |
MACRUM | 0:119624335925 | 218 | if (log_messages) { |
MACRUM | 0:119624335925 | 219 | printf("[EasyConnect] Using WiFi (%s) \n", EASY_CONNECT_WIFI_TYPE); |
MACRUM | 0:119624335925 | 220 | printf("[EasyConnect] Connecting to WiFi %s\n", |
MACRUM | 0:119624335925 | 221 | ((_ssid == NULL) ? MBED_CONF_APP_WIFI_SSID : _ssid) ); |
MACRUM | 0:119624335925 | 222 | } |
MACRUM | 0:119624335925 | 223 | network_interface = &wifi; |
MACRUM | 0:119624335925 | 224 | if (_ssid == NULL) { |
MACRUM | 0:119624335925 | 225 | connect_success = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, |
MACRUM | 0:119624335925 | 226 | (strlen(MBED_CONF_APP_WIFI_PASSWORD) > 1) ? NSAPI_SECURITY_WPA_WPA2 : NSAPI_SECURITY_NONE); |
MACRUM | 0:119624335925 | 227 | } |
MACRUM | 0:119624335925 | 228 | else { |
MACRUM | 0:119624335925 | 229 | connect_success = wifi.connect(_ssid, _password, (strlen(_password) > 1) ? NSAPI_SECURITY_WPA_WPA2 : NSAPI_SECURITY_NONE); |
MACRUM | 0:119624335925 | 230 | } |
MACRUM | 0:119624335925 | 231 | #elif MBED_CONF_APP_NETWORK_INTERFACE == CELLULAR_ONBOARD || MBED_CONF_APP_NETWORK_INTERFACE == CELLULAR |
MACRUM | 0:119624335925 | 232 | # ifdef MBED_CONF_APP_CELLULAR_SIM_PIN |
MACRUM | 0:119624335925 | 233 | cellular.set_sim_pin(MBED_CONF_APP_CELLULAR_SIM_PIN); |
MACRUM | 0:119624335925 | 234 | # endif |
MACRUM | 0:119624335925 | 235 | # ifdef MBED_CONF_APP_CELLULAR_APN |
MACRUM | 0:119624335925 | 236 | # ifndef MBED_CONF_APP_CELLULAR_USERNAME |
MACRUM | 0:119624335925 | 237 | # define MBED_CONF_APP_CELLULAR_USERNAME 0 |
MACRUM | 0:119624335925 | 238 | # endif |
MACRUM | 0:119624335925 | 239 | # ifndef MBED_CONF_APP_CELLULAR_PASSWORD |
MACRUM | 0:119624335925 | 240 | # define MBED_CONF_APP_CELLULAR_PASSWORD 0 |
MACRUM | 0:119624335925 | 241 | # endif |
MACRUM | 0:119624335925 | 242 | cellular.set_credentials(MBED_CONF_APP_CELLULAR_APN, MBED_CONF_APP_CELLULAR_USERNAME, MBED_CONF_APP_CELLULAR_PASSWORD); |
MACRUM | 0:119624335925 | 243 | if (log_messages) { |
MACRUM | 0:119624335925 | 244 | printf("[EasyConnect] Connecting using Cellular interface and APN %s\n", MBED_CONF_APP_CELLULAR_APN); |
MACRUM | 0:119624335925 | 245 | } |
MACRUM | 0:119624335925 | 246 | # else |
MACRUM | 0:119624335925 | 247 | if (log_messages) { |
MACRUM | 0:119624335925 | 248 | printf("[EasyConnect] Connecting using Cellular interface and default APN\n"); |
MACRUM | 0:119624335925 | 249 | } |
MACRUM | 0:119624335925 | 250 | # endif |
MACRUM | 0:119624335925 | 251 | connect_success = cellular.connect(); |
MACRUM | 0:119624335925 | 252 | network_interface = &cellular; |
MACRUM | 0:119624335925 | 253 | |
MACRUM | 0:119624335925 | 254 | #elif MBED_CONF_APP_NETWORK_INTERFACE == CELLULAR_WNC14A2A |
MACRUM | 0:119624335925 | 255 | if (log_messages) { |
MACRUM | 0:119624335925 | 256 | printf("[EasyConnect] Using WNC14A2A\n"); |
MACRUM | 0:119624335925 | 257 | } |
MACRUM | 0:119624335925 | 258 | # if MBED_CONF_APP_WNC_DEBUG == true |
MACRUM | 0:119624335925 | 259 | printf("[EasyConnect] With WNC14A2A debug output set to 0x%02X\n",MBED_CONF_APP_WNC_DEBUG_SETTING); |
MACRUM | 0:119624335925 | 260 | wnc.doDebug(MBED_CONF_APP_WNC_DEBUG_SETTING); |
MACRUM | 0:119624335925 | 261 | # endif |
MACRUM | 0:119624335925 | 262 | network_interface = &wnc; |
MACRUM | 0:119624335925 | 263 | connect_success = wnc.connect(); |
MACRUM | 0:119624335925 | 264 | |
MACRUM | 0:119624335925 | 265 | #elif MBED_CONF_APP_NETWORK_INTERFACE == ETHERNET |
MACRUM | 0:119624335925 | 266 | if (log_messages) { |
MACRUM | 0:119624335925 | 267 | printf("[EasyConnect] Using Ethernet\n"); |
MACRUM | 0:119624335925 | 268 | } |
MACRUM | 0:119624335925 | 269 | network_interface = ð |
MACRUM | 0:119624335925 | 270 | connect_success = eth.connect(); |
MACRUM | 0:119624335925 | 271 | #endif |
MACRUM | 0:119624335925 | 272 | |
MACRUM | 0:119624335925 | 273 | #ifdef EASY_CONNECT_MESH |
MACRUM | 0:119624335925 | 274 | if (log_messages) { |
MACRUM | 0:119624335925 | 275 | printf("[EasyConnect] Using Mesh (%s)\n", EASY_CONNECT_MESH_TYPE); |
MACRUM | 0:119624335925 | 276 | printf("[EasyConnect] Connecting to Mesh...\n"); |
MACRUM | 0:119624335925 | 277 | } |
MACRUM | 0:119624335925 | 278 | network_interface = &mesh; |
MACRUM | 0:119624335925 | 279 | mesh.initialize(&rf_phy); |
MACRUM | 0:119624335925 | 280 | connect_success = mesh.connect(); |
MACRUM | 0:119624335925 | 281 | #endif |
MACRUM | 0:119624335925 | 282 | if(connect_success == 0) { |
MACRUM | 0:119624335925 | 283 | if (log_messages) { |
MACRUM | 0:119624335925 | 284 | printf("[EasyConnect] Connected to Network successfully\n"); |
MACRUM | 0:119624335925 | 285 | print_MAC(network_interface, log_messages); |
MACRUM | 0:119624335925 | 286 | } |
MACRUM | 0:119624335925 | 287 | } else { |
MACRUM | 0:119624335925 | 288 | if (log_messages) { |
MACRUM | 0:119624335925 | 289 | print_MAC(network_interface, log_messages); |
MACRUM | 0:119624335925 | 290 | printf("[EasyConnect] Connection to Network Failed %d!\n", connect_success); |
MACRUM | 0:119624335925 | 291 | } |
MACRUM | 0:119624335925 | 292 | return NULL; |
MACRUM | 0:119624335925 | 293 | } |
MACRUM | 0:119624335925 | 294 | const char *ip_addr = network_interface->get_ip_address(); |
MACRUM | 0:119624335925 | 295 | if (ip_addr == NULL) { |
MACRUM | 0:119624335925 | 296 | if (log_messages) { |
MACRUM | 0:119624335925 | 297 | printf("[EasyConnect] ERROR - No IP address\n"); |
MACRUM | 0:119624335925 | 298 | } |
MACRUM | 0:119624335925 | 299 | return NULL; |
MACRUM | 0:119624335925 | 300 | } |
MACRUM | 0:119624335925 | 301 | |
MACRUM | 0:119624335925 | 302 | if (log_messages) { |
MACRUM | 0:119624335925 | 303 | printf("[EasyConnect] IP address %s\n", ip_addr); |
MACRUM | 0:119624335925 | 304 | } |
MACRUM | 0:119624335925 | 305 | return network_interface; |
MACRUM | 0:119624335925 | 306 | } |
MACRUM | 0:119624335925 | 307 | |
MACRUM | 0:119624335925 | 308 | /* \brief easy_connect - easy_connect function to connect the pre-defined network bearer, |
MACRUM | 0:119624335925 | 309 | * config done via mbed_app.json (see README.md for details). |
MACRUM | 0:119624335925 | 310 | * This version is just a helper version and uses the easy_connect() with |
MACRUM | 0:119624335925 | 311 | * one parameters to do it's job. |
MACRUM | 0:119624335925 | 312 | * IN: bool log_messages print out diagnostics or not. |
MACRUM | 0:119624335925 | 313 | * char* WiFiSSID WiFi SSID - pointer to WiFi SSID, but if it is NULL |
MACRUM | 0:119624335925 | 314 | * then MBED_CONF_APP_WIFI_SSID will be used |
MACRUM | 0:119624335925 | 315 | * char* WiFiPassword WiFi Password - pointer to WiFI password, but if it's NULL |
MACRUM | 0:119624335925 | 316 | * then MBED_CONF_APP_WIFI_PASSWORD will be used |
MACRUM | 0:119624335925 | 317 | */ |
MACRUM | 0:119624335925 | 318 | |
MACRUM | 0:119624335925 | 319 | NetworkInterface* easy_connect(bool log_messages, |
MACRUM | 0:119624335925 | 320 | char* WiFiSSID, |
MACRUM | 0:119624335925 | 321 | char* WiFiPassword ) { |
MACRUM | 0:119624335925 | 322 | |
MACRUM | 0:119624335925 | 323 | // This functionality only makes sense when using WiFi |
MACRUM | 0:119624335925 | 324 | #if defined (EASY_CONNECT_WIFI) |
MACRUM | 0:119624335925 | 325 | // We essentially want to populate the _ssid and _password and then call easy_connect() again. |
MACRUM | 0:119624335925 | 326 | if (WiFiSSID != NULL) { |
MACRUM | 0:119624335925 | 327 | if(strlen(WiFiSSID) > WIFI_SSID_MAX_LEN) { |
MACRUM | 0:119624335925 | 328 | printf("ERROR - WiFi SSID is too long - %d vs %d.\n", strlen(WiFiSSID), WIFI_SSID_MAX_LEN); |
MACRUM | 0:119624335925 | 329 | return NULL; |
MACRUM | 0:119624335925 | 330 | } |
MACRUM | 0:119624335925 | 331 | _ssid = WiFiSSID; |
MACRUM | 0:119624335925 | 332 | } |
MACRUM | 0:119624335925 | 333 | |
MACRUM | 0:119624335925 | 334 | if (WiFiPassword != NULL) { |
MACRUM | 0:119624335925 | 335 | if(strlen(WiFiPassword) > WIFI_PASSWORD_MAX_LEN) { |
MACRUM | 0:119624335925 | 336 | printf("ERROR - WiFi Password is too long - %d vs %d\n", strlen(WiFiPassword), WIFI_PASSWORD_MAX_LEN); |
MACRUM | 0:119624335925 | 337 | return NULL; |
MACRUM | 0:119624335925 | 338 | } |
MACRUM | 0:119624335925 | 339 | _password = WiFiPassword; |
MACRUM | 0:119624335925 | 340 | } |
MACRUM | 0:119624335925 | 341 | #endif // EASY_CONNECT_WIFI |
MACRUM | 0:119624335925 | 342 | return easy_connect(log_messages); |
MACRUM | 0:119624335925 | 343 | } |
MACRUM | 0:119624335925 | 344 | |
MACRUM | 0:119624335925 | 345 | /* \brief easy_get_netif - easy_connect function to get pointer to network interface |
MACRUM | 0:119624335925 | 346 | * without connecting to it. |
MACRUM | 0:119624335925 | 347 | * |
MACRUM | 0:119624335925 | 348 | * IN: bool log_messages print out diagnostics or not. |
MACRUM | 0:119624335925 | 349 | */ |
MACRUM | 0:119624335925 | 350 | NetworkInterface* easy_get_netif(bool log_messages) { |
MACRUM | 0:119624335925 | 351 | #if defined (EASY_CONNECT_WIFI) |
MACRUM | 0:119624335925 | 352 | if (log_messages) { |
MACRUM | 0:119624335925 | 353 | printf("[EasyConnect] WiFi: %s\n", EASY_CONNECT_WIFI_TYPE); |
MACRUM | 0:119624335925 | 354 | } |
MACRUM | 0:119624335925 | 355 | return &wifi; |
MACRUM | 0:119624335925 | 356 | |
MACRUM | 0:119624335925 | 357 | #elif MBED_CONF_APP_NETWORK_INTERFACE == ETHERNET |
MACRUM | 0:119624335925 | 358 | if (log_messages) { |
MACRUM | 0:119624335925 | 359 | printf("[EasyConnect] Ethernet\n"); |
MACRUM | 0:119624335925 | 360 | } |
MACRUM | 0:119624335925 | 361 | return ð |
MACRUM | 0:119624335925 | 362 | |
MACRUM | 0:119624335925 | 363 | #elif defined (EASY_CONNECT_MESH) |
MACRUM | 0:119624335925 | 364 | if (log_messages) { |
MACRUM | 0:119624335925 | 365 | printf("[EasyConnect] Mesh : %s\n", EASY_CONNECT_MESH_TYPE); |
MACRUM | 0:119624335925 | 366 | } |
MACRUM | 0:119624335925 | 367 | return &mesh; |
MACRUM | 0:119624335925 | 368 | |
MACRUM | 0:119624335925 | 369 | #elif MBED_CONF_APP_NETWORK_INTERFACE == CELLULAR_ONBOARD || MBED_CONF_APP_NETWORK_INTERFACE == CELLULAR |
MACRUM | 0:119624335925 | 370 | if (log_messages) { |
MACRUM | 0:119624335925 | 371 | printf("[EasyConnect] Cellular\n"); |
MACRUM | 0:119624335925 | 372 | } |
MACRUM | 0:119624335925 | 373 | return &cellular; |
MACRUM | 0:119624335925 | 374 | |
MACRUM | 0:119624335925 | 375 | #elif MBED_CONF_APP_NETWORK_INTERFACE == CELLULAR_WNC14A2A |
MACRUM | 0:119624335925 | 376 | if (log_messages) { |
MACRUM | 0:119624335925 | 377 | printf("[EasyConnect] WNC14A2A\n"); |
MACRUM | 0:119624335925 | 378 | } |
MACRUM | 0:119624335925 | 379 | return &wnc; |
MACRUM | 0:119624335925 | 380 | #endif |
MACRUM | 0:119624335925 | 381 | } |
MACRUM | 0:119624335925 | 382 | |
MACRUM | 0:119624335925 | 383 | /* \brief easy_get_wifi - easy_connect function to get pointer to Wifi interface |
MACRUM | 0:119624335925 | 384 | * without connecting to it. You would want this 1st so that |
MACRUM | 0:119624335925 | 385 | * you can scan the APNs, choose the right one and then connect. |
MACRUM | 0:119624335925 | 386 | * |
MACRUM | 0:119624335925 | 387 | * IN: bool log_messages print out diagnostics or not. |
MACRUM | 0:119624335925 | 388 | */ |
MACRUM | 0:119624335925 | 389 | WiFiInterface* easy_get_wifi(bool log_messages) { |
MACRUM | 0:119624335925 | 390 | #if defined (EASY_CONNECT_WIFI) |
MACRUM | 0:119624335925 | 391 | if (log_messages) { |
MACRUM | 0:119624335925 | 392 | printf("[EasyConnect] WiFi: %s\n", EASY_CONNECT_WIFI_TYPE); |
MACRUM | 0:119624335925 | 393 | } |
MACRUM | 0:119624335925 | 394 | return &wifi; |
MACRUM | 0:119624335925 | 395 | #else |
MACRUM | 0:119624335925 | 396 | if (log_messages) { |
MACRUM | 0:119624335925 | 397 | printf("[EasyConnect] ERROR - Wifi not in use, can not return WifiInterface.\n"); |
MACRUM | 0:119624335925 | 398 | } |
MACRUM | 0:119624335925 | 399 | return NULL; |
MACRUM | 0:119624335925 | 400 | #endif |
MACRUM | 0:119624335925 | 401 | } |