/****************************************************************************
 *  (c) Copyright 2007 Wi-Fi Alliance.  All Rights Reserved
 *
 *
 *  LICENSE
 *
 *  License is granted only to Wi-Fi Alliance members and designated
 *  contractors ($B!H(BAuthorized Licensees$B!I(B)..AN  Authorized Licensees are granted
 *  the non-exclusive, worldwide, limited right to use, copy, import, export
 *  and distribute this software:
 *  (i) solely for noncommercial applications and solely for testing Wi-Fi
 *  equipment; and
 *  (ii) solely for the purpose of embedding the software into Authorized
 *  Licensee$B!G(Bs proprietary equipment and software products for distribution to
 *  its customers under a license with at least the same restrictions as
 *  contained in this License, including, without limitation, the disclaimer of
 *  warranty and limitation of liability, below..AN  The distribution rights
 *  granted in clause
 *  (ii), above, include distribution to third party companies who will
 *  redistribute the Authorized Licensee$B!G(Bs product to their customers with or
 *  without such third party$B!G(Bs private label. Other than expressly granted
 *  herein, this License is not transferable or sublicensable, and it does not
 *  extend to and may not be used with non-Wi-Fi applications..AN  Wi-Fi Alliance
 *  reserves all rights not expressly granted herein..AN 
 *.AN 
 *  Except as specifically set forth above, commercial derivative works of
 *  this software or applications that use the Wi-Fi scripts generated by this
 *  software are NOT AUTHORIZED without specific prior written permission from
 *  Wi-Fi Alliance.
 *.AN 
 *  Non-Commercial derivative works of this software for internal use are
 *  authorized and are limited by the same restrictions; provided, however,
 *  that the Authorized Licensee shall provide Wi-Fi Alliance with a copy of
 *  such derivative works under a perpetual, payment-free license to use,
 *  modify, and distribute such derivative works for purposes of testing Wi-Fi
 *  equipment.
 *.AN 
 *  Neither the name of the author nor "Wi-Fi Alliance" may be used to endorse
 *  or promote products that are derived from or that use this software without
 *  specific prior written permission from Wi-Fi Alliance.
 *
 *  THIS SOFTWARE IS PROVIDED BY WI-FI ALLIANCE "AS IS" AND ANY EXPRESS OR
 *  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 *  OF MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A.AN PARTICULAR PURPOSE,
 *  ARE DISCLAIMED. IN NO EVENT SHALL WI-FI ALLIANCE BE LIABLE FOR ANY DIRECT,
 *  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 *  (INCLUDING, BUT NOT LIMITED TO, THE COST OF PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 *  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE) ARISING IN ANY WAY OUT OF
 *  THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************
 */
 

/*
 * File: wfa_tlv.h
 *  definitions for each of command types. 
 *  format:
 *  ---------------------------------------------------
 *  |  tag   | length |   value   
 *  --------------------------------------------------- 
 *   2 bytes   2bytes    defined by length 
 */
#ifndef _WFA_TLV_H
#define _WFA_TLV_H

#include "wfa_types.h"

#define INTEGER_1 0x0001            /* byte */
#define INTEGER_2 0x0002            /* word */
#define OCTET_STRING 0x0003         /* string */

typedef struct _wfatlvHdr 
{
    WORD tag;   /* tag/type */
    WORD len;   /* value length */
} wfaTLV;

#define WFA_TLV_HDR_LEN sizeof(wfaTLV)
#ifndef WIN32
/* Commands */
#define WFA_GET_VERSION_TLV                                         0x01

/* Generic TRAFFIC GENERATOR Commands */
#define WFA_TRAFFIC_SEND_PING_TLV     (WFA_GET_VERSION_TLV + 0x01) 
#define WFA_TRAFFIC_STOP_PING_TLV     (WFA_TRAFFIC_SEND_PING_TLV + 0x01)
#define WFA_TRAFFIC_AGENT_CONFIG_TLV  (WFA_TRAFFIC_STOP_PING_TLV + 0x01)
#define WFA_TRAFFIC_AGENT_SEND_TLV    (WFA_TRAFFIC_AGENT_CONFIG_TLV + 0x01)
#define WFA_TRAFFIC_AGENT_RECV_START_TLV (WFA_TRAFFIC_AGENT_SEND_TLV + 0x01)
#define WFA_TRAFFIC_AGENT_RECV_STOP_TLV (WFA_TRAFFIC_AGENT_RECV_START_TLV + 0x01)
#define WFA_TRAFFIC_AGENT_RESET_TLV (WFA_TRAFFIC_AGENT_RECV_STOP_TLV + 0x01)
#define WFA_TRAFFIC_AGENT_STATUS_TLV (WFA_TRAFFIC_AGENT_RESET_TLV + 0x01) /* 9 */

