| /* |
| * 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 LLCP_DISCON_CHANGES |
| #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; |
| void *psUpperLayerDisconnectCtxt; |
| #ifdef LLCP_DISCON_CHANGES |
| void *psUpperLayerCfgDiscCtxt; |
| #endif /* #ifdef LLCP_DISCON_CHANGES */ |
| /**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*/ |
| uint8_t FelicaIDm[(PHHAL_FEL_ID_LEN + 2)]; |
| }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*/ |
| |
| |