summaryrefslogtreecommitdiffstats
path: root/src/phHal4Nfc_Internal.h
diff options
context:
space:
mode:
authorNick Pelly <npelly@google.com>2010-09-23 12:47:58 -0700
committerNick Pelly <npelly@google.com>2010-09-23 13:53:18 -0700
commit5d9927ba30ba449badb9f6df0fbeb4d6aedc6e2a (patch)
tree190f9251c6db03d3550ec7f30b51a2561c01d9cf /src/phHal4Nfc_Internal.h
parent4ff7c86a2c706b150078274455406f1b04966e1a (diff)
downloadexternal_libnfc-nxp-5d9927ba30ba449badb9f6df0fbeb4d6aedc6e2a.zip
external_libnfc-nxp-5d9927ba30ba449badb9f6df0fbeb4d6aedc6e2a.tar.gz
external_libnfc-nxp-5d9927ba30ba449badb9f6df0fbeb4d6aedc6e2a.tar.bz2
Initial libnfc checkin
Source: Trusted_NFC_Device_Host_AA03.01e02_google.zip code drop (23-Sep-2010) Change-Id: Ie47f18423f949a8d3e0815d13f55c814312add24 Signed-off-by: Nick Pelly <npelly@google.com>
Diffstat (limited to 'src/phHal4Nfc_Internal.h')
-rw-r--r--src/phHal4Nfc_Internal.h308
1 files changed, 308 insertions, 0 deletions
diff --git a/src/phHal4Nfc_Internal.h b/src/phHal4Nfc_Internal.h
new file mode 100644
index 0000000..27fca61
--- /dev/null
+++ b/src/phHal4Nfc_Internal.h
@@ -0,0 +1,308 @@
+/*
+ * Copyright (C) 2010 NXP Semiconductors
+ *
+ * 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.
+ */
+
+
+/**
+* \file phHal4Nfc_Internal.h
+* \brief HAL callback Function Prototypes
+*
+* The HAL4.0 Internal header file
+*
+* Project: NFC-FRI-1.1 / HAL4.0
+*
+* $Date: Mon May 31 11:43:42 2010 $
+* $Author: ing07385 $
+* $Revision: 1.40 $
+* $Aliases: NFC_FRI1.1_WK1023_R35_1 $
+*
+*/
+
+/*@{*/
+#ifndef PHHAL4NFC_INTERNAL_H
+#define PHHAL4NFC_INTERNAL_H
+/*@}*/
+
+#include <phHciNfc.h>
+
+/**
+* \name HAL4
+*
+* File: \ref phHal4Nfc_Internal.h
+*
+*/
+
+/*@{*/
+#define PH_HAL4NFC_INTERNAL_FILEREVISION "$Revision: 1.40 $" /**< \ingroup grp_file_attributes */
+#define PH_HAL4NFC_INTERNAL_FILEALIASES "$Aliases: NFC_FRI1.1_WK1023_R35_1 $" /**< \ingroup grp_file_attributes */
+/*@}*/
+
+/* -----------------Include files ---------------------------------------*/
+
+/* ---------------- Macros ----------------------------------------------*/
+#define PH_HAL4NFC_TRANSCEIVE_TIMEOUT 30000 /**<Transceive operation
+ on any target should be
+ completed within this
+ interval.Else the
+ operation is timed out*/
+
+#define PH_HAL4NFC_TGT_MERGE_ADDRESS 0x988BU
+#define PH_HAL4NFC_TGT_MERGE_SAK 0x00U
+
+
+/*---------------- Hal4 Internal Data Structures -------------------------*/
+/**HAL4 states*/
+typedef enum{
+ eHal4StateClosed = 0x00, /**<closed state*/
+ eHal4StateSelfTestMode, /**<Self test mode*/
+ eHal4StateOpenAndReady ,/**<Fully initialised*/
+ eHal4StateConfiguring , /**<configuration ongoing,transient state*/
+ eHal4StateTargetDiscovered,/**<target discovered*/
+ eHal4StateTargetActivate,/**<state during a select or reactivate*/
+ eHal4StateEmulation,/**<Emulation state*/
+ eHal4StateTargetConnected,/**<Connected state*/
+ eHal4StateTransaction,/**<configuration ongoing,transient state*/
+ eHal4StatePresenceCheck,/**<Presence Check state*/
+ eHal4StateInvalid
+} phHal4Nfc_Hal4state_t;
+
+
+/**Global Pointer to hardware reference used in timer callbacks to get the
+ context pointer*/
+extern phHal_sHwReference_t *gpphHal4Nfc_Hwref;
+
+/**Context info for HAL4 transceive*/
+typedef struct phHal4Nfc_TrcvCtxtInfo{
+ /*Upper layer's Transceive callback*/
+ pphHal4Nfc_TransceiveCallback_t pUpperTranceiveCb;
+ /*Upper layer's Send callback*/
+ pphHal4Nfc_SendCallback_t pP2PSendCb;
+ /*Upper layer's receive callback*/
+ pphHal4Nfc_ReceiveCallback_t pP2PRecvCb;
+ /**Flag to check if a P2P Send is ongoing when target release is issued by
+ the upper layer.If this flag is set ,then a remote device disconnect call
+ will be deferred*/
+ uint8_t P2P_Send_In_Progress;
+ /*Data structure to provide transceive info to Hci*/
+ phHciNfc_XchgInfo_t XchangeInfo;
+ /*sData pointer to point to upper layer's send data*/
+ phNfc_sData_t *psUpperSendData;
+ /*Maintains the offset of number of bytes sent in one go ,so that the
+ remaining bytes can be sent during the next transceive*/
+ uint32_t NumberOfBytesSent;
+ /*Number of bytes received during a P2p receive*/
+ uint32_t P2PRecvLength;
+ /*sData pointer to point to upper layer's recv data*/
+ phNfc_sData_t *psUpperRecvData;
+ /*structure to hold data received from lower layer*/
+ phNfc_sData_t sLowerRecvData;
+ /*Offset for Lower Recv Data buffer*/
+ uint32_t LowerRecvBufferOffset;
+ /*Holds the status of the RecvDataBuffer:
+ NFCSTATUS_SUCCESS:Receive data buffer is complete with data & P2P receive has
+ not yet been called
+ NFCSTATUS_PENDING:RecvDataBuffer is yet to receive the data from lower layer
+ */
+ NFCSTATUS RecvDataBufferStatus;
+ /*Transaction timer ,currently used only for P2P receive on target*/
+ uint32_t TransactionTimerId;
+}phHal4Nfc_TrcvCtxtInfo_t,*pphHal4Nfc_TrcvCtxtInfo_t;
+
+
+/**Context info for HAL4 Device discovery feature*/
+typedef struct phHal4Nfc_ADDCtxtInfo{
+ /*total number of devices discovered*/
+ uint8_t nbr_of_devices;
+ /*smx_discovery*/
+ uint8_t smx_discovery;
+ /*Most recently used ADD configuration*/
+ phHal_sADD_Cfg_t sADDCfg;
+ /*Most recently used Poll configuration*/
+ phHal_sPollDevInfo_t sCurrentPollConfig;
+ /*Set when Poll Configured and reset when polling is disabled.*/
+ uint8_t IsPollConfigured;
+}phHal4Nfc_ADDCtxtInfo_t,*pphHal4Nfc_ADDCtxtInfo_t;
+
+/**Context info for HAL4 connect/disconnect*/
+typedef struct phHal4Nfc_TargetConnectInfo{
+ /*connect callback*/
+ pphHal4Nfc_ConnectCallback_t pUpperConnectCb;
+ /*Disconnect callback*/
+ pphHal4Nfc_DiscntCallback_t pUpperDisconnectCb;
+ /*used when a release call is pending in HAL*/
+ phHal_eReleaseType_t ReleaseType;
+ /*Points to Remote device info of a connected device*/
+ phHal_sRemoteDevInformation_t *psConnectedDevice;
+ /*Emulation state Activated/Deactivated*/
+ phHal_Event_t EmulationState;
+ /*Presence check callback*/
+ pphHal4Nfc_GenCallback_t pPresenceChkCb;
+}phHal4Nfc_TargetConnectInfo_t,*pphHal4Nfc_TargetConnectInfo_t;
+
+/**Context info for HAL4 connect & disconnect*/
+typedef struct phHal4Nfc_UpperLayerInfo{
+ /*Upper layer Context for discovery call*/
+ void *DiscoveryCtxt;
+ /*Upper layer Context for P2P discovery call*/
+ void *P2PDiscoveryCtxt;
+ /**Context and function pointer for default event handler registered
+ by upper layer during initialization*/
+ void *DefaultListenerCtxt;
+ /*Default event handler*/
+ pphHal4Nfc_Notification_t pDefaultEventHandler;
+ /**Upper layer has to register this listener for receiving info about
+ discovered tags*/
+ pphHal4Nfc_Notification_t pTagDiscoveryNotification;
+ /**Upper layer has to register this listener for receiving info about
+ discovered P2P devices*/
+ pphHal4Nfc_Notification_t pP2PNotification;
+ /*Event Notification Context*/
+ void *EventNotificationCtxt;
+ /**Notification handler for emulation and other events*/
+ pphHal4Nfc_Notification_t pEventNotification;
+ /**Upper layer's Config discovery/Emulation callback registry*/
+ pphHal4Nfc_GenCallback_t pConfigCallback;
+ void *psUpperLayerCtxt;
+ /**Upper layer's Open Callback registry*/
+ pphHal4Nfc_GenCallback_t pUpperOpenCb;
+ /**Upper layer's Close Callback registry */
+ pphHal4Nfc_GenCallback_t pUpperCloseCb;
+ /*Ioctl out param pointer ,points to buffer provided by upper layer during
+ a ioctl call*/
+ phNfc_sData_t *pIoctlOutParam;
+ /*Ioctl callback*/
+ pphHal4Nfc_IoctlCallback_t pUpperIoctlCb;
+}phHal4Nfc_UpperLayerInfo_t;
+
+/**Context structure for HAL4.0*/
+typedef struct phHal4Nfc_Hal4Ctxt{
+ /**Hci handle obtained in Hci_Init*/
+ void *psHciHandle;
+ /**Layer configuration*/
+ pphNfcLayer_sCfg_t pHal4Nfc_LayerCfg;
+ /**Device capabilities*/
+ phHal_sDeviceCapabilities_t Hal4Nfc_DevCaps;
+ /*Current state of HAL4.Updated generally in callbacks*/
+ phHal4Nfc_Hal4state_t Hal4CurrentState;
+ /*Next state of HAL.Updated during calls*/
+ phHal4Nfc_Hal4state_t Hal4NextState;
+ /**Info related to upper layer*/
+ phHal4Nfc_UpperLayerInfo_t sUpperLayerInfo;
+ /*ADD context info*/
+ pphHal4Nfc_ADDCtxtInfo_t psADDCtxtInfo;
+ /*union for different configurations ,used in a config_parameters()call*/
+ phHal_uConfig_t uConfig;
+ /*Event info*/
+ phHal_sEventInfo_t *psEventInfo;
+ /*Select sector flag*/
+ uint8_t SelectSectorFlag;
+ /**List of pointers to remote device information for all discovered
+ targets*/
+ phHal_sRemoteDevInformation_t *rem_dev_list[MAX_REMOTE_DEVICES];
+ /*Transceive context info*/
+ pphHal4Nfc_TrcvCtxtInfo_t psTrcvCtxtInfo;
+ /*Connect context info*/
+ phHal4Nfc_TargetConnectInfo_t sTgtConnectInfo;
+ /*Last called Ioctl_type*/
+ uint32_t Ioctl_Type;
+#ifdef IGNORE_EVT_PROTECTED
+ /*used to ignore multiple Protected events*/
+ uint8_t Ignore_Event_Protected;
+#endif/*#ifdef IGNORE_EVT_PROTECTED*/
+}phHal4Nfc_Hal4Ctxt_t;
+
+
+/*---------------- Function Prototypes ----------------------------------------------*/
+
+/*Callback completion routine for Connect*/
+extern void phHal4Nfc_ConnectComplete(
+ phHal4Nfc_Hal4Ctxt_t *Hal4Ctxt,
+ void *pInfo
+ );
+
+/*Callback completion routine for Disconnect*/
+extern void phHal4Nfc_DisconnectComplete(
+ phHal4Nfc_Hal4Ctxt_t *Hal4Ctxt,
+ void *pInfo
+ );
+
+/*Callback completion routine for Transceive*/
+extern void phHal4Nfc_TransceiveComplete(
+ phHal4Nfc_Hal4Ctxt_t *Hal4Ctxt,
+ void *pInfo
+ );
+
+/*Callback completion routine for Presence check*/
+extern void phHal4Nfc_PresenceChkComplete(
+ phHal4Nfc_Hal4Ctxt_t *Hal4Ctxt,
+ void *pInfo
+ );
+
+/*Configuration completion routine*/
+extern void phHal4Nfc_ConfigureComplete(
+ phHal4Nfc_Hal4Ctxt_t *Hal4Ctxt,
+ void *pInfo,
+ uint8_t type
+ );
+
+
+/*Callback completion routine for ADD*/
+extern void phHal4Nfc_TargetDiscoveryComplete(
+ phHal4Nfc_Hal4Ctxt_t *Hal4Ctxt,
+ void *pInfo
+ );
+
+/*Event handler routine for Emulation*/
+extern void phHal4Nfc_HandleEmulationEvent(
+ phHal4Nfc_Hal4Ctxt_t *Hal4Ctxt,
+ void *pInfo
+ );
+
+/*Callback completion routine for NFCIP1 Receive*/
+extern void phHal4Nfc_RecvCompleteHandler(phHal4Nfc_Hal4Ctxt_t *Hal4Ctxt,void *pInfo);
+
+/*Callback completion routine for Send*/
+extern void phHal4Nfc_SendCompleteHandler(phHal4Nfc_Hal4Ctxt_t *Hal4Ctxt,void *pInfo);
+
+/*Callback completion routine for P2P Activate Event received from HCI*/
+extern void phHal4Nfc_P2PActivateComplete(
+ phHal4Nfc_Hal4Ctxt_t *Hal4Ctxt,
+ void *pInfo
+ );
+/*Callback completion routine for P2P Deactivate Event received from HCI*/
+extern void phHal4Nfc_HandleP2PDeActivate(
+ phHal4Nfc_Hal4Ctxt_t *Hal4Ctxt,
+ void *pInfo
+ );
+
+/*Callback completion routine for reactivate target*/
+extern void phHal4Nfc_ReactivationComplete(
+ phHal4Nfc_Hal4Ctxt_t *Hal4Ctxt,
+ void *pInfo
+ );
+
+/**Execute Hal4 Disconnect*/
+extern NFCSTATUS phHal4Nfc_Disconnect_Execute(
+ phHal_sHwReference_t *psHwReference
+ );
+
+/**Handle transceive timeout*/
+#ifdef TRANSACTION_TIMER
+extern void phHal4Nfc_TrcvTimeoutHandler(uint32_t TrcvTimerId);
+#endif /*TRANSACTION_TIMER*/
+
+#endif/*PHHAL4NFC_INTERNAL_H*/
+
+