/* STATION/DUT Commands */
#define WFA_STA_GET_IP_CONFIG_TLV    (WFA_TRAFFIC_AGENT_STATUS_TLV + 0x01)
#define WFA_STA_SET_IP_CONFIG_TLV    (WFA_STA_GET_IP_CONFIG_TLV + 0x01)
#define WFA_STA_GET_MAC_ADDRESS_TLV  (WFA_STA_SET_IP_CONFIG_TLV + 0x01)
#define WFA_STA_SET_MAC_ADDRESS_TLV  (WFA_STA_GET_MAC_ADDRESS_TLV + 0x01) 
#define WFA_STA_IS_CONNECTED_TLV     (WFA_STA_SET_MAC_ADDRESS_TLV + 0x01) 
#define WFA_STA_VERIFY_IP_CONNECTION_TLV  (WFA_STA_IS_CONNECTED_TLV + 0x01)
#define WFA_STA_GET_BSSID_TLV        (WFA_STA_VERIFY_IP_CONNECTION_TLV + 0x01)
#define WFA_STA_GET_STATS_TLV        (WFA_STA_GET_BSSID_TLV + 0x01)  /* 17 */ 
#define WFA_STA_SET_ENCRYPTION_TLV   (WFA_STA_GET_STATS_TLV + 0x01)
#define WFA_STA_SET_PSK_TLV          (WFA_STA_SET_ENCRYPTION_TLV + 0x01)
#define WFA_STA_SET_EAPTLS_TLV       (WFA_STA_SET_PSK_TLV + 0x01)
#define WFA_STA_SET_UAPSD_TLV        (WFA_STA_SET_EAPTLS_TLV + 0x01)
#define WFA_STA_ASSOCIATE_TLV        (WFA_STA_SET_UAPSD_TLV + 0x01)
#define WFA_STA_SET_EAPTTLS_TLV      (WFA_STA_ASSOCIATE_TLV + 0x01)
#define WFA_STA_SET_EAPSIM_TLV       (WFA_STA_SET_EAPTTLS_TLV + 0x01)
#define WFA_STA_SET_PEAP_TLV         (WFA_STA_SET_EAPSIM_TLV + 0x01)
#define WFA_STA_SET_IBSS_TLV         (WFA_STA_SET_PEAP_TLV + 0x01)
#define WFA_STA_GET_INFO_TLV         (WFA_STA_SET_IBSS_TLV + 0x01)
#define WFA_DEVICE_GET_INFO_TLV      (WFA_STA_GET_INFO_TLV + 0x01)  
#define WFA_DEVICE_LIST_IF_TLV       (WFA_DEVICE_GET_INFO_TLV + 0x01)  /* 29 */

