Mbed Cloud example program for workshop in W27 2018.

Dependencies:   MMA7660 LM75B

Committer:
MACRUM
Date:
Sat Jun 30 01:40:30 2018 +0000
Revision:
0:119624335925
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew 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 }