mirror of
https://github.com/nxp-imx/mwifiex.git
synced 2025-01-16 00:35:33 +00:00
257 lines
7.9 KiB
C
257 lines
7.9 KiB
C
|
/** @file wifi_display.h
|
||
|
*
|
||
|
* @brief Header file for wifidirectutl application
|
||
|
*
|
||
|
* Copyright (C) 2008-2019, Marvell International Ltd.
|
||
|
*
|
||
|
* This software file (the "File") is distributed by Marvell International
|
||
|
* Ltd. under the terms of the GNU General Public License Version 2, June 1991
|
||
|
* (the "License"). You may use, redistribute and/or modify this File in
|
||
|
* accordance with the terms and conditions of the License, a copy of which
|
||
|
* is available along with the File in the gpl.txt file or by writing to
|
||
|
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||
|
* 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
|
||
|
*
|
||
|
* THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
|
||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
|
||
|
* ARE EXPRESSLY DISCLAIMED. The License provides additional details about
|
||
|
* this warranty disclaimer.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/************************************************************************
|
||
|
Change log:
|
||
|
09/22/11: Initial creation
|
||
|
************************************************************************/
|
||
|
#ifndef _WIFIDISPLAY_H
|
||
|
#define _WIFIDISPLAY_H
|
||
|
|
||
|
#include "wifidirectutl.h"
|
||
|
/* coupled sink capability*/
|
||
|
#define MAX_COUPLED_SINK_CAPABILITY 2
|
||
|
#define MAX_CLIENTS 5
|
||
|
#define VENDOR_SPECIFIC_IE_TAG 0xDD
|
||
|
/** TLV : WifiDisplay devie info sublement ID */
|
||
|
#define TLV_TYPE_WIFIDISPLAY_DEVICE_INFO 0x00
|
||
|
/** TLV : WifiDisplay Assoc BSSID sublement ID */
|
||
|
#define TLV_TYPE_WIFIDISPLAY_ASSOC_BSSID 0x01
|
||
|
/** TLV : WifiDisplay Coupled Sink sublement ID */
|
||
|
#define TLV_TYPE_WIFIDISPLAY_COUPLED_SINK 0x06
|
||
|
/** TLV : WifiDisplay Session Info sublement ID */
|
||
|
#define TLV_TYPE_SESSION_INFO_SUBELEM 0x09
|
||
|
/** TLV : WifiDisplay Alternate MAC sublement ID */
|
||
|
#define TLV_TYPE_WIFIDISPLAY_ALTERNATE_MAC 0x10
|
||
|
/** Host Command ID : wfd display mode config */
|
||
|
#define HostCmd_CMD_WFD_DISPLAY_MODE_CONFIG 0x0106
|
||
|
/** Maximum ie index creation allowed with custom ie commands */
|
||
|
#define MAX_MGMT_IE_INDEX 12
|
||
|
/** Define len of OUI for WFD */
|
||
|
#define WIFIDISPLAY_OUI_LEN 3
|
||
|
/** Define OUI type for WFD */
|
||
|
#define WIFIDISPLAY_OUI_TYPE 1
|
||
|
/** Level of wifidisplay parameters in the wifidisplay.conf file */
|
||
|
typedef enum {
|
||
|
DISPLAY_DEVICE_INFO = 1,
|
||
|
DISPLAY_ASSOCIATED_BSSID,
|
||
|
DISPLAY_COUPLED_SINK,
|
||
|
DISPLAY_SESSION_INFO,
|
||
|
DISPLAY_ALTERNATE_MAC_ADDR,
|
||
|
} display_param_level;
|
||
|
/** Valid Wifi display input parameters */
|
||
|
typedef enum {
|
||
|
WFD_DEVICE_INFO,
|
||
|
WFD_SESSION_MGMT_CONTROL_PORT,
|
||
|
WFD_DEVICE_THROUGHPUT,
|
||
|
WFD_COUPLED_SINK,
|
||
|
} display_valid_inputs;
|
||
|
|
||
|
/** AP CMD header */
|
||
|
#define WIFI_DISPLAY_CMD_HEADER /** Buf Size */ \
|
||
|
t_u32 buf_size; \
|
||
|
/** Command Code */ \
|
||
|
t_u16 cmd_code; \
|
||
|
/** Size */ \
|
||
|
t_u16 size; \
|
||
|
/** Sequence Number */ \
|
||
|
t_u16 seq_num; \
|
||
|
/** Result */ \
|
||
|
t_s16 result
|
||
|
|
||
|
/** TLV buffer : WifiDisplay device info parameters*/
|
||
|
typedef PACK_START struct tlvbuf_wfdisplay_device_info {
|
||
|
/** Tag */
|
||
|
t_u8 tag;
|
||
|
/** Length */
|
||
|
t_u16 length;
|
||
|
/** action */
|
||
|
/** Device Info Bitmap */
|
||
|
t_u8 display_device_info[2];
|
||
|
/** Control Port for WFD communication */
|
||
|
t_u8 session_mgmt_control_port[2];
|
||
|
/** WFD Maximum Device Throuput */
|
||
|
t_u8 wfd_device_throuput[2];
|
||
|
} PACK_END tlvbuf_wfdisplay_device_info;
|
||
|
|
||
|
/** TLV buffer : WifiDisplay Assoc BSSID paramenters*/
|
||
|
typedef PACK_START struct tlvbuf_wfdisplay_assoc_bssid {
|
||
|
/** Tag */
|
||
|
t_u8 tag;
|
||
|
/** Length */
|
||
|
t_u16 length;
|
||
|
/** associated BSSID */
|
||
|
t_u8 assoc_bssid[ETH_ALEN];
|
||
|
} PACK_END tlvbuf_wfdisplay_assoc_bssid;
|
||
|
|
||
|
/** TLV buffer : WifiDisplay Alaternate MAC paramenters*/
|
||
|
typedef PACK_START struct tlvbuf_wfdisplay_alternate_mac {
|
||
|
/** Tag */
|
||
|
t_u8 tag;
|
||
|
/** Length */
|
||
|
t_u16 length;
|
||
|
/** Alternate MAC */
|
||
|
t_u8 alternate_mac[ETH_ALEN];
|
||
|
} PACK_END tlvbuf_wfdisplay_alternate_mac;
|
||
|
|
||
|
/** TLV buffer : WifiDisplay coupled sink parameters*/
|
||
|
typedef PACK_START struct tlvbuf_wfdisplay_coupled_sink {
|
||
|
/** Tag */
|
||
|
t_u8 tag;
|
||
|
/** Length */
|
||
|
t_u16 length;
|
||
|
/** Coupled Sink Bitmap */
|
||
|
t_u8 coupled_sink;
|
||
|
/** Coupled Peer MAC */
|
||
|
t_u8 peer_mac[ETH_ALEN];
|
||
|
} PACK_END tlvbuf_wfdisplay_coupled_sink;
|
||
|
|
||
|
/** TLV buffer : WifiDirect Device Info parameters*/
|
||
|
struct WifiDisplayDeviceInfoDesc {
|
||
|
t_u8 length;
|
||
|
t_u8 dev_address[ETH_ALEN];
|
||
|
t_u8 AssociatedBSSID[ETH_ALEN];
|
||
|
t_u8 dev_info[2];
|
||
|
t_u8 max_throughput[2];
|
||
|
t_u8 coupled_sink[7];
|
||
|
};
|
||
|
|
||
|
/** TLV buffer : WifiDirect Session Info parameters*/
|
||
|
typedef PACK_START struct tlvbuf_wifi_display_session_info {
|
||
|
/** Tag */
|
||
|
t_u8 tag;
|
||
|
/** Length */
|
||
|
t_u16 length;
|
||
|
/** Device Info Descriptor pointer */
|
||
|
t_u8 *WFDDevInfoDesc;
|
||
|
} PACK_END tlvbuf_wifi_display_session_info;
|
||
|
/** TLV buffer : WifiDirect Wifi Display IE format*/
|
||
|
typedef PACK_START struct tlvbuf_wifidisplay_ie_format {
|
||
|
/** Tag */
|
||
|
t_u8 ElemId;
|
||
|
/** Length */
|
||
|
t_u8 length;
|
||
|
/** Vendor Specific OUI */
|
||
|
t_u8 Oui[3];
|
||
|
/** Vendor Specific OUI */
|
||
|
t_u8 OuiType;
|
||
|
/** Vendor Specific OUI */
|
||
|
t_u8 wfd_ie[1];
|
||
|
} PACK_END tlvbuf_wifidisplay_ie_format;
|
||
|
|
||
|
/** HostCmd_CMD_WIFI_DISPLAY_MODE_CONFIG */
|
||
|
typedef PACK_START struct _wifi_display_mode_config {
|
||
|
WIFI_DISPLAY_CMD_HEADER;
|
||
|
/** Action */
|
||
|
t_u16 action; /* 0 = ACT_GET; 1 = ACT_SET; */
|
||
|
/** wifi display mode data */
|
||
|
t_u16 mode;
|
||
|
} PACK_END wifi_display_mode_config;
|
||
|
|
||
|
/** HostCmd_CMD_WIFIDISPLAY_SERVICE_DISCOVERY request */
|
||
|
typedef PACK_START struct _wifidisplay_discovery_request {
|
||
|
/** Header */
|
||
|
WIFI_DISPLAY_CMD_HEADER;
|
||
|
/** Peer mac address */
|
||
|
t_u8 peer_mac_addr[ETH_ALEN];
|
||
|
/** Category */
|
||
|
t_u8 category;
|
||
|
/** Action */
|
||
|
t_u8 action;
|
||
|
/** Dialog taken */
|
||
|
t_u8 dialog_taken;
|
||
|
/** Advertize protocol IE */
|
||
|
t_u8 advertize_protocol_ie[4];
|
||
|
/** Query request Length */
|
||
|
t_u16 query_len;
|
||
|
/** Information identifier */
|
||
|
t_u8 info_id[2];
|
||
|
/** Request Length */
|
||
|
t_u16 request_len;
|
||
|
/** OUI */
|
||
|
t_u8 oui[3];
|
||
|
/** OUI sub type */
|
||
|
t_u8 oui_sub_type;
|
||
|
/** Service update indicator */
|
||
|
t_u16 service_update_indicator;
|
||
|
/** Vendor Length */
|
||
|
t_u16 vendor_len;
|
||
|
/** Service protocol */
|
||
|
t_u8 service_protocol;
|
||
|
/** Service transaction Id */
|
||
|
t_u8 service_transaction_id;
|
||
|
/** Query Data */
|
||
|
t_u8 disc_query[0];
|
||
|
} PACK_END wifidisplay_discovery_request;
|
||
|
|
||
|
/** HostCmd_CMD_WIFIDISPLAY_SERVICE_DISCOVERY response */
|
||
|
typedef PACK_START struct _wifidisplay_discovery_response {
|
||
|
/** Header */
|
||
|
WIFI_DISPLAY_CMD_HEADER;
|
||
|
/** Peer mac address */
|
||
|
t_u8 peer_mac_addr[ETH_ALEN];
|
||
|
/** Category */
|
||
|
t_u8 category;
|
||
|
/** Action */
|
||
|
t_u8 action;
|
||
|
/** Dialog taken */
|
||
|
t_u8 dialog_taken;
|
||
|
/** Status code */
|
||
|
t_u16 status_code;
|
||
|
/** GAS comback reply */
|
||
|
t_u16 gas_reply;
|
||
|
/** Advertize protocol IE */
|
||
|
t_u8 advertize_protocol_ie[4];
|
||
|
/** Query response Length */
|
||
|
t_u16 query_len;
|
||
|
/** Information identifier */
|
||
|
t_u8 info_id[2];
|
||
|
/** Response Length */
|
||
|
t_u16 response_len;
|
||
|
/** OUI */
|
||
|
t_u8 oui[3];
|
||
|
/** OUI sub type */
|
||
|
t_u8 oui_sub_type;
|
||
|
/** Service update indicator */
|
||
|
t_u16 service_update_indicator;
|
||
|
/** Vendor Length */
|
||
|
t_u16 vendor_len;
|
||
|
/** Service protocol */
|
||
|
t_u8 service_protocol;
|
||
|
/** Service transaction Id */
|
||
|
t_u8 service_transaction_id;
|
||
|
/** Discovery status code */
|
||
|
t_u8 disc_status_code;
|
||
|
/** Response Data */
|
||
|
t_u8 disc_resp[0];
|
||
|
} PACK_END wifidisplay_discovery_response;
|
||
|
|
||
|
int is_wifidisplay_input_valid(display_valid_inputs cmd, int argc,
|
||
|
char *argv[]);
|
||
|
void wifidisplaycmd_config(int argc, char *argv[]);
|
||
|
void wifidisplay_file_params_config(char *file_name, char *cmd_name,
|
||
|
t_u8 *pbuf, t_u16 *ie_len_wifidisplay);
|
||
|
void wifidisplay_cmd_status(int argc, char *argv[]);
|
||
|
void wifidisplaycmd_service_discovery(int argc, char *argv[]);
|
||
|
void wifidisplay_update_custom_ie(int argc, char *argv[]);
|
||
|
void wifidisplay_update_coupledsink_bitmap(int argc, char *argv[]);
|
||
|
#endif /* _WIFIDISPLAY_H */
|