#define WFA_STA_DEBUG_SET_TLV        (WFA_DEVICE_LIST_IF_TLV + 0x01)  /* 30 */
#define WFA_STA_SET_MODE_TLV         (WFA_STA_DEBUG_SET_TLV + 0x01) /* 31 */
#define WFA_STA_SET_WMM_TLV          (WFA_STA_SET_MODE_TLV + 0x01) /* 32 */
#define WFA_STA_SEND_NEIGREQ_TLV	 (WFA_STA_SET_WMM_TLV + 0x01) /* 33 */
#define WFA_STA_SET_SYSTIME_TLV		 (WFA_STA_SEND_NEIGREQ_TLV + 0x01)
#define WFA_STA_SET_11N_TLV			 (WFA_STA_SET_SYSTIME_TLV + 0x01)
#define WFA_STA_SET_RIFS_TEST_TLV	 (WFA_STA_SET_11N_TLV + 0x01)
#define WFA_STA_SET_WIRELESS_TLV	 (WFA_STA_SET_RIFS_TEST_TLV + 0x01)
#define WFA_STA_SEND_ADDBA_TLV		 (WFA_STA_SET_WIRELESS_TLV + 0x01)
#define WFA_STA_SEND_COEXIST_MGMT_TLV	 (WFA_STA_SEND_ADDBA_TLV + 0x01)
#define WFA_STA_DISCONNECT_TLV	 (WFA_STA_SEND_COEXIST_MGMT_TLV + 0x01)
#define WFA_STA_SET_EAPFAST_TLV	 (WFA_STA_DISCONNECT_TLV + 0x01)
#define WFA_STA_SET_EAPAKA_TLV	 (WFA_STA_SET_EAPFAST_TLV + 0x01)
#define WFA_STA_REASSOCIATE_TLV          (WFA_STA_SET_EAPAKA_TLV + 0x01)    /* 43 */
#define WFA_STA_SET_PWRSAVE_TLV          (WFA_STA_REASSOCIATE_TLV + 0x01)   /* 44 */
#define WFA_STA_RESET_DEFAULT_TLV        (WFA_STA_SET_PWRSAVE_TLV + 0x01)   /* 45 */
#define WFA_STA_COMMANDS_END             (WFA_STA_RESET_DEFAULT_TLV + 0x01) /* 46 */


/* Version response */
#define WFA_GET_VERSION_RESP_TLV  (WFA_STA_COMMANDS_END +       0x01) /* 47 */

/* Generic Traffic Generator Responses */
#define WFA_TRAFFIC_SEND_PING_RESP_TLV (WFA_GET_VERSION_RESP_TLV +  0x01) 
#define WFA_TRAFFIC_STOP_PING_RESP_TLV (WFA_TRAFFIC_SEND_PING_RESP_TLV + 0x01)
#define WFA_TRAFFIC_AGENT_CONFIG_RESP_TLV (WFA_TRAFFIC_STOP_PING_RESP_TLV + 0x01)
#define WFA_TRAFFIC_AGENT_SEND_RESP_TLV (WFA_TRAFFIC_AGENT_CONFIG_RESP_TLV + 0x01)
#define WFA_TRAFFIC_AGENT_RECV_START_RESP_TLV (WFA_TRAFFIC_AGENT_SEND_RESP_TLV + 0x01)
#define WFA_TRAFFIC_AGENT_RECV_STOP_RESP_TLV (WFA_TRAFFIC_AGENT_RECV_START_RESP_TLV + 0x01)
#define WFA_TRAFFIC_AGENT_RESET_RESP_TLV (WFA_TRAFFIC_AGENT_RECV_STOP_RESP_TLV + 0x01)
#define WFA_TRAFFIC_AGENT_STATUS_RESP_TLV (WFA_TRAFFIC_AGENT_RESET_RESP_TLV + 0x01)

