1 /* 2 * Copyright (C) 2010 NXP Semiconductors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 18 /*! 19 20 * \file phDal4Nfc.h 21 * \brief Common DAL for the upper layer. 22 * 23 * Project: NFC-FRI-1.1 24 * 25 * $Date: Tue Nov 10 13:56:45 2009 $ 26 * $Author: ing07299 $ 27 * $Revision: 1.38 $ 28 * $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 $ 29 * 30 */ 31 32 #ifndef PHDAL4NFC_H 33 #define PHDAL4NFC_H 34 35 /** 36 * \name DAl4 NFC 37 * 38 * File: \ref phDal4Nfc.h 39 * 40 */ 41 /*@{*/ 42 #define PH_DAL4NFC_FILEREVISION "$Revision: 1.38 $" /**< \ingroup grp_file_attributes */ 43 #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 $" 44 /**< \ingroup grp_file_attributes */ 45 /*@}*/ 46 /*************************** Includes *******************************/ 47 /** \defgroup grp_nfc_dal DAL Component 48 * 49 * 50 * 51 */ 52 /**< Basic type definitions */ 53 #include <phNfcTypes.h> 54 /**< Generic Interface Layer Function Definitions */ 55 #include <phNfcInterface.h> 56 /*********************** End of includes ****************************/ 57 58 /***************************** Macros *******************************/ 59 /**< Used for messaging by DAL as well as Upper Layers */ 60 #define PH_DAL4NFC_MESSAGE_BASE PH_LIBNFC_DEFERREDCALL_MSG 61 62 /************************ End of macros *****************************/ 63 64 65 /********************* Structures and enums *************************/ 66 67 /** 68 * \ingroup grp_nfc_dal 69 * 70 * DAL context : This contains the information of the upper layer callback 71 * and hardware reference. 72 */ 73 typedef struct phDal4Nfc_SContext 74 { 75 phNfcIF_sCallBack_t cb_if; /**<Callback info registered by upper layer*/ 76 volatile uint8_t hw_valid; /**<Flag - shows Hardware present or not */ 77 void *pHwRef; /**<Hardware Reference*/ 78 }phDal4Nfc_SContext_t,*pphDal4Nfc_SContext_t; 79 80 /** 81 * \ingroup grp_nfc_dal 82 * 83 * DAL enum for Messages : This contains the enums used for 84 * posting messages to the application. 85 */ 86 typedef enum phDal4Nfc_Messages_en 87 { 88 /**<Read message type used to post Read DAL Message to dispatch routine.Dispatch routine 89 calls read callback registered by upper layer */ 90 PHDAL4NFC_READ_MESSAGE = 0, 91 /**<Readwait message type used to post Read wait DAL Message to dispatch routine.Dispatch routine 92 calls read wait callback registered by upper layer */ 93 PHDAL4NFC_READWAIT_MESSAGE, 94 /**<Write message type used to post write DAL Message to dispatch routine.Dispatch routine 95 calls write wait callback registered by upper layer */ 96 PHDAL4NFC_WRITE_MESSAGE, 97 /**<Notify message type used to post Notify DAL Message to dispatch routine.Dispatch routine 98 calls notify callback registered by upper layer */ 99 PHDAL4NFC_NOTIFY_MESSAGE 100 }phDal4Nfc_Messages_en_t; 101 102 /** 103 * \ingroup grp_nfc_dal 104 * 105 * \brief DAL Message structure definition.This structure contains 106 * 107 * This structure contains details like message type,read ,read wait and write callbacks 108 * reference details as registered by upper layer. 109 */ 110 typedef struct phDal4Nfc_Message 111 { 112 /**<Refenrece to context.Context can be DAL context */ 113 void *pContext; 114 /**<Reference to hardware reference strucutre */ 115 void *pHwRef; 116 /**<DAL message of type \ref phDal4Nfc_Messages_en_t*/ 117 phDal4Nfc_Messages_en_t eMsgType; 118 /**<Transaction specific information of type \ref phNfc_sTransactionInfo_t*/ 119 phNfc_sTransactionInfo_t transactInfo; 120 /**<Reference to read callback,registered by upper layer.This is of type \ref pphNfcIF_Transact_Completion_CB_t*/ 121 pphNfcIF_Transact_Completion_CB_t readCbPtr; 122 /**<Reference to write callback ,registered by upper layer.This is of type \ref pphNfcIF_Transact_Completion_CB_t*/ 123 pphNfcIF_Transact_Completion_CB_t writeCbPtr; 124 } phDal4Nfc_Message_t,*pphDal4Nfc_Message_t; 125 126 /** 127 * \ingroup grp_nfc_dal 128 *\brief Possible DAL Configuration exposed to upper layer. 129 * Typically this should be port name (Ex:"COM1","COM2") to which PN544 is connected. 130 */ 131 #define ENUM_DAL_LINK_TYPE_COM1 ENUM_LINK_TYPE_COM1 132 #define ENUM_DAL_LINK_TYPE_COM2 ENUM_LINK_TYPE_COM2 133 #define ENUM_DAL_LINK_TYPE_COM3 ENUM_LINK_TYPE_COM3 134 #define ENUM_DAL_LINK_TYPE_COM4 ENUM_LINK_TYPE_COM4 135 #define ENUM_DAL_LINK_TYPE_COM5 ENUM_LINK_TYPE_COM5 136 #define ENUM_DAL_LINK_TYPE_COM6 ENUM_LINK_TYPE_COM6 137 #define ENUM_DAL_LINK_TYPE_COM7 ENUM_LINK_TYPE_COM7 138 #define ENUM_DAL_LINK_TYPE_COM8 ENUM_LINK_TYPE_COM8 139 #define ENUM_DAL_LINK_TYPE_I2C ENUM_LINK_TYPE_I2C 140 #define ENUM_DAL_LINK_TYPE_USB ENUM_LINK_TYPE_USB 141 #define ENUM_DAL_LINK_TYPE_TCP ENUM_LINK_TYPE_TCP 142 143 #define ENUM_DAL_LINK_TYPE_NB ENUM_LINK_TYPE_NB 144 typedef phLibNfc_eConfigLinkType phDal4Nfc_eConfigLinkType; 145 146 typedef phLibNfc_sConfig_t phDal4Nfc_sConfig_t; 147 typedef phLibNfc_sConfig_t *pphDal4Nfc_sConfig_t; 148 149 /****************** End of structures and enums *********************/ 150 151 /******************** Function declarations *************************/ 152 153 /** 154 * \ingroup grp_nfc_dal 155 * 156 *\brief Allows to register upper layer with DAL layer. 157 * This API allows upper layer to register with DAL layer.As part of registration 158 *<br>1.Exports DAL interfaces and DAL layer context to upper layer. 159 *Exported DAL interfaces are : 160 *<br><br>.phDal4Nfc_Shutdown 161 *<br><br>.phDal4Nfc_Write 162 *<br><br>.phDal4Nfc_Read 163 *<br><br>.phDal4Nfc_ReadWait 164 *<br><br>.phDal4Nfc_ReadWaitCancel 165 *<br><br>phDal4Nfc_Unregister 166 *<br><br>.Registeres upper layer callbacks and upper layer context with DAL layer. 167 *For details refer to \ref phNfcIF_sReference_t. 168 *Registration details are valid unless upper layer calls \ref phDal4Nfc_Unregister() 169 or \ref phDal4Nfc_Shutdown called. 170 171 * \param[in,out] psRefer holds DAL exported interface references once registration 172 * sucessful.This also contains transmit and receive buffer 173 * references. 174 * 175 * \param[in] if_cb Contains upper layer callback reference details, which are used 176 * by DAL layer during callback notification. 177 * These callbacks gets registered with DAL layer. 178 * 179 180 * \param[out] psIFConf Currently this parameter not used.This parameter to be other than NULL. 181 * 182 * 183 * \retval NFCSTATUS_SUCCESS Operation is successful. 184 * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function is invalid. 185 * 186 *\msc 187 *ClientApp,UpperLayer,phDal4Nfc; 188 *ClientApp=>phDal4Nfc [label="phDal4Nfc_Config()",URL="\ref phDal4Nfc_Config"]; 189 *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 190 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Register()",URL="\ref phDal4Nfc_Register"]; 191 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 192 *\endmsc 193 */ 194 195 extern 196 NFCSTATUS 197 phDal4Nfc_Register( 198 phNfcIF_sReference_t *psRefer, 199 phNfcIF_sCallBack_t if_cb, 200 void *psIFConf 201 ); 202 203 204 /** 205 * \ingroup grp_nfc_dal 206 * 207 * \brief Allows upper layer to unregister with DAL layer. 208 * This interface allows to unregister upper layer callback interfaces with DAL layer. 209 * \note: Once this this API is called DAL layer stops notifying upper layer callbacks in case 210 * any events reported within DAL. 211 * 212 * \param[in] pContext DAL context is provided by the upper layer. 213 * The DAL context earlier was given to the 214 * upper layer through the \ref 215 * \e phDal4Nfc_Register() function. 216 * \param[in] pHwRef for future use .Currently this parameter is not used. 217 * This needs to be other than NULL. 218 * 219 * \retval NFCSTATUS_SUCCESS Unregistration successful. 220 * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function is invalid. 221 * 222 *\msc 223 *ClientApp,UpperLayer,phDal4Nfc; 224 *ClientApp=>phDal4Nfc [label="phDal4Nfc_Config()",URL="\ref phDal4Nfc_Config"]; 225 *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 226 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Register()",URL="\ref phDal4Nfc_Register"]; 227 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 228 *--- [label="Upper layer can issue Unregistration later"]; 229 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Unregister()",URL="\ref phDal4Nfc_Unregister"]; 230 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 231 *\endmsc 232 */ 233 234 235 extern 236 NFCSTATUS 237 phDal4Nfc_Unregister( 238 void *pContext, 239 void *pHwRef 240 ); 241 242 243 /** 244 245 * \ingroup grp_nfc_dal 246 * 247 *\brief This interface allows to initialize DAL layer. 248 * This API implements initialization of DAL layer. This includes : 249 * 250 * <br><br>. Initialize parameters for HW Interface. 251 *<br><br>. Initializing read and writer threads. 252 *<br><br>. Initializing read and write task specific events and event specific configurations. 253 *<br><br>. Initializing DAL layer specific details. 254 * 255 * \param[in] pContext DAL context provided by the upper layer. 256 * The DAL context will be exported to the 257 * upper layer via upper layer registration interface. 258 * \param[in] pHwRef information of the hardware 259 * 260 * \retval NFCSTATUS_SUCCESS DAL initialization successful. 261 * \retval NFCSTATUS_INVALID_DEVICE The device is not enumerated or the 262 * Hardware Reference points to a device 263 * which does not exist. Alternatively, 264 * also already open devices produce this 265 * error. 266 * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function 267 * is invalid. 268 * 269 *\msc 270 *ClientApp,UpperLayer,phDal4Nfc; 271 *ClientApp=>phDal4Nfc [label="phDal4Nfc_Config()",URL="\ref phDal4Nfc_Config"]; 272 *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 273 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Register()",URL="\ref phDal4Nfc_Register"]; 274 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 275 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Init()",URL="\ref phDal4Nfc_Init"]; 276 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 277 *--- [label="DAL intialised ,read for read /write operations"]; 278 *\endmsc 279 */ 280 281 extern 282 NFCSTATUS 283 phDal4Nfc_Init( 284 void *pContext, 285 void *pHwRef 286 ); 287 288 289 /** 290 * \ingroup grp_nfc_dal 291 * 292 * \brief This API implements Deintialisation of DAL layer. 293 * 294 *This API implements Deintialisation of DAL layer. It includes : 295 *<br><br>.Releases all the resources.( context,memory resources,read/write buffers). 296 *<br><br>.closes COMxx port which is used during DAL session. 297 *<br><br>.Terminates Reader and writer tasks. 298 * 299 * \param[in] pContext DAL context is provided by the upper layer. 300 * The DAL context earlier was given to the 301 * upper layer through the 302 * \ref \e phDal4Nfc_Register() function 303 * \param[in] pHwRef hardware reference context. 304 * 305 * \retval NFCSTATUS_SUCCESS DAL shutdown successful 306 * \retval NFCSTATUS_FAILED DAL shutdown failed(example.unable to 307 * suspend thread, close HW Interface etc.) 308 * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function 309 * is invalid. 310 * 311 *\msc 312 *ClientApp,UpperLayer,phDal4Nfc; 313 *ClientApp=>phDal4Nfc [label="phDal4Nfc_Config()",URL="\ref phDal4Nfc_Config"]; 314 *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 315 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Register()",URL="\ref phDal4Nfc_Register"]; 316 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 317 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Init()",URL="\ref phDal4Nfc_Init"]; 318 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 319 *--- [label="Perform read write operation"]; 320 *--- [label="DAL can be shutdown during upper layer deinit sequence"]; 321 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Shutdown()",URL="\ref phDal4Nfc_Shutdown"]; 322 *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 323 *\endmsc 324 */ 325 326 extern 327 NFCSTATUS 328 phDal4Nfc_Shutdown( 329 void *pContext, 330 void *pHwRef 331 ); 332 333 /** 334 * \ingroup grp_nfc_dal 335 * 336 * \brief Allows to write data block to HW Interface. 337 * 338 * This asynchronous function writes the given block of data to the driver. 339 * This interface enables writer thread in case their is no write requests pending and returns 340 * sucessfully.Once writer thread completes write operation, it notifies upper layer using callback 341 * mechanism . 342 * \note writer thread notifies upper layer callback notified using windows messaging mechanism 343 * under deferred call context. 344 * 345 * 346 * \param[in] pContext DAL context is provided by the upper layer. 347 * The DAL 348 * context earlier was given to the upper layer 349 * through the \ref \e phDal4Nfc_Register() function 350 * \param[in] pHwRef information of the hardware. 351 * \param[in] pBuffer The information given by the upper layer to 352 * send it to the lower layer 353 * \param[in] length The length of pLlc_Buf, that needs to be sent 354 * to the lower layer is given by the upper layer 355 * 356 * \retval NFCSTATUS_PENDING If the command is yet to be process. 357 * \retval NFCSTATUS_BUSY BUSY with previous write operation 358 * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has 359 * been disconnected meanwhile 360 * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function 361 * is invalid. 362 * 363 *\msc 364 *ClientApp,UpperLayer,phDal4Nfc; 365 *--- [label="Configure,intialise DAL layer and Register with DAL "]; 366 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Write()",URL="\ref phDal4Nfc_Write()"]; 367 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_PENDING"]; 368 *--- [label="DAL posts write message to main thread under deferred call context"]; 369 *phDal4Nfc=>phDal4Nfc [label="phDal4Nfc_DeferredCall()",URL="\ref phDal4Nfc_DeferredCall()"]; 370 *ClientApp=>phDal4Nfc [label="phDal4Nfc_DeferredCb()",URL="\ref phDal4Nfc_DeferredCb()"]; 371 *phDal4Nfc=>UpperLayer [label="send_complete",URL="\ref phDal4Nfc_DeferredCb()"]; 372 *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 373 *\endmsc 374 */ 375 extern 376 NFCSTATUS 377 phDal4Nfc_Write( 378 void *pContext, 379 void *pHwRef, 380 uint8_t *pBuffer, 381 uint16_t length 382 ); 383 384 385 /** 386 * \ingroup grp_nfc_dal 387 * 388 * \brief Allows to Read data block from HW Interface. 389 * 390 * This asynchronous function reads the data from the driver in which length 391 * and the required buffer are sent by upper layer. This interface enables 392 * reader thread in case there is no read requests pending and returns sucessfully. 393 * Once read operation is complete, it notifies to upper layer through callback 394 * registered in the \b \e phDal4Nfc_Register() function. 395 * 396 * 397 * \param[in] pContext DAL context is provided by the upper layer. 398 * The DAL context earlier was given to the 399 * upper layer through the 400 * \b \e phDal4Nfc_Register() function 401 * \param[in] pHwRef Information of the hardware 402 * \param[in] pBuffer The information given by the upper layer to 403 * receive data from the lower layer 404 * \param[in] length The length of pBuffer given by the upper layer 405 * 406 * \retval NFCSTATUS_PENDING If the command is yet to be processed. 407 * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function 408 * is invalid. 409 * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has 410 * been disconnected meanwhile 411 * 412 *\msc 413 *ClientApp,UpperLayer,phDal4Nfc; 414 *--- [label="Configure,intialise DAL layer and Register with DAL "]; 415 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Write()",URL="\ref phDal4Nfc_Write()"]; 416 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_PENDING"]; 417 *--- [label="DAL posts write message to main thread under deferred call context"]; 418 *phDal4Nfc=>phDal4Nfc [label="phDal4Nfc_DeferredCall()",URL="\ref phDal4Nfc_DeferredCall()"]; 419 *ClientApp=>phDal4Nfc [label="phDal4Nfc_DeferredCb()",URL="\ref phDal4Nfc_DeferredCb()"]; 420 *phDal4Nfc=>UpperLayer [label="send_complete",URL="\ref phDal4Nfc_DeferredCb()"]; 421 *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 422 *--- [label="upper layer can issue read request"]; 423 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Read()",URL="\ref phDal4Nfc_Read()"]; 424 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_PENDING"]; 425 *--- [label="DAL posts read message to main thread under deferred call context"]; 426 *phDal4Nfc=>phDal4Nfc [label="phDal4Nfc_DeferredCall()",URL="\ref phDal4Nfc_DeferredCall()"]; 427 *ClientApp=>phDal4Nfc [label="phDal4Nfc_DeferredCb()",URL="\ref phDal4Nfc_DeferredCb()"]; 428 *phDal4Nfc=>UpperLayer [label="receive_complete",URL="\ref phDal4Nfc_DeferredCb()"]; 429 *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 430 431 *\endmsc 432 */ 433 434 extern 435 NFCSTATUS 436 phDal4Nfc_Read( 437 void *pContext, 438 void *pHwRef, 439 uint8_t *pBuffer, 440 uint16_t length 441 ); 442 443 /** 444 * \ingroup grp_nfc_dal 445 * 446 * \brief Allows to wait before reading data block from HW Interface. 447 * 448 * This asynchronous function waits before reading the data from the 449 * driver in which length and the required buffer are sent by upper layer. 450 * This interface enables reader thread to wait for predefined time period 451 * (predefined time period is configurable by the DAL implementer) to complete 452 * read request.Once read operation is complete, it notifies to upper layer 453 * through callback registered in the \b \e phDal4Nfc_Register() 454 * function. Read request is expected to get complete within this time. 455 * 456 * \param[in] pContext DAL context is provided by the upper layer. 457 * The DAL context earlier was given to the 458 * upper layer through the 459 * \b \e phDal4Nfc_Register() function 460 * \param[in] pHwRef Information of the hardware 461 * \param[in] pBuffer The information given by the upper layer to 462 * receive data from the lower layer 463 * \param[in] length The length of pBuffer given by the upper layer 464 * 465 * \retval NFCSTATUS_SUCCESS DAL receive successful 466 * \retval NFCSTATUS_BUSY BUSY with previous receive operation 467 * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the 468 * function is invalid. 469 * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has 470 * been disconnected meanwhile 471 * 472 * 473 *\msc 474 *ClientApp,UpperLayer,phDal4Nfc; 475 *--- [label="Configure,intialise DAL layer and Register with DAL "]; 476 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Write()",URL="\ref phDal4Nfc_Write()"]; 477 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_PENDING"]; 478 *--- [label="DAL posts write message to main thread under deferred call context"]; 479 *phDal4Nfc=>phDal4Nfc [label="phDal4Nfc_DeferredCall()",URL="\ref phDal4Nfc_DeferredCall()"]; 480 *ClientApp=>phDal4Nfc [label="phDal4Nfc_DeferredCb()",URL="\ref phDal4Nfc_DeferredCb()"]; 481 *phDal4Nfc=>UpperLayer [label="send_complete",URL="\ref phDal4Nfc_DeferredCb()"]; 482 *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 483 *--- [label="upper layer can issue read wait request "]; 484 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_ReadWait()",URL="\ref phDal4Nfc_ReadWait()"]; 485 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_PENDING"]; 486 *--- [label="DAL posts read wait message to main thread under deferred call context"]; 487 *phDal4Nfc=>phDal4Nfc [label="phDal4Nfc_DeferredCall()",URL="\ref phDal4Nfc_DeferredCall()"]; 488 *ClientApp=>phDal4Nfc [label="phDal4Nfc_DeferredCb()",URL="\ref phDal4Nfc_DeferredCb()"]; 489 *phDal4Nfc=>UpperLayer [label="receive_complete",URL="\ref phDal4Nfc_DeferredCb()"]; 490 *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 491 * 492 *\endmsc 493 */ 494 495 496 extern 497 NFCSTATUS 498 phDal4Nfc_ReadWait( 499 void *pContext, 500 void *pHwRef, 501 uint8_t *pBuffer, 502 uint16_t length 503 ); 504 505 506 /** 507 * \ingroup grp_nfc_dal 508 * 509 *\brief Aborts read wait opertaion. 510 * 511 * This asynchronous function issues cancellation of the outstanding 512 * \b \e phDal4Nfc_ReadWait request.If upper layer wants to cancel the 513 * ongoing read wait operation this function is used. e.g. to abort the 514 * transactions. 515 * 516 * \param[in] pContext DAL context is provided by the upper layer. 517 * The DAL context earlier was given to the 518 * upper layer through the 519 * \b \e phDal4Nfc_Register() function 520 * \param[in] pHwRef Information of the hardware 521 * 522 * \retval NFCSTATUS_SUCCESS DAL receive successful 523 * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the 524 * function is invalid. 525 * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened 526 * or has been disconnected meanwhile 527 * \retval NFCSTATUS_BOARD_COMMUNICATION_ERROR A board communication error occurred 528 (e.g. configuration went wrong). 529 * 530 * 531 *\msc 532 *ClientApp,UpperLayer,phDal4Nfc; 533 *--- [label="Configure,intialise DAL layer and Register with DAL "]; 534 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Write()",URL="\ref phDal4Nfc_Write()"]; 535 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_PENDING"]; 536 *--- [label="DAL posts write message to main thread under deferred call context"]; 537 *phDal4Nfc=>phDal4Nfc [label="phDal4Nfc_DeferredCall()",URL="\ref phDal4Nfc_DeferredCall()"]; 538 *ClientApp=>phDal4Nfc [label="phDal4Nfc_DeferredCb()",URL="\ref Call phDal4Nfc_DeferredCb()"]; 539 *phDal4Nfc=>UpperLayer [label="send_complete",URL="\ref phDal4Nfc_DeferredCb()"]; 540 *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 541 *--- [label="upper layer can issue read wait request "]; 542 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_ReadWait()",URL="\ref phDal4Nfc_ReadWait()"]; 543 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_PENDING"]; 544 *--- [label="Issue Read wait cancel request here"]; 545 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_ReadWaitCancel()",URL="\ref phDal4Nfc_ReadWaitCancel()"]; 546 **UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 547 *\endmsc 548 */ 549 extern 550 NFCSTATUS 551 phDal4Nfc_ReadWaitCancel( 552 void *pContext, 553 void *pHwRef 554 ); 555 556 /** 557 * \ingroup grp_nfc_dal 558 * 559 * \brief DAL config function 560 * This synchronous function configures the given HW Interface and 561 * sends the HANDLE to the caller. 562 * 563 * \param[in] config DAL configuration details as provided 564 * by the upper layer. 565 * \param[in,out] phwref pointer to which valid Handle to DAL 566 * interface is assigned. 567 * 568 * \retval NFCSTATUS_SUCCESS Configuration happened successfully. 569 * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function 570 * is invalid. 571 * \retval NFCSTATUS_FAILED Configuration failed(example.unable to 572 * open HW Interface). 573 * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or 574 * has been disconnected meanwhile 575 * \retval NFCSTATUS_BOARD_COMMUNICATION_ERROR A board communication error occurred 576 (e.g. configuration went wrong). 577 *\msc 578 *ClientApp,UpperLayer,phDal4Nfc; 579 *ClientApp=>phDal4Nfc [label="phDal4Nfc_Config()",URL="\ref phDal4Nfc_Config"]; 580 *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 581 *\endmsc 582 */ 583 extern 584 NFCSTATUS 585 phDal4Nfc_Config ( 586 pphDal4Nfc_sConfig_t config, 587 void **phwref 588 ); 589 590 /** 591 * \ingroup grp_nfc_dal 592 * 593 * \brief Release configuration for the given HW Interface. 594 * 595 * \copydoc page_reg Release all the variables of the DAL component, that has been 596 * initialised in \b phDal4Nfc_Config function (Synchronous function). 597 * 598 * \param[in] pHwRef Link information of the hardware 599 * 600 * \retval NFCSTATUS_SUCCESS DAL Configuration Released successfully. 601 * \retval NFCSTATUS_FAILED Configuration release failed(example: Unable to close Com port). 602 * 603 *\msc 604 *ClientApp,UpperLayer,phDal4Nfc; 605 *ClientApp=>phDal4Nfc [label="phDal4Nfc_Config()",URL="\ref phDal4Nfc_Config"]; 606 *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 607 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Register()",URL="\ref phDal4Nfc_Register"]; 608 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 609 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Init()",URL="\ref phDal4Nfc_Init"]; 610 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 611 *--- [label="Perform read write operation"]; 612 *--- [label="DAL resources can be released during upper layer deinit sequence"]; 613 *UpperLayer=>phDal4Nfc [label="phDal4Nfc_Shutdown()",URL="\ref phDal4Nfc_Shutdown"]; 614 *UpperLayer<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 615 *ClientApp=>phDal4Nfc [label="phDal4Nfc_ConfigRelease()",URL="\ref phDal4Nfc_ConfigRelease"]; 616 *ClientApp<<phDal4Nfc [label="NFCSTATUS_SUCCESS"]; 617 *\endmsc 618 */ 619 extern 620 NFCSTATUS 621 phDal4Nfc_ConfigRelease( 622 void *pHwRef); 623 624 extern 625 NFCSTATUS 626 phDal4Nfc_Reset(long level); 627 628 extern 629 NFCSTATUS 630 phDal4Nfc_Download(long level); 631 632 /******************** Function declarations *************************/ 633 634 #endif /* PHDALNFC_H */ 635 636 /****************************************** END OF FILE ***************************************************/ 637 638