/****************************************************************************
 *  (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
 ******************************************************************************
 */


#ifndef WFA_CA_RESP_H
#define WFA_CA_RESP_H

typedef int (*dutCommandRespFuncPtr)(BYTE *cmdBuf);

int caCmdNotDefinedYet(BYTE *cmdBuf);
int wfaStaVerifyIpConnectResp(BYTE *cmdBuf);
int wfaStaSetIpConfigResp(BYTE *cmdBuf);
int wfaStaIsConnectedResp(BYTE *cmdBuf);
int wfaStaGetIpConfigResp(BYTE *cmdBuf);
int wfaGetVersionResp(BYTE *cmdBuf);
int wfaStaGetInfoResp(BYTE *cmdBuf);
int wfaTrafficAgentConfigResp(BYTE *cmdBuf);
int wfaTrafficAgentSendResp(BYTE *cmdBuf);
int wfaTrafficAgentRecvStartResp(BYTE *cmdBuf);
int wfaTrafficAgentRecvStopResp(BYTE *cmdBuf);
int wfaTrafficAgentResetResp(BYTE *cmdBuf);
int wfaTrafficAgentPingStartResp(BYTE *cmdBuf);
int wfaTrafficAgentPingStopResp(BYTE *cmdBuf);
int wfaStaGetMacAddressResp(BYTE *cmdBuf);
int wfaStaGetBSSIDResp(BYTE *cmdBuf);
int wfaStaSetEncryptionResp(BYTE *cmdBuf);
int wfaStaSetEapTLSResp(BYTE *cmdBuf);
int wfaStaSetPSKResp(BYTE *cmdBuf);
int wfaStaSetEapTTLSResp(BYTE *cmdBuf);
int wfaStaSetEapSIMResp(BYTE *cmdBuf);
int wfaStaSetEapPEAPResp(BYTE *cmdBuf);
int wfaStaAssociateResp(BYTE *cmdBuf);
int wfaStaSetIBSSResp(BYTE *cmdBuf);
int wfaStaGetStatsResp(BYTE *cmdBuf);
int wfaDeviceGetInfoResp(BYTE *cmdBuf);
int wfaDeviceListIFResp(BYTE *cmdBuf);
int wfaStaDebugSetResp(BYTE *cmdBuf);
void wfaStaDebugHexDump(BYTE *cmdBuf);
int wfaStaSetModeResp(BYTE *cmdBuf);
int wfaStaSetWMMResp(BYTE *cmdBuf);

int wfaStaSetUAPSDResp(BYTE *cmdBuf); /* Added as per BRCM 1.3 ASD */
int wfaStaSendNeigreqResp(BYTE *cmdBuf);
int wfaStaSetSystimeResp(BYTE *cmdBuf);
int wfaStaSet11nResp(BYTE *cmdBuf);
int wfaStaSetRifsTestResp(BYTE *cmdBuf);
int wfaStaSetWirelessResp(BYTE *cmdBuf);
int wfaStaSendAddbaResp(BYTE *cmdBuf);
int wfaStaSendCoexistMgmtResp(BYTE *cmdBuf);
int wfaStaDisconnectResp(BYTE *cmdBuf);
int wfaStaSetEapFASTResp(BYTE *cmdBuf);
int wfaStaSetEapAKAResp(BYTE *cmdBuf);
int wfaStaResetDefaultResp(BYTE * cmdBuf);
int wfaStaSetPwrsaveResp(BYTE *cmdBuf);
int wfaStaReassociateResp(BYTE *cmdBuf);

#endif
