Nick Pelly | 5d9927b | 2010-09-23 12:47:58 -0700 | [diff] [blame] | 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 | * \file phFriNfc_LlcpUtils.h |
| 19 | * \brief NFC LLCP utils |
| 20 | * |
| 21 | * Project: NFC-FRI |
| 22 | * |
| 23 | */ |
| 24 | |
| 25 | #ifndef PHFRINFC_LLCPUTILS_H |
| 26 | #define PHFRINFC_LLCPUTILS_H |
| 27 | |
| 28 | /*include files*/ |
| 29 | #include <phNfcHalTypes.h> |
| 30 | #include <phNfcTypes.h> |
| 31 | #include <phNfcStatus.h> |
| 32 | #include <phFriNfc.h> |
| 33 | #include <phFriNfc_Llcp.h> |
| 34 | |
| 35 | /** |
| 36 | * \name NFC Forum Logical Link Control Protocol Utils |
| 37 | * |
| 38 | * File: \ref phFriNfc_LlcpUtils.h |
| 39 | * |
| 40 | */ |
| 41 | |
| 42 | /** |
| 43 | * UTIL_FIFO_BUFFER - A Cyclic FIFO buffer |
| 44 | * If pIn == pOut the buffer is empty. |
| 45 | */ |
| 46 | typedef struct UTIL_FIFO_BUFFER |
| 47 | { |
| 48 | uint8_t *pBuffStart; /* Points to first valid location in buffer */ |
| 49 | uint8_t *pBuffEnd; /* Points to last valid location in buffer */ |
| 50 | volatile uint8_t *pIn; /* Points to 1 before where the next TU1 will enter buffer */ |
| 51 | volatile uint8_t *pOut; /* Points to 1 before where the next TU1 will leave buffer */ |
| 52 | volatile bool_t bFull; /* TRUE if buffer is full */ |
| 53 | }UTIL_FIFO_BUFFER, *P_UTIL_FIFO_BUFFER; |
| 54 | |
| 55 | |
| 56 | /** \defgroup grp_fri_nfc_llcp NFC Forum Logical Link Control Protocol Component |
| 57 | * |
| 58 | * TODO |
| 59 | * |
| 60 | */ |
| 61 | |
| 62 | NFCSTATUS phFriNfc_Llcp_DecodeTLV( phNfc_sData_t *psRawData, |
| 63 | uint32_t *pOffset, |
| 64 | uint8_t *pType, |
| 65 | phNfc_sData_t *psValueBuffer ); |
| 66 | |
| 67 | NFCSTATUS phFriNfc_Llcp_EncodeTLV( phNfc_sData_t *psValueBuffer, |
| 68 | uint32_t *pOffset, |
| 69 | uint8_t type, |
| 70 | uint8_t length, |
| 71 | uint8_t *pValue); |
| 72 | |
Sunil Jogi | 7b187e7 | 2012-01-16 11:50:07 -0800 | [diff] [blame] | 73 | NFCSTATUS phFriNfc_Llcp_AppendTLV( phNfc_sData_t *psValueBuffer, |
| 74 | uint32_t nTlvOffset, |
| 75 | uint32_t *pCurrentOffset, |
| 76 | uint8_t length, |
| 77 | uint8_t *pValue); |
| 78 | |
Jeff Hamilton | e1c9fcf | 2010-11-01 15:01:42 -0500 | [diff] [blame] | 79 | void phFriNfc_Llcp_EncodeMIUX(uint16_t pMiux, |
| 80 | uint8_t* pMiuxEncoded); |
Nick Pelly | 5d9927b | 2010-09-23 12:47:58 -0700 | [diff] [blame] | 81 | |
| 82 | void phFriNfc_Llcp_EncodeRW(uint8_t *pRw); |
| 83 | |
| 84 | /** |
| 85 | * Initializes a Fifo Cyclic Buffer to point to some allocated memory. |
| 86 | */ |
| 87 | void phFriNfc_Llcp_CyclicFifoInit(P_UTIL_FIFO_BUFFER sUtilFifo, |
| 88 | const uint8_t *pBuffStart, |
| 89 | uint32_t buffLength); |
| 90 | |
| 91 | /** |
| 92 | * Clears the Fifo Cyclic Buffer - loosing any data that was in it. |
| 93 | */ |
| 94 | void phFriNfc_Llcp_CyclicFifoClear(P_UTIL_FIFO_BUFFER sUtilFifo); |
| 95 | |
| 96 | |
| 97 | /** |
| 98 | * Attempts to write dataLength bytes to the specified Fifo Cyclic Buffer. |
| 99 | */ |
| 100 | uint32_t phFriNfc_Llcp_CyclicFifoWrite(P_UTIL_FIFO_BUFFER sUtilFifo, |
| 101 | uint8_t *pData, |
| 102 | uint32_t dataLength); |
| 103 | |
| 104 | /** |
| 105 | * Attempts to read dataLength bytes from the specified Fifo Cyclic Buffer. |
| 106 | */ |
| 107 | uint32_t phFriNfc_Llcp_CyclicFifoFifoRead(P_UTIL_FIFO_BUFFER sUtilFifo, |
| 108 | uint8_t *pBuffer, |
| 109 | uint32_t dataLength); |
| 110 | |
| 111 | /** |
| 112 | * Returns the number of bytes currently stored in Fifo Cyclic Buffer. |
| 113 | */ |
| 114 | uint32_t phFriNfc_Llcp_CyclicFifoUsage(P_UTIL_FIFO_BUFFER sUtilFifo); |
| 115 | |
| 116 | /** |
| 117 | * Returns the available room for writing in Fifo Cyclic Buffer. |
| 118 | */ |
| 119 | uint32_t phFriNfc_Llcp_CyclicFifoAvailable(P_UTIL_FIFO_BUFFER sUtilFifo); |
| 120 | |
| 121 | uint32_t phFriNfc_Llcp_Header2Buffer( phFriNfc_Llcp_sPacketHeader_t *psHeader, |
| 122 | uint8_t *pBuffer, |
| 123 | uint32_t nOffset ); |
| 124 | |
| 125 | uint32_t phFriNfc_Llcp_Sequence2Buffer( phFriNfc_Llcp_sPacketSequence_t *psSequence, |
| 126 | uint8_t *pBuffer, |
| 127 | uint32_t nOffset ); |
| 128 | |
| 129 | uint32_t phFriNfc_Llcp_Buffer2Header( uint8_t *pBuffer, |
| 130 | uint32_t nOffset, |
| 131 | phFriNfc_Llcp_sPacketHeader_t *psHeader ); |
| 132 | |
| 133 | uint32_t phFriNfc_Llcp_Buffer2Sequence( uint8_t *pBuffer, |
| 134 | uint32_t nOffset, |
| 135 | phFriNfc_Llcp_sPacketSequence_t *psSequence ); |
| 136 | |
| 137 | |
| 138 | #endif /* PHFRINFC_LLCPUTILS_H */ |