/* STATION/DUT Responses */
#define WFA_STA_GET_IP_CONFIG_RESP_TLV (WFA_TRAFFIC_AGENT_STATUS_RESP_TLV + 0x01)  
#define WFA_STA_SET_IP_CONFIG_RESP_TLV (WFA_STA_GET_IP_CONFIG_RESP_TLV + 0x01)
#define WFA_STA_GET_MAC_ADDRESS_RESP_TLV (WFA_STA_SET_IP_CONFIG_RESP_TLV + 0x01)
#define WFA_STA_SET_MAC_ADDRESS_RESP_TLV (WFA_STA_GET_MAC_ADDRESS_RESP_TLV + 0x01) /* 59 */ 
#define WFA_STA_IS_CONNECTED_RESP_TLV (WFA_STA_SET_MAC_ADDRESS_RESP_TLV + 0x01) 
#define WFA_STA_VERIFY_IP_CONNECTION_RESP_TLV  (WFA_STA_IS_CONNECTED_RESP_TLV + 0x01) /* 61 */
#define WFA_STA_GET_BSSID_RESP_TLV (WFA_STA_VERIFY_IP_CONNECTION_RESP_TLV + 0x01)  /* 62 */
#define WFA_STA_GET_STATS_RESP_TLV (WFA_STA_GET_BSSID_RESP_TLV + 0x01) 
#define WFA_STA_SET_ENCRYPTION_RESP_TLV (WFA_STA_GET_STATS_RESP_TLV + 0x01)
#define WFA_STA_SET_PSK_RESP_TLV (WFA_STA_SET_ENCRYPTION_RESP_TLV + 0x01)
#define WFA_STA_SET_EAPTLS_RESP_TLV (WFA_STA_SET_PSK_RESP_TLV + 0x01)
#define WFA_STA_SET_UAPSD_RESP_TLV (WFA_STA_SET_EAPTLS_RESP_TLV + 0x01)
#define WFA_STA_ASSOCIATE_RESP_TLV (WFA_STA_SET_UAPSD_RESP_TLV + 0x01)
#define WFA_STA_SET_EAPTTLS_RESP_TLV   (WFA_STA_ASSOCIATE_RESP_TLV + 0x01)
#define WFA_STA_SET_EAPSIM_RESP_TLV   (WFA_STA_SET_EAPTTLS_RESP_TLV + 0x01)
#define WFA_STA_SET_PEAP_RESP_TLV      (WFA_STA_SET_EAPSIM_RESP_TLV + 0x01)
#define WFA_STA_SET_IBSS_RESP_TLV         (WFA_STA_SET_PEAP_RESP_TLV + 0x01)
#define WFA_STA_GET_INFO_RESP_TLV      (WFA_STA_SET_IBSS_RESP_TLV + 0x01)
#define WFA_DEVICE_GET_INFO_RESP_TLV  (WFA_STA_GET_INFO_RESP_TLV + 0x01)
#define WFA_DEVICE_LIST_IF_RESP_TLV (WFA_DEVICE_GET_INFO_RESP_TLV + 0x01) 

#define WFA_STA_DEBUG_SET_RESP_TLV  (WFA_DEVICE_LIST_IF_RESP_TLV + 0x01)
#define WFA_STA_SET_MODE_RESP_TLV   (WFA_STA_DEBUG_SET_RESP_TLV + 0x01) /* 77 */
#define WFA_STA_SET_WMM_RESP_TLV   (WFA_STA_SET_MODE_RESP_TLV + 0x01)   /* 78 */
#define WFA_STA_SEND_NEIGREQ_RESP_TLV (WFA_STA_SET_WMM_RESP_TLV + 0x01) /* neighbor request */
#define WFA_STA_SET_SYSTIME_RESP_TLV		 (WFA_STA_SEND_NEIGREQ_RESP_TLV + 0x01)
#define WFA_STA_SET_11N_RESP_TLV			 (WFA_STA_SET_SYSTIME_RESP_TLV + 0x01)
#define WFA_STA_SET_RIFS_TEST_RESP_TLV	 (WFA_STA_SET_11N_RESP_TLV + 0x01)
#define WFA_STA_SET_WIRELESS_RESP_TLV	 (WFA_STA_SET_RIFS_TEST_RESP_TLV + 0x01)
#define WFA_STA_SEND_ADDBA_RESP_TLV		 (WFA_STA_SET_WIRELESS_RESP_TLV + 0x01)
#define WFA_STA_SEND_COEXIST_MGMT_RESP_TLV	 (WFA_STA_SEND_ADDBA_RESP_TLV + 0x01)
#define WFA_STA_DISCONNECT_RESP_TLV	 (WFA_STA_SEND_COEXIST_MGMT_RESP_TLV + 0x01)
#define WFA_STA_SET_EAPFAST_RESP_TLV	 (WFA_STA_DISCONNECT_RESP_TLV + 0x01)
#define WFA_STA_SET_EAPAKA_RESP_TLV	 (WFA_STA_SET_EAPFAST_RESP_TLV + 0x01)
#define WFA_STA_REASSOCIATE_RESP_TLV      (WFA_STA_SET_EAPAKA_RESP_TLV + 0x01)         /* 72 */
#define WFA_STA_SET_PWRSAVE_RESP_TLV      (WFA_STA_REASSOCIATE_RESP_TLV + 0x01)        /* 73 */
#define WFA_STA_RESET_DEFAULT_RESP_TLV    (WFA_STA_SET_PWRSAVE_RESP_TLV + 0x01)
#define WFA_STA_RESPONSE_END              (WFA_STA_RESET_DEFAULT_RESP_TLV + 0x01)

