NFC NDEF library
Dependents: Nucleo_NFC_Example I2C_NFC_Master Print_Entire_Nucleo_NFC01A1_Memory
Fork of lib_NDEF by
lib_TagType4.c@0:3b093bd0819e, 2014-12-15 (annotated)
- Committer:
- EnricoG
- Date:
- Mon Dec 15 19:41:36 2014 +0000
- Revision:
- 0:3b093bd0819e
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
EnricoG | 0:3b093bd0819e | 1 | /** |
EnricoG | 0:3b093bd0819e | 2 | ****************************************************************************** |
EnricoG | 0:3b093bd0819e | 3 | * @file lib_TagType4.c |
EnricoG | 0:3b093bd0819e | 4 | * @author MMY Application Team |
EnricoG | 0:3b093bd0819e | 5 | * @version V1.0.0 |
EnricoG | 0:3b093bd0819e | 6 | * @date 20-November-2013 |
EnricoG | 0:3b093bd0819e | 7 | * @brief This file help to manage TagType4. |
EnricoG | 0:3b093bd0819e | 8 | ****************************************************************************** |
EnricoG | 0:3b093bd0819e | 9 | * @attention |
EnricoG | 0:3b093bd0819e | 10 | * |
EnricoG | 0:3b093bd0819e | 11 | * <h2><center>© COPYRIGHT 2014 STMicroelectronics</center></h2> |
EnricoG | 0:3b093bd0819e | 12 | * |
EnricoG | 0:3b093bd0819e | 13 | * Licensed under MMY-ST Liberty SW License Agreement V2, (the "License"); |
EnricoG | 0:3b093bd0819e | 14 | * You may not use this file except in compliance with the License. |
EnricoG | 0:3b093bd0819e | 15 | * You may obtain a copy of the License at: |
EnricoG | 0:3b093bd0819e | 16 | * |
EnricoG | 0:3b093bd0819e | 17 | * http://www.st.com/software_license_agreement_liberty_v2 |
EnricoG | 0:3b093bd0819e | 18 | * |
EnricoG | 0:3b093bd0819e | 19 | * Unless required by applicable law or agreed to in writing, software |
EnricoG | 0:3b093bd0819e | 20 | * distributed under the License is distributed on an "AS IS" BASIS, |
EnricoG | 0:3b093bd0819e | 21 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
EnricoG | 0:3b093bd0819e | 22 | * See the License for the specific language governing permissions and |
EnricoG | 0:3b093bd0819e | 23 | * limitations under the License. |
EnricoG | 0:3b093bd0819e | 24 | * |
EnricoG | 0:3b093bd0819e | 25 | ****************************************************************************** |
EnricoG | 0:3b093bd0819e | 26 | */ |
EnricoG | 0:3b093bd0819e | 27 | |
EnricoG | 0:3b093bd0819e | 28 | /* Includes ------------------------------------------------------------------*/ |
EnricoG | 0:3b093bd0819e | 29 | #include "lib_TagType4.h" |
EnricoG | 0:3b093bd0819e | 30 | |
EnricoG | 0:3b093bd0819e | 31 | /** @addtogroup NFC_libraries |
EnricoG | 0:3b093bd0819e | 32 | * @{ |
EnricoG | 0:3b093bd0819e | 33 | * @brief <b>This is the library used to manage the content of the TAG (data) |
EnricoG | 0:3b093bd0819e | 34 | * But also the specific feature of the tag, for instance |
EnricoG | 0:3b093bd0819e | 35 | * password, gpo... </b> |
EnricoG | 0:3b093bd0819e | 36 | */ |
EnricoG | 0:3b093bd0819e | 37 | |
EnricoG | 0:3b093bd0819e | 38 | |
EnricoG | 0:3b093bd0819e | 39 | /** @addtogroup libNFC_FORUM |
EnricoG | 0:3b093bd0819e | 40 | * @{ |
EnricoG | 0:3b093bd0819e | 41 | * @brief This part of the library manage data which follow NFC forum organisation. |
EnricoG | 0:3b093bd0819e | 42 | */ |
EnricoG | 0:3b093bd0819e | 43 | |
EnricoG | 0:3b093bd0819e | 44 | |
EnricoG | 0:3b093bd0819e | 45 | /** |
EnricoG | 0:3b093bd0819e | 46 | * @brief This buffer contains the data send/received by TAG |
EnricoG | 0:3b093bd0819e | 47 | */ |
EnricoG | 0:3b093bd0819e | 48 | uint8_t NDEF_Buffer [NDEF_MAX_SIZE]; |
EnricoG | 0:3b093bd0819e | 49 | |
EnricoG | 0:3b093bd0819e | 50 | /** |
EnricoG | 0:3b093bd0819e | 51 | * @brief This structure contains the data of the CC file |
EnricoG | 0:3b093bd0819e | 52 | */ |
EnricoG | 0:3b093bd0819e | 53 | sCCFileInfo CCFileStruct; |
EnricoG | 0:3b093bd0819e | 54 | |
EnricoG | 0:3b093bd0819e | 55 | /** |
EnricoG | 0:3b093bd0819e | 56 | * @brief This structure contains the information encapsuled in the record header |
EnricoG | 0:3b093bd0819e | 57 | * with few more for SW purpose |
EnricoG | 0:3b093bd0819e | 58 | */ |
EnricoG | 0:3b093bd0819e | 59 | sRecordInfo RecordStruct; |
EnricoG | 0:3b093bd0819e | 60 | |
EnricoG | 0:3b093bd0819e | 61 | /** @defgroup libTT4_Private_Functions |
EnricoG | 0:3b093bd0819e | 62 | * @{ |
EnricoG | 0:3b093bd0819e | 63 | */ |
EnricoG | 0:3b093bd0819e | 64 | |
EnricoG | 0:3b093bd0819e | 65 | /** |
EnricoG | 0:3b093bd0819e | 66 | * @} |
EnricoG | 0:3b093bd0819e | 67 | */ |
EnricoG | 0:3b093bd0819e | 68 | |
EnricoG | 0:3b093bd0819e | 69 | |
EnricoG | 0:3b093bd0819e | 70 | /** @defgroup libTT4_Public_Functions |
EnricoG | 0:3b093bd0819e | 71 | * @{ |
EnricoG | 0:3b093bd0819e | 72 | * @brief This file is used to access tag type 4. |
EnricoG | 0:3b093bd0819e | 73 | */ |
EnricoG | 0:3b093bd0819e | 74 | |
EnricoG | 0:3b093bd0819e | 75 | /** |
EnricoG | 0:3b093bd0819e | 76 | * @brief This fonction initialize Tag Type 4 |
EnricoG | 0:3b093bd0819e | 77 | * @param None |
EnricoG | 0:3b093bd0819e | 78 | * @retval SUCCESS : Initialization done |
EnricoG | 0:3b093bd0819e | 79 | */ |
EnricoG | 0:3b093bd0819e | 80 | uint16_t TT4_Init (void) |
EnricoG | 0:3b093bd0819e | 81 | { |
EnricoG | 0:3b093bd0819e | 82 | uint16_t status = SUCCESS; |
EnricoG | 0:3b093bd0819e | 83 | uint8_t CCBuffer[15]; |
EnricoG | 0:3b093bd0819e | 84 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 85 | |
EnricoG | 0:3b093bd0819e | 86 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 87 | |
EnricoG | 0:3b093bd0819e | 88 | status = TagT4Init( CCBuffer, sizeof(CCBuffer)); |
EnricoG | 0:3b093bd0819e | 89 | |
EnricoG | 0:3b093bd0819e | 90 | if( status == SUCCESS) |
EnricoG | 0:3b093bd0819e | 91 | { |
EnricoG | 0:3b093bd0819e | 92 | pCCFile->NumberCCByte = (uint16_t) ((CCBuffer[0x00]<<8) | CCBuffer[0x01]); |
EnricoG | 0:3b093bd0819e | 93 | pCCFile->Version = CCBuffer[0x02]; |
EnricoG | 0:3b093bd0819e | 94 | pCCFile->MaxReadByte = (uint16_t) ((CCBuffer[0x03]<<8) | CCBuffer[0x04]); |
EnricoG | 0:3b093bd0819e | 95 | pCCFile->MaxWriteByte = (uint16_t) ((CCBuffer[0x05]<<8) | CCBuffer[0x06]); |
EnricoG | 0:3b093bd0819e | 96 | pCCFile->TField = CCBuffer[0x07]; |
EnricoG | 0:3b093bd0819e | 97 | pCCFile->LField = CCBuffer[0x08]; |
EnricoG | 0:3b093bd0819e | 98 | pCCFile->FileID = (uint16_t) ((CCBuffer[0x09]<<8) | CCBuffer[0x0A]); |
EnricoG | 0:3b093bd0819e | 99 | pCCFile->NDEFFileMaxSize = (uint16_t) ((CCBuffer[0x0B]<<8) | CCBuffer[0x0C]); |
EnricoG | 0:3b093bd0819e | 100 | pCCFile->ReadAccess = CCBuffer[0x0D]; |
EnricoG | 0:3b093bd0819e | 101 | pCCFile->WriteAccess = CCBuffer[0x0E]; |
EnricoG | 0:3b093bd0819e | 102 | } |
EnricoG | 0:3b093bd0819e | 103 | |
EnricoG | 0:3b093bd0819e | 104 | return status; |
EnricoG | 0:3b093bd0819e | 105 | } |
EnricoG | 0:3b093bd0819e | 106 | |
EnricoG | 0:3b093bd0819e | 107 | /** |
EnricoG | 0:3b093bd0819e | 108 | * @brief This fonction read NDEF file |
EnricoG | 0:3b093bd0819e | 109 | * @param pNDEF : pointer on buffer to fill with NDEF data |
EnricoG | 0:3b093bd0819e | 110 | * @retval SUCCESS : NDEF file data have been retrieve |
EnricoG | 0:3b093bd0819e | 111 | * @retval ERROR : Not able to get NDEF file data |
EnricoG | 0:3b093bd0819e | 112 | */ |
EnricoG | 0:3b093bd0819e | 113 | uint16_t TT4_ReadNDEF(uint8_t *pNDEF) |
EnricoG | 0:3b093bd0819e | 114 | { |
EnricoG | 0:3b093bd0819e | 115 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 116 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 117 | |
EnricoG | 0:3b093bd0819e | 118 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 119 | |
EnricoG | 0:3b093bd0819e | 120 | if(OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 121 | { |
EnricoG | 0:3b093bd0819e | 122 | status = NDEF_ReadNDEF(pNDEF); |
EnricoG | 0:3b093bd0819e | 123 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 124 | } |
EnricoG | 0:3b093bd0819e | 125 | |
EnricoG | 0:3b093bd0819e | 126 | return status; |
EnricoG | 0:3b093bd0819e | 127 | } |
EnricoG | 0:3b093bd0819e | 128 | |
EnricoG | 0:3b093bd0819e | 129 | /** |
EnricoG | 0:3b093bd0819e | 130 | * @brief This fonction write NDEF file |
EnricoG | 0:3b093bd0819e | 131 | * @param pNDEF : pointer on buffer that contain the NDEF data |
EnricoG | 0:3b093bd0819e | 132 | * @retval SUCCESS : NDEF file data have been stored |
EnricoG | 0:3b093bd0819e | 133 | * @retval ERROR : Not able to store NDEF file |
EnricoG | 0:3b093bd0819e | 134 | */ |
EnricoG | 0:3b093bd0819e | 135 | uint16_t TT4_WriteNDEF(uint8_t *pNDEF) |
EnricoG | 0:3b093bd0819e | 136 | { |
EnricoG | 0:3b093bd0819e | 137 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 138 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 139 | |
EnricoG | 0:3b093bd0819e | 140 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 141 | |
EnricoG | 0:3b093bd0819e | 142 | if(OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 143 | { |
EnricoG | 0:3b093bd0819e | 144 | status = NDEF_WriteNDEF( pNDEF); |
EnricoG | 0:3b093bd0819e | 145 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 146 | } |
EnricoG | 0:3b093bd0819e | 147 | |
EnricoG | 0:3b093bd0819e | 148 | return status; |
EnricoG | 0:3b093bd0819e | 149 | } |
EnricoG | 0:3b093bd0819e | 150 | |
EnricoG | 0:3b093bd0819e | 151 | /** |
EnricoG | 0:3b093bd0819e | 152 | * @brief This fonction read NDEF file if NDEF is identified as URI |
EnricoG | 0:3b093bd0819e | 153 | * @param pURI : pointer on URI structure to fill with read data |
EnricoG | 0:3b093bd0819e | 154 | * @retval SUCCESS : URI structure has been updated |
EnricoG | 0:3b093bd0819e | 155 | * @retval ERROR : Not able to fill URI structure |
EnricoG | 0:3b093bd0819e | 156 | */ |
EnricoG | 0:3b093bd0819e | 157 | uint16_t TT4_ReadURI(sURI_Info *pURI) |
EnricoG | 0:3b093bd0819e | 158 | { |
EnricoG | 0:3b093bd0819e | 159 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 160 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 161 | sRecordInfo *pRecordStruct; |
EnricoG | 0:3b093bd0819e | 162 | |
EnricoG | 0:3b093bd0819e | 163 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 164 | pRecordStruct = &RecordStruct; |
EnricoG | 0:3b093bd0819e | 165 | |
EnricoG | 0:3b093bd0819e | 166 | |
EnricoG | 0:3b093bd0819e | 167 | if(OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 168 | { |
EnricoG | 0:3b093bd0819e | 169 | if(NDEF_IdentifyNDEF( pRecordStruct, NDEF_Buffer) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 170 | { |
EnricoG | 0:3b093bd0819e | 171 | status = NDEF_ReadURI(pRecordStruct, pURI); |
EnricoG | 0:3b093bd0819e | 172 | } |
EnricoG | 0:3b093bd0819e | 173 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 174 | } |
EnricoG | 0:3b093bd0819e | 175 | |
EnricoG | 0:3b093bd0819e | 176 | return status; |
EnricoG | 0:3b093bd0819e | 177 | } |
EnricoG | 0:3b093bd0819e | 178 | |
EnricoG | 0:3b093bd0819e | 179 | /** |
EnricoG | 0:3b093bd0819e | 180 | * @brief This fonction write NDEF file from data given in the URI structure |
EnricoG | 0:3b093bd0819e | 181 | * @param pURI : pointer on URI structure to prepare NDEF |
EnricoG | 0:3b093bd0819e | 182 | * @retval SUCCESS : NDEF URI stored |
EnricoG | 0:3b093bd0819e | 183 | * @retval ERROR : Not able to store NDEF URI |
EnricoG | 0:3b093bd0819e | 184 | */ |
EnricoG | 0:3b093bd0819e | 185 | uint16_t TT4_WriteURI(sURI_Info *pURI) |
EnricoG | 0:3b093bd0819e | 186 | { |
EnricoG | 0:3b093bd0819e | 187 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 188 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 189 | |
EnricoG | 0:3b093bd0819e | 190 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 191 | |
EnricoG | 0:3b093bd0819e | 192 | if(OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 193 | { |
EnricoG | 0:3b093bd0819e | 194 | status = NDEF_WriteURI ( pURI ); |
EnricoG | 0:3b093bd0819e | 195 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 196 | } |
EnricoG | 0:3b093bd0819e | 197 | |
EnricoG | 0:3b093bd0819e | 198 | return status; |
EnricoG | 0:3b093bd0819e | 199 | } |
EnricoG | 0:3b093bd0819e | 200 | |
EnricoG | 0:3b093bd0819e | 201 | /** |
EnricoG | 0:3b093bd0819e | 202 | * @brief This fonction read NDEF file if NDEF is identified as SMS |
EnricoG | 0:3b093bd0819e | 203 | * @param pSMS : pointer on SMS structure to fill with read data |
EnricoG | 0:3b093bd0819e | 204 | * @retval SUCCESS : SMS structure has been updated |
EnricoG | 0:3b093bd0819e | 205 | * @retval ERROR : Not able to fill MS structure |
EnricoG | 0:3b093bd0819e | 206 | */ |
EnricoG | 0:3b093bd0819e | 207 | uint16_t TT4_ReadSMS(sSMSInfo *pSMS) |
EnricoG | 0:3b093bd0819e | 208 | { |
EnricoG | 0:3b093bd0819e | 209 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 210 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 211 | sRecordInfo *pRecordStruct; |
EnricoG | 0:3b093bd0819e | 212 | |
EnricoG | 0:3b093bd0819e | 213 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 214 | pRecordStruct = &RecordStruct; |
EnricoG | 0:3b093bd0819e | 215 | |
EnricoG | 0:3b093bd0819e | 216 | if(OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 217 | { |
EnricoG | 0:3b093bd0819e | 218 | if(NDEF_IdentifyNDEF( pRecordStruct, NDEF_Buffer) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 219 | { |
EnricoG | 0:3b093bd0819e | 220 | status = NDEF_ReadSMS(pRecordStruct, pSMS); |
EnricoG | 0:3b093bd0819e | 221 | } |
EnricoG | 0:3b093bd0819e | 222 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 223 | } |
EnricoG | 0:3b093bd0819e | 224 | |
EnricoG | 0:3b093bd0819e | 225 | return status; |
EnricoG | 0:3b093bd0819e | 226 | } |
EnricoG | 0:3b093bd0819e | 227 | |
EnricoG | 0:3b093bd0819e | 228 | /** |
EnricoG | 0:3b093bd0819e | 229 | * @brief This fonction write NDEF file from data given in the SMS structure |
EnricoG | 0:3b093bd0819e | 230 | * @param pSMS : pointer on SMS structure to prepare NDEF |
EnricoG | 0:3b093bd0819e | 231 | * @retval SUCCESS : NDEF SMS stored |
EnricoG | 0:3b093bd0819e | 232 | * @retval ERROR : Not able to store NDEF SMS |
EnricoG | 0:3b093bd0819e | 233 | */ |
EnricoG | 0:3b093bd0819e | 234 | uint16_t TT4_WriteSMS(sSMSInfo *pSMS) |
EnricoG | 0:3b093bd0819e | 235 | { |
EnricoG | 0:3b093bd0819e | 236 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 237 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 238 | |
EnricoG | 0:3b093bd0819e | 239 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 240 | |
EnricoG | 0:3b093bd0819e | 241 | if(OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 242 | { |
EnricoG | 0:3b093bd0819e | 243 | status = NDEF_WriteSMS ( pSMS ); |
EnricoG | 0:3b093bd0819e | 244 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 245 | } |
EnricoG | 0:3b093bd0819e | 246 | |
EnricoG | 0:3b093bd0819e | 247 | return status; |
EnricoG | 0:3b093bd0819e | 248 | } |
EnricoG | 0:3b093bd0819e | 249 | |
EnricoG | 0:3b093bd0819e | 250 | /** |
EnricoG | 0:3b093bd0819e | 251 | * @brief This fonction read NDEF file if NDEF is identified as eMail |
EnricoG | 0:3b093bd0819e | 252 | * @param pEmailStruct : pointer on eMail structure to fill with read data |
EnricoG | 0:3b093bd0819e | 253 | * @retval SUCCESS : eMail structure has been updated |
EnricoG | 0:3b093bd0819e | 254 | * @retval ERROR : Not able to fill eMail structure |
EnricoG | 0:3b093bd0819e | 255 | */ |
EnricoG | 0:3b093bd0819e | 256 | uint16_t TT4_ReadEmail (sEmailInfo *pEmailStruct) |
EnricoG | 0:3b093bd0819e | 257 | { |
EnricoG | 0:3b093bd0819e | 258 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 259 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 260 | sRecordInfo *pRecordStruct; |
EnricoG | 0:3b093bd0819e | 261 | |
EnricoG | 0:3b093bd0819e | 262 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 263 | pRecordStruct = &RecordStruct; |
EnricoG | 0:3b093bd0819e | 264 | |
EnricoG | 0:3b093bd0819e | 265 | |
EnricoG | 0:3b093bd0819e | 266 | if(OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 267 | { |
EnricoG | 0:3b093bd0819e | 268 | if(NDEF_IdentifyNDEF( pRecordStruct, NDEF_Buffer) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 269 | { |
EnricoG | 0:3b093bd0819e | 270 | status = NDEF_ReadEmail(pRecordStruct, pEmailStruct); |
EnricoG | 0:3b093bd0819e | 271 | } |
EnricoG | 0:3b093bd0819e | 272 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 273 | } |
EnricoG | 0:3b093bd0819e | 274 | |
EnricoG | 0:3b093bd0819e | 275 | return status; |
EnricoG | 0:3b093bd0819e | 276 | } |
EnricoG | 0:3b093bd0819e | 277 | |
EnricoG | 0:3b093bd0819e | 278 | /** |
EnricoG | 0:3b093bd0819e | 279 | * @brief This fonction write NDEF file from data given in the eMail structure |
EnricoG | 0:3b093bd0819e | 280 | * @param pEmailStruct : pointer on eMail structure to prepare NDEF |
EnricoG | 0:3b093bd0819e | 281 | * @retval SUCCESS : NDEF eMail stored |
EnricoG | 0:3b093bd0819e | 282 | * @retval ERROR : Not able to store NDEF eMail |
EnricoG | 0:3b093bd0819e | 283 | */ |
EnricoG | 0:3b093bd0819e | 284 | uint16_t TT4_WriteEmail(sEmailInfo *pEmailStruct) |
EnricoG | 0:3b093bd0819e | 285 | { |
EnricoG | 0:3b093bd0819e | 286 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 287 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 288 | |
EnricoG | 0:3b093bd0819e | 289 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 290 | |
EnricoG | 0:3b093bd0819e | 291 | if(OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 292 | { |
EnricoG | 0:3b093bd0819e | 293 | status = NDEF_WriteEmail ( pEmailStruct ); |
EnricoG | 0:3b093bd0819e | 294 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 295 | } |
EnricoG | 0:3b093bd0819e | 296 | |
EnricoG | 0:3b093bd0819e | 297 | return status; |
EnricoG | 0:3b093bd0819e | 298 | } |
EnricoG | 0:3b093bd0819e | 299 | |
EnricoG | 0:3b093bd0819e | 300 | /** |
EnricoG | 0:3b093bd0819e | 301 | * @brief This fonction read NDEF file if NDEF is identified as Vcard |
EnricoG | 0:3b093bd0819e | 302 | * @param pVcard : pointer on Vcard structure to fill with read data |
EnricoG | 0:3b093bd0819e | 303 | * @retval SUCCESS : Vcard structure has been updated |
EnricoG | 0:3b093bd0819e | 304 | * @retval ERROR : Not able to fill Vcard structure |
EnricoG | 0:3b093bd0819e | 305 | */ |
EnricoG | 0:3b093bd0819e | 306 | uint16_t TT4_ReadVcard(sVcardInfo *pVcard) |
EnricoG | 0:3b093bd0819e | 307 | { |
EnricoG | 0:3b093bd0819e | 308 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 309 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 310 | sRecordInfo *pRecordStruct; |
EnricoG | 0:3b093bd0819e | 311 | |
EnricoG | 0:3b093bd0819e | 312 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 313 | pRecordStruct = &RecordStruct; |
EnricoG | 0:3b093bd0819e | 314 | |
EnricoG | 0:3b093bd0819e | 315 | |
EnricoG | 0:3b093bd0819e | 316 | if(OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 317 | { |
EnricoG | 0:3b093bd0819e | 318 | if(NDEF_IdentifyNDEF( pRecordStruct, NDEF_Buffer) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 319 | { |
EnricoG | 0:3b093bd0819e | 320 | status = NDEF_ReadVcard(pRecordStruct, pVcard); |
EnricoG | 0:3b093bd0819e | 321 | } |
EnricoG | 0:3b093bd0819e | 322 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 323 | } |
EnricoG | 0:3b093bd0819e | 324 | |
EnricoG | 0:3b093bd0819e | 325 | return status; |
EnricoG | 0:3b093bd0819e | 326 | } |
EnricoG | 0:3b093bd0819e | 327 | |
EnricoG | 0:3b093bd0819e | 328 | /** |
EnricoG | 0:3b093bd0819e | 329 | * @brief This fonction write NDEF file from data given in the Vcard structure |
EnricoG | 0:3b093bd0819e | 330 | * @param pVcard : pointer on Vcard structure to prepare NDEF |
EnricoG | 0:3b093bd0819e | 331 | * @retval SUCCESS : NDEF Vcard stored |
EnricoG | 0:3b093bd0819e | 332 | * @retval ERROR : Not able to store NDEF Vcard |
EnricoG | 0:3b093bd0819e | 333 | */ |
EnricoG | 0:3b093bd0819e | 334 | uint16_t TT4_WriteVcard(sVcardInfo *pVcard) |
EnricoG | 0:3b093bd0819e | 335 | { |
EnricoG | 0:3b093bd0819e | 336 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 337 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 338 | |
EnricoG | 0:3b093bd0819e | 339 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 340 | |
EnricoG | 0:3b093bd0819e | 341 | if(OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 342 | { |
EnricoG | 0:3b093bd0819e | 343 | status = NDEF_WriteVcard ( pVcard ); |
EnricoG | 0:3b093bd0819e | 344 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 345 | } |
EnricoG | 0:3b093bd0819e | 346 | |
EnricoG | 0:3b093bd0819e | 347 | return status; |
EnricoG | 0:3b093bd0819e | 348 | } |
EnricoG | 0:3b093bd0819e | 349 | |
EnricoG | 0:3b093bd0819e | 350 | /** |
EnricoG | 0:3b093bd0819e | 351 | * @brief This fonction read NDEF file if NDEF is identified as geolocation information |
EnricoG | 0:3b093bd0819e | 352 | * @param pGeo : pointer on geo structure to fill with read data |
EnricoG | 0:3b093bd0819e | 353 | * @retval SUCCESS : geo structure has been updated |
EnricoG | 0:3b093bd0819e | 354 | * @retval ERROR : Not able to fill geo structure |
EnricoG | 0:3b093bd0819e | 355 | */ |
EnricoG | 0:3b093bd0819e | 356 | uint16_t TT4_ReadGeo(sGeoInfo *pGeo) |
EnricoG | 0:3b093bd0819e | 357 | { |
EnricoG | 0:3b093bd0819e | 358 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 359 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 360 | sRecordInfo *pRecordStruct; |
EnricoG | 0:3b093bd0819e | 361 | |
EnricoG | 0:3b093bd0819e | 362 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 363 | pRecordStruct = &RecordStruct; |
EnricoG | 0:3b093bd0819e | 364 | |
EnricoG | 0:3b093bd0819e | 365 | if(OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 366 | { |
EnricoG | 0:3b093bd0819e | 367 | if(NDEF_IdentifyNDEF( pRecordStruct, NDEF_Buffer) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 368 | { |
EnricoG | 0:3b093bd0819e | 369 | status = NDEF_ReadGeo(pRecordStruct, pGeo); |
EnricoG | 0:3b093bd0819e | 370 | } |
EnricoG | 0:3b093bd0819e | 371 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 372 | } |
EnricoG | 0:3b093bd0819e | 373 | |
EnricoG | 0:3b093bd0819e | 374 | return status; |
EnricoG | 0:3b093bd0819e | 375 | } |
EnricoG | 0:3b093bd0819e | 376 | |
EnricoG | 0:3b093bd0819e | 377 | /** |
EnricoG | 0:3b093bd0819e | 378 | * @brief This fonction write NDEF file from data given in the geo structure |
EnricoG | 0:3b093bd0819e | 379 | * @param pGeo : pointer on geo structure to prepare NDEF |
EnricoG | 0:3b093bd0819e | 380 | * @retval SUCCESS : NDEF geo stored |
EnricoG | 0:3b093bd0819e | 381 | * @retval ERROR : Not able to store NDEF geo |
EnricoG | 0:3b093bd0819e | 382 | */ |
EnricoG | 0:3b093bd0819e | 383 | uint16_t TT4_WriteGeo(sGeoInfo *pGeo) |
EnricoG | 0:3b093bd0819e | 384 | { |
EnricoG | 0:3b093bd0819e | 385 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 386 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 387 | |
EnricoG | 0:3b093bd0819e | 388 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 389 | |
EnricoG | 0:3b093bd0819e | 390 | if(OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 391 | { |
EnricoG | 0:3b093bd0819e | 392 | status = NDEF_WriteGeo ( pGeo ); |
EnricoG | 0:3b093bd0819e | 393 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 394 | } |
EnricoG | 0:3b093bd0819e | 395 | |
EnricoG | 0:3b093bd0819e | 396 | return status; |
EnricoG | 0:3b093bd0819e | 397 | } |
EnricoG | 0:3b093bd0819e | 398 | |
EnricoG | 0:3b093bd0819e | 399 | /** |
EnricoG | 0:3b093bd0819e | 400 | * @brief This fonction read NDEF file if NDEF is identified as expected private application |
EnricoG | 0:3b093bd0819e | 401 | * @param pMyAppStruct : pointer on structure to fill with read data |
EnricoG | 0:3b093bd0819e | 402 | * @retval SUCCESS : structure has been updated |
EnricoG | 0:3b093bd0819e | 403 | * @retval ERROR : Not able to fill structure |
EnricoG | 0:3b093bd0819e | 404 | */ |
EnricoG | 0:3b093bd0819e | 405 | uint16_t TT4_ReadMyApp(sMyAppInfo *pMyAppStruct) |
EnricoG | 0:3b093bd0819e | 406 | { |
EnricoG | 0:3b093bd0819e | 407 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 408 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 409 | sRecordInfo *pRecordStruct; |
EnricoG | 0:3b093bd0819e | 410 | |
EnricoG | 0:3b093bd0819e | 411 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 412 | pRecordStruct = &RecordStruct; |
EnricoG | 0:3b093bd0819e | 413 | |
EnricoG | 0:3b093bd0819e | 414 | |
EnricoG | 0:3b093bd0819e | 415 | if(OpenNDEFSession(pCCFile->FileID, TAKE_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 416 | { |
EnricoG | 0:3b093bd0819e | 417 | if(NDEF_IdentifyNDEF( pRecordStruct, NDEF_Buffer) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 418 | { |
EnricoG | 0:3b093bd0819e | 419 | status = NDEF_ReadMyApp(pRecordStruct, pMyAppStruct); |
EnricoG | 0:3b093bd0819e | 420 | } |
EnricoG | 0:3b093bd0819e | 421 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 422 | } |
EnricoG | 0:3b093bd0819e | 423 | |
EnricoG | 0:3b093bd0819e | 424 | return status; |
EnricoG | 0:3b093bd0819e | 425 | } |
EnricoG | 0:3b093bd0819e | 426 | |
EnricoG | 0:3b093bd0819e | 427 | /** |
EnricoG | 0:3b093bd0819e | 428 | * @brief This fonction write NDEF file from data given in the structure |
EnricoG | 0:3b093bd0819e | 429 | * @param pMyAppStruct : pointer on structure to prepare NDEF |
EnricoG | 0:3b093bd0819e | 430 | * @retval SUCCESS : NDEF stored |
EnricoG | 0:3b093bd0819e | 431 | * @retval ERROR : Not able to store NDEF |
EnricoG | 0:3b093bd0819e | 432 | */ |
EnricoG | 0:3b093bd0819e | 433 | uint16_t TT4_WriteMyApp(sMyAppInfo *pMyAppStruct) |
EnricoG | 0:3b093bd0819e | 434 | { |
EnricoG | 0:3b093bd0819e | 435 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 436 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 437 | |
EnricoG | 0:3b093bd0819e | 438 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 439 | |
EnricoG | 0:3b093bd0819e | 440 | if(OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 441 | { |
EnricoG | 0:3b093bd0819e | 442 | status = NDEF_WriteMyApp ( pMyAppStruct ); |
EnricoG | 0:3b093bd0819e | 443 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 444 | } |
EnricoG | 0:3b093bd0819e | 445 | |
EnricoG | 0:3b093bd0819e | 446 | return status; |
EnricoG | 0:3b093bd0819e | 447 | } |
EnricoG | 0:3b093bd0819e | 448 | |
EnricoG | 0:3b093bd0819e | 449 | /** |
EnricoG | 0:3b093bd0819e | 450 | * @brief This fonction add AAR (Android Application Record) in the tag |
EnricoG | 0:3b093bd0819e | 451 | * @param pAAR : pointer on structure that contain AAR information |
EnricoG | 0:3b093bd0819e | 452 | * @retval SUCCESS : AAR added |
EnricoG | 0:3b093bd0819e | 453 | * @retval ERROR : Not able to add AAR |
EnricoG | 0:3b093bd0819e | 454 | */ |
EnricoG | 0:3b093bd0819e | 455 | uint16_t TT4_AddAAR(sAARInfo *pAAR) |
EnricoG | 0:3b093bd0819e | 456 | { |
EnricoG | 0:3b093bd0819e | 457 | uint16_t status = ERROR; |
EnricoG | 0:3b093bd0819e | 458 | sCCFileInfo *pCCFile; |
EnricoG | 0:3b093bd0819e | 459 | |
EnricoG | 0:3b093bd0819e | 460 | pCCFile = &CCFileStruct; |
EnricoG | 0:3b093bd0819e | 461 | |
EnricoG | 0:3b093bd0819e | 462 | if(OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION) == SUCCESS) |
EnricoG | 0:3b093bd0819e | 463 | { |
EnricoG | 0:3b093bd0819e | 464 | status = NDEF_AddAAR ( pAAR ); |
EnricoG | 0:3b093bd0819e | 465 | CloseNDEFSession(pCCFile->FileID); |
EnricoG | 0:3b093bd0819e | 466 | } |
EnricoG | 0:3b093bd0819e | 467 | |
EnricoG | 0:3b093bd0819e | 468 | return status; |
EnricoG | 0:3b093bd0819e | 469 | } |
EnricoG | 0:3b093bd0819e | 470 | |
EnricoG | 0:3b093bd0819e | 471 | |
EnricoG | 0:3b093bd0819e | 472 | /** |
EnricoG | 0:3b093bd0819e | 473 | * @} |
EnricoG | 0:3b093bd0819e | 474 | */ |
EnricoG | 0:3b093bd0819e | 475 | |
EnricoG | 0:3b093bd0819e | 476 | /** |
EnricoG | 0:3b093bd0819e | 477 | * @} |
EnricoG | 0:3b093bd0819e | 478 | */ |
EnricoG | 0:3b093bd0819e | 479 | |
EnricoG | 0:3b093bd0819e | 480 | /** |
EnricoG | 0:3b093bd0819e | 481 | * @} |
EnricoG | 0:3b093bd0819e | 482 | */ |
EnricoG | 0:3b093bd0819e | 483 | |
EnricoG | 0:3b093bd0819e | 484 | /******************* (C) COPYRIGHT 2013 STMicroelectronics *****END OF FILE****/ |
EnricoG | 0:3b093bd0819e | 485 |