| /* |
| * 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_LlcpUtils.h |
| * \brief NFC LLCP utils |
| * |
| * Project: NFC-FRI |
| * |
| */ |
| |
| #ifndef PHFRINFC_LLCPUTILS_H |
| #define PHFRINFC_LLCPUTILS_H |
| |
| /*include files*/ |
| #include <phNfcHalTypes.h> |
| #include <phNfcTypes.h> |
| #include <phNfcStatus.h> |
| #include <phFriNfc.h> |
| #include <phFriNfc_Llcp.h> |
| |
| /** |
| * \name NFC Forum Logical Link Control Protocol Utils |
| * |
| * File: \ref phFriNfc_LlcpUtils.h |
| * |
| */ |
| |
| /** |
| * UTIL_FIFO_BUFFER - A Cyclic FIFO buffer |
| * If pIn == pOut the buffer is empty. |
| */ |
| typedef struct UTIL_FIFO_BUFFER |
| { |
| uint8_t *pBuffStart; /* Points to first valid location in buffer */ |
| uint8_t *pBuffEnd; /* Points to last valid location in buffer */ |
| volatile uint8_t *pIn; /* Points to 1 before where the next TU1 will enter buffer */ |
| volatile uint8_t *pOut; /* Points to 1 before where the next TU1 will leave buffer */ |
| volatile bool_t bFull; /* TRUE if buffer is full */ |
| }UTIL_FIFO_BUFFER, *P_UTIL_FIFO_BUFFER; |
| |
| |
| /** \defgroup grp_fri_nfc_llcp NFC Forum Logical Link Control Protocol Component |
| * |
| * TODO |
| * |
| */ |
| |
| NFCSTATUS phFriNfc_Llcp_DecodeTLV( phNfc_sData_t *psRawData, |
| uint32_t *pOffset, |
| uint8_t *pType, |
| phNfc_sData_t *psValueBuffer ); |
| |
| NFCSTATUS phFriNfc_Llcp_EncodeTLV( phNfc_sData_t *psValueBuffer, |
| uint32_t *pOffset, |
| uint8_t type, |
| uint8_t length, |
| uint8_t *pValue); |
| |
| void phFriNfc_Llcp_EncodeMIUX(uint16_t pMiux, |
| uint8_t* pMiuxEncoded); |
| |
| void phFriNfc_Llcp_EncodeRW(uint8_t *pRw); |
| |
| /** |
| * Initializes a Fifo Cyclic Buffer to point to some allocated memory. |
| */ |
| void phFriNfc_Llcp_CyclicFifoInit(P_UTIL_FIFO_BUFFER sUtilFifo, |
| const uint8_t *pBuffStart, |
| uint32_t buffLength); |
| |
| /** |
| * Clears the Fifo Cyclic Buffer - loosing any data that was in it. |
| */ |
| void phFriNfc_Llcp_CyclicFifoClear(P_UTIL_FIFO_BUFFER sUtilFifo); |
| |
| |
| /** |
| * Attempts to write dataLength bytes to the specified Fifo Cyclic Buffer. |
| */ |
| uint32_t phFriNfc_Llcp_CyclicFifoWrite(P_UTIL_FIFO_BUFFER sUtilFifo, |
| uint8_t *pData, |
| uint32_t dataLength); |
| |
| /** |
| * Attempts to read dataLength bytes from the specified Fifo Cyclic Buffer. |
| */ |
| uint32_t phFriNfc_Llcp_CyclicFifoFifoRead(P_UTIL_FIFO_BUFFER sUtilFifo, |
| uint8_t *pBuffer, |
| uint32_t dataLength); |
| |
| /** |
| * Returns the number of bytes currently stored in Fifo Cyclic Buffer. |
| */ |
| uint32_t phFriNfc_Llcp_CyclicFifoUsage(P_UTIL_FIFO_BUFFER sUtilFifo); |
| |
| /** |
| * Returns the available room for writing in Fifo Cyclic Buffer. |
| */ |
| uint32_t phFriNfc_Llcp_CyclicFifoAvailable(P_UTIL_FIFO_BUFFER sUtilFifo); |
| |
| uint32_t phFriNfc_Llcp_Header2Buffer( phFriNfc_Llcp_sPacketHeader_t *psHeader, |
| uint8_t *pBuffer, |
| uint32_t nOffset ); |
| |
| uint32_t phFriNfc_Llcp_Sequence2Buffer( phFriNfc_Llcp_sPacketSequence_t *psSequence, |
| uint8_t *pBuffer, |
| uint32_t nOffset ); |
| |
| uint32_t phFriNfc_Llcp_Buffer2Header( uint8_t *pBuffer, |
| uint32_t nOffset, |
| phFriNfc_Llcp_sPacketHeader_t *psHeader ); |
| |
| uint32_t phFriNfc_Llcp_Buffer2Sequence( uint8_t *pBuffer, |
| uint32_t nOffset, |
| phFriNfc_Llcp_sPacketSequence_t *psSequence ); |
| |
| |
| #endif /* PHFRINFC_LLCPUTILS_H */ |