#else
//Hardcode these value MindTree to avoid compilation issues
#define WFA_GET_VERSION_TLV                                         0x01

#define WFA_TRAFFIC_SEND_PING_TLV    0x02 
#define WFA_TRAFFIC_STOP_PING_TLV     0x03
#define WFA_TRAFFIC_AGENT_CONFIG_TLV  0x04
#define WFA_TRAFFIC_AGENT_SEND_TLV    0x05
#define WFA_TRAFFIC_AGENT_RECV_START_TLV 0x06
#define WFA_TRAFFIC_AGENT_RECV_STOP_TLV 0x07
#define WFA_TRAFFIC_AGENT_RESET_TLV 0x08
#define WFA_TRAFFIC_AGENT_STATUS_TLV 0x09 /* 9 */

/* STATION/DUT Commands */
#define WFA_STA_GET_IP_CONFIG_TLV    0x0a
#define WFA_STA_SET_IP_CONFIG_TLV    0x0b
#define WFA_STA_GET_MAC_ADDRESS_TLV  0x0c
#define WFA_STA_SET_MAC_ADDRESS_TLV  0x0d
#define WFA_STA_IS_CONNECTED_TLV     0x0e 
#define WFA_STA_VERIFY_IP_CONNECTION_TLV  0x0f
#define WFA_STA_GET_BSSID_TLV        0x10
#define WFA_STA_GET_STATS_TLV        0x11  /* 17 */ 
#define WFA_STA_SET_ENCRYPTION_TLV   0x12
#define WFA_STA_SET_PSK_TLV          0x13
#define WFA_STA_SET_EAPTLS_TLV       0x14
#define WFA_STA_SET_UAPSD_TLV        0x15
#define WFA_STA_ASSOCIATE_TLV        0x16
#define WFA_STA_SET_EAPTTLS_TLV      0x17
#define WFA_STA_SET_EAPSIM_TLV       0x18
#define WFA_STA_SET_PEAP_TLV         0x19
#define WFA_STA_SET_IBSS_TLV         0x1a
#define WFA_STA_GET_INFO_TLV         0x1b
#define WFA_DEVICE_GET_INFO_TLV      0x1c 
#define WFA_DEVICE_LIST_IF_TLV       0x1d  /* 29 */

#define WFA_STA_DEBUG_SET_TLV        0x1e  /* 30 */
#define WFA_STA_SET_MODE_TLV         0x1f  /* 31 */
#define WFA_STA_SET_WMM_TLV          0x20  /* 32 */
#define WFA_STA_SEND_NEIGREQ_TLV     0x21  /* 33 */
#define WFA_STA_SET_SYSTIME_TLV		 0x22
#define WFA_STA_SET_11N_TLV			 0x23
#define WFA_STA_SET_RIFS_TEST_TLV	 0x24
#define WFA_STA_SET_WIRELESS_TLV	 0x25
#define WFA_STA_SEND_ADDBA_TLV		 0x26
#define WFA_STA_SEND_COEXIST_MGMT_TLV	 0x27
#define WFA_STA_DISCONNECT_TLV	 0x28
#define WFA_STA_SET_EAPFAST_TLV	 0x29
#define WFA_STA_SET_EAPAKA_TLV	 0x2a
#define WFA_STA_REASSOCIATE_TLV      0x2b
#define WFA_STA_SET_PWRSAVE_TLV      0x2c
#define WFA_STA_RESET_DEFAULT_TLV    0x2d
#define WFA_STA_COMMANDS_END         0x2e  /* 46 */


/* Version response */
#define WFA_GET_VERSION_RESP_TLV     0x2f  /* 47 */

/* Generic Traffic Generator Responses */
#define WFA_TRAFFIC_SEND_PING_RESP_TLV 0x30
#define WFA_TRAFFIC_STOP_PING_RESP_TLV 0x31
#define WFA_TRAFFIC_AGENT_CONFIG_RESP_TLV 0x32
#define WFA_TRAFFIC_AGENT_SEND_RESP_TLV 0x33
#define WFA_TRAFFIC_AGENT_RECV_START_RESP_TLV 0x34
#define WFA_TRAFFIC_AGENT_RECV_STOP_RESP_TLV 0x35
#define WFA_TRAFFIC_AGENT_RESET_RESP_TLV 0x36
#define WFA_TRAFFIC_AGENT_STATUS_RESP_TLV 0x37

