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 /*
kenjiArai 0:5b88d5760320 2 * Copyright (c) 2015 - 2016 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 /** @file WifiInterface.h Common interface between Wi-Fi devices */
kenjiArai 0:5b88d5760320 18 /** @addtogroup netinterface
kenjiArai 0:5b88d5760320 19 * @{
kenjiArai 0:5b88d5760320 20 */
kenjiArai 0:5b88d5760320 21
kenjiArai 0:5b88d5760320 22 #ifndef WIFI_INTERFACE_H
kenjiArai 0:5b88d5760320 23 #define WIFI_INTERFACE_H
kenjiArai 0:5b88d5760320 24
kenjiArai 0:5b88d5760320 25 #include <string.h>
kenjiArai 0:5b88d5760320 26 #include "netsocket/NetworkInterface.h"
kenjiArai 0:5b88d5760320 27 #include "netsocket/WiFiAccessPoint.h"
kenjiArai 0:5b88d5760320 28
kenjiArai 0:5b88d5760320 29 /** Common interface between Wi-Fi devices.
kenjiArai 0:5b88d5760320 30 */
kenjiArai 0:5b88d5760320 31 class WiFiInterface: public virtual NetworkInterface {
kenjiArai 0:5b88d5760320 32 public:
kenjiArai 0:5b88d5760320 33 /** Get the default Wi-Fi interface.
kenjiArai 0:5b88d5760320 34 *
kenjiArai 0:5b88d5760320 35 * This is provided as a weak method so applications can override it.
kenjiArai 0:5b88d5760320 36 * Default behavior is to get the target's default interface, if
kenjiArai 0:5b88d5760320 37 * any.
kenjiArai 0:5b88d5760320 38 *
kenjiArai 0:5b88d5760320 39 * @return pointer to interface, if any.
kenjiArai 0:5b88d5760320 40 */
kenjiArai 0:5b88d5760320 41 static WiFiInterface *get_default_instance();
kenjiArai 0:5b88d5760320 42
kenjiArai 0:5b88d5760320 43 /** Set the Wi-Fi network credentials.
kenjiArai 0:5b88d5760320 44 *
kenjiArai 0:5b88d5760320 45 * @param ssid Name of the network to connect to.
kenjiArai 0:5b88d5760320 46 * @param pass Security passphrase to connect to the network.
kenjiArai 0:5b88d5760320 47 * @param security Type of encryption for connection
kenjiArai 0:5b88d5760320 48 * (defaults to NSAPI_SECURITY_NONE).
kenjiArai 0:5b88d5760320 49 * @return NSAPI_ERROR_OK on success, or error code on failure.
kenjiArai 0:5b88d5760320 50 */
kenjiArai 0:5b88d5760320 51 virtual nsapi_error_t set_credentials(const char *ssid, const char *pass,
kenjiArai 0:5b88d5760320 52 nsapi_security_t security = NSAPI_SECURITY_NONE) = 0;
kenjiArai 0:5b88d5760320 53
kenjiArai 0:5b88d5760320 54 /** Set the Wi-Fi network channel.
kenjiArai 0:5b88d5760320 55 *
kenjiArai 0:5b88d5760320 56 * @param channel Channel to make the connection, or 0 for any (Default: 0).
kenjiArai 0:5b88d5760320 57 * @return NSAPI_ERROR_OK on success, or error code on failure.
kenjiArai 0:5b88d5760320 58 */
kenjiArai 0:5b88d5760320 59 virtual nsapi_error_t set_channel(uint8_t channel) = 0;
kenjiArai 0:5b88d5760320 60
kenjiArai 0:5b88d5760320 61 /** Get the current radio signal strength for active connection.
kenjiArai 0:5b88d5760320 62 *
kenjiArai 0:5b88d5760320 63 * @return Connection strength in dBm (negative value),
kenjiArai 0:5b88d5760320 64 * or 0 if measurement impossible.
kenjiArai 0:5b88d5760320 65 */
kenjiArai 0:5b88d5760320 66 virtual int8_t get_rssi() = 0;
kenjiArai 0:5b88d5760320 67
kenjiArai 0:5b88d5760320 68 /** Attempt to connect to a Wi-Fi network.
kenjiArai 0:5b88d5760320 69 *
kenjiArai 0:5b88d5760320 70 * @param ssid Name of the network to connect to.
kenjiArai 0:5b88d5760320 71 * @param pass Security passphrase to connect to the network.
kenjiArai 0:5b88d5760320 72 * @param security Type of encryption for connection (Default: NSAPI_SECURITY_NONE).
kenjiArai 0:5b88d5760320 73 * @param channel Channel to make the connection, or 0 for any (Default: 0).
kenjiArai 0:5b88d5760320 74 * @return NSAPI_ERROR_OK on success, or error code on failure.
kenjiArai 0:5b88d5760320 75 */
kenjiArai 0:5b88d5760320 76 virtual nsapi_error_t connect(const char *ssid, const char *pass,
kenjiArai 0:5b88d5760320 77 nsapi_security_t security = NSAPI_SECURITY_NONE, uint8_t channel = 0) = 0;
kenjiArai 0:5b88d5760320 78
kenjiArai 0:5b88d5760320 79 /** Attempt to connect to a Wi-Fi network. Requires ssid and passphrase to be set.
kenjiArai 0:5b88d5760320 80 * If passphrase is invalid, NSAPI_ERROR_AUTH_ERROR is returned.
kenjiArai 0:5b88d5760320 81 *
kenjiArai 0:5b88d5760320 82 * @return NSAPI_ERROR_OK on success, negative error code on failure.
kenjiArai 0:5b88d5760320 83 */
kenjiArai 0:5b88d5760320 84 virtual nsapi_error_t connect() = 0;
kenjiArai 0:5b88d5760320 85
kenjiArai 0:5b88d5760320 86 /** Stop the interface.
kenjiArai 0:5b88d5760320 87 *
kenjiArai 0:5b88d5760320 88 * @return NSAPI_ERROR_OK on success, or error code on failure.
kenjiArai 0:5b88d5760320 89 */
kenjiArai 0:5b88d5760320 90 virtual nsapi_error_t disconnect() = 0;
kenjiArai 0:5b88d5760320 91
kenjiArai 0:5b88d5760320 92 /** Scan for available networks.
kenjiArai 0:5b88d5760320 93 *
kenjiArai 0:5b88d5760320 94 * @note This is a blocking function.
kenjiArai 0:5b88d5760320 95 *
kenjiArai 0:5b88d5760320 96 * If the \p count is 0, the function only returns the number of available networks.
kenjiArai 0:5b88d5760320 97 * If the \p count is greater than 0 and the \p res is not NULL, the array of discovered APs is populated
kenjiArai 0:5b88d5760320 98 * with discovered networks up to the value of the \p count.
kenjiArai 0:5b88d5760320 99 *
kenjiArai 0:5b88d5760320 100 * @param res Pointer to allocated array to store discovered APs.
kenjiArai 0:5b88d5760320 101 * @param count Size of allocated res array, or 0 to only count available APs.
kenjiArai 0:5b88d5760320 102 * @return Number of entries in res, or if count was 0, number of available networks.
kenjiArai 0:5b88d5760320 103 * Negative on error (@see nsapi_types.h for nsapi_error).
kenjiArai 0:5b88d5760320 104 */
kenjiArai 0:5b88d5760320 105 virtual nsapi_size_or_error_t scan(WiFiAccessPoint *res, nsapi_size_t count) = 0;
kenjiArai 0:5b88d5760320 106
kenjiArai 0:5b88d5760320 107 /** @copydoc NetworkInterface::wifiInterface
kenjiArai 0:5b88d5760320 108 */
kenjiArai 0:5b88d5760320 109 virtual WiFiInterface *wifiInterface()
kenjiArai 0:5b88d5760320 110 {
kenjiArai 0:5b88d5760320 111 return this;
kenjiArai 0:5b88d5760320 112 }
kenjiArai 0:5b88d5760320 113
kenjiArai 0:5b88d5760320 114 #if !defined(DOXYGEN_ONLY)
kenjiArai 0:5b88d5760320 115 protected:
kenjiArai 0:5b88d5760320 116
kenjiArai 0:5b88d5760320 117 /** Get the target's default Wi-Fi interface.
kenjiArai 0:5b88d5760320 118 *
kenjiArai 0:5b88d5760320 119 * This is provided as a weak method so targets can override it. The
kenjiArai 0:5b88d5760320 120 * default implementation returns NULL.
kenjiArai 0:5b88d5760320 121 *
kenjiArai 0:5b88d5760320 122 * @return pointer to interface, if any.
kenjiArai 0:5b88d5760320 123 */
kenjiArai 0:5b88d5760320 124 static WiFiInterface *get_target_default_instance();
kenjiArai 0:5b88d5760320 125 #endif //!defined(DOXYGEN_ONLY)
kenjiArai 0:5b88d5760320 126
kenjiArai 0:5b88d5760320 127 public:
kenjiArai 0:5b88d5760320 128 /** Set default parameters on a Wi-Fi interface.
kenjiArai 0:5b88d5760320 129 *
kenjiArai 0:5b88d5760320 130 * A Wi-Fi interface instantiated directly or using
kenjiArai 0:5b88d5760320 131 * WiFiInterface::get_default_instance() is initially unconfigured.
kenjiArai 0:5b88d5760320 132 * This call can be used to set the default parameters that would
kenjiArai 0:5b88d5760320 133 * have been set if the interface had been requested using
kenjiArai 0:5b88d5760320 134 * NetworkInterface::get_default_instance() (see nsapi JSON
kenjiArai 0:5b88d5760320 135 * configuration).
kenjiArai 0:5b88d5760320 136 */
kenjiArai 0:5b88d5760320 137 virtual void set_default_parameters();
kenjiArai 0:5b88d5760320 138 };
kenjiArai 0:5b88d5760320 139
kenjiArai 0:5b88d5760320 140 #endif
kenjiArai 0:5b88d5760320 141
kenjiArai 0:5b88d5760320 142 /** @}*/