diff options
Diffstat (limited to 'src/phDal4Nfc.h')
-rw-r--r-- | src/phDal4Nfc.h | 629 |
1 files changed, 629 insertions, 0 deletions
diff --git a/src/phDal4Nfc.h b/src/phDal4Nfc.h new file mode 100644 index 0000000..91feaa6 --- /dev/null +++ b/src/phDal4Nfc.h @@ -0,0 +1,629 @@ +/* + * 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 phDal4Nfc.h +* \brief Common DAL for the upper layer. +* +* Project: NFC-FRI-1.1 +* +* $Date: Tue Nov 10 13:56:45 2009 $ +* $Author: ing07299 $ +* $Revision: 1.38 $ +* $Aliases: NFC_FRI1.1_WK943_R32_1,NFC_FRI1.1_WK949_PREP1,NFC_FRI1.1_WK943_R32_10,NFC_FRI1.1_WK943_R32_13,NFC_FRI1.1_WK943_R32_14,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 PHDAL4NFC_H +#define PHDAL4NFC_H + +/** +* \name DAl4 NFC +* +* File: \ref phDal4Nfc.h +* +*/ +/*@{*/ +#define PH_DAL4NFC_FILEREVISION "$Revision: 1.38 $" /**< \ingroup grp_file_attributes */ +#define PH_DAL4NFC_FILEALIASES "$Aliases: NFC_FRI1.1_WK943_R32_1,NFC_FRI1.1_WK949_PREP1,NFC_FRI1.1_WK943_R32_10,NFC_FRI1.1_WK943_R32_13,NFC_FRI1.1_WK943_R32_14,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 */ +/*@}*/ +/*************************** Includes *******************************/ +/** \defgroup grp_nfc_dal DAL Component + * + * + * + */ +/**< Basic type definitions */ +#include <phNfcTypes.h> +/**< Generic Interface Layer Function Definitions */ +#include <phNfcInterface.h> +/*********************** End of includes ****************************/ + +/***************************** Macros *******************************/ + /**< Used for messaging by DAL as well as Upper Layers */ +#define PH_DAL4NFC_MESSAGE_BASE PH_LIBNFC_DEFERREDCALL_MSG + +/************************ End of macros *****************************/ + + +/********************* Structures and enums *************************/ + +/** + * \ingroup grp_nfc_dal + * + * DAL context : This contains the information of the upper layer callback + * and hardware reference. + */ +typedef struct phDal4Nfc_SContext +{ + phNfcIF_sCallBack_t cb_if; /**<Callback info registered by upper layer*/ + volatile uint8_t hw_valid; /**<Flag - shows Hardware present or not */ + void *pHwRef; /**<Hardware Reference*/ +}phDal4Nfc_SContext_t,*pphDal4Nfc_SContext_t; + +/** + * \ingroup grp_nfc_dal + * + * DAL enum for Messages : This contains the enums used for + * posting messages to the application. + */ +typedef enum phDal4Nfc_Messages_en +{ + /**<Read message type used to post Read DAL Message to dispatch routine.Dispatch routine + calls read callback registered by upper layer */ + PHDAL4NFC_READ_MESSAGE = 0, + /**<Readwait message type used to post Read wait DAL Message to dispatch routine.Dispatch routine + calls read wait callback registered by upper layer */ + PHDAL4NFC_READWAIT_MESSAGE, + /**<Write message type used to post write DAL Message to dispatch routine.Dispatch routine + calls write wait callback registered by upper layer */ + PHDAL4NFC_WRITE_MESSAGE, + /**<Notify message type used to post Notify DAL Message to dispatch routine.Dispatch routine + calls notify callback registered by upper layer */ + PHDAL4NFC_NOTIFY_MESSAGE +}phDal4Nfc_Messages_en_t; + +/** + * \ingroup grp_nfc_dal + * + * \brief DAL Message structure definition.This structure contains + * + * This structure contains details like message type,read ,read wait and write callbacks + * reference details as registered by upper layer. + */ +typedef struct phDal4Nfc_Message +{ + /**<Refenrece to context.Context can be DAL context */ + void *pContext; + /**<Reference to hardware reference strucutre */ + void *pHwRef; + /**<DAL message of type \ref phDal4Nfc_Messages_en_t*/ + phDal4Nfc_Messages_en_t eMsgType; + /**<Transaction specific information of type \ref phNfc_sTransactionInfo_t*/ + phNfc_sTransactionInfo_t transactInfo; + /**<Reference to read callback,registered by upper layer.This is of type \ref pphNfcIF_Transact_Completion_CB_t*/ + pphNfcIF_Transact_Completion_CB_t readCbPtr; + /**<Reference to write callback ,registered by upper layer.This is of type \ref pphNfcIF_Transact_Completion_CB_t*/ + pphNfcIF_Transact_Completion_CB_t writeCbPtr; +} phDal4Nfc_Message_t,*pphDal4Nfc_Message_t; + +/** + * \ingroup grp_nfc_dal + *\brief Possible DAL Configuration exposed to upper layer. + * Typically this should be port name (Ex:"COM1","COM2") to which PN544 is connected. + */ +#define ENUM_DAL_LINK_TYPE_COM1 ENUM_LINK_TYPE_COM1 +#define ENUM_DAL_LINK_TYPE_COM2 ENUM_LINK_TYPE_COM2 +#define ENUM_DAL_LINK_TYPE_COM3 ENUM_LINK_TYPE_COM3 +#define ENUM_DAL_LINK_TYPE_COM4 ENUM_LINK_TYPE_COM4 +#define ENUM_DAL_LINK_TYPE_COM5 ENUM_LINK_TYPE_COM5 +#define ENUM_DAL_LINK_TYPE_COM6 ENUM_LINK_TYPE_COM6 +#define ENUM_DAL_LINK_TYPE_COM7 ENUM_LINK_TYPE_COM7 +#define ENUM_DAL_LINK_TYPE_COM8 ENUM_LINK_TYPE_COM8 +#define ENUM_DAL_LINK_TYPE_I2C ENUM_LINK_TYPE_I2C +#define ENUM_DAL_LINK_TYPE_USB ENUM_LINK_TYPE_USB +#define ENUM_DAL_LINK_TYPE_TCP ENUM_LINK_TYPE_TCP + +#define ENUM_DAL_LINK_TYPE_NB ENUM_LINK_TYPE_NB +typedef phLibNfc_eConfigLinkType phDal4Nfc_eConfigLinkType; + +typedef phLibNfc_sConfig_t phDal4Nfc_sConfig_t; +typedef phLibNfc_sConfig_t *pphDal4Nfc_sConfig_t; + +/****************** End of structures and enums *********************/ + +/******************** Function declarations *************************/ + +/** + * \ingroup grp_nfc_dal + * + *\brief Allows to register upper layer with DAL layer. + * This API allows upper layer to register with DAL layer.As part of registration + *<br>1.Exports DAL interfaces and DAL layer context to upper layer. + *Exported DAL interfaces are : + *<br><br>.phDal4Nfc_Shutdown + *<br><br>.phDal4Nfc_Write + *<br><br>.phDal4Nfc_Read + *<br><br>.phDal4Nfc_ReadWait + *<br><br>.phDal4Nfc_ReadWaitCancel + *<br><br>phDal4Nfc_Unregister + *<br><br>.Registeres upper layer callbacks and upper layer context with DAL layer. + *For details refer to \ref phNfcIF_sReference_t. + *Registration details are valid unless upper layer calls \ref phDal4Nfc_Unregister() + or \ref phDal4Nfc_Shutdown called. + + * \param[in,out] psRefer holds DAL exported interface references once registration + * sucessful.This also contains transmit and receive buffer + * references. + * + * \param[in] if_cb Contains upper layer callback reference details, which are used + * by DAL layer during callback notification. + * These callbacks gets registered with DAL layer. + * + + * \param[out] psIFConf Currently this parameter not used.This parameter to be other than NULL. + * + * + * \retval NFCSTATUS_SUCCESS Operation is successful. + * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function is invalid. + * + *\msc + *ClientApp,UpperLayer,phDal4Nfc; + *ClientApp=>phDal4Nfc [label="phDal4Nfc_Config()",URL="\ref phDal4Nfc_Config"]; + *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Register()",URL="\ref phDal4Nfc_Register"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *\endmsc + */ + + extern + NFCSTATUS + phDal4Nfc_Register( + phNfcIF_sReference_t *psRefer, + phNfcIF_sCallBack_t if_cb, + void *psIFConf + ); + + +/** + * \ingroup grp_nfc_dal + * + * \brief Allows upper layer to unregister with DAL layer. + * This interface allows to unregister upper layer callback interfaces with DAL layer. + * \note: Once this this API is called DAL layer stops notifying upper layer callbacks in case + * any events reported within DAL. + * + * \param[in] pContext DAL context is provided by the upper layer. + * The DAL context earlier was given to the + * upper layer through the \ref + * \e phDal4Nfc_Register() function. + * \param[in] pHwRef for future use .Currently this parameter is not used. + * This needs to be other than NULL. + * + * \retval NFCSTATUS_SUCCESS Unregistration successful. + * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function is invalid. + * + *\msc + *ClientApp,UpperLayer,phDal4Nfc; + *ClientApp=>phDal4Nfc [label="phDal4Nfc_Config()",URL="\ref phDal4Nfc_Config"]; + *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Register()",URL="\ref phDal4Nfc_Register"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *--- [label="Upper layer can issue Unregistration later"]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Unregister()",URL="\ref phDal4Nfc_Unregister"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *\endmsc + */ + + + extern + NFCSTATUS + phDal4Nfc_Unregister( + void *pContext, + void *pHwRef + ); + + +/** + + * \ingroup grp_nfc_dal + * + *\brief This interface allows to initialize DAL layer. + * This API implements initialization of DAL layer. This includes : + * + * <br><br>. Initialize parameters for HW Interface. + *<br><br>. Initializing read and writer threads. + *<br><br>. Initializing read and write task specific events and event specific configurations. + *<br><br>. Initializing DAL layer specific details. + * + * \param[in] pContext DAL context provided by the upper layer. + * The DAL context will be exported to the + * upper layer via upper layer registration interface. + * \param[in] pHwRef information of the hardware + * + * \retval NFCSTATUS_SUCCESS DAL initialization successful. + * \retval NFCSTATUS_INVALID_DEVICE The device is not enumerated or the + * Hardware Reference points to a device + * which does not exist. Alternatively, + * also already open devices produce this + * error. + * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function + * is invalid. + * + *\msc + *ClientApp,UpperLayer,phDal4Nfc; + *ClientApp=>phDal4Nfc [label="phDal4Nfc_Config()",URL="\ref phDal4Nfc_Config"]; + *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Register()",URL="\ref phDal4Nfc_Register"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Init()",URL="\ref phDal4Nfc_Init"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *--- [label="DAL intialised ,read for read /write operations"]; + *\endmsc + */ + + extern + NFCSTATUS + phDal4Nfc_Init( + void *pContext, + void *pHwRef + ); + + +/** + * \ingroup grp_nfc_dal + * + * \brief This API implements Deintialisation of DAL layer. + * + *This API implements Deintialisation of DAL layer. It includes : + *<br><br>.Releases all the resources.( context,memory resources,read/write buffers). + *<br><br>.closes COMxx port which is used during DAL session. + *<br><br>.Terminates Reader and writer tasks. + * + * \param[in] pContext DAL context is provided by the upper layer. + * The DAL context earlier was given to the + * upper layer through the + * \ref \e phDal4Nfc_Register() function + * \param[in] pHwRef hardware reference context. + * + * \retval NFCSTATUS_SUCCESS DAL shutdown successful + * \retval NFCSTATUS_FAILED DAL shutdown failed(example.unable to + * suspend thread, close HW Interface etc.) + * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function + * is invalid. + * + *\msc + *ClientApp,UpperLayer,phDal4Nfc; + *ClientApp=>phDal4Nfc [label="phDal4Nfc_Config()",URL="\ref phDal4Nfc_Config"]; + *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Register()",URL="\ref phDal4Nfc_Register"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Init()",URL="\ref phDal4Nfc_Init"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *--- [label="Perform read write operation"]; + *--- [label="DAL can be shutdown during upper layer deinit sequence"]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Shutdown()",URL="\ref phDal4Nfc_Shutdown"]; + *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *\endmsc + */ + + extern + NFCSTATUS + phDal4Nfc_Shutdown( + void *pContext, + void *pHwRef + ); + +/** + * \ingroup grp_nfc_dal + * + * \brief Allows to write data block to HW Interface. + * + * This asynchronous function writes the given block of data to the driver. + * This interface enables writer thread in case their is no write requests pending and returns + * sucessfully.Once writer thread completes write operation, it notifies upper layer using callback + * mechanism . + * \note writer thread notifies upper layer callback notified using windows messaging mechanism + * under deferred call context. + * + * + * \param[in] pContext DAL context is provided by the upper layer. + * The DAL + * context earlier was given to the upper layer + * through the \ref \e phDal4Nfc_Register() function + * \param[in] pHwRef information of the hardware. + * \param[in] pBuffer The information given by the upper layer to + * send it to the lower layer + * \param[in] length The length of pLlc_Buf, that needs to be sent + * to the lower layer is given by the upper layer + * + * \retval NFCSTATUS_PENDING If the command is yet to be process. + * \retval NFCSTATUS_BUSY BUSY with previous write operation + * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has + * been disconnected meanwhile + * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function + * is invalid. + * + *\msc + *ClientApp,UpperLayer,phDal4Nfc; +*--- [label="Configure,intialise DAL layer and Register with DAL "]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Write()",URL="\ref phDal4Nfc_Write()"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_PENDING"]; + *--- [label="DAL posts write message to main thread under deferred call context"]; + *phDal4Nfc=>phDal4Nfc [label="phDal4Nfc_DeferredCall()",URL="\ref phDal4Nfc_DeferredCall()"]; + *ClientApp=>phDal4Nfc [label="phDal4Nfc_DeferredCb()",URL="\ref phDal4Nfc_DeferredCb()"]; + *phDal4Nfc=>UpperLayer [label="send_complete",URL="\ref phDal4Nfc_DeferredCb()"]; + *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *\endmsc + */ + extern + NFCSTATUS + phDal4Nfc_Write( + void *pContext, + void *pHwRef, + uint8_t *pBuffer, + uint16_t length + ); + + +/** + * \ingroup grp_nfc_dal + * + * \brief Allows to Read data block from HW Interface. + * + * This asynchronous function reads the data from the driver in which length + * and the required buffer are sent by upper layer. This interface enables + * reader thread in case there is no read requests pending and returns sucessfully. + * Once read operation is complete, it notifies to upper layer through callback + * registered in the \b \e phDal4Nfc_Register() function. + * + * + * \param[in] pContext DAL context is provided by the upper layer. + * The DAL context earlier was given to the + * upper layer through the + * \b \e phDal4Nfc_Register() function + * \param[in] pHwRef Information of the hardware + * \param[in] pBuffer The information given by the upper layer to + * receive data from the lower layer + * \param[in] length The length of pBuffer given by the upper layer + * + * \retval NFCSTATUS_PENDING If the command is yet to be processed. + * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function + * is invalid. + * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has + * been disconnected meanwhile + * + *\msc + *ClientApp,UpperLayer,phDal4Nfc; + *--- [label="Configure,intialise DAL layer and Register with DAL "]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Write()",URL="\ref phDal4Nfc_Write()"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_PENDING"]; + *--- [label="DAL posts write message to main thread under deferred call context"]; + *phDal4Nfc=>phDal4Nfc [label="phDal4Nfc_DeferredCall()",URL="\ref phDal4Nfc_DeferredCall()"]; + *ClientApp=>phDal4Nfc [label="phDal4Nfc_DeferredCb()",URL="\ref phDal4Nfc_DeferredCb()"]; + *phDal4Nfc=>UpperLayer [label="send_complete",URL="\ref phDal4Nfc_DeferredCb()"]; + *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *--- [label="upper layer can issue read request"]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Read()",URL="\ref phDal4Nfc_Read()"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_PENDING"]; + *--- [label="DAL posts read message to main thread under deferred call context"]; + *phDal4Nfc=>phDal4Nfc [label="phDal4Nfc_DeferredCall()",URL="\ref phDal4Nfc_DeferredCall()"]; + *ClientApp=>phDal4Nfc [label="phDal4Nfc_DeferredCb()",URL="\ref phDal4Nfc_DeferredCb()"]; + *phDal4Nfc=>UpperLayer [label="receive_complete",URL="\ref phDal4Nfc_DeferredCb()"]; + *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + + *\endmsc + */ + + extern + NFCSTATUS + phDal4Nfc_Read( + void *pContext, + void *pHwRef, + uint8_t *pBuffer, + uint16_t length + ); + +/** + * \ingroup grp_nfc_dal + * + * \brief Allows to wait before reading data block from HW Interface. + * + * This asynchronous function waits before reading the data from the + * driver in which length and the required buffer are sent by upper layer. + * This interface enables reader thread to wait for predefined time period + * (predefined time period is configurable by the DAL implementer) to complete + * read request.Once read operation is complete, it notifies to upper layer + * through callback registered in the \b \e phDal4Nfc_Register() + * function. Read request is expected to get complete within this time. + * + * \param[in] pContext DAL context is provided by the upper layer. + * The DAL context earlier was given to the + * upper layer through the + * \b \e phDal4Nfc_Register() function + * \param[in] pHwRef Information of the hardware + * \param[in] pBuffer The information given by the upper layer to + * receive data from the lower layer + * \param[in] length The length of pBuffer given by the upper layer + * + * \retval NFCSTATUS_SUCCESS DAL receive successful + * \retval NFCSTATUS_BUSY BUSY with previous receive operation + * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the + * function is invalid. + * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has + * been disconnected meanwhile + * + * + *\msc + *ClientApp,UpperLayer,phDal4Nfc; + *--- [label="Configure,intialise DAL layer and Register with DAL "]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Write()",URL="\ref phDal4Nfc_Write()"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_PENDING"]; + *--- [label="DAL posts write message to main thread under deferred call context"]; + *phDal4Nfc=>phDal4Nfc [label="phDal4Nfc_DeferredCall()",URL="\ref phDal4Nfc_DeferredCall()"]; + *ClientApp=>phDal4Nfc [label="phDal4Nfc_DeferredCb()",URL="\ref phDal4Nfc_DeferredCb()"]; + *phDal4Nfc=>UpperLayer [label="send_complete",URL="\ref phDal4Nfc_DeferredCb()"]; + *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *--- [label="upper layer can issue read wait request "]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_ReadWait()",URL="\ref phDal4Nfc_ReadWait()"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_PENDING"]; + *--- [label="DAL posts read wait message to main thread under deferred call context"]; + *phDal4Nfc=>phDal4Nfc [label="phDal4Nfc_DeferredCall()",URL="\ref phDal4Nfc_DeferredCall()"]; + *ClientApp=>phDal4Nfc [label="phDal4Nfc_DeferredCb()",URL="\ref phDal4Nfc_DeferredCb()"]; + *phDal4Nfc=>UpperLayer [label="receive_complete",URL="\ref phDal4Nfc_DeferredCb()"]; + *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + * + *\endmsc + */ + + + extern + NFCSTATUS + phDal4Nfc_ReadWait( + void *pContext, + void *pHwRef, + uint8_t *pBuffer, + uint16_t length + ); + + +/** + * \ingroup grp_nfc_dal + * + *\brief Aborts read wait opertaion. + * + * This asynchronous function issues cancellation of the outstanding + * \b \e phDal4Nfc_ReadWait request.If upper layer wants to cancel the + * ongoing read wait operation this function is used. e.g. to abort the + * transactions. + * + * \param[in] pContext DAL context is provided by the upper layer. + * The DAL context earlier was given to the + * upper layer through the + * \b \e phDal4Nfc_Register() function + * \param[in] pHwRef Information of the hardware + * + * \retval NFCSTATUS_SUCCESS DAL receive successful + * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the + * function is invalid. + * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened + * or has been disconnected meanwhile + * \retval NFCSTATUS_BOARD_COMMUNICATION_ERROR A board communication error occurred + (e.g. configuration went wrong). + * + * + *\msc + *ClientApp,UpperLayer,phDal4Nfc; + *--- [label="Configure,intialise DAL layer and Register with DAL "]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Write()",URL="\ref phDal4Nfc_Write()"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_PENDING"]; + *--- [label="DAL posts write message to main thread under deferred call context"]; + *phDal4Nfc=>phDal4Nfc [label="phDal4Nfc_DeferredCall()",URL="\ref phDal4Nfc_DeferredCall()"]; + *ClientApp=>phDal4Nfc [label="phDal4Nfc_DeferredCb()",URL="\ref Call phDal4Nfc_DeferredCb()"]; + *phDal4Nfc=>UpperLayer [label="send_complete",URL="\ref phDal4Nfc_DeferredCb()"]; + *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *--- [label="upper layer can issue read wait request "]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_ReadWait()",URL="\ref phDal4Nfc_ReadWait()"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_PENDING"]; + *--- [label="Issue Read wait cancel request here"]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_ReadWaitCancel()",URL="\ref phDal4Nfc_ReadWaitCancel()"]; + **UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *\endmsc + */ + extern + NFCSTATUS + phDal4Nfc_ReadWaitCancel( + void *pContext, + void *pHwRef + ); + +/** + * \ingroup grp_nfc_dal + * + * \brief DAL config function + * This synchronous function configures the given HW Interface and + * sends the HANDLE to the caller. + * + * \param[in] config DAL configuration details as provided + * by the upper layer. + * \param[in,out] phwref pointer to which valid Handle to DAL + * interface is assigned. + * + * \retval NFCSTATUS_SUCCESS Configuration happened successfully. + * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function + * is invalid. + * \retval NFCSTATUS_FAILED Configuration failed(example.unable to + * open HW Interface). + * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or + * has been disconnected meanwhile + * \retval NFCSTATUS_BOARD_COMMUNICATION_ERROR A board communication error occurred + (e.g. configuration went wrong). + *\msc + *ClientApp,UpperLayer,phDal4Nfc; + *ClientApp=>phDal4Nfc [label="phDal4Nfc_Config()",URL="\ref phDal4Nfc_Config"]; + *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *\endmsc + */ + extern + NFCSTATUS + phDal4Nfc_Config ( + pphDal4Nfc_sConfig_t config, + void **phwref + ); + + /** + * \ingroup grp_nfc_dal + * + * \brief Release configuration for the given HW Interface. + * + * \copydoc page_reg Release all the variables of the DAL component, that has been + * initialised in \b phDal4Nfc_Config function (Synchronous function). + * + * \param[in] pHwRef Link information of the hardware + * + * \retval NFCSTATUS_SUCCESS DAL Configuration Released successfully. + * \retval NFCSTATUS_FAILED Configuration release failed(example: Unable to close Com port). + * + *\msc + *ClientApp,UpperLayer,phDal4Nfc; + *ClientApp=>phDal4Nfc [label="phDal4Nfc_Config()",URL="\ref phDal4Nfc_Config"]; + *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Register()",URL="\ref phDal4Nfc_Register"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Init()",URL="\ref phDal4Nfc_Init"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *--- [label="Perform read write operation"]; + *--- [label="DAL resources can be released during upper layer deinit sequence"]; + *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Shutdown()",URL="\ref phDal4Nfc_Shutdown"]; + *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *ClientApp=>phDal4Nfc [label="phDal4Nfc_ConfigRelease()",URL="\ref phDal4Nfc_ConfigRelease"]; + *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; + *\endmsc + */ +extern +NFCSTATUS +phDal4Nfc_ConfigRelease( + void *pHwRef); + +/******************** Function declarations *************************/ + +#endif /* PHDALNFC_H */ + +/****************************************** END OF FILE ***************************************************/ + |