You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1270 lines
36 KiB
1270 lines
36 KiB
/* |
|
* Copyright (C) 2014 The Android Open Source Project |
|
* |
|
* 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 __NAN_I_H__ |
|
#define __NAN_I_H__ |
|
|
|
#include "common.h" |
|
#include "cpp_bindings.h" |
|
#include "wifi_hal.h" |
|
|
|
#ifdef __cplusplus |
|
extern "C" |
|
{ |
|
#endif /* __cplusplus */ |
|
|
|
#ifndef PACKED |
|
#define PACKED __attribute__((packed)) |
|
#endif |
|
#define BIT_NONE 0x00 |
|
#define BIT_0 0x01 |
|
#define BIT_1 0x02 |
|
#define BIT_2 0x04 |
|
#define BIT_3 0x08 |
|
#define BIT_4 0x10 |
|
#define BIT_5 0x20 |
|
#define BIT_6 0x40 |
|
#define BIT_7 0x80 |
|
#define BIT_8 0x0100 |
|
#define BIT_9 0x0200 |
|
#define BIT_10 0x0400 |
|
#define BIT_11 0x0800 |
|
#define BIT_12 0x1000 |
|
#define BIT_13 0x2000 |
|
#define BIT_14 0x4000 |
|
#define BIT_15 0x8000 |
|
#define BIT_16 0x010000 |
|
#define BIT_17 0x020000 |
|
#define BIT_18 0x040000 |
|
#define BIT_19 0x080000 |
|
#define BIT_20 0x100000 |
|
#define BIT_21 0x200000 |
|
#define BIT_22 0x400000 |
|
#define BIT_23 0x800000 |
|
#define BIT_24 0x01000000 |
|
#define BIT_25 0x02000000 |
|
#define BIT_26 0x04000000 |
|
#define BIT_27 0x08000000 |
|
#define BIT_28 0x10000000 |
|
#define BIT_29 0x20000000 |
|
#define BIT_30 0x40000000 |
|
#define BIT_31 0x80000000 |
|
|
|
/** macro to convert FW MAC address from WMI word format to User Space MAC char array */ |
|
#define FW_MAC_ADDR_TO_CHAR_ARRAY(fw_mac_addr, mac_addr) do { \ |
|
(mac_addr)[0] = ((fw_mac_addr).mac_addr31to0) & 0xff; \ |
|
(mac_addr)[1] = (((fw_mac_addr).mac_addr31to0) >> 8) & 0xff; \ |
|
(mac_addr)[2] = (((fw_mac_addr).mac_addr31to0) >> 16) & 0xff; \ |
|
(mac_addr)[3] = (((fw_mac_addr).mac_addr31to0) >> 24) & 0xff; \ |
|
(mac_addr)[4] = ((fw_mac_addr).mac_addr47to32) & 0xff; \ |
|
(mac_addr)[5] = (((fw_mac_addr).mac_addr47to32) >> 8) & 0xff; \ |
|
} while (0) |
|
|
|
/** macro to convert User space MAC address from char array to FW WMI word format */ |
|
#define CHAR_ARRAY_TO_MAC_ADDR(mac_addr, fw_mac_addr) do { \ |
|
(fw_mac_addr).mac_addr31to0 = \ |
|
((mac_addr)[0] | ((mac_addr)[1] << 8) \ |
|
| ((mac_addr)[2] << 16) | ((mac_addr)[3] << 24)); \ |
|
(fw_mac_addr).mac_addr47to32 = \ |
|
((mac_addr)[4] | ((mac_addr)[5] << 8)); \ |
|
} while (0) |
|
|
|
/*--------------------------------------------------------------------------- |
|
* WLAN NAN CONSTANTS |
|
*--------------------------------------------------------------------------*/ |
|
|
|
typedef enum |
|
{ |
|
NAN_MSG_ID_ERROR_RSP = 0, |
|
NAN_MSG_ID_CONFIGURATION_REQ = 1, |
|
NAN_MSG_ID_CONFIGURATION_RSP = 2, |
|
NAN_MSG_ID_PUBLISH_SERVICE_REQ = 3, |
|
NAN_MSG_ID_PUBLISH_SERVICE_RSP = 4, |
|
NAN_MSG_ID_PUBLISH_SERVICE_CANCEL_REQ = 5, |
|
NAN_MSG_ID_PUBLISH_SERVICE_CANCEL_RSP = 6, |
|
NAN_MSG_ID_PUBLISH_REPLIED_IND = 7, |
|
NAN_MSG_ID_PUBLISH_TERMINATED_IND = 8, |
|
NAN_MSG_ID_SUBSCRIBE_SERVICE_REQ = 9, |
|
NAN_MSG_ID_SUBSCRIBE_SERVICE_RSP = 10, |
|
NAN_MSG_ID_SUBSCRIBE_SERVICE_CANCEL_REQ = 11, |
|
NAN_MSG_ID_SUBSCRIBE_SERVICE_CANCEL_RSP = 12, |
|
NAN_MSG_ID_MATCH_IND = 13, |
|
NAN_MSG_ID_MATCH_EXPIRED_IND = 14, |
|
NAN_MSG_ID_SUBSCRIBE_TERMINATED_IND = 15, |
|
NAN_MSG_ID_DE_EVENT_IND = 16, |
|
NAN_MSG_ID_TRANSMIT_FOLLOWUP_REQ = 17, |
|
NAN_MSG_ID_TRANSMIT_FOLLOWUP_RSP = 18, |
|
NAN_MSG_ID_FOLLOWUP_IND = 19, |
|
NAN_MSG_ID_STATS_REQ = 20, |
|
NAN_MSG_ID_STATS_RSP = 21, |
|
NAN_MSG_ID_ENABLE_REQ = 22, |
|
NAN_MSG_ID_ENABLE_RSP = 23, |
|
NAN_MSG_ID_DISABLE_REQ = 24, |
|
NAN_MSG_ID_DISABLE_RSP = 25, |
|
NAN_MSG_ID_DISABLE_IND = 26, |
|
NAN_MSG_ID_TCA_REQ = 27, |
|
NAN_MSG_ID_TCA_RSP = 28, |
|
NAN_MSG_ID_TCA_IND = 29, |
|
NAN_MSG_ID_BEACON_SDF_REQ = 30, |
|
NAN_MSG_ID_BEACON_SDF_RSP = 31, |
|
NAN_MSG_ID_BEACON_SDF_IND = 32, |
|
NAN_MSG_ID_CAPABILITIES_REQ = 33, |
|
NAN_MSG_ID_CAPABILITIES_RSP = 34, |
|
NAN_MSG_ID_SELF_TRANSMIT_FOLLOWUP_IND = 35, |
|
NAN_MSG_ID_RANGING_REQUEST_RECEVD_IND = 36, |
|
NAN_MSG_ID_RANGING_RESULT_IND = 37, |
|
NAN_MSG_ID_TESTMODE_REQ = 1025, |
|
NAN_MSG_ID_TESTMODE_RSP = 1026 |
|
} NanMsgId; |
|
|
|
/* |
|
Various TLV Type ID sent as part of NAN Stats Response |
|
or NAN TCA Indication |
|
*/ |
|
typedef enum |
|
{ |
|
NAN_TLV_TYPE_FIRST = 0, |
|
|
|
/* Service Discovery Frame types */ |
|
NAN_TLV_TYPE_SDF_FIRST = NAN_TLV_TYPE_FIRST, |
|
NAN_TLV_TYPE_SERVICE_NAME = NAN_TLV_TYPE_SDF_FIRST, |
|
NAN_TLV_TYPE_SDF_MATCH_FILTER, |
|
NAN_TLV_TYPE_TX_MATCH_FILTER, |
|
NAN_TLV_TYPE_RX_MATCH_FILTER, |
|
NAN_TLV_TYPE_SERVICE_SPECIFIC_INFO, |
|
NAN_TLV_TYPE_EXT_SERVICE_SPECIFIC_INFO =5, |
|
NAN_TLV_TYPE_VENDOR_SPECIFIC_ATTRIBUTE_TRANSMIT = 6, |
|
NAN_TLV_TYPE_VENDOR_SPECIFIC_ATTRIBUTE_RECEIVE = 7, |
|
NAN_TLV_TYPE_POST_NAN_CONNECTIVITY_CAPABILITIES_RECEIVE = 8, |
|
NAN_TLV_TYPE_POST_NAN_DISCOVERY_ATTRIBUTE_RECEIVE = 9, |
|
NAN_TLV_TYPE_BEACON_SDF_PAYLOAD_RECEIVE = 10, |
|
NAN_TLV_TYPE_NAN_DATA_PATH_PARAMS = 11, |
|
NAN_TLV_TYPE_NAN_DATA_SUPPORTED_BAND = 12, |
|
NAN_TLV_TYPE_2G_COMMITTED_DW = 13, |
|
NAN_TLV_TYPE_5G_COMMITTED_DW = 14, |
|
NAN_TLV_TYPE_NAN_DATA_RESPONDER_MODE = 15, |
|
NAN_TLV_TYPE_NAN_DATA_ENABLED_IN_MATCH = 16, |
|
NAN_TLV_TYPE_NAN_SERVICE_ACCEPT_POLICY = 17, |
|
NAN_TLV_TYPE_NAN_CSID = 18, |
|
NAN_TLV_TYPE_NAN_SCID = 19, |
|
NAN_TLV_TYPE_NAN_PMK = 20, |
|
NAN_TLV_TYPE_SDEA_CTRL_PARAMS = 21, |
|
NAN_TLV_TYPE_NAN_RANGING_CFG = 22, |
|
NAN_TLV_TYPE_CONFIG_DISCOVERY_INDICATIONS = 23, |
|
NAN_TLV_TYPE_NAN20_RANGING_REQUEST = 24, |
|
NAN_TLV_TYPE_NAN20_RANGING_RESULT = 25, |
|
NAN_TLV_TYPE_NAN20_RANGING_REQUEST_RECEIVED = 26, |
|
NAN_TLV_TYPE_NAN_PASSPHRASE = 27, |
|
NAN_TLV_TYPE_SDEA_SERVICE_SPECIFIC_INFO = 28, |
|
NAN_TLV_TYPE_SDF_LAST = 4095, |
|
|
|
/* Configuration types */ |
|
NAN_TLV_TYPE_CONFIG_FIRST = 4096, |
|
NAN_TLV_TYPE_24G_SUPPORT = NAN_TLV_TYPE_CONFIG_FIRST, |
|
NAN_TLV_TYPE_24G_BEACON, |
|
NAN_TLV_TYPE_24G_SDF, |
|
NAN_TLV_TYPE_24G_RSSI_CLOSE, |
|
NAN_TLV_TYPE_24G_RSSI_MIDDLE = 4100, |
|
NAN_TLV_TYPE_24G_RSSI_CLOSE_PROXIMITY, |
|
NAN_TLV_TYPE_5G_SUPPORT, |
|
NAN_TLV_TYPE_5G_BEACON, |
|
NAN_TLV_TYPE_5G_SDF, |
|
NAN_TLV_TYPE_5G_RSSI_CLOSE, |
|
NAN_TLV_TYPE_5G_RSSI_MIDDLE, |
|
NAN_TLV_TYPE_5G_RSSI_CLOSE_PROXIMITY, |
|
NAN_TLV_TYPE_SID_BEACON, |
|
NAN_TLV_TYPE_HOP_COUNT_LIMIT, |
|
NAN_TLV_TYPE_MASTER_PREFERENCE = 4110, |
|
NAN_TLV_TYPE_CLUSTER_ID_LOW, |
|
NAN_TLV_TYPE_CLUSTER_ID_HIGH, |
|
NAN_TLV_TYPE_RSSI_AVERAGING_WINDOW_SIZE, |
|
NAN_TLV_TYPE_CLUSTER_OUI_NETWORK_ID, |
|
NAN_TLV_TYPE_SOURCE_MAC_ADDRESS, |
|
NAN_TLV_TYPE_CLUSTER_ATTRIBUTE_IN_SDF, |
|
NAN_TLV_TYPE_SOCIAL_CHANNEL_SCAN_PARAMS, |
|
NAN_TLV_TYPE_DEBUGGING_FLAGS, |
|
NAN_TLV_TYPE_POST_NAN_CONNECTIVITY_CAPABILITIES_TRANSMIT, |
|
NAN_TLV_TYPE_POST_NAN_DISCOVERY_ATTRIBUTE_TRANSMIT = 4120, |
|
NAN_TLV_TYPE_FURTHER_AVAILABILITY_MAP, |
|
NAN_TLV_TYPE_HOP_COUNT_FORCE, |
|
NAN_TLV_TYPE_RANDOM_FACTOR_FORCE, |
|
NAN_TLV_TYPE_RANDOM_UPDATE_TIME = 4124, |
|
NAN_TLV_TYPE_EARLY_WAKEUP, |
|
NAN_TLV_TYPE_PERIODIC_SCAN_INTERVAL, |
|
NAN_TLV_TYPE_DW_INTERVAL = 4128, |
|
NAN_TLV_TYPE_DB_INTERVAL, |
|
NAN_TLV_TYPE_FURTHER_AVAILABILITY, |
|
NAN_TLV_TYPE_24G_CHANNEL, |
|
NAN_TLV_TYPE_5G_CHANNEL, |
|
NAN_TLV_TYPE_DISC_MAC_ADDR_RANDOM_INTERVAL, |
|
NAN_TLV_TYPE_RANGING_AUTO_RESPONSE_CFG = 4134, |
|
NAN_TLV_TYPE_SUBSCRIBE_SID_BEACON = 4135, |
|
NAN_TLV_TYPE_CONFIG_LAST = 8191, |
|
|
|
/* Attributes types */ |
|
NAN_TLV_TYPE_ATTRS_FIRST = 8192, |
|
NAN_TLV_TYPE_AVAILABILITY_INTERVALS_MAP = NAN_TLV_TYPE_ATTRS_FIRST, |
|
NAN_TLV_TYPE_WLAN_MESH_ID, |
|
NAN_TLV_TYPE_MAC_ADDRESS, |
|
NAN_TLV_TYPE_RECEIVED_RSSI_VALUE, |
|
NAN_TLV_TYPE_CLUSTER_ATTRIBUTE, |
|
NAN_TLV_TYPE_WLAN_INFRA_SSID, |
|
NAN_TLV_TYPE_ATTRS_LAST = 12287, |
|
|
|
/* Events Type */ |
|
NAN_TLV_TYPE_EVENTS_FIRST = 12288, |
|
NAN_TLV_TYPE_EVENT_SELF_STATION_MAC_ADDRESS = NAN_TLV_TYPE_EVENTS_FIRST, |
|
NAN_TLV_TYPE_EVENT_STARTED_CLUSTER, |
|
NAN_TLV_TYPE_EVENT_JOINED_CLUSTER, |
|
NAN_TLV_TYPE_EVENT_CLUSTER_SCAN_RESULTS, |
|
NAN_TLV_TYPE_FAW_MEM_AVAIL, |
|
NAN_TLV_TYPE_EVENTS_LAST = 16383, |
|
|
|
/* TCA types */ |
|
NAN_TLV_TYPE_TCA_FIRST = 16384, |
|
NAN_TLV_TYPE_CLUSTER_SIZE_REQ = NAN_TLV_TYPE_TCA_FIRST, |
|
NAN_TLV_TYPE_CLUSTER_SIZE_RSP, |
|
NAN_TLV_TYPE_TCA_LAST = 32767, |
|
|
|
/* Statistics types */ |
|
NAN_TLV_TYPE_STATS_FIRST = 32768, |
|
NAN_TLV_TYPE_DE_PUBLISH_STATS = NAN_TLV_TYPE_STATS_FIRST, |
|
NAN_TLV_TYPE_DE_SUBSCRIBE_STATS, |
|
NAN_TLV_TYPE_DE_MAC_STATS, |
|
NAN_TLV_TYPE_DE_TIMING_SYNC_STATS, |
|
NAN_TLV_TYPE_DE_DW_STATS, |
|
NAN_TLV_TYPE_DE_STATS, |
|
NAN_TLV_TYPE_STATS_LAST = 36863, |
|
|
|
/* Testmode types */ |
|
NAN_TLV_TYPE_TESTMODE_FIRST = 36864, |
|
NAN_TLV_TYPE_TESTMODE_GENERIC_CMD = NAN_TLV_TYPE_TESTMODE_FIRST, |
|
NAN_TLV_TYPE_TESTMODE_LAST = 37000, |
|
|
|
NAN_TLV_TYPE_LAST = 65535 |
|
} NanTlvType; |
|
|
|
/* 8-byte control message header used by NAN*/ |
|
typedef struct PACKED |
|
{ |
|
u16 msgVersion:4; |
|
u16 msgId:12; |
|
u16 msgLen; |
|
u16 handle; |
|
u16 transactionId; |
|
} NanMsgHeader, *pNanMsgHeader; |
|
|
|
/* Enumeration for Version */ |
|
typedef enum |
|
{ |
|
NAN_MSG_VERSION1 = 1, |
|
}NanMsgVersion; |
|
|
|
typedef struct PACKED |
|
{ |
|
u16 type; |
|
u16 length; |
|
u8* value; |
|
} NanTlv, *pNanTlv; |
|
|
|
#define SIZEOF_TLV_HDR (sizeof(NanTlv::type) + sizeof(NanTlv::length)) |
|
/* NAN TLV Groups and Types */ |
|
typedef enum |
|
{ |
|
NAN_TLV_GROUP_FIRST = 0, |
|
NAN_TLV_GROUP_SDF = NAN_TLV_GROUP_FIRST, |
|
NAN_TLV_GROUP_CONFIG, |
|
NAN_TLV_GROUP_STATS, |
|
NAN_TLV_GROUP_ATTRS, |
|
NAN_TLV_NUM_GROUPS, |
|
NAN_TLV_GROUP_LAST = NAN_TLV_NUM_GROUPS |
|
} NanTlvGroup; |
|
|
|
/* NAN Miscellaneous Constants */ |
|
#define NAN_TTL_INFINITE 0 |
|
#define NAN_REPLY_COUNT_INFINITE 0 |
|
|
|
/* NAN Confguration 5G Channel Access Bit */ |
|
#define NAN_5G_CHANNEL_ACCESS_UNSUPPORTED 0 |
|
#define NAN_5G_CHANNEL_ACCESS_SUPPORTED 1 |
|
|
|
/* NAN Configuration Service IDs Enclosure Bit */ |
|
#define NAN_SIDS_NOT_ENCLOSED_IN_BEACONS 0 |
|
#define NAN_SIBS_ENCLOSED_IN_BEACONS 1 |
|
|
|
/* NAN Configuration Priority */ |
|
#define NAN_CFG_PRIORITY_SERVICE_DISCOVERY 0 |
|
#define NAN_CFG_PRIORITY_DATA_CONNECTION 1 |
|
|
|
/* NAN Configuration 5G Channel Usage */ |
|
#define NAN_5G_CHANNEL_USAGE_SYNC_AND_DISCOVERY 0 |
|
#define NAN_5G_CHANNEL_USAGE_DISCOVERY_ONLY 1 |
|
|
|
/* NAN Configuration TX_Beacon Content */ |
|
#define NAN_TX_BEACON_CONTENT_OLD_AM_INFO 0 |
|
#define NAN_TX_BEACON_CONTENT_UPDATED_AM_INFO 1 |
|
|
|
/* NAN Configuration Miscellaneous Constants */ |
|
#define NAN_MAC_INTERFACE_PERIODICITY_MIN 30 |
|
#define NAN_MAC_INTERFACE_PERIODICITY_MAX 255 |
|
|
|
#define NAN_DW_RANDOM_TIME_MIN 120 |
|
#define NAN_DW_RANDOM_TIME_MAX 240 |
|
|
|
#define NAN_INITIAL_SCAN_MIN_IDEAL_PERIOD 200 |
|
#define NAN_INITIAL_SCAN_MAX_IDEAL_PERIOD 300 |
|
|
|
#define NAN_ONGOING_SCAN_MIN_PERIOD 10 |
|
#define NAN_ONGOING_SCAN_MAX_PERIOD 30 |
|
|
|
#define NAN_HOP_COUNT_LIMIT 5 |
|
|
|
#define NAN_WINDOW_DW 0 |
|
#define NAN_WINDOW_FAW 1 |
|
|
|
/* NAN Error Rsp */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
u16 status; |
|
u16 value; |
|
} NanErrorRspMsg, *pNanErrorRspMsg; |
|
|
|
//* NAN Publish Service Req */ |
|
typedef struct PACKED |
|
{ |
|
u16 ttl; |
|
u16 period; |
|
u32 replyIndFlag:1; |
|
u32 publishType:2; |
|
u32 txType:1; |
|
u32 rssiThresholdFlag:1; |
|
u32 ota_flag:1; |
|
u32 matchAlg:2; |
|
u32 count:8; |
|
u32 connmap:8; |
|
u32 pubTerminatedIndDisableFlag:1; |
|
u32 pubMatchExpiredIndDisableFlag:1; |
|
u32 followupRxIndDisableFlag:1; |
|
u32 reserved2:5; |
|
/* |
|
* Excludes TLVs |
|
* |
|
* Required: Service Name, |
|
* Optional: Tx Match Filter, Rx Match Filter, Service Specific Info, |
|
*/ |
|
} NanPublishServiceReqParams, *pNanPublishServiceReqParams; |
|
|
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
NanPublishServiceReqParams publishServiceReqParams; |
|
u8 ptlv[]; |
|
} NanPublishServiceReqMsg, *pNanPublishServiceReqMsg; |
|
|
|
/* NAN Publish Service Rsp */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* status of the request */ |
|
u16 status; |
|
u16 value; |
|
} NanPublishServiceRspMsg, *pNanPublishServiceRspMsg; |
|
|
|
/* NAN Publish Service Cancel Req */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
} NanPublishServiceCancelReqMsg, *pNanPublishServiceCancelReqMsg; |
|
|
|
/* NAN Publish Service Cancel Rsp */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* status of the request */ |
|
u16 status; |
|
u16 value; |
|
} NanPublishServiceCancelRspMsg, *pNanPublishServiceCancelRspMsg; |
|
|
|
/* NAN Publish Terminated Ind */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* reason for the termination */ |
|
u16 reason; |
|
u16 reserved; |
|
} NanPublishTerminatedIndMsg, *pNanPublishTerminatedIndMsg; |
|
|
|
/* Params for NAN Publish Replied Ind */ |
|
typedef struct PACKED |
|
{ |
|
u32 matchHandle; |
|
} NanPublishRepliedIndParams; |
|
|
|
/* NAN Publish Replied Ind */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
NanPublishRepliedIndParams publishRepliedIndParams; |
|
/* |
|
* Excludes TLVs |
|
* |
|
* Required: MAC Address |
|
* Optional: Received RSSI Value |
|
* |
|
*/ |
|
u8 ptlv[]; |
|
} NanPublishRepliedIndMsg, *pNanPublishRepliedIndMsg; |
|
|
|
/* NAN Subscribe Service Req */ |
|
typedef struct PACKED |
|
{ |
|
u16 ttl; |
|
u16 period; |
|
u32 subscribeType:1; |
|
u32 srfAttr:1; |
|
u32 srfInclude:1; |
|
u32 srfSend:1; |
|
u32 ssiRequired:1; |
|
u32 matchAlg:2; |
|
u32 xbit:1; |
|
u32 count:8; |
|
u32 rssiThresholdFlag:1; |
|
u32 ota_flag:1; |
|
u32 subTerminatedIndDisableFlag:1; |
|
u32 subMatchExpiredIndDisableFlag:1; |
|
u32 followupRxIndDisableFlag:1; |
|
u32 reserved:3; |
|
u32 connmap:8; |
|
/* |
|
* Excludes TLVs |
|
* |
|
* Required: Service Name |
|
* Optional: Rx Match Filter, Tx Match Filter, Service Specific Info, |
|
*/ |
|
} NanSubscribeServiceReqParams, *pNanSubscribeServiceReqParams; |
|
|
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
NanSubscribeServiceReqParams subscribeServiceReqParams; |
|
u8 ptlv[]; |
|
} NanSubscribeServiceReqMsg, *pNanSubscribeServiceReqMsg; |
|
|
|
/* NAN Subscribe Service Rsp */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* status of the request */ |
|
u16 status; |
|
u16 value; |
|
} NanSubscribeServiceRspMsg, *pNanSubscribeServiceRspMsg; |
|
|
|
/* NAN Subscribe Service Cancel Req */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
} NanSubscribeServiceCancelReqMsg, *pNanSubscribeServiceCancelReqMsg; |
|
|
|
/* NAN Subscribe Service Cancel Rsp */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* status of the request */ |
|
u16 status; |
|
u16 value; |
|
} NanSubscribeServiceCancelRspMsg, *pNanSubscribeServiceCancelRspMsg; |
|
|
|
/* NAN Subscribe Match Ind */ |
|
typedef struct PACKED |
|
{ |
|
u32 matchHandle; |
|
u32 matchOccuredFlag:1; |
|
u32 outOfResourceFlag:1; |
|
u32 reserved:30; |
|
} NanMatchIndParams; |
|
|
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
NanMatchIndParams matchIndParams; |
|
u8 ptlv[]; |
|
} NanMatchIndMsg, *pNanMatchIndMsg; |
|
|
|
/* NAN Subscribe Unmatch Ind */ |
|
typedef struct PACKED |
|
{ |
|
u32 matchHandle; |
|
} NanmatchExpiredIndParams; |
|
|
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
NanmatchExpiredIndParams matchExpiredIndParams; |
|
} NanMatchExpiredIndMsg, *pNanMatchExpiredIndMsg; |
|
|
|
/* NAN Subscribe Terminated Ind */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* reason for the termination */ |
|
u16 reason; |
|
u16 reserved; |
|
} NanSubscribeTerminatedIndMsg, *pNanSubscribeTerminatedIndMsg; |
|
|
|
/* Event Ind */ |
|
typedef struct PACKED |
|
{ |
|
u32 eventId:8; |
|
u32 reserved:24; |
|
} NanEventIndParams; |
|
|
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
u8 ptlv[]; |
|
} NanEventIndMsg, *pNanEventIndMsg; |
|
|
|
/* NAN Transmit Followup Req */ |
|
typedef struct PACKED |
|
{ |
|
u32 matchHandle; |
|
u32 priority:4; |
|
u32 window:1; |
|
u32 followupTxRspDisableFlag:1; |
|
u32 reserved:26; |
|
/* |
|
* Excludes TLVs |
|
* |
|
* Required: Service Specific Info or Extended Service Specific Info |
|
*/ |
|
} NanTransmitFollowupReqParams; |
|
|
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
NanTransmitFollowupReqParams transmitFollowupReqParams; |
|
u8 ptlv[]; |
|
} NanTransmitFollowupReqMsg, *pNanTransmitFollowupReqMsg; |
|
|
|
/* NAN Transmit Followup Rsp */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* status of the request */ |
|
u16 status; |
|
u16 value; |
|
} NanTransmitFollowupRspMsg, *pNanTransmitFollowupRspMsg; |
|
|
|
/* NAN Publish Followup Ind */ |
|
typedef struct PACKED |
|
{ |
|
u32 matchHandle; |
|
u32 window:1; |
|
u32 reserved:31; |
|
/* |
|
* Excludes TLVs |
|
* |
|
* Required: Service Specific Info or Extended Service Specific Info |
|
*/ |
|
} NanFollowupIndParams; |
|
|
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
NanFollowupIndParams followupIndParams; |
|
u8 ptlv[]; |
|
} NanFollowupIndMsg, *pNanFollowupIndMsg; |
|
|
|
/* NAN Statistics Req */ |
|
typedef struct PACKED |
|
{ |
|
u32 statsType:8; |
|
u32 clear:1; |
|
u32 reserved:23; |
|
} NanStatsReqParams, *pNanStatsReqParams; |
|
|
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
NanStatsReqParams statsReqParams; |
|
} NanStatsReqMsg, *pNanStatsReqMsg; |
|
|
|
/* NAN Statistics Rsp */ |
|
typedef struct PACKED |
|
{ |
|
/* status of the request */ |
|
u16 status; |
|
u16 value; |
|
u8 statsType; |
|
u8 reserved; |
|
} NanStatsRspParams, *pNanStatsRspParams; |
|
|
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
NanStatsRspParams statsRspParams; |
|
u8 ptlv[]; |
|
} NanStatsRspMsg, *pNanStatsRspMsg; |
|
|
|
typedef struct PACKED |
|
{ |
|
u8 count:7; |
|
u8 s:1; |
|
} NanSidAttr, *pSidAttr; |
|
|
|
|
|
/* NAN Configuration Req */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* |
|
* TLVs: |
|
* |
|
* Required: None. |
|
* Optional: SID, Random Time, Master Preference, WLAN Intra Attr, |
|
* P2P Operation Attr, WLAN IBSS Attr, WLAN Mesh Attr |
|
*/ |
|
u8 ptlv[]; |
|
} NanConfigurationReqMsg, *pNanConfigurationReqMsg; |
|
|
|
/* |
|
* Because the Configuration Req message has TLVs in it use the macro below |
|
* for the size argument to buffer allocation functions (vs. sizeof(msg)). |
|
*/ |
|
#define NAN_MAX_CONFIGURATION_REQ_SIZE \ |
|
( \ |
|
sizeof(NanMsgHeader) + \ |
|
SIZEOF_TLV_HDR + sizeof(u8) /* SID Beacon */ + \ |
|
SIZEOF_TLV_HDR + sizeof(u8) /* Random Time */ + \ |
|
SIZEOF_TLV_HDR + sizeof(u8) /* Master Pref */ \ |
|
) |
|
|
|
/* NAN Configuration Rsp */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* status of the request */ |
|
u16 status; |
|
u16 value; |
|
} NanConfigurationRspMsg, *pNanConfigurationRspMsg; |
|
|
|
/* |
|
* Because the Enable Req message has TLVs in it use the macro below for |
|
* the size argument to buffer allocation functions (vs. sizeof(msg)). |
|
*/ |
|
#define NAN_MAX_ENABLE_REQ_SIZE \ |
|
( \ |
|
sizeof(NanMsgHeader) + \ |
|
SIZEOF_TLV_HDR + sizeof(u16) /* Cluster Low */ + \ |
|
SIZEOF_TLV_HDR + sizeof(u16) /* Cluster High */ + \ |
|
SIZEOF_TLV_HDR + sizeof(u8) /* Master Pref */ \ |
|
) |
|
|
|
/* Config Discovery Indication */ |
|
typedef struct PACKED |
|
{ |
|
u32 disableDiscoveryMacAddressEvent:1; |
|
u32 disableDiscoveryStartedClusterEvent:1; |
|
u32 disableDiscoveryJoinedClusterEvent:1; |
|
u32 reserved:29; |
|
} NanConfigDiscoveryIndications; |
|
|
|
/* NAN Enable Req */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* |
|
* TLVs: |
|
* |
|
* Required: Cluster Low, Cluster High, Master Preference, |
|
* Optional: 5G Support, SID, 5G Sync Disc, RSSI Close, RSSI Medium, |
|
* Hop Count Limit, Random Time, Master Preference, |
|
* WLAN Intra Attr, P2P Operation Attr, WLAN IBSS Attr, |
|
* WLAN Mesh Attr |
|
*/ |
|
u8 ptlv[]; |
|
} NanEnableReqMsg, *pNanEnableReqMsg; |
|
|
|
/* NAN Enable Rsp */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* status of the request */ |
|
u16 status; |
|
u16 value; |
|
} NanEnableRspMsg, *pNanEnableRspMsg; |
|
|
|
/* NAN Disable Req */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
} NanDisableReqMsg, *pNanDisableReqMsg; |
|
|
|
/* NAN Disable Rsp */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* status of the request */ |
|
u16 status; |
|
u16 reserved; |
|
} NanDisableRspMsg, *pNanDisableRspMsg; |
|
|
|
/* NAN Disable Ind */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* reason for the termination */ |
|
u16 reason; |
|
u16 reserved; |
|
} NanDisableIndMsg, *pNanDisableIndMsg; |
|
|
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
u8 ptlv[]; |
|
} NanTcaReqMsg, *pNanTcaReqMsg; |
|
|
|
/* NAN TCA Rsp */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* status of the request */ |
|
u16 status; |
|
u16 value; |
|
} NanTcaRspMsg, *pNanTcaRspMsg; |
|
|
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* |
|
* TLVs: |
|
* |
|
* Optional: Cluster size. |
|
*/ |
|
u8 ptlv[]; |
|
} NanTcaIndMsg, *pNanTcaIndMsg; |
|
|
|
/* |
|
* Because the TCA Ind message has TLVs in it use the macro below for the |
|
* size argument to buffer allocation functions (vs. sizeof(msg)). |
|
*/ |
|
#define NAN_MAX_TCA_IND_SIZE \ |
|
( \ |
|
sizeof(NanMsgHeader) + \ |
|
sizeof(NanTcaIndParams) + \ |
|
SIZEOF_TLV_HDR + sizeof(u16) /* Cluster Size */ \ |
|
) |
|
|
|
/* Function Declarations */ |
|
u8* addTlv(u16 type, u16 length, const u8* value, u8* pOutTlv); |
|
u16 NANTLV_ReadTlv(u8 *pInTlv, pNanTlv pOutTlv); |
|
u16 NANTLV_WriteTlv(pNanTlv pInTlv, u8 *pOutTlv); |
|
|
|
/* NAN Beacon Sdf Payload Req */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* |
|
* TLVs: |
|
* |
|
* Optional: Vendor specific attribute |
|
*/ |
|
u8 ptlv[]; |
|
} NanBeaconSdfPayloadReqMsg, *pNanBeaconSdfPayloadReqMsg; |
|
|
|
/* NAN Beacon Sdf Payload Rsp */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* status of the request */ |
|
u16 status; |
|
u16 reserved; |
|
} NanBeaconSdfPayloadRspMsg, *pNanBeaconSdfPayloadRspMsg; |
|
|
|
/* NAN Beacon Sdf Payload Ind */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* |
|
* TLVs: |
|
* |
|
* Required: Mac address |
|
* Optional: Vendor specific attribute, sdf payload |
|
* receive |
|
*/ |
|
u8 ptlv[]; |
|
} NanBeaconSdfPayloadIndMsg, *pNanBeaconSdfPayloadIndMsg; |
|
|
|
typedef struct PACKED |
|
{ |
|
u8 availIntDuration:2; |
|
u8 mapId:4; |
|
u8 reserved:2; |
|
} NanApiEntryCtrl; |
|
|
|
/* |
|
* Valid Operating Classes were derived from IEEE Std. 802.11-2012 Annex E |
|
* Table E-4 Global Operating Classe and, filtered by channel, are: 81, 83, |
|
* 84, 103, 114, 115, 116, 124, 125. |
|
*/ |
|
typedef struct PACKED |
|
{ |
|
NanApiEntryCtrl entryCtrl; |
|
u8 opClass; |
|
u8 channel; |
|
u8 availIntBitmap[4]; |
|
} NanFurtherAvailabilityChan, *pNanFurtherAvailabilityChan; |
|
|
|
typedef struct PACKED |
|
{ |
|
u8 numChan; |
|
u8 pFaChan[]; |
|
} NanFurtherAvailabilityMapAttrTlv, *pNanFurtherAvailabilityMapAttrTlv; |
|
|
|
/* Publish statistics. */ |
|
typedef struct PACKED |
|
{ |
|
u32 validPublishServiceReqMsgs; |
|
u32 validPublishServiceRspMsgs; |
|
u32 validPublishServiceCancelReqMsgs; |
|
u32 validPublishServiceCancelRspMsgs; |
|
u32 validPublishRepliedIndMsgs; |
|
u32 validPublishTerminatedIndMsgs; |
|
u32 validActiveSubscribes; |
|
u32 validMatches; |
|
u32 validFollowups; |
|
u32 invalidPublishServiceReqMsgs; |
|
u32 invalidPublishServiceCancelReqMsgs; |
|
u32 invalidActiveSubscribes; |
|
u32 invalidMatches; |
|
u32 invalidFollowups; |
|
u32 publishCount; |
|
u32 publishNewMatchCount; |
|
u32 pubsubGlobalNewMatchCount; |
|
} FwNanPublishStats, *pFwNanPublishStats; |
|
|
|
/* Subscribe statistics. */ |
|
typedef struct PACKED |
|
{ |
|
u32 validSubscribeServiceReqMsgs; |
|
u32 validSubscribeServiceRspMsgs; |
|
u32 validSubscribeServiceCancelReqMsgs; |
|
u32 validSubscribeServiceCancelRspMsgs; |
|
u32 validSubscribeTerminatedIndMsgs; |
|
u32 validSubscribeMatchIndMsgs; |
|
u32 validSubscribeUnmatchIndMsgs; |
|
u32 validSolicitedPublishes; |
|
u32 validMatches; |
|
u32 validFollowups; |
|
u32 invalidSubscribeServiceReqMsgs; |
|
u32 invalidSubscribeServiceCancelReqMsgs; |
|
u32 invalidSubscribeFollowupReqMsgs; |
|
u32 invalidSolicitedPublishes; |
|
u32 invalidMatches; |
|
u32 invalidFollowups; |
|
u32 subscribeCount; |
|
u32 bloomFilterIndex; |
|
u32 subscribeNewMatchCount; |
|
u32 pubsubGlobalNewMatchCount; |
|
} FwNanSubscribeStats, *pFwNanSubscribeStats; |
|
|
|
/* NAN MAC Statistics. Used for MAC and DW statistics. */ |
|
typedef struct PACKED |
|
{ |
|
/* RX stats */ |
|
u32 validFrames; |
|
u32 validActionFrames; |
|
u32 validBeaconFrames; |
|
u32 ignoredActionFrames; |
|
u32 ignoredBeaconFrames; |
|
u32 invalidFrames; |
|
u32 invalidActionFrames; |
|
u32 invalidBeaconFrames; |
|
u32 invalidMacHeaders; |
|
u32 invalidPafHeaders; |
|
u32 nonNanBeaconFrames; |
|
|
|
u32 earlyActionFrames; |
|
u32 inDwActionFrames; |
|
u32 lateActionFrames; |
|
|
|
/* TX stats */ |
|
u32 framesQueued; |
|
u32 totalTRSpUpdates; |
|
u32 completeByTRSp; |
|
u32 completeByTp75DW; |
|
u32 completeByTendDW; |
|
u32 lateActionFramesTx; |
|
|
|
/* Misc stats - ignored for DW. */ |
|
u32 twIncreases; |
|
u32 twDecreases; |
|
u32 twChanges; |
|
u32 twHighwater; |
|
u32 bloomFilterIndex; |
|
} FwNanMacStats, *pFwNanMacStats; |
|
|
|
/* NAN Sync and DW Statistics*/ |
|
typedef struct PACKED |
|
{ |
|
u64 currTsf; |
|
u64 myRank; |
|
u64 currAmRank; |
|
u64 lastAmRank; |
|
u32 currAmBTT; |
|
u32 lastAmBTT; |
|
u8 currAmHopCount; |
|
u8 currRole; |
|
u16 currClusterId; |
|
u32 reserved1; |
|
|
|
u64 timeSpentInCurrRole; |
|
u64 totalTimeSpentAsMaster; |
|
u64 totalTimeSpentAsNonMasterSync; |
|
u64 totalTimeSpentAsNonMasterNonSync; |
|
u32 transitionsToAnchorMaster; |
|
u32 transitionsToMaster; |
|
u32 transitionsToNonMasterSync; |
|
u32 transitionsToNonMasterNonSync; |
|
u32 amrUpdateCount; |
|
u32 amrUpdateRankChangedCount; |
|
u32 amrUpdateBTTChangedCount; |
|
u32 amrUpdateHcChangedCount; |
|
u32 amrUpdateNewDeviceCount; |
|
u32 amrExpireCount; |
|
u32 mergeCount; |
|
u32 beaconsAboveHcLimit; |
|
u32 beaconsBelowRssiThresh; |
|
u32 beaconsIgnoredNoSpace; |
|
u32 beaconsForOurCluster; |
|
u32 beaconsForOtherCluster; |
|
u32 beaconCancelRequests; |
|
u32 beaconCancelFailures; |
|
u32 beaconUpdateRequests; |
|
u32 beaconUpdateFailures; |
|
u32 syncBeaconTxAttempts; |
|
u32 syncBeaconTxFailures; |
|
u32 discBeaconTxAttempts; |
|
u32 discBeaconTxFailures; |
|
u32 amHopCountExpireCount; |
|
u32 ndpChannelFreq; |
|
u32 ndpChannelFreq2; |
|
} FwNanSyncStats, *pFwNanSyncStats; |
|
|
|
/* NAN Misc DE Statistics */ |
|
typedef struct PACKED |
|
{ |
|
u32 validErrorRspMsgs; |
|
u32 validTransmitFollowupReqMsgs; |
|
u32 validTransmitFollowupRspMsgs; |
|
u32 validFollowupIndMsgs; |
|
u32 validConfigurationReqMsgs; |
|
u32 validConfigurationRspMsgs; |
|
u32 validStatsReqMsgs; |
|
u32 validStatsRspMsgs; |
|
u32 validEnableReqMsgs; |
|
u32 validEnableRspMsgs; |
|
u32 validDisableReqMsgs; |
|
u32 validDisableRspMsgs; |
|
u32 validDisableIndMsgs; |
|
u32 validEventIndMsgs; |
|
u32 validTcaReqMsgs; |
|
u32 validTcaRspMsgs; |
|
u32 validTcaIndMsgs; |
|
u32 invalidTransmitFollowupReqMsgs; |
|
u32 invalidConfigurationReqMsgs; |
|
u32 invalidStatsReqMsgs; |
|
u32 invalidEnableReqMsgs; |
|
u32 invalidDisableReqMsgs; |
|
u32 invalidTcaReqMsgs; |
|
} FwNanDeStats, *pFwNanDeStats; |
|
|
|
/* |
|
Definition of various NanIndication(events) |
|
*/ |
|
typedef enum { |
|
NAN_INDICATION_PUBLISH_REPLIED =0, |
|
NAN_INDICATION_PUBLISH_TERMINATED =1, |
|
NAN_INDICATION_MATCH =2, |
|
NAN_INDICATION_MATCH_EXPIRED =3, |
|
NAN_INDICATION_SUBSCRIBE_TERMINATED =4, |
|
NAN_INDICATION_DE_EVENT =5, |
|
NAN_INDICATION_FOLLOWUP =6, |
|
NAN_INDICATION_DISABLED =7, |
|
NAN_INDICATION_TCA =8, |
|
NAN_INDICATION_BEACON_SDF_PAYLOAD =9, |
|
NAN_INDICATION_SELF_TRANSMIT_FOLLOWUP =10, |
|
NAN_INDICATION_RANGING_REQUEST_RECEIVED =11, |
|
NAN_INDICATION_RANGING_RESULT =12, |
|
NAN_INDICATION_UNKNOWN =0xFFFF |
|
} NanIndicationType; |
|
|
|
/* NAN Capabilities Req */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
} NanCapabilitiesReqMsg, *pNanCapabilitiesReqMsg; |
|
|
|
/* NAN Capabilities Rsp */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* status of the request */ |
|
u32 status; |
|
u32 value; |
|
u32 max_concurrent_nan_clusters; |
|
u32 max_publishes; |
|
u32 max_subscribes; |
|
u32 max_service_name_len; |
|
u32 max_match_filter_len; |
|
u32 max_total_match_filter_len; |
|
u32 max_service_specific_info_len; |
|
u32 max_vsa_data_len; |
|
u32 max_mesh_data_len; |
|
u32 max_ndi_interfaces; |
|
u32 max_ndp_sessions; |
|
u32 max_app_info_len; |
|
u32 max_queued_transmit_followup_msgs; |
|
u32 ndp_supported_bands; |
|
u32 cipher_suites_supported; |
|
u32 max_scid_len; |
|
u32 is_ndp_security_supported:1; |
|
u32 max_sdea_service_specific_info_len:16; |
|
u32 reserved:15; |
|
u32 max_subscribe_address; |
|
} NanCapabilitiesRspMsg, *pNanCapabilitiesRspMsg; |
|
|
|
/* NAN Self Transmit Followup */ |
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
u32 reason; |
|
} NanSelfTransmitFollowupIndMsg, *pNanSelfTransmitFollowupIndMsg; |
|
|
|
/* NAN Cipher Suite Shared Key */ |
|
typedef struct PACKED |
|
{ |
|
u32 csid_type; |
|
} NanCsidType; |
|
|
|
/* Service Discovery Extended Attribute params */ |
|
typedef struct PACKED |
|
{ |
|
u32 fsd_required:1; |
|
u32 fsd_with_gas:1; |
|
u32 data_path_required:1; |
|
u32 data_path_type:1; |
|
u32 multicast_type:1; |
|
u32 qos_required:1; |
|
u32 security_required:1; |
|
u32 ranging_required:1; |
|
u32 range_limit_present:1; |
|
u32 range_report:1; |
|
u32 reserved:22; |
|
} NanFWSdeaCtrlParams; |
|
|
|
/* NAN Ranging Configuration params */ |
|
typedef struct PACKED |
|
{ |
|
u32 inner_threshold; |
|
u32 outer_threshold; |
|
} NanFWGeoFenceDescriptor; |
|
|
|
typedef struct PACKED |
|
{ |
|
u32 range_resolution; |
|
u32 range_interval; |
|
u32 ranging_indication_event; |
|
NanFWGeoFenceDescriptor geo_fence_threshold; |
|
} NanFWRangeConfigParams; |
|
|
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/* |
|
Excludes TLVs |
|
Optional: Nan Availability |
|
*/ |
|
u8 ptlv[]; |
|
} NanTestModeReqMsg, *pNanTestModeReqMsg; |
|
|
|
/* |
|
NAN Status codes exchanged between firmware |
|
and WifiHal. |
|
*/ |
|
typedef enum { |
|
/* NAN Protocol Response Codes */ |
|
NAN_I_STATUS_SUCCESS = 0, |
|
NAN_I_STATUS_TIMEOUT = 1, |
|
NAN_I_STATUS_DE_FAILURE = 2, |
|
NAN_I_STATUS_INVALID_MSG_VERSION = 3, |
|
NAN_I_STATUS_INVALID_MSG_LEN = 4, |
|
NAN_I_STATUS_INVALID_MSG_ID = 5, |
|
NAN_I_STATUS_INVALID_HANDLE = 6, |
|
NAN_I_STATUS_NO_SPACE_AVAILABLE = 7, |
|
NAN_I_STATUS_INVALID_PUBLISH_TYPE = 8, |
|
NAN_I_STATUS_INVALID_TX_TYPE = 9, |
|
NAN_I_STATUS_INVALID_MATCH_ALGORITHM = 10, |
|
NAN_I_STATUS_DISABLE_IN_PROGRESS = 11, |
|
NAN_I_STATUS_INVALID_TLV_LEN = 12, |
|
NAN_I_STATUS_INVALID_TLV_TYPE = 13, |
|
NAN_I_STATUS_MISSING_TLV_TYPE = 14, |
|
NAN_I_STATUS_INVALID_TOTAL_TLVS_LEN = 15, |
|
NAN_I_STATUS_INVALID_REQUESTER_INSTANCE_ID= 16, |
|
NAN_I_STATUS_INVALID_TLV_VALUE = 17, |
|
NAN_I_STATUS_INVALID_TX_PRIORITY = 18, |
|
NAN_I_STATUS_INVALID_CONNECTION_MAP = 19, |
|
NAN_I_STATUS_INVALID_THRESHOLD_CROSSING_ALERT_ID = 20, |
|
NAN_I_STATUS_INVALID_STATS_ID = 21, |
|
NAN_I_STATUS_NAN_NOT_ALLOWED = 22, |
|
NAN_I_STATUS_NO_OTA_ACK = 23, |
|
NAN_I_STATUS_TX_FAIL = 24, |
|
NAN_I_STATUS_NAN_ALREADY_ENABLED = 25, |
|
NAN_I_STATUS_FOLLOWUP_QUEUE_FULL = 26, |
|
/* 27-4095 Reserved */ |
|
/* NAN Configuration Response codes */ |
|
NAN_I_STATUS_INVALID_RSSI_CLOSE_VALUE = 4096, |
|
NAN_I_STATUS_INVALID_RSSI_MIDDLE_VALUE = 4097, |
|
NAN_I_STATUS_INVALID_HOP_COUNT_LIMIT = 4098, |
|
NAN_I_STATUS_INVALID_MASTER_PREFERENCE_VALUE = 4099, |
|
NAN_I_STATUS_INVALID_LOW_CLUSTER_ID_VALUE = 4100, |
|
NAN_I_STATUS_INVALID_HIGH_CLUSTER_ID_VALUE = 4101, |
|
NAN_I_STATUS_INVALID_BACKGROUND_SCAN_PERIOD = 4102, |
|
NAN_I_STATUS_INVALID_RSSI_PROXIMITY_VALUE = 4103, |
|
NAN_I_STATUS_INVALID_SCAN_CHANNEL = 4104, |
|
NAN_I_STATUS_INVALID_POST_NAN_CONNECTIVITY_CAPABILITIES_BITMAP = 4105, |
|
NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_NUMCHAN_VALUE = 4106, |
|
NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_DURATION_VALUE = 4107, |
|
NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_CLASS_VALUE = 4108, |
|
NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_CHANNEL_VALUE = 4109, |
|
NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_AVAILABILITY_INTERVAL_BITMAP_VALUE = 4110, |
|
NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_MAP_ID = 4111, |
|
NAN_I_STATUS_INVALID_POST_NAN_DISCOVERY_CONN_TYPE_VALUE = 4112, |
|
NAN_I_STATUS_INVALID_POST_NAN_DISCOVERY_DEVICE_ROLE_VALUE = 4113, |
|
NAN_I_STATUS_INVALID_POST_NAN_DISCOVERY_DURATION_VALUE = 4114, |
|
NAN_I_STATUS_INVALID_POST_NAN_DISCOVERY_BITMAP_VALUE = 4115, |
|
NAN_I_STATUS_MISSING_FUTHER_AVAILABILITY_MAP = 4116, |
|
NAN_I_STATUS_INVALID_BAND_CONFIG_FLAGS = 4117, |
|
NAN_I_STATUS_INVALID_RANDOM_FACTOR_UPDATE_TIME_VALUE = 4118, |
|
NAN_I_STATUS_INVALID_ONGOING_SCAN_PERIOD = 4119, |
|
NAN_I_STATUS_INVALID_DW_INTERVAL_VALUE = 4120, |
|
NAN_I_STATUS_INVALID_DB_INTERVAL_VALUE = 4121, |
|
/* 4122-8191 RESERVED */ |
|
NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_INVALID = 8192, |
|
NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_TIMEOUT = 8193, |
|
NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_USER_REQUEST = 8194, |
|
NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_FAILURE = 8195, |
|
NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_COUNT_REACHED = 8196, |
|
NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_DE_SHUTDOWN = 8197, |
|
NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_DISABLE_IN_PROGRESS = 8198, |
|
NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_POST_DISC_ATTR_EXPIRED = 8199, |
|
NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_POST_DISC_LEN_EXCEEDED = 8200, |
|
NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_FURTHER_AVAIL_MAP_EMPTY = 8201, |
|
/* 9000-9500 NDP Status type */ |
|
NDP_I_UNSUPPORTED_CONCURRENCY = 9000, |
|
NDP_I_NAN_DATA_IFACE_CREATE_FAILED = 9001, |
|
NDP_I_NAN_DATA_IFACE_DELETE_FAILED = 9002, |
|
NDP_I_DATA_INITIATOR_REQUEST_FAILED = 9003, |
|
NDP_I_DATA_RESPONDER_REQUEST_FAILED = 9004, |
|
NDP_I_INVALID_SERVICE_INSTANCE_ID = 9005, |
|
NDP_I_INVALID_NDP_INSTANCE_ID = 9006, |
|
NDP_I_INVALID_RESPONSE_CODE = 9007, |
|
NDP_I_INVALID_APP_INFO_LEN = 9008, |
|
/* OTA failures and timeouts during negotiation */ |
|
NDP_I_MGMT_FRAME_REQUEST_FAILED = 9009, |
|
NDP_I_MGMT_FRAME_RESPONSE_FAILED = 9010, |
|
NDP_I_MGMT_FRAME_CONFIRM_FAILED = 9011, |
|
NDP_I_END_FAILED = 9012, |
|
NDP_I_MGMT_FRAME_END_REQUEST_FAILED = 9013, |
|
NDP_I_MGMT_FRAME_SECURITY_INSTALL_FAILED = 9014, |
|
|
|
/* 9500 onwards vendor specific error codes */ |
|
NDP_I_VENDOR_SPECIFIC_ERROR = 9500 |
|
} NanInternalStatusType; |
|
|
|
/* This is the TLV used for range report */ |
|
typedef struct PACKED |
|
{ |
|
u32 publish_id; |
|
u32 event_type; |
|
u32 range_measurement; |
|
} NanFWRangeReportParams; |
|
|
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/*TLV Required: |
|
MANDATORY |
|
1. MAC_ADDRESS |
|
2. NanFWRangeReportParams |
|
OPTIONAL: |
|
1. A_UINT32 event type |
|
*/ |
|
u8 ptlv[1]; |
|
} NanFWRangeReportInd, *pNanFWRangeReportInd; |
|
|
|
/** 2 word representation of MAC addr */ |
|
typedef struct { |
|
/** upper 4 bytes of MAC address */ |
|
u32 mac_addr31to0; |
|
/** lower 2 bytes of MAC address */ |
|
u32 mac_addr47to32; |
|
} fw_mac_addr; |
|
|
|
/* This is the TLV used to trigger ranging requests*/ |
|
typedef struct PACKED |
|
{ |
|
fw_mac_addr range_mac_addr; |
|
u32 range_id; //Match handle in match_ind, publish_id in result ind |
|
u32 ranging_accept:1; |
|
u32 ranging_reject:1; |
|
u32 ranging_cancel:1; |
|
u32 reserved:29; |
|
} NanFWRangeReqMsg, *pNanFWRangeReqMsg; |
|
|
|
typedef struct PACKED |
|
{ |
|
fw_mac_addr range_mac_addr; |
|
u32 range_id;//This will publish_id in case of receiving publish. |
|
} NanFWRangeReqRecvdMsg, *pNanFWRangeReqRecvdMsg; |
|
|
|
typedef struct PACKED |
|
{ |
|
NanMsgHeader fwHeader; |
|
/*TLV Required |
|
1. t_nan_range_req_recvd_msg |
|
*/ |
|
u8 ptlv[1]; |
|
} NanFWRangeReqRecvdInd, *pNanFWRangeReqRecvdInd; |
|
|
|
/* Function for NAN error translation |
|
For NanResponse, NanPublishTerminatedInd, NanSubscribeTerminatedInd, |
|
NanDisabledInd, NanTransmitFollowupInd: |
|
function to translate firmware specific errors |
|
to generic freamework error along with the error string |
|
*/ |
|
void NanErrorTranslation(NanInternalStatusType firmwareErrorRecvd, |
|
u32 valueRcvd, |
|
void *pRsp, |
|
bool is_ndp_rsp); |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif /* __cplusplus */ |
|
|
|
#endif /* __NAN_I_H__ */ |
|
|
|
|