summaryrefslogtreecommitdiffstats
path: root/src/phFriNfc_LlcpMac.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/phFriNfc_LlcpMac.h')
-rw-r--r--src/phFriNfc_LlcpMac.h247
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 */