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 /* Copyright (c) 2019 ARM Limited
kenjiArai 0:5b88d5760320 2 * SPDX-License-Identifier: Apache-2.0
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 #ifndef CELLULAR_INTERFACE_H_
kenjiArai 0:5b88d5760320 18 #define CELLULAR_INTERFACE_H_
kenjiArai 0:5b88d5760320 19
kenjiArai 0:5b88d5760320 20 #include "netsocket/NetworkInterface.h"
kenjiArai 0:5b88d5760320 21
kenjiArai 0:5b88d5760320 22 /**
kenjiArai 0:5b88d5760320 23 * @addtogroup cellular
kenjiArai 0:5b88d5760320 24 * @{
kenjiArai 0:5b88d5760320 25 */
kenjiArai 0:5b88d5760320 26
kenjiArai 0:5b88d5760320 27 /** Common interface that is shared between cellular interfaces.
kenjiArai 0:5b88d5760320 28 */
kenjiArai 0:5b88d5760320 29 class CellularInterface: public NetworkInterface {
kenjiArai 0:5b88d5760320 30
kenjiArai 0:5b88d5760320 31 public:
kenjiArai 0:5b88d5760320 32 /** Get the default cellular interface.
kenjiArai 0:5b88d5760320 33 *
kenjiArai 0:5b88d5760320 34 * This is provided as a weak method so applications can override.
kenjiArai 0:5b88d5760320 35 * Default behavior is to get the target's default interface, if
kenjiArai 0:5b88d5760320 36 * any.
kenjiArai 0:5b88d5760320 37 *
kenjiArai 0:5b88d5760320 38 * @return pointer to interface, if any.
kenjiArai 0:5b88d5760320 39 */
kenjiArai 0:5b88d5760320 40 static CellularInterface *get_default_instance();
kenjiArai 0:5b88d5760320 41
kenjiArai 0:5b88d5760320 42 /** Set the cellular network credentials.
kenjiArai 0:5b88d5760320 43 *
kenjiArai 0:5b88d5760320 44 * Please check documentation of connect() for default behavior of APN settings.
kenjiArai 0:5b88d5760320 45 *
kenjiArai 0:5b88d5760320 46 * @param apn Access point name.
kenjiArai 0:5b88d5760320 47 * @param uname Username (optional).
kenjiArai 0:5b88d5760320 48 * @param pwd Password (optional).
kenjiArai 0:5b88d5760320 49 */
kenjiArai 0:5b88d5760320 50 virtual void set_credentials(const char *apn, const char *uname = 0,
kenjiArai 0:5b88d5760320 51 const char *pwd = 0) = 0;
kenjiArai 0:5b88d5760320 52
kenjiArai 0:5b88d5760320 53 /** Set the plmn. PLMN controls to what network device registers.
kenjiArai 0:5b88d5760320 54 *
kenjiArai 0:5b88d5760320 55 * @param plmn user to force what network to register.
kenjiArai 0:5b88d5760320 56 */
kenjiArai 0:5b88d5760320 57 virtual void set_plmn(const char *plmn) = 0;
kenjiArai 0:5b88d5760320 58
kenjiArai 0:5b88d5760320 59 /** Set the PIN code for SIM card.
kenjiArai 0:5b88d5760320 60 *
kenjiArai 0:5b88d5760320 61 * @param sim_pin PIN for the SIM card.
kenjiArai 0:5b88d5760320 62 */
kenjiArai 0:5b88d5760320 63 virtual void set_sim_pin(const char *sim_pin) = 0;
kenjiArai 0:5b88d5760320 64
kenjiArai 0:5b88d5760320 65 /** Attempt to connect to a cellular network with a PIN and credentials.
kenjiArai 0:5b88d5760320 66 *
kenjiArai 0:5b88d5760320 67 * @param sim_pin PIN for the SIM card.
kenjiArai 0:5b88d5760320 68 * @param apn Access point name (optional).
kenjiArai 0:5b88d5760320 69 * @param uname Username (optional).
kenjiArai 0:5b88d5760320 70 * @param pwd Password (optional).
kenjiArai 0:5b88d5760320 71 * @return NSAPI_ERROR_OK on success, or negative error code on failure.
kenjiArai 0:5b88d5760320 72 */
kenjiArai 0:5b88d5760320 73 virtual nsapi_error_t connect(const char *sim_pin, const char *apn = 0,
kenjiArai 0:5b88d5760320 74 const char *uname = 0,
kenjiArai 0:5b88d5760320 75 const char *pwd = 0) = 0;
kenjiArai 0:5b88d5760320 76
kenjiArai 0:5b88d5760320 77 /** Attempt to connect to a cellular network.
kenjiArai 0:5b88d5760320 78 *
kenjiArai 0:5b88d5760320 79 * If the SIM requires a PIN, and it is invalid or not set, NSAPI_ERROR_AUTH_ERROR is returned.
kenjiArai 0:5b88d5760320 80 *
kenjiArai 0:5b88d5760320 81 * @return NSAPI_ERROR_OK on success, or negative error code on failure.
kenjiArai 0:5b88d5760320 82 */
kenjiArai 0:5b88d5760320 83 virtual nsapi_error_t connect() = 0;
kenjiArai 0:5b88d5760320 84
kenjiArai 0:5b88d5760320 85 /** Stop the interface.
kenjiArai 0:5b88d5760320 86 *
kenjiArai 0:5b88d5760320 87 * @return NSAPI_ERROR_OK on success, or error code on failure.
kenjiArai 0:5b88d5760320 88 */
kenjiArai 0:5b88d5760320 89 virtual nsapi_error_t disconnect() = 0;
kenjiArai 0:5b88d5760320 90
kenjiArai 0:5b88d5760320 91 /** Check if the connection is currently established.
kenjiArai 0:5b88d5760320 92 *
kenjiArai 0:5b88d5760320 93 * @return `true` if the cellular module have successfully acquired a carrier and is
kenjiArai 0:5b88d5760320 94 * connected to an external packet data network using PPP, `false` otherwise.
kenjiArai 0:5b88d5760320 95 */
kenjiArai 0:5b88d5760320 96 virtual bool is_connected() = 0;
kenjiArai 0:5b88d5760320 97
kenjiArai 1:9db0e321a9f4 98 /** @copydoc NetworkInterface::get_ip_address */
kenjiArai 1:9db0e321a9f4 99 virtual nsapi_error_t get_ip_address(SocketAddress *address) = 0;
kenjiArai 1:9db0e321a9f4 100
kenjiArai 1:9db0e321a9f4 101 MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated")
kenjiArai 0:5b88d5760320 102 virtual const char *get_ip_address() = 0;
kenjiArai 0:5b88d5760320 103
kenjiArai 1:9db0e321a9f4 104 /** @copydoc NetworkInterface::get_netmask */
kenjiArai 1:9db0e321a9f4 105 virtual nsapi_error_t get_netmask(SocketAddress *address) = 0;
kenjiArai 1:9db0e321a9f4 106
kenjiArai 1:9db0e321a9f4 107 MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated")
kenjiArai 0:5b88d5760320 108 virtual const char *get_netmask() = 0;
kenjiArai 0:5b88d5760320 109
kenjiArai 1:9db0e321a9f4 110 /** @copydoc NetworkInterface::get_gateway */
kenjiArai 1:9db0e321a9f4 111 virtual nsapi_error_t get_gateway(SocketAddress *address) = 0;
kenjiArai 0:5b88d5760320 112
kenjiArai 1:9db0e321a9f4 113 MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated")
kenjiArai 1:9db0e321a9f4 114 virtual const char *get_gateway() = 0;
kenjiArai 0:5b88d5760320 115
kenjiArai 0:5b88d5760320 116 /** @copydoc NetworkInterface::cellularInterface
kenjiArai 0:5b88d5760320 117 */
kenjiArai 0:5b88d5760320 118 virtual CellularInterface *cellularInterface()
kenjiArai 0:5b88d5760320 119 {
kenjiArai 0:5b88d5760320 120 return this;
kenjiArai 0:5b88d5760320 121 }
kenjiArai 0:5b88d5760320 122
kenjiArai 0:5b88d5760320 123 #if !defined(DOXYGEN_ONLY)
kenjiArai 0:5b88d5760320 124
kenjiArai 0:5b88d5760320 125 protected:
kenjiArai 0:5b88d5760320 126 /** Get the target's default cellular interface.
kenjiArai 0:5b88d5760320 127 *
kenjiArai 0:5b88d5760320 128 * This is provided as a weak method so targets can override. The
kenjiArai 0:5b88d5760320 129 * default implementation configures and returns the OnBoardModemInterface,
kenjiArai 0:5b88d5760320 130 * if available.
kenjiArai 0:5b88d5760320 131 *
kenjiArai 0:5b88d5760320 132 * @return Pointer to interface, if any.
kenjiArai 0:5b88d5760320 133 */
kenjiArai 0:5b88d5760320 134 static CellularInterface *get_target_default_instance();
kenjiArai 0:5b88d5760320 135
kenjiArai 0:5b88d5760320 136 #endif //!defined(DOXYGEN_ONLY)
kenjiArai 0:5b88d5760320 137
kenjiArai 0:5b88d5760320 138 public:
kenjiArai 0:5b88d5760320 139 /** Set default parameters on a cellular interface.
kenjiArai 0:5b88d5760320 140 *
kenjiArai 0:5b88d5760320 141 * A cellular interface instantiated directly or using
kenjiArai 0:5b88d5760320 142 * CellularInterface::get_default_instance() is initially unconfigured.
kenjiArai 0:5b88d5760320 143 * This call can be used to set the default parameters that would
kenjiArai 0:5b88d5760320 144 * have been set if the interface had been requested using
kenjiArai 0:5b88d5760320 145 * NetworkInterface::get_default_instance() (see nsapi JSON
kenjiArai 0:5b88d5760320 146 * configuration).
kenjiArai 0:5b88d5760320 147 */
kenjiArai 0:5b88d5760320 148 virtual void set_default_parameters();
kenjiArai 0:5b88d5760320 149 };
kenjiArai 0:5b88d5760320 150
kenjiArai 0:5b88d5760320 151 #endif // CELLULAR_INTERFACE_H_