wlan-ap-Telecominfraproject/feeds/wifi-ax/ftm/src/ftm_nfc.c
John Crispin eb9bdfaed9 ipq807x: add certification support
Fixes: WIFI-7055
Signed-off-by: John Crispin <john@phrozen.org>
2022-02-12 12:41:42 +01:00

109 lines
3.2 KiB
C
Executable File

/*=========================================================================
NFC FTM C File
Description
This file contains the definitions of the function used to check
which chip is present on the device.
Copyright (c) 2013-2015 Qualcomm Technologies, Inc.
All Rights Reserved.
Confidential and Proprietary - Qualcomm Technologies, Inc.
===========================================================================*/
/*===========================================================================
Edit History
when who what, where, why
-------- --- ----------------------------------------------------------
===========================================================================*/
#include "ftm_nfc.h"
CHIP_TYPE chipType = UNDEFINED_CHIP_TYPE;
/*=========================================================================
FUNCTION checkChip
DESCRIPTION
Checks whether it can open the NQ Kernel, if not, it means
the device has a QTI chip.
PARAMETERS
None
RETURN VALUE
void
===========================================================================*/
void checkChip( void )
{
int ret = 0;
ret = ftm_nq_nfc_open( ); // can you open the NQ Kernel?
if( ret > 0 ) // yes
{
printf( "%s: NQ CHIP \n", __func__ );
chipType = NQ_CHIP; // so it's an NQ Chip
ret = ftm_nq_nfc_close( ); // close the handle
if( ret != 0 ) // not successful?
{
printf( "%s: Could not close the File Handle for NQ Chip \n", __func__ );
chipType = CHIP_ERROR; // something is wrong
}
}
else
{
printf( "%s: QTI CHIP \n", __func__ );
chipType = QTI_CHIP;
}
}
/*=========================================================================
FUNCTION ftm_nfc_dispatch
DESCRIPTION
Dispatches QRCT commands and Chip Replies/Notifications/Data
to the required FTM NFC Chip Handler
PARAMETERS
ftm_nfc_pkt_type *nfc_ftm_pkt - FTM Packet
uint16 pkt_len - FTM Packet Length
RETURN VALUE
void *
===========================================================================*/
void* ftm_nfc_dispatch( ftm_nfc_pkt_type *nfc_ftm_pkt, uint16 pkt_len )
{
ftm_nfc_pkt_type *reply = NULL;
if( UNDEFINED_CHIP_TYPE == chipType )
{
printf( "%s: Checking Chip Type \n", __func__ );
checkChip( );
}
switch( chipType )
{
case NQ_CHIP:
if( nfc_ftm_pkt->ftm_nfc_hdr.nfc_cmd_id == FTM_NFC_REQ_CHIP_TYPE )
reply = PrepareRsp( nfc_ftm_pkt );
else
reply = ftm_nfc_dispatch_nq( nfc_ftm_pkt, pkt_len );
break;
case QTI_CHIP:
if( nfc_ftm_pkt->ftm_nfc_hdr.nfc_cmd_id == FTM_NFC_REQ_CHIP_TYPE )
reply = PrepareRsp( nfc_ftm_pkt );
else
reply = ftm_nfc_dispatch_qti( nfc_ftm_pkt, pkt_len );
break;
default:
printf( "%s: ERROR - THIS SHOULD HAVE NEVER BEEN REACHED, CHIP TYPE %d", __func__, chipType );
break;
}
return reply;
}