/*
* Copyright (C) 2015 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 _PHNXPEXTNS_CUSTOM_H_
#define _PHNXPEXTNS_CUSTOM_H_
#include <nfa_api.h>
#include <sys/types.h>
#include <errno.h>
#include <phNfcStatus.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* TLV structure
* For simple TLV, type[0] == 0x00
* For extended TLV, type[0] == 0xA0
*/
typedef struct {
uint8_t type[2];
uint8_t len;
uint8_t *val;
} tlv_t;
typedef enum {
passive_106 = 0x01,
passive_212 = 0x02,
passive_424 = 0x04,
active_106 = 0x10,
active_212 = 0x20,
active_424 = 0x40,
} p2p_speed_t;
typedef enum {
NO_SE,
UICC,
eSE,
} SE_t;
typedef enum {
ReaderMode = 0x01,
P2PMode = 0x02,
CEMode = 0x04,
} PollMode_t;
/*******************************************************************************
**
** Function phNxpExtns_get_version
**
** Description Function to get the HW, FW and SW versions.
**
** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
**
** NOTE: Internally this function will use phNxpNciHal_get_version from HAL.
*******************************************************************************/
NFCSTATUS phNxpExtns_get_version (uint32_t *hw_ver, uint32_t *fw_ver, uint32_t *sw_ver);
/*******************************************************************************
**
** Function phNxpNciHal_read_tlv
**
** Description Function to read simple TLV and extended TLV.
** Memory for TLV and fields are allocated and freed by calling
** function. Input is type and len. Response is provied in *val.
**
** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
**
** NOTE: Internally this function will use NFA_GetConfig for simple TLV.
** For extended TLV, it will use NFA_SendRawFrame.
*******************************************************************************/
NFCSTATUS phNxpNciHal_read_tlv (tlv_t *tlv);
/*******************************************************************************
**
** Function phNxpNciHal_write_tlv
**
** Description Function to write simple TLV and extended TLV.
** Memory for TLV and fields are allocated and freed by calling
** function. Input is type, len, *val.
**
** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
**
** NOTE: Internally this function will use NFA_SetConfig for simple TLV.
** For extended TLV, it will use NFA_SendRawFrame.
*******************************************************************************/
NFCSTATUS phNxpNciHal_write_tlv (tlv_t *tlv);
/*******************************************************************************
**
** Function phNxpExtns_select_poll_tech
**
** Description This function selects the polling technology for starting
** polling loop. This function does not start polling loop.
** It is just a setting for polling technology.
**
** Returns NFCSTATUS_SUCCESS if operation successful,
** otherwise NFCSTATUS_FAILED.
**
** NOTE: Internally this function is using NFA_EnablePolling function.
*******************************************************************************/
NFCSTATUS phNxpExtns_select_poll_tech (tNFA_TECHNOLOGY_MASK tech_mask);
/*******************************************************************************
**
** Function phNxpExtns_select_ce_listen_tech
**
** Description This function set the listen tech for card emulation.
** This function does not include routing.
** This function does not start polling loop.
**
** Returns NFCSTATUS_SUCCESS if operation successful,
** otherwise NFCSTATUS_FAILED.
**
** NOTE: Internally this function is using NFA_CeConfigureUiccListenTech.
** Not sure which handle to use, from UICC or eSE.
*******************************************************************************/
NFCSTATUS phNxpExtns_select_ce_listen_tech (tNFA_TECHNOLOGY_MASK tech_mask);
/*******************************************************************************
**
** Function phNxpExtns_select_p2p_poll_speed
**
** Description This function will select the P2P polling speed.
** phNxpExtns_select_poll_tech overwrite the settings of poll if
** reader mode is enabled.
** There is only one active poll phase but device can use one
** active speed and can move to higher speed if target supports.
**
** Returns NFCSTATUS_SUCCESS if operation successful,
** otherwise NFCSTATUS_FAILED.
**
** NOTE: Internally this function will use NFA_EnablePolling and NFA_SetConfig
*******************************************************************************/
NFCSTATUS phNxpExtns_select_p2p_poll_speed (p2p_speed_t p2p_initiator_speed);
/*******************************************************************************
**
** Function phNxpExtns_select_p2p_listen_speed
**
** Description This function will select the listen mode
** This function does not include routing.
** This function does not start polling loop.
**
** Returns NFCSTATUS_SUCCESS if operation successful,
** otherwise NFCSTATUS_FAILED.
**
** NOTE: Internally this function will use NFA_SetP2pListenTech and NFA_SetConfig
*******************************************************************************/
NFCSTATUS phNxpExtns_select_p2p_listen_speed (p2p_speed_t p2p_target_speed);
/*******************************************************************************
**
** Function phNxpExtns_select_se
**
** Description This function will set the routing of the traffic to selected
** SE. This function also does not start polling loop.
**
** Returns NFCSTATUS_SUCCESS if operation successful,
** otherwise NFCSTATUS_FAILED.
**
** NOTE:
*******************************************************************************/
NFCSTATUS phNxpExtns_select_se (SE_t se);
/*******************************************************************************
**
** Function phNxpExtns_set_poll_mode
**
** Description This function selects which mode to enable for polling loop.
** This function do not start polling loop.
**
** Returns NFCSTATUS_SUCCESS if operation successful,
** otherwise NFCSTATUS_FAILED.
**
** NOTE:
*******************************************************************************/
NFCSTATUS phNxpExtns_set_poll_mode (PollMode_t poll_mode);
/*******************************************************************************
**
** Function phNxpExtns_start_poll
**
** Description This function starts polling loop based on the configuration
** of the previous calls. If no configuration done through other
** function call then it uses the default configuration from
** configuration files.
** This function internally stops the polling loop if it is
** already running.
**
** Returns NFCSTATUS_SUCCESS if operation successful,
** otherwise NFCSTATUS_FAILED.
**
** NOTE: Internally this function uses NFA_StartRfDiscovery.
*******************************************************************************/
NFCSTATUS phNxpExtns_start_poll (void);
/*******************************************************************************
**
** Function phNxpExtns_stop_poll
**
** Description This function stops the polling loop if it is running.
**
** Returns NFCSTATUS_SUCCESS if operation successful,
** otherwise NFCSTATUS_FAILED.
**
** NOTE:Internally this function uses NFA_StopRfDiscovery.
*******************************************************************************/
NFCSTATUS phNxpExtns_stop_poll (void);
/*******************************************************************************
**
** Function phNxpExtns_enable_Felica_CLT
**
** Description This function enables or disable Felica CLT feature.
**
** Returns NFCSTATUS_SUCCESS if operation successful,
** otherwise NFCSTATUS_FAILED.
**
** NOTE:
*******************************************************************************/
NFCSTATUS phNxpExtns_enable_Felica_CLT (bool enable);
/*******************************************************************************
**
** Function phNxpExtns_enable_Mifare_CLT
**
** Description This function enables or disable Mifare CLT feature.
**
** Returns NFCSTATUS_SUCCESS if operation successful,
** otherwise NFCSTATUS_FAILED.
**
** NOTE:
*******************************************************************************/
NFCSTATUS phNxpExtns_enable_Mifare_CLT (bool enable);
#endif /* _PHNXPEXTNS_CUSTOM_H_ */