mbed-os5 only for TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Committer:
kenjiArai
Date:
Tue Dec 31 06:02:27 2019 +0000
Revision:
1:9db0e321a9f4
Parent:
0:5b88d5760320
updated based on mbed-os5.15.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:5b88d5760320 1 /* Network interface defaults
kenjiArai 0:5b88d5760320 2 * Copyright (c) 2018 ARM Limited
kenjiArai 0:5b88d5760320 3 *
kenjiArai 0:5b88d5760320 4 * Licensed under the Apache License, Version 2.0 (the "License");
kenjiArai 0:5b88d5760320 5 * you may not use this file except in compliance with the License.
kenjiArai 0:5b88d5760320 6 * You may obtain a copy of the License at
kenjiArai 0:5b88d5760320 7 *
kenjiArai 0:5b88d5760320 8 * http://www.apache.org/licenses/LICENSE-2.0
kenjiArai 0:5b88d5760320 9 *
kenjiArai 0:5b88d5760320 10 * Unless required by applicable law or agreed to in writing, software
kenjiArai 0:5b88d5760320 11 * distributed under the License is distributed on an "AS IS" BASIS,
kenjiArai 0:5b88d5760320 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kenjiArai 0:5b88d5760320 13 * See the License for the specific language governing permissions and
kenjiArai 0:5b88d5760320 14 * limitations under the License.
kenjiArai 0:5b88d5760320 15 */
kenjiArai 0:5b88d5760320 16
kenjiArai 0:5b88d5760320 17 #include "netsocket/NetworkInterface.h"
kenjiArai 0:5b88d5760320 18
kenjiArai 0:5b88d5760320 19 #include "EthInterface.h"
kenjiArai 0:5b88d5760320 20 #include "WiFiInterface.h"
kenjiArai 0:5b88d5760320 21 #include "CellularInterface.h"
kenjiArai 0:5b88d5760320 22 #include "MeshInterface.h"
kenjiArai 0:5b88d5760320 23
kenjiArai 0:5b88d5760320 24 /* Weak default instance static classes for the various abstract classes.
kenjiArai 0:5b88d5760320 25 * Applications can override these.
kenjiArai 0:5b88d5760320 26 */
kenjiArai 0:5b88d5760320 27
kenjiArai 0:5b88d5760320 28 MBED_WEAK EthInterface *EthInterface::get_default_instance()
kenjiArai 0:5b88d5760320 29 {
kenjiArai 0:5b88d5760320 30 return get_target_default_instance();
kenjiArai 0:5b88d5760320 31 }
kenjiArai 0:5b88d5760320 32
kenjiArai 0:5b88d5760320 33 MBED_WEAK WiFiInterface *WiFiInterface::get_default_instance()
kenjiArai 0:5b88d5760320 34 {
kenjiArai 0:5b88d5760320 35 return get_target_default_instance();
kenjiArai 0:5b88d5760320 36 }
kenjiArai 0:5b88d5760320 37
kenjiArai 0:5b88d5760320 38 MBED_WEAK MeshInterface *MeshInterface::get_default_instance()
kenjiArai 0:5b88d5760320 39 {
kenjiArai 0:5b88d5760320 40 return get_target_default_instance();
kenjiArai 0:5b88d5760320 41 }
kenjiArai 0:5b88d5760320 42
kenjiArai 0:5b88d5760320 43 MBED_WEAK CellularInterface *CellularInterface::get_default_instance()
kenjiArai 0:5b88d5760320 44 {
kenjiArai 0:5b88d5760320 45 return get_target_default_instance();
kenjiArai 0:5b88d5760320 46 }
kenjiArai 0:5b88d5760320 47
kenjiArai 0:5b88d5760320 48 /* For other types, we can provide a reasonable get_target_default_instance
kenjiArai 0:5b88d5760320 49 * in some cases. This is done in EthernetInterface.cpp, mbed-mesh-api and
kenjiArai 0:5b88d5760320 50 * OnboardCellularInterface.cpp. We have no implementation for WiFi, so a
kenjiArai 0:5b88d5760320 51 * default empty one lives here.
kenjiArai 0:5b88d5760320 52 */
kenjiArai 0:5b88d5760320 53
kenjiArai 0:5b88d5760320 54 MBED_WEAK WiFiInterface *WiFiInterface::get_target_default_instance()
kenjiArai 0:5b88d5760320 55 {
kenjiArai 0:5b88d5760320 56 return NULL;
kenjiArai 0:5b88d5760320 57 }
kenjiArai 0:5b88d5760320 58
kenjiArai 0:5b88d5760320 59 /* The top-level get_default_instance() call. Weak for application override. */
kenjiArai 0:5b88d5760320 60 MBED_WEAK NetworkInterface *NetworkInterface::get_default_instance()
kenjiArai 0:5b88d5760320 61 {
kenjiArai 0:5b88d5760320 62 return get_target_default_instance();
kenjiArai 0:5b88d5760320 63 }
kenjiArai 0:5b88d5760320 64
kenjiArai 0:5b88d5760320 65
kenjiArai 0:5b88d5760320 66 /* Helpers to set default parameters - used by NetworkInterface::get_default_instance,
kenjiArai 0:5b88d5760320 67 * but exposed for apps which want to get these defaults after requesting a specific type.
kenjiArai 0:5b88d5760320 68 */
kenjiArai 0:5b88d5760320 69 void NetworkInterface::set_default_parameters()
kenjiArai 0:5b88d5760320 70 {
kenjiArai 0:5b88d5760320 71
kenjiArai 0:5b88d5760320 72 }
kenjiArai 0:5b88d5760320 73
kenjiArai 0:5b88d5760320 74 void WiFiInterface::set_default_parameters()
kenjiArai 0:5b88d5760320 75 {
kenjiArai 0:5b88d5760320 76 #ifdef MBED_CONF_NSAPI_DEFAULT_WIFI_SSID
kenjiArai 0:5b88d5760320 77 #ifndef MBED_CONF_NSAPI_DEFAULT_WIFI_PASSWORD
kenjiArai 0:5b88d5760320 78 #define MBED_CONF_NSAPI_DEFAULT_WIFI_PASSWORD NULL
kenjiArai 0:5b88d5760320 79 #endif
kenjiArai 0:5b88d5760320 80 #ifndef MBED_CONF_NSAPI_DEFAULT_WIFI_SECURITY
kenjiArai 0:5b88d5760320 81 #define MBED_CONF_NSAPI_DEFAULT_WIFI_SECURITY NONE
kenjiArai 0:5b88d5760320 82 #endif
kenjiArai 0:5b88d5760320 83 #define concat_(x,y) x##y
kenjiArai 0:5b88d5760320 84 #define concat(x,y) concat_(x,y)
kenjiArai 0:5b88d5760320 85 #define SECURITY concat(NSAPI_SECURITY_,MBED_CONF_NSAPI_DEFAULT_WIFI_SECURITY)
kenjiArai 0:5b88d5760320 86 set_credentials(MBED_CONF_NSAPI_DEFAULT_WIFI_SSID, MBED_CONF_NSAPI_DEFAULT_WIFI_PASSWORD, SECURITY);
kenjiArai 0:5b88d5760320 87 #endif
kenjiArai 0:5b88d5760320 88 }
kenjiArai 0:5b88d5760320 89
kenjiArai 0:5b88d5760320 90 void CellularInterface::set_default_parameters()
kenjiArai 0:5b88d5760320 91 {
kenjiArai 0:5b88d5760320 92 /* CellularInterface is expected to attempt to work without any parameters - we
kenjiArai 0:5b88d5760320 93 * will try, at least.
kenjiArai 0:5b88d5760320 94 */
kenjiArai 0:5b88d5760320 95 #ifdef MBED_CONF_NSAPI_DEFAULT_CELLULAR_APN
kenjiArai 0:5b88d5760320 96 #ifndef MBED_CONF_NSAPI_DEFAULT_CELLULAR_USERNAME
kenjiArai 0:5b88d5760320 97 #define MBED_CONF_NSAPI_DEFAULT_CELLULAR_USERNAME NULL
kenjiArai 0:5b88d5760320 98 #endif
kenjiArai 0:5b88d5760320 99 #ifndef MBED_CONF_NSAPI_DEFAULT_CELLULAR_PASSWORD
kenjiArai 0:5b88d5760320 100 #define MBED_CONF_NSAPI_DEFAULT_CELLULAR_PASSWORD NULL
kenjiArai 0:5b88d5760320 101 #endif
kenjiArai 0:5b88d5760320 102 set_credentials(MBED_CONF_NSAPI_DEFAULT_CELLULAR_APN, MBED_CONF_NSAPI_DEFAULT_CELLULAR_USERNAME, MBED_CONF_NSAPI_DEFAULT_CELLULAR_PASSWORD);
kenjiArai 0:5b88d5760320 103 #endif
kenjiArai 0:5b88d5760320 104 #ifdef MBED_CONF_NSAPI_DEFAULT_CELLULAR_SIM_PIN
kenjiArai 0:5b88d5760320 105 set_sim_pin(MBED_CONF_NSAPI_DEFAULT_CELLULAR_SIM_PIN);
kenjiArai 0:5b88d5760320 106 #endif
kenjiArai 0:5b88d5760320 107 #ifdef MBED_CONF_NSAPI_DEFAULT_CELLULAR_PLMN
kenjiArai 0:5b88d5760320 108 set_plmn(MBED_CONF_NSAPI_DEFAULT_CELLULAR_PLMN);
kenjiArai 0:5b88d5760320 109 #endif
kenjiArai 0:5b88d5760320 110 }
kenjiArai 0:5b88d5760320 111
kenjiArai 0:5b88d5760320 112 /* Finally the dispatch from the JSON default interface type to the specific
kenjiArai 0:5b88d5760320 113 * subclasses. It's our job to configure - the default NetworkInterface is
kenjiArai 0:5b88d5760320 114 * preconfigured - the specific subtypes' defaults are not (necessarily).
kenjiArai 0:5b88d5760320 115 */
kenjiArai 0:5b88d5760320 116 #define ETHERNET 1
kenjiArai 0:5b88d5760320 117 #define WIFI 2
kenjiArai 0:5b88d5760320 118 #define MESH 3
kenjiArai 0:5b88d5760320 119 #define CELLULAR 4
kenjiArai 0:5b88d5760320 120 #if MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE == ETHERNET
kenjiArai 0:5b88d5760320 121 MBED_WEAK NetworkInterface *NetworkInterface::get_target_default_instance()
kenjiArai 0:5b88d5760320 122 {
kenjiArai 0:5b88d5760320 123 return EthInterface::get_default_instance();
kenjiArai 0:5b88d5760320 124 }
kenjiArai 0:5b88d5760320 125 #elif MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE == WIFI
kenjiArai 0:5b88d5760320 126 MBED_WEAK NetworkInterface *NetworkInterface::get_target_default_instance()
kenjiArai 0:5b88d5760320 127 {
kenjiArai 0:5b88d5760320 128 /* WiFi is not expected to work unless we have configuration parameters.
kenjiArai 0:5b88d5760320 129 * We do not hook up to WifiInterface::get_default_instance() unless
kenjiArai 0:5b88d5760320 130 * we have at least an access point name.
kenjiArai 0:5b88d5760320 131 */
kenjiArai 0:5b88d5760320 132 #ifdef MBED_CONF_NSAPI_DEFAULT_WIFI_SSID
kenjiArai 0:5b88d5760320 133 WiFiInterface *wifi = WiFiInterface::get_default_instance();
kenjiArai 0:5b88d5760320 134 if (!wifi) {
kenjiArai 0:5b88d5760320 135 return NULL;
kenjiArai 0:5b88d5760320 136 }
kenjiArai 0:5b88d5760320 137 wifi->set_default_parameters();
kenjiArai 0:5b88d5760320 138 return wifi;
kenjiArai 0:5b88d5760320 139 #else
kenjiArai 0:5b88d5760320 140 return NULL;
kenjiArai 0:5b88d5760320 141 #endif
kenjiArai 0:5b88d5760320 142 }
kenjiArai 0:5b88d5760320 143 #elif MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE == MESH
kenjiArai 0:5b88d5760320 144 MBED_WEAK NetworkInterface *NetworkInterface::get_target_default_instance()
kenjiArai 0:5b88d5760320 145 {
kenjiArai 0:5b88d5760320 146 return MeshInterface::get_default_instance();
kenjiArai 0:5b88d5760320 147 }
kenjiArai 0:5b88d5760320 148 #elif MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE == CELLULAR
kenjiArai 0:5b88d5760320 149 MBED_WEAK NetworkInterface *NetworkInterface::get_target_default_instance()
kenjiArai 0:5b88d5760320 150 {
kenjiArai 0:5b88d5760320 151 CellularInterface *cellular = CellularInterface::get_default_instance();
kenjiArai 0:5b88d5760320 152 if (!cellular) {
kenjiArai 0:5b88d5760320 153 return NULL;
kenjiArai 0:5b88d5760320 154 }
kenjiArai 0:5b88d5760320 155 cellular->set_default_parameters();
kenjiArai 0:5b88d5760320 156 return cellular;
kenjiArai 0:5b88d5760320 157 }
kenjiArai 0:5b88d5760320 158 #elif defined(MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE)
kenjiArai 0:5b88d5760320 159 /* If anyone invents a new JSON value, they must have their own default weak
kenjiArai 0:5b88d5760320 160 * implementation.
kenjiArai 0:5b88d5760320 161 */
kenjiArai 0:5b88d5760320 162 #else
kenjiArai 0:5b88d5760320 163 /* When the default type is null */
kenjiArai 0:5b88d5760320 164 MBED_WEAK NetworkInterface *NetworkInterface::get_target_default_instance()
kenjiArai 0:5b88d5760320 165 {
kenjiArai 0:5b88d5760320 166 return NULL;
kenjiArai 0:5b88d5760320 167 }
kenjiArai 0:5b88d5760320 168 #endif