summaryrefslogtreecommitdiffstats
path: root/inc/phNfcInterface.h
diff options
context:
space:
mode:
Diffstat (limited to 'inc/phNfcInterface.h')
-rw-r--r--inc/phNfcInterface.h422
1 files changed, 422 insertions, 0 deletions
diff --git a/inc/phNfcInterface.h b/inc/phNfcInterface.h
new file mode 100644
index 0000000..fdae2ed
--- /dev/null
+++ b/inc/phNfcInterface.h
@@ -0,0 +1,422 @@
+/*
+ * 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 phNfcInterface.h
+* \brief Generic Interface Layer Function Definitions.
+*
+* Project: NFC-FRI-1.1
+*
+* $Date: Thu Feb 11 19:01:36 2010 $
+* $Author: ing04880 $
+* $Revision: 1.42 $
+* $Aliases: NFC_FRI1.1_WK1007_R33_1,NFC_FRI1.1_WK1007_R33_4,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1023_R35_1 $
+*
+* =============================================================================
+*/
+
+#ifndef PHNFCINTERFACE_H /* */
+#define PHNFCINTERFACE_H /* */
+
+/**
+* \name NFC Inteface
+*
+* File: \ref phNfcInterface.h
+*
+*/
+
+/*@{*/
+#define PHNFCINTERFACE_FILEREVISION "$Revision: 1.42 $" /**< \ingroup grp_file_attributes */
+#define PHNFCINTERFACE_FILEALIASES "$Aliases: NFC_FRI1.1_WK1007_R33_1,NFC_FRI1.1_WK1007_R33_4,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1023_R35_1 $" /**< \ingroup grp_file_attributes */
+/*@}*/
+
+/*
+################################################################################
+***************************** Header File Inclusion ****************************
+################################################################################
+*/
+
+#include <phNfcTypes.h>
+#include <phNfcHalTypes.h>
+
+
+/*
+################################################################################
+****************************** Macro Definitions *******************************
+################################################################################
+*/
+
+#define NFC_FSM_IN_PROGRESS 0x01U
+#define NFC_FSM_COMPLETE 0x00U
+
+#define NFC_FSM_CURRENT 0x00U
+#define NFC_FSM_NEXT 0x01U
+
+/* NFC Notification Types */
+
+#define NFC_NOTIFY_INIT_COMPLETED 0x01
+#define NFC_NOTIFY_INIT_FAILED 0xF1
+
+#define NFC_NOTIFY_DEINIT_COMPLETED 0x02
+#define NFC_NOTIFY_DEINIT_FAILED 0xF2
+
+#define NFC_NOTIFY_EVENT 0x70
+
+#define NFC_NOTIFY_DEVICE_ACTIVATED 0x82
+#define NFC_NOTIFY_DEVICE_DEACTIVATED 0x83
+
+#define NFC_NOTIFY_SEND_COMPLETED 0x03
+#define NFC_NOTIFY_SEND_ERROR 0xF3
+
+#define NFC_NOTIFY_RECV_COMPLETED 0x04
+#define NFC_NOTIFY_RECV_ERROR 0xF4
+#define NFC_NOTIFY_RECV_EVENT 0x74
+#define NFC_NOTIFY_RECV_CANCELLED 0x34
+
+#define NFC_NOTIFY_TRANSCEIVE_COMPLETED 0x05
+#define NFC_NOTIFY_TRANSCEIVE_ERROR 0xF5
+
+#define NFC_NOTIFY_POLL_ENABLED 0x06
+#define NFC_NOTIFY_POLL_RESTARTED 0x16
+#define NFC_NOTIFY_POLL_DISABLED 0x26
+#define NFC_NOTIFY_CONFIG_SUCCESS 0x36
+#define NFC_NOTIFY_CONFIG_ERROR 0xF6
+
+#define NFC_NOTIFY_TARGET_DISCOVERED 0x10
+#define NFC_NOTIFY_DISCOVERY_ERROR 0xFA
+#define NFC_NOTIFY_TARGET_RELEASED 0x11
+#define NFC_NOTIFY_TARGET_CONNECTED 0x12
+#define NFC_NOTIFY_TARGET_PRESENT 0x13
+#define NFC_NOTIFY_TARGET_REACTIVATED 0x14
+#define NFC_NOTIFY_CONNECT_FAILED 0xFC
+#define NFC_NOTIFY_TARGET_DISCONNECTED 0x15
+#define NFC_NOTIFY_DISCONNECT_FAILED 0xFD
+
+#define NFC_NOTIFY_TRANSACTION 0x07
+
+#define NFC_NOTIFY_RESULT 0x08
+
+#define NFC_NOTIFY_DEVICE_ERROR 0xFEU
+#define NFC_NOTIFY_ERROR 0xFFU
+
+
+#define BYTE_SIZE 0x08U
+#define BYTE_MASK 0xFFU
+/* HCI GET and SET BITS Macros */
+#define MASK_BITS8(p,l) \
+ ( ( (((uint8_t)(p))+((uint8_t)(l)))<=BYTE_SIZE )? \
+ (~(0xFFU<<((p)+(l))) & (0xFFU<<(p))):(0U) )
+#ifdef MASK_BITS
+#define GET_BITS8(num,p,l) \
+ ( ((((uint8_t)(p))+((uint8_t)(l)))<=BYTE_SIZE)? \
+ (((num)& (MASK_BITS8(p,l)))>>(p)):(0U) )
+#else
+#define GET_BITS8(num,p,l) \
+ ( ((((p)+(l))<=BYTE_SIZE))? \
+ (((num)>>(p))& (~(0xFFU<<(l)))):(0U) )
+#endif
+#define SET_BITS8(num,p,l,val) \
+ ( ((((uint8_t)(p))+((uint8_t)(l)))<=BYTE_SIZE)? \
+ (((num)& (~MASK_BITS8(p,l)))|((val)<<(p))):(0U))
+
+/*
+################################################################################
+******************** Enumeration and Structure Definition **********************
+################################################################################
+*/
+
+
+enum phNfcIF_eExecution{
+ NFC_EXEC_NORMAL = 0x00, /**< Normal Execution Sequence */
+ NFC_EXEC_CALLBACK = 0x01, /**< Callback Execution Sequence */
+ NFC_EXEC_UNKNOWN = 0xFF /**< Callback Execution Sequence */
+};
+
+
+typedef enum phNfc_eModeType{
+ MODE_ON = 0x00U, /**< Switches the particular feature ON*/
+ MODE_OFF /**< Switches the particular feature OFF*/
+}phNfc_eModeType_t;
+
+/**
+ * State Structure to hold the State Information
+ *
+ * This structure holds the state Information of a specified
+ * Layer .
+ *
+ */
+
+typedef struct phNfc_sState
+{
+ uint8_t cur_state;
+ uint8_t transition;
+ uint8_t next_state;
+ /* uint8_t event; */
+
+}phNfc_sState_t;
+
+
+
+/**
+ * Transaction Completion Information Structure
+ *
+ * This structure holds the completion callback information of the
+ * transaction passed from the lower layer to the upper layer
+ * along with the completion callback.
+ */
+
+typedef struct phNfc_sTransactionInfo
+{
+ /* Returns the status of the Transaction Completion routine */
+ NFCSTATUS status;
+ /* Indicates the Type of the Transaction */
+ uint8_t type;
+ /* To contain more Transaction Notification specific info */
+ void *info;
+ /* The data response from the Transaction */
+ uint8_t *buffer;
+ /* The size of the data response from the Transaction */
+ uint16_t length;
+}phNfc_sTransactionInfo_t;
+
+/**
+ * Notification Information Structure
+ *
+ * This structure holds the notification callback information passed from
+ * the lower layer to the upper layer along with the notification callback.
+ */
+
+typedef struct phNfc_sCompletionInfo
+{
+ /* Returns the status of the completion routine */
+ NFCSTATUS status;
+
+ /* Indicates the Type of the Information
+ * associated with the completion
+ */
+ uint8_t type;
+
+ /* To contain more completion specific info */
+ void *info;
+
+}phNfc_sCompletionInfo_t;
+
+
+/**
+ * Notification Information
+ *
+ */
+typedef struct phNfc_sNotificationInfo
+{
+ /* Returns the status of the Notification routine */
+ NFCSTATUS status;
+ /* Indicates the Type of the Notification */
+ phHal_eNotificationType_t type;
+ /* To contain more Notification specific info */
+ void *info;
+
+}phNfc_sNotificationInfo_t;
+
+
+/*
+################################################################################
+********************* Callback Function Type Definition ************************
+################################################################################
+*/
+
+/**
+* Interface Notification Callback
+*
+* This callback notifies the occurrance of an event in the Lower Interface.
+*
+* \param [in] pContext Context for the Callback Function
+* \param [in] pHwRef Pointer to the Hardware Reference
+* \param [in] type Type of the Notification sent
+* \param [out] pInfo Pointer to the Transaction Information Structure
+* which contains the Status of the operation, data
+* obtained or sent and size of the data sent or received
+*/
+
+typedef void (*pphNfcIF_Notification_CB_t) (
+ void *pContext,
+ void *pHwRef,
+ uint8_t type,
+ void *pInfo
+ );
+
+/**
+* asynchronous Interface Transaction Completion callback
+*
+* This callback signals the completion of the asynchronous send or receive
+* operation. The number of bytes sent or recieved is returned back.
+*
+* \param [in] pContext Context for the Callback Function
+* \param [in] pHwRef Pointer to the Hardware Reference
+* \param [out] pInfo Pointer to the Transaction Information Structure
+* which contains the Status of the operation, data
+* obtained or sent and size of the data sent or received
+*/
+
+typedef void (*pphNfcIF_Transact_Completion_CB_t) (
+ void *pContext,
+ void *pHwRef,
+ phNfc_sTransactionInfo_t *pInfo
+ );
+
+/*
+################################################################################
+********************** Generic Interface Function Prototype ********************
+################################################################################
+*/
+
+/**
+ * Generic NFC Interface Function Type .
+ *
+ * \param [in] pContext Context pointer for the Generic Interface.
+ * \param [in] pHwRef pointer for the device interface link information.
+ */
+
+typedef NFCSTATUS (*pphNfcIF_Interface_t) (
+ void *pContext,
+ void *pHwRef
+ );
+/**
+ * Data Transaction between the lower layer interface
+ *
+ * Sends or Receives the given amount of data to the lower layer.
+ * The call returns immediately and the registered callback is
+ * called when all data has been written.
+ * <p>
+ *
+ * @note If the interface is not initialized the function does nothing.
+ *
+ * \param [in] pContext Context pointer for sending the data.
+ * \param [in] pHwRef pointer for the device interface link information.
+ * \param[in] data pointer to data buffer containing the data to be sent or
+ * to be received. The data pointer is valid at least until
+ * the registered callback is called.
+ * \param[in] length length of the data to be sent or to be received.
+ */
+
+typedef NFCSTATUS (*pphNfcIF_Transact_t) (
+ void *pContext,
+ void *pHwRef,
+ uint8_t *data,
+ uint16_t length
+ );
+
+
+/**
+ * Generic Interface structure with the Lower Layer
+ *
+ * This structure holds the context and function pointers of all functions
+ * required to interface with the Lower Layers.
+ */
+
+typedef struct phNfc_sLowerIF
+{
+ void *pcontext;
+ pphNfcIF_Interface_t init;
+ pphNfcIF_Interface_t release;
+ pphNfcIF_Transact_t send;
+ pphNfcIF_Transact_t receive;
+ pphNfcIF_Transact_t receive_wait;
+ pphNfcIF_Interface_t transact_abort;
+ pphNfcIF_Interface_t unregister;
+} phNfc_sLowerIF_t,*pphNfc_sLowerIF_t;
+
+
+/**
+ * Generic Callback interface structure for the Lower layer.
+ *
+ * This structure holds the callback function pointers of the functions that
+ * performs the completion of a particular operation. These functions are used
+ * by the Lower Layer interface to convey the completion of an operation.
+ */
+
+typedef struct phNfcIF_sCallBack
+{
+ /**<Holds context info to be sent to lower layer*/
+ void *pif_ctxt;
+ /**<Callback notifies occurrance of event in Lower Interface*/
+ pphNfcIF_Notification_CB_t notify;
+ /**<asynchronous Interface Transaction Completion callback*/
+ pphNfcIF_Transact_Completion_CB_t send_complete;
+ pphNfcIF_Transact_Completion_CB_t receive_complete;
+
+} phNfcIF_sCallBack_t ,*pphNfcIF_sCallBack_t ;
+
+
+/**
+ * Interface Reference structure.
+ *
+ * This structure holds the reference parameters, callback function pointers and
+ * lower interface functions .
+ */
+
+typedef struct phNfcIF_sReference
+{
+ /**<Generic Interface structure with the Lower Layer*/
+ phNfc_sLowerIF_t *plower_if;
+ /**<pointer to the data to be sent*/
+ uint8_t *tx_data;
+ /**<pointer to the data to be received*/
+ uint8_t *rx_data;
+}phNfcIF_sReference_t, *pphNfcIF_sReference_t;
+
+
+/*
+################################################################################
+********************** Register Function Type Definition ***********************
+################################################################################
+*/
+
+/**
+* Registers the interface functions and passes the callback functions to the
+* lower layer.
+*
+* This function passes the callback functions of the interface to the
+* lower interface and the lower interface registers its functions.
+*/
+
+typedef NFCSTATUS ( *pphNfcIF_Register_t) (
+ phNfcIF_sReference_t *psReference,
+ phNfcIF_sCallBack_t if_callback,
+ void *psIFConfig
+ );
+
+
+/**
+ * Layer Specific Configuration structure.
+ *
+ * This structure holds the Lower Layer Name and the registry function for registering
+ * the lower layer interface functions .
+ */
+
+
+typedef struct phNfcLayer_sCfg
+{
+ uint8_t layer_index;
+ uint8_t *layer_name;
+ pphNfcIF_Register_t layer_registry;
+ struct phNfcLayer_sCfg *layer_next;
+}phNfcLayer_sCfg_t, *pphNfcLayer_sCfg_t;
+
+
+#endif /* PHNFCINTERFACE_H */
+