| /* |
| * 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_ */ |