/* STATION/DUT Responses */
#define WFA_STA_GET_IP_CONFIG_RESP_TLV 0x38
#define WFA_STA_SET_IP_CONFIG_RESP_TLV 0x39
#define WFA_STA_GET_MAC_ADDRESS_RESP_TLV 0x3a
#define WFA_STA_SET_MAC_ADDRESS_RESP_TLV 0x3b /* 59 */ 
#define WFA_STA_IS_CONNECTED_RESP_TLV 0x3c
#define WFA_STA_VERIFY_IP_CONNECTION_RESP_TLV  0x40 /* 61 */
#define WFA_STA_GET_BSSID_RESP_TLV 0x3e /* 62 */
#define WFA_STA_GET_STATS_RESP_TLV 0x3f
#define WFA_STA_SET_ENCRYPTION_RESP_TLV 0x40
#define WFA_STA_SET_PSK_RESP_TLV 0x41
#define WFA_STA_SET_EAPTLS_RESP_TLV 0x42
#define WFA_STA_SET_UAPSD_RESP_TLV 0x43
#define WFA_STA_ASSOCIATE_RESP_TLV 0x44
#define WFA_STA_SET_EAPTTLS_RESP_TLV   0x45
#define WFA_STA_SET_EAPSIM_RESP_TLV    0x46
#define WFA_STA_SET_PEAP_RESP_TLV      0x47
#define WFA_STA_SET_IBSS_RESP_TLV      0x48
#define WFA_STA_GET_INFO_RESP_TLV      0x49
#define WFA_DEVICE_GET_INFO_RESP_TLV   0x4a
#define WFA_DEVICE_LIST_IF_RESP_TLV 0x4b

#define WFA_STA_DEBUG_SET_RESP_TLV       0x4c
#define WFA_STA_SET_MODE_RESP_TLV        0x4d /* 77 */
#define WFA_STA_SET_WMM_RESP_TLV         0x4e /* 78 */
#define WFA_STA_SEND_NEIGREQ_RESP_TLV    0x4f
#define WFA_STA_SET_SYSTIME_RESP_TLV     0x50
#define WFA_STA_SET_11N_RESP_TLV         0x51
#define WFA_STA_SET_RIFS_TEST_RESP_TLV   0x52
#define WFA_STA_SET_WIRELESS_RESP_TLV    0x53
#define WFA_STA_SEND_ADDBA_RESP_TLV      0x54
#define WFA_STA_SEND_COEXIST_MGMT_RESP_TLV 0x55
#define WFA_STA_DISCONNECT_RESP_TLV      0x56
#define WFA_STA_SET_EAPFAST_RESP_TLV     0x57
#define WFA_STA_SET_EAPAKA_RESP_TLV      0x58
#define WFA_STA_REASSOCIATE_RESP_TLV     0x59
#define WFA_STA_SET_PWRSAVE_RESP_TLV     0x5a
#define WFA_STA_RESET_DEFAULT_RESP_TLV   0x5b
#define WFA_STA_RESPONSE_END             0x5c
#define WFA_TLV_END WFA_STA_RESPONSE_END 
#endif //MindTree

#define WFA_TLV_HEAD_LEN 1+2

extern WORD wfaGetTag(BYTE *tlv_data);
extern void wfaSetTag(BYTE *tlv_data, BYTE new_tag);
extern WORD wfaGetTLVLen(BYTE *tlv_data);
extern WORD wfaGetValueLen(BYTE *tlv_data);
extern BOOL wfaGetValue(BYTE *pstr, int value_len, BYTE *tlv_data);
extern BOOL wfaIsValidTag(BYTE the_tag);
extern void wfaAliasByTag(BYTE the_tag, char *aliasStr);
extern BOOL wfaDecodeTLV(BYTE *tlv_data, int tlv_len, BYTE *ptlv_tag, int *ptlv_val_len, BYTE *ptlv_value);
extern BOOL wfaEncodeTLV(WORD the_tag, WORD the_len, BYTE *the_value, BYTE *tlv_data);

extern WORD wfaGetValueType(BYTE the_tag, BYTE *tlv_data);

#endif
