mbed-os/features/netsocket/emac-drivers/TARGET_WHD/interface/WhdSoftAPInterface.h

137 lines
4.8 KiB
C++

/* WHD SoftAP implementation of SoftAPInterface
* Copyright (c) 2017-2019 ARM Limited
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef WHD_SOFTAP_INTERFACE_H
#define WHD_SOFTAP_INTERFACE_H
#include "netsocket/EMACInterface.h"
#include "netsocket/OnboardNetworkStack.h"
#include "whd_emac.h"
/**
* Vendor IE details
*/
typedef struct {
uint8_t oui[WIFI_IE_OUI_LENGTH]; /**< Unique identifier for the IE */
uint8_t subtype; /**< Sub-type of the IE */
void *data; /**< Pointer to IE data */
uint16_t length; /**< IE data length */
uint16_t which_packets; /**< Mask of the packet in which this IE details to be included */
} whd_custom_ie_info_t;
/** WhdSoftAPInterface class
* Implementation of the SoftAPInterface for the Whd
*/
class WhdSoftAPInterface : public EMACInterface {
public:
/** Construct SoftAP interface
* @return pointer to default WhdSoftAPInterface instance
*/
WhdSoftAPInterface(WHD_EMAC &emac = WHD_EMAC::get_instance(WHD_AP_ROLE),
OnboardNetworkStack &stack = OnboardNetworkStack::get_default_instance());
/** Get the default WhdSoftAPInterface instance.
* @return pointer to default WhdSoftAPInterface instance
*/
static WhdSoftAPInterface *get_default_instance();
/** Set static IP address for SoftAP
*
* Configures the static IP address of SoftAP
* Requires that the network is stopped.
*
* @param ip_address Null-terminated representation of the local IP address
* @param netmask Null-terminated representation of the local network mask
* @param gateway Null-terminated representation of the local gateway
* @return 0 on success, negative error code on failure
* int set_network(const char *ip_address, const char *netmask, const char *gateway);
*/
/** Start a SoftAP
*
* @param ssid Name of the SoftAP to create
* @param pass Security passphrase for connection to SoftAP
* @param security Type of encryption for connection
* @param channel Channel for SoftAP
* @param start_dhcp_server start dhcp server for connection
* @param[in] Optional Custom IE
*
* @return 0 on success, or error code on failure
* see @a nsapi_error
*/
int start(const char *ssid, const char *pass, nsapi_security_t security, uint8_t channel,
bool start_dhcp_server = true, const whd_custom_ie_info_t *ie_info = NULL);
/**
* Remove Wi-Fi custom IE
*
* @param[in] ie_info : Pointer to the structure which contains custom IE information
*
* @return 0 on success, or error code on failure
* see @a nsapi_error
*/
int remove_custom_ie(const whd_custom_ie_info_t *ie_info);
/** Stop the Software Access Point
*
* @return 0 on success, or error code on failure
* see @a nsapi_error
*/
int stop(void);
/**
* Gets information about associated clients.
*
* @note Only applicable if softAP interface is up
*
* @param[out] client_list_buffer : pointer to a buffer that will be populated with a variable length structure defined by @ref whd_maclist_t
* @param[in] buffer_length : length of the buffer
*
* @return 0 on success, or error code on failure
* see @a nsapi_error
*/
int get_associated_client_list(void *client_list_buffer, uint16_t buffer_length);
/**
* Register soft AP event handler
*
* @param[in] softap_event_handler : A function pointer to the event handler
*
* @return 0 on success, or error code on failure
* see @a nsapi_error
*/
int register_event_handler(whd_event_handler_t softap_event_handler);
/**
* Unregister soft AP event handler
*
* @return 0 on success, or error code on failure
* see @a nsapi_error
*/
int unregister_event_handler(void);
protected:
WHD_EMAC &_whd_emac;
};
#endif