| /* |
| * 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 phFriNfc_LlcpMac.h |
| * \brief NFC LLCP MAC Mappings For Different RF Technologies. |
| * |
| * Project: NFC-FRI |
| * |
| */ |
| |
| #ifndef PHFRINFC_LLCPMAC_H |
| #define PHFRINFC_LLCPMAC_H |
| |
| |
| /*include files*/ |
| #include <phNfcTypes.h> |
| #include <phNfcLlcpTypes.h> |
| #include <phNfcStatus.h> |
| #include <phFriNfc.h> |
| |
| #include <phFriNfc_OvrHal.h> |
| |
| /** |
| * \name LLCP MAC Mapping |
| * |
| * File: \ref phFriNfc_LlcpMac.h |
| * |
| */ |
| |
| |
| /** \defgroup grp_fri_nfc_llcp_mac LLCP MAC Mapping Component |
| * |
| * This component implements the different MAC mapping for a Logical Link Control Protocol communication, |
| * as defined by the NFC Forum LLCP specifications.\n |
| * The MAC component handles the mapping for the different technologies supported by LLCP |
| *..This component provides an API to the upper layer with the following features:\n\n |
| * - Reset the MAC mapping component |
| * - \ref phFriNfc_LlcpMac_ChkLlcp |
| * . |
| * - Check the LLCP Compliancy |
| * - \ref phFriNfc_LlcpMac_ChkLlcp |
| * . |
| * - Activate the LLCP link |
| * - \ref phFriNfc_LlcpMac_Activate |
| * . |
| * - Deactivate the LLCP link |
| * - \ref phFriNfc_LlcpMac_Deactivate |
| * . |
| * - Register the MAC component Interface with a specific technologie (NFCIP/ISO14443) |
| * - \ref phFriNfc_LlcpMac_Register |
| * . |
| * - Send packets through the LLCP link |
| * - \ref phFriNfc_LlcpMac_Send |
| * . |
| * - Receive packets through the LLCP link |
| * - \ref phFriNfc_LlcpMac_Receive |
| * |
| */ |
| |
| /** |
| * \ingroup grp_fri_nfc_llcp_mac |
| * \brief Declaration of a MAC type |
| */ |
| struct phFriNfc_LlcpMac; |
| typedef struct phFriNfc_LlcpMac phFriNfc_LlcpMac_t; |
| |
| /** |
| * \ingroup grp_fri_nfc_llcp_mac |
| * |
| */ |
| /*========== ENUMERATES ===========*/ |
| |
| /* Enum reperesents the different MAC mapping*/ |
| typedef enum phFriNfc_LlcpMac_eType |
| { |
| phFriNfc_LlcpMac_eTypeNfcip, |
| phFriNfc_LlcpMac_eTypeIso14443 |
| }phFriNfc_LlcpMac_eType_t; |
| |
| /* Enum reperesents the different Peer type for a LLCP communication*/ |
| typedef enum phFriNfc_LlcpMac_ePeerType |
| { |
| phFriNfc_LlcpMac_ePeerTypeInitiator, |
| phFriNfc_LlcpMac_ePeerTypeTarget |
| }phFriNfc_LlcpMac_ePeerType_t; |
| |
| |
| |
| |
| |
| |
| /*========== CALLBACKS ===========*/ |
| |
| typedef void (*phFriNfc_LlcpMac_Chk_CB_t) (void *pContext, |
| NFCSTATUS status); |
| |
| typedef void (*phFriNfc_LlcpMac_LinkStatus_CB_t) (void *pContext, |
| phFriNfc_LlcpMac_eLinkStatus_t eLinkStatus, |
| phNfc_sData_t *psData, |
| phFriNfc_LlcpMac_ePeerType_t PeerRemoteDevType); |
| |
| typedef void (*phFriNfc_LlcpMac_Send_CB_t) (void *pContext, |
| NFCSTATUS status); |
| |
| |
| typedef void (*phFriNfc_LlcpMac_Reveive_CB_t) (void *pContext, |
| NFCSTATUS status, |
| phNfc_sData_t *psData); |
| |
| |
| /*========== FUNCTIONS TYPES ===========*/ |
| |
| typedef NFCSTATUS (*pphFriNfcLlpcMac_Chk_t) ( phFriNfc_LlcpMac_t *LlcpMac, |
| phFriNfc_LlcpMac_Chk_CB_t ChkLlcpMac_Cb, |
| void *pContext); |
| |
| typedef NFCSTATUS (*pphFriNfcLlpcMac_Activate_t) (phFriNfc_LlcpMac_t *LlcpMac); |
| |
| typedef NFCSTATUS (*pphFriNfcLlpcMac_Deactivate_t) (phFriNfc_LlcpMac_t *LlcpMac); |
| |
| typedef NFCSTATUS (*pphFriNfcLlpcMac_Send_t) (phFriNfc_LlcpMac_t *LlcpMac, |
| phNfc_sData_t *psData, |
| phFriNfc_LlcpMac_Send_CB_t LlcpMacSend_Cb, |
| void *pContext); |
| |
| typedef NFCSTATUS (*pphFriNfcLlpcMac_Receive_t) (phFriNfc_LlcpMac_t *LlcpMac, |
| phNfc_sData_t *psData, |
| phFriNfc_LlcpMac_Reveive_CB_t LlcpMacReceive_Cb, |
| void *pContext); |
| |
| /*========== STRUCTURES ===========*/ |
| |
| /** |
| * \ingroup grp_fri_nfc_llcp_mac |
| * \brief Generic Interface structure with the Lower Layer |
| */ |
| typedef struct phFriNfc_LlcpMac_Interface |
| { |
| pphFriNfcLlpcMac_Chk_t chk; |
| pphFriNfcLlpcMac_Activate_t activate; |
| pphFriNfcLlpcMac_Deactivate_t deactivate; |
| pphFriNfcLlpcMac_Send_t send; |
| pphFriNfcLlpcMac_Receive_t receive; |
| } phFriNfc_LlcpMac_Interface_t; |
| |
| /** |
| * \ingroup grp_fri_nfc_llcp_mac |
| * \brief Definition of the MAC type |
| */ |
| struct phFriNfc_LlcpMac |
| { |
| phFriNfc_LlcpMac_eLinkStatus_t LinkState; |
| phHal_sRemoteDevInformation_t *psRemoteDevInfo; |
| phFriNfc_LlcpMac_LinkStatus_CB_t LinkStatus_Cb; |
| void *LinkStatus_Context; |
| phFriNfc_LlcpMac_Interface_t LlcpMacInterface; |
| phFriNfc_LlcpMac_ePeerType_t PeerRemoteDevType; |
| phFriNfc_LlcpMac_eType_t MacType; |
| |
| /**<\internal Holds the completion routine informations of the Map Layer*/ |
| phFriNfc_CplRt_t MacCompletionInfo; |
| void *LowerDevice; |
| phFriNfc_LlcpMac_Send_CB_t MacSend_Cb; |
| void *MacSend_Context; |
| phFriNfc_LlcpMac_Reveive_CB_t MacReceive_Cb; |
| void *MacReceive_Context; |
| phNfc_sData_t *psReceiveBuffer; |
| phNfc_sData_t *psSendBuffer; |
| phNfc_sData_t sConfigParam; |
| uint8_t RecvPending; |
| uint8_t SendPending; |
| uint8_t RecvStatus; |
| phHal_uCmdList_t Cmd; |
| phHal_sDepAdditionalInfo_t psDepAdditionalInfo; |
| } ; |
| |
| |
| /* |
| ################################################################################ |
| ********************** MAC Interface Function Prototype *********************** |
| ################################################################################ |
| */ |
| |
| /** |
| * \ingroup grp_fri_nfc_llcp_mac |
| * \brief |
| */ |
| NFCSTATUS phFriNfc_LlcpMac_Reset (phFriNfc_LlcpMac_t *LlcpMac, |
| void *LowerDevice, |
| phFriNfc_LlcpMac_LinkStatus_CB_t LinkStatus_Cb, |
| void *pContext); |
| /** |
| * \ingroup grp_fri_nfc_llcp_mac |
| * \brief |
| */ |
| NFCSTATUS phFriNfc_LlcpMac_ChkLlcp (phFriNfc_LlcpMac_t *LlcpMac, |
| phHal_sRemoteDevInformation_t *psRemoteDevInfo, |
| phFriNfc_LlcpMac_Chk_CB_t ChkLlcpMac_Cb, |
| void *pContext); |
| |
| /** |
| * \ingroup grp_fri_nfc_llcp_mac |
| * \brief |
| */ |
| NFCSTATUS phFriNfc_LlcpMac_Activate (phFriNfc_LlcpMac_t *LlcpMac); |
| |
| /** |
| * \ingroup grp_fri_nfc_llcp_mac |
| * \brief |
| */ |
| NFCSTATUS phFriNfc_LlcpMac_Deactivate (phFriNfc_LlcpMac_t *LlcpMac); |
| |
| /** |
| * \ingroup grp_fri_nfc_llcp_mac |
| * \brief |
| */ |
| NFCSTATUS phFriNfc_LlcpMac_Send (phFriNfc_LlcpMac_t *LlcpMac, |
| phNfc_sData_t *psData, |
| phFriNfc_LlcpMac_Send_CB_t LlcpMacSend_Cb, |
| void *pContext); |
| |
| /** |
| * \ingroup grp_fri_nfc_llcp_mac |
| * \brief |
| */ |
| NFCSTATUS phFriNfc_LlcpMac_Receive (phFriNfc_LlcpMac_t *LlcpMac, |
| phNfc_sData_t *psData, |
| phFriNfc_LlcpMac_Reveive_CB_t ReceiveLlcpMac_Cb, |
| void *pContext); |
| |
| #endif /* PHFRINFC_LLCPMAC_H */ |