diff options
Diffstat (limited to 'src/phFriNfc_LlcpMac.h')
-rw-r--r-- | src/phFriNfc_LlcpMac.h | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/src/phFriNfc_LlcpMac.h b/src/phFriNfc_LlcpMac.h new file mode 100644 index 0000000..fc1c5e8 --- /dev/null +++ b/src/phFriNfc_LlcpMac.h @@ -0,0 +1,247 @@ +/* + * 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 */ |