18605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 28605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Copyright (C) 2015 The Android Open Source Project 38605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * 48605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Licensed under the Apache License, Version 2.0 (the "License"); 58605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * you may not use this file except in compliance with the License. 68605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * You may obtain a copy of the License at 78605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * 88605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * http://www.apache.org/licenses/LICENSE-2.0 98605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * 108605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Unless required by applicable law or agreed to in writing, software 118605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * distributed under the License is distributed on an "AS IS" BASIS, 128605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * See the License for the specific language governing permissions and 148605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * limitations under the License. 158605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 168605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 178605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#ifndef PHNFCTYPES_H 188605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#define PHNFCTYPES_H 198605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 208605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#include <stdint.h> 218605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#include <string.h> 228605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#include <stdio.h> 238605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#include <stdlib.h> 248605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#include <unistd.h> 258605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 268605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#ifndef TRUE 278605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#define TRUE (0x01) /* Logical True Value */ 288605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#endif 298605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#ifndef FALSE 308605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#define FALSE (0x00) /* Logical False Value */ 318605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#endif 328605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef uint8_t utf8_t; /* UTF8 Character String */ 338605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef uint8_t bool_t; /* boolean data type */ 348605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef uint16_t NFCSTATUS; /* Return values */ 358605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#define STATIC static 368605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 378605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#define PHNFC_MAX_UID_LENGTH 0x0AU /* Maximum UID length expected */ 388605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#define PHNFC_MAX_ATR_LENGTH 0x30U /* Maximum ATR_RES (General Bytes) length expected */ 398605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#define PHNFC_NFCID_LENGTH 0x0AU /* Maximum length of NFCID 1.3*/ 408605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#define PHNFC_ATQA_LENGTH 0x02U /* ATQA length */ 418605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 428605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 438605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * NFC Data structure 448605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 458605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef struct phNfc_sData 468605731e8f17d1fde003084811f13f52539eb20cJizhou Liao{ 478605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t *buffer; /* Buffer to store data */ 488605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint32_t length; /* Buffer length */ 498605731e8f17d1fde003084811f13f52539eb20cJizhou Liao} phNfc_sData_t; 508605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 518605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 528605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Possible Hardware Configuration exposed to upper layer. 538605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Typically this should be port name (Ex:"COM1","COM2") to which PN547 is connected. 548605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 558605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef enum 568605731e8f17d1fde003084811f13f52539eb20cJizhou Liao{ 578605731e8f17d1fde003084811f13f52539eb20cJizhou Liao ENUM_LINK_TYPE_COM1, 588605731e8f17d1fde003084811f13f52539eb20cJizhou Liao ENUM_LINK_TYPE_COM2, 598605731e8f17d1fde003084811f13f52539eb20cJizhou Liao ENUM_LINK_TYPE_COM3, 608605731e8f17d1fde003084811f13f52539eb20cJizhou Liao ENUM_LINK_TYPE_COM4, 618605731e8f17d1fde003084811f13f52539eb20cJizhou Liao ENUM_LINK_TYPE_COM5, 628605731e8f17d1fde003084811f13f52539eb20cJizhou Liao ENUM_LINK_TYPE_COM6, 638605731e8f17d1fde003084811f13f52539eb20cJizhou Liao ENUM_LINK_TYPE_COM7, 648605731e8f17d1fde003084811f13f52539eb20cJizhou Liao ENUM_LINK_TYPE_COM8, 658605731e8f17d1fde003084811f13f52539eb20cJizhou Liao ENUM_LINK_TYPE_I2C, 668605731e8f17d1fde003084811f13f52539eb20cJizhou Liao ENUM_LINK_TYPE_SPI, 678605731e8f17d1fde003084811f13f52539eb20cJizhou Liao ENUM_LINK_TYPE_USB, 688605731e8f17d1fde003084811f13f52539eb20cJizhou Liao ENUM_LINK_TYPE_TCP, 698605731e8f17d1fde003084811f13f52539eb20cJizhou Liao ENUM_LINK_TYPE_NB 708605731e8f17d1fde003084811f13f52539eb20cJizhou Liao} phLibNfc_eConfigLinkType; 718605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 728605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 738605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Deferred message. This message type will be posted to the client application thread 748605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * to notify that a deferred call must be invoked. 758605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 768605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#define PH_LIBNFC_DEFERREDCALL_MSG (0x311) 778605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 788605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 798605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Deferred call declaration. 808605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * This type of API is called from ClientApplication ( main thread) to notify 818605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * specific callback. 828605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 838605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef void (*pphLibNfc_DeferredCallback_t) (void*); 848605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 858605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 868605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Deferred parameter declaration. 878605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * This type of data is passed as parameter from ClientApplication (main thread) to the 888605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * callback. 898605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 908605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef void *pphLibNfc_DeferredParameter_t; 918605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 928605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 938605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Possible Hardware Configuration exposed to upper layer. 948605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Typically this should be at least the communication link (Ex:"COM1","COM2") 958605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * the controller is connected to. 968605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 978605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef struct phLibNfc_sConfig 988605731e8f17d1fde003084811f13f52539eb20cJizhou Liao{ 998605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t *pLogFile; /* Log File Name*/ 1008605731e8f17d1fde003084811f13f52539eb20cJizhou Liao /* Hardware communication link to the controller */ 1018605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phLibNfc_eConfigLinkType nLinkType; 1028605731e8f17d1fde003084811f13f52539eb20cJizhou Liao /* The client ID (thread ID or message queue ID) */ 1038605731e8f17d1fde003084811f13f52539eb20cJizhou Liao unsigned int nClientId; 1048605731e8f17d1fde003084811f13f52539eb20cJizhou Liao} phLibNfc_sConfig_t, *pphLibNfc_sConfig_t; 1058605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 1068605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 1078605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * NFC Message structure contains message specific details like 1088605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * message type, message specific data block details, etc. 1098605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 1108605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef struct phLibNfc_Message 1118605731e8f17d1fde003084811f13f52539eb20cJizhou Liao{ 1128605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint32_t eMsgType; /* Type of the message to be posted*/ 1138605731e8f17d1fde003084811f13f52539eb20cJizhou Liao void * pMsgData; /* Pointer to message specific data block in case any*/ 1148605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint32_t Size; /* Size of the datablock*/ 1158605731e8f17d1fde003084811f13f52539eb20cJizhou Liao} phLibNfc_Message_t, *pphLibNfc_Message_t; 1168605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 1178605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 1188605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Deferred message specific info declaration. 1198605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * This type of information is packed as message data when PH_LIBNFC_DEFERREDCALL_MSG 1208605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * type message is posted to message handler thread. 1218605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 1228605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef struct phLibNfc_DeferredCall 1238605731e8f17d1fde003084811f13f52539eb20cJizhou Liao{ 1248605731e8f17d1fde003084811f13f52539eb20cJizhou Liao pphLibNfc_DeferredCallback_t pCallback;/* pointer to Deferred callback */ 1258605731e8f17d1fde003084811f13f52539eb20cJizhou Liao pphLibNfc_DeferredParameter_t pParameter;/* pointer to Deferred parameter */ 1268605731e8f17d1fde003084811f13f52539eb20cJizhou Liao} phLibNfc_DeferredCall_t; 1278605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 1288605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 1298605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Definitions for supported protocol 1308605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 1318605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef struct phNfc_sSupProtocol 1328605731e8f17d1fde003084811f13f52539eb20cJizhou Liao{ 1338605731e8f17d1fde003084811f13f52539eb20cJizhou Liao unsigned int MifareUL : 1; /* Protocol Mifare Ultra Light or any NFC Forum Type-2 tags */ 1348605731e8f17d1fde003084811f13f52539eb20cJizhou Liao unsigned int MifareStd : 1; /* Protocol Mifare Standard. */ 1358605731e8f17d1fde003084811f13f52539eb20cJizhou Liao unsigned int ISO14443_4A : 1; /* Protocol ISO14443-4 Type A. */ 1368605731e8f17d1fde003084811f13f52539eb20cJizhou Liao unsigned int ISO14443_4B : 1; /* Protocol ISO14443-4 Type B. */ 1378605731e8f17d1fde003084811f13f52539eb20cJizhou Liao unsigned int ISO15693 : 1; /* Protocol ISO15693 HiTag. */ 1388605731e8f17d1fde003084811f13f52539eb20cJizhou Liao unsigned int Felica : 1; /* Protocol Felica. */ 1398605731e8f17d1fde003084811f13f52539eb20cJizhou Liao unsigned int NFC : 1; /* Protocol NFC. */ 1408605731e8f17d1fde003084811f13f52539eb20cJizhou Liao unsigned int Jewel : 1; /* Protocol Innovision Jewel Tag. or Any T1T*/ 1418605731e8f17d1fde003084811f13f52539eb20cJizhou Liao unsigned int Desfire : 1; /*TRUE indicates specified feature (mapping 1428605731e8f17d1fde003084811f13f52539eb20cJizhou Liao or formatting)for DESFire tag supported else not supported.*/ 1438605731e8f17d1fde003084811f13f52539eb20cJizhou Liao unsigned int Kovio : 1; /* Protocol Kovio Tag*/ 1448605731e8f17d1fde003084811f13f52539eb20cJizhou Liao unsigned int HID : 1; /* Protocol HID(Picopass) Tag*/ 1458605731e8f17d1fde003084811f13f52539eb20cJizhou Liao unsigned int Bprime : 1; /* Protocol BPrime Tag*/ 1468605731e8f17d1fde003084811f13f52539eb20cJizhou Liao unsigned int EPCGEN2 : 1; /* Protocol EPCGEN2 Tag*/ 1478605731e8f17d1fde003084811f13f52539eb20cJizhou Liao} phNfc_sSupProtocol_t; 1488605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 1498605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 1508605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Enumerated MIFARE Commands 1518605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 1528605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 1538605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef enum phNfc_eMifareCmdList 1548605731e8f17d1fde003084811f13f52539eb20cJizhou Liao{ 1558605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareRaw = 0x00U, /* This command performs raw transcations */ 1568605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareAuthentA = 0x60U, /* This command performs an authentication with KEY A for a sector. */ 1578605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareAuthentB = 0x61U, /* This command performs an authentication with KEY B for a sector. */ 1588605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareRead16 = 0x30U, /* Read 16 Bytes from a Mifare Standard block */ 1598605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareRead = 0x30U, /* Read Mifare Standard */ 1608605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareWrite16 = 0xA0U, /* Write 16 Bytes to a Mifare Standard block */ 1618605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareWrite4 = 0xA2U, /* Write 4 bytes. */ 1628605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareInc = 0xC1U, /* Increment */ 1638605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareDec = 0xC0U, /* Decrement */ 1648605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareTransfer = 0xB0U, /* Transfer */ 1658605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareRestore = 0xC2U, /* Restore. */ 1668605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareReadSector = 0x38U, /* Read Sector. */ 1678605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareWriteSector= 0xA8U, /* Write Sector. */ 1688605731e8f17d1fde003084811f13f52539eb20cJizhou Liao /* Above commands could be used for preparing raw command but below one can not be */ 1698605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareReadN = 0x01, /* Proprietary Command */ 1708605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareWriteN = 0x02, /* Proprietary Command */ 1718605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareSectorSel = 0x03, /* Proprietary Command */ 1728605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareAuth = 0x04, /* Proprietary Command */ 1738605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareProxCheck = 0x05, /* Proprietary Command */ 1748605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareInvalidCmd = 0xFFU /* Invalid Command */ 1758605731e8f17d1fde003084811f13f52539eb20cJizhou Liao} phNfc_eMifareCmdList_t; 1768605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 1778605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 1788605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Information about ISO14443A 1798605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 1808605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef struct phNfc_sIso14443AInfo 1818605731e8f17d1fde003084811f13f52539eb20cJizhou Liao{ 1828605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t Uid[PHNFC_MAX_UID_LENGTH]; /* UID information of the TYPE A 1838605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Tag Discovered */ 1848605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t UidLength; /* UID information length */ 1858605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t AppData[PHNFC_MAX_ATR_LENGTH]; /* Application data information of the 1868605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 1 * tag discovered (= Historical bytes for 1878605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * type A) */ 1888605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t AppDataLength; /* Application data length */ 1898605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t Sak; /* SAK information of the TYPE A 1908605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Tag Discovered */ 1918605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t AtqA[PHNFC_ATQA_LENGTH]; /* ATQA informationof the TYPE A 1928605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Tag Discovered */ 1938605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t MaxDataRate; /* Maximum data rate supported 1948605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * by the tag Discovered */ 1958605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t Fwi_Sfgt; /* Frame waiting time and start up 1968605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * frame guard */ 1978605731e8f17d1fde003084811f13f52539eb20cJizhou Liao} phNfc_sIso14443AInfo_t; 1988605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 1998605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* Remote device information structure */ 2008605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef union phNfc_uRemoteDevInfo 2018605731e8f17d1fde003084811f13f52539eb20cJizhou Liao{ 2028605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_sIso14443AInfo_t Iso14443A_Info;/* ISO1443A Remote device info */ 2038605731e8f17d1fde003084811f13f52539eb20cJizhou Liao} phNfc_uRemoteDevInfo_t; 2048605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 2058605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 2068605731e8f17d1fde003084811f13f52539eb20cJizhou Liao* 2078605731e8f17d1fde003084811f13f52539eb20cJizhou Liao* The RF Device Type List is used to identify the type of 2088605731e8f17d1fde003084811f13f52539eb20cJizhou Liao* remote device that is discovered and connected. 2098605731e8f17d1fde003084811f13f52539eb20cJizhou Liao* 2108605731e8f17d1fde003084811f13f52539eb20cJizhou Liao*/ 2118605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 2128605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef enum phNfc_eRFDevType 2138605731e8f17d1fde003084811f13f52539eb20cJizhou Liao{ 2148605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eUnknown_DevType = 0x00U, 2158605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eISO14443_A_PCD, 2168605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eISO14443_B_PCD, 2178605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eISO14443_BPrime_PCD, 2188605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eFelica_PCD, 2198605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eJewel_PCD, 2208605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eISO15693_PCD, 2218605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eEpcGen2_PCD, 2228605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_ePCD_DevType, 2238605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_ePICC_DevType, 2248605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eISO14443_A_PICC, 2258605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eISO14443_4A_PICC, 2268605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eISO14443_3A_PICC, 2278605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifare_PICC, 2288605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eISO14443_B_PICC, 2298605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eISO14443_4B_PICC, 2308605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eISO14443_BPrime_PICC, 2318605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eFelica_PICC, 2328605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eJewel_PICC, 2338605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eISO15693_PICC, 2348605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eEpcGen2_PICC, 2358605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eNfcIP1_Target, 2368605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eNfcIP1_Initiator, 2378605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eInvalid_DevType 2388605731e8f17d1fde003084811f13f52539eb20cJizhou Liao} phNfc_eRFDevType_t; 2398605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 2408605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 2418605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * The Remote Device Type List is used to identify the type of 2428605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * remote device that is discovered/connected 2438605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 2448605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef phNfc_eRFDevType_t phNfc_eRemDevType_t; 2458605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef phNfc_eRemDevType_t phHal_eRemDevType_t; 2468605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 2478605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 2488605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Union for each available type of Commands. 2498605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 2508605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 2518605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef union phNfc_uCommand 2528605731e8f17d1fde003084811f13f52539eb20cJizhou Liao{ 2538605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eMifareCmdList_t MfCmd; /* Mifare command structure. */ 2548605731e8f17d1fde003084811f13f52539eb20cJizhou Liao} phNfc_uCmdList_t; 2558605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 2568605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 2578605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * The Remote Device Information Structure holds information about one single Remote 2588605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Device detected. 2598605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 2608605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef struct phNfc_sRemoteDevInformation 2618605731e8f17d1fde003084811f13f52539eb20cJizhou Liao{ 2628605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t SessionOpened; /* Flag indicating the validity of 2638605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * the handle of the remote device. 2648605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * 1 = Device is not activer (Only discovered), 2 = Device is active and ready for use*/ 2658605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_eRemDevType_t RemDevType; /* Remote device type */ 2668605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_uRemoteDevInfo_t RemoteDevInfo; /* Union of available Remote Device */ 2678605731e8f17d1fde003084811f13f52539eb20cJizhou Liao} phNfc_sRemoteDevInformation_t; 2688605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 2698605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 2708605731e8f17d1fde003084811f13f52539eb20cJizhou Liao/* 2718605731e8f17d1fde003084811f13f52539eb20cJizhou Liao * Transceive Information Data Structure for sending commands/response to the remote device 2728605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 2738605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 2748605731e8f17d1fde003084811f13f52539eb20cJizhou Liaotypedef struct phNfc_sTransceiveInfo 2758605731e8f17d1fde003084811f13f52539eb20cJizhou Liao{ 2768605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_uCmdList_t cmd; /* Command for transceive */ 2778605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t addr; /* Start Block Number */ 2788605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t NumBlock; /* Number of Blocks to perform operation */ 2798605731e8f17d1fde003084811f13f52539eb20cJizhou Liao /* For Felica only*/ 2808605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint16_t *ServiceCodeList; /* 2 Byte service Code List */ 2818605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint16_t *Blocklist; /* 2 Byte Block list */ 2828605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_sData_t sSendData; /* Send data */ 2838605731e8f17d1fde003084811f13f52539eb20cJizhou Liao phNfc_sData_t sRecvData; /* Recv data */ 2848605731e8f17d1fde003084811f13f52539eb20cJizhou Liao /* For EPC-GEN */ 2858605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint32_t dwWordPtr; /* Word address for the memory write */ 2868605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t bWordPtrLen; /* Specifies the length of word pointer 2878605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 00: 8 bits 2888605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 01: 16 bits 2898605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 10: 24 bits 2908605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 11: 32 bits 2918605731e8f17d1fde003084811f13f52539eb20cJizhou Liao */ 2928605731e8f17d1fde003084811f13f52539eb20cJizhou Liao uint8_t bWordCount; /* Number of words to be read or written */ 2938605731e8f17d1fde003084811f13f52539eb20cJizhou Liao} phNfc_sTransceiveInfo_t; 2948605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 2958605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#define UNUSED(X) (void)X; 2968605731e8f17d1fde003084811f13f52539eb20cJizhou Liao 2978605731e8f17d1fde003084811f13f52539eb20cJizhou Liao#endif /* PHNFCTYPES_H */ 298