Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: mbed-os-nfc04a1 Wiagro-Lanza34-XDot
lib_NDEF_URI.cpp
00001 /** 00002 ****************************************************************************** 00003 * @file lib_NDEF_URI.c 00004 * @author MMY Application Team 00005 * @version $Revision: 2702 $ 00006 * @date $Date: 2016-07-13 18:45:05 +0200 (Wed, 13 Jul 2016) $ 00007 * @brief This file help to manage NDEF file that represent URI. 00008 ****************************************************************************** 00009 * @attention 00010 * 00011 * <h2><center>© COPYRIGHT 2015 STMicroelectronics</center></h2> 00012 * 00013 * Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License"); 00014 * You may not use this file except in compliance with the License. 00015 * You may obtain a copy of the License at: 00016 * 00017 * http://www.st.com/myliberty 00018 * 00019 * Unless required by applicable law or agreed to in writing, software 00020 * distributed under the License is distributed on an "AS IS" BASIS, 00021 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, 00022 * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, 00023 * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 00024 * See the License for the specific language governing permissions and 00025 * limitations under the License. 00026 * 00027 ****************************************************************************** 00028 */ 00029 /* Includes ------------------------------------------------------------------*/ 00030 #include "lib_NDEF_URI.h" 00031 00032 /** @addtogroup NFC_libraries 00033 * @{ 00034 * @brief <b>This is the library used to manage the content of the TAG (data) 00035 * But also the specific feature of the tag, for instance 00036 * password, gpo... </b> 00037 */ 00038 00039 00040 /** @addtogroup libNFC_FORUM 00041 * @{ 00042 * @brief This part of the library manage data which follow NFC forum organisation. 00043 */ 00044 00045 /** 00046 * @brief This buffer contains the data send/received by TAG 00047 */ 00048 extern uint8_t NDEF_Buffer []; 00049 00050 /** @defgroup libURI_Private_Functions 00051 * @{ 00052 */ 00053 00054 static void NDEF_Parse_WellKnowType( sRecordInfo_t *pRecordStruct, sURI_Info* pURI ); 00055 00056 /** 00057 * @brief This function read the URI information and store data in a structure. 00058 * @param pRecordStruct : Pointer on the record structure. 00059 * @param pURI : pointer on the structure to fill. 00060 */ 00061 static void NDEF_Parse_WellKnowType( sRecordInfo_t *pRecordStruct, sURI_Info* pURI ) 00062 { 00063 uint32_t PayloadSize; 00064 uint8_t Offset; 00065 uint8_t* pPayload; 00066 00067 pPayload = (uint8_t*)(pRecordStruct->PayloadBufferAdd); 00068 00069 switch( *pPayload ) 00070 { 00071 case URI_ID_0x01: 00072 memcpy( pURI->protocol, URI_ID_0x01_STRING, strlen(URI_ID_0x01_STRING) ); 00073 Offset = strlen( URI_ID_0x01_STRING ); 00074 break; 00075 00076 case URI_ID_0x02: 00077 memcpy( pURI->protocol, URI_ID_0x02_STRING, strlen(URI_ID_0x02_STRING) ); 00078 Offset = strlen( URI_ID_0x02_STRING ); 00079 break; 00080 case URI_ID_0x03: 00081 memcpy( pURI->protocol, URI_ID_0x03_STRING, strlen(URI_ID_0x03_STRING) ); 00082 Offset = strlen( URI_ID_0x03_STRING ); 00083 break; 00084 00085 case URI_ID_0x04: 00086 memcpy( pURI->protocol, URI_ID_0x04_STRING, strlen(URI_ID_0x04_STRING) ); 00087 Offset = strlen( URI_ID_0x04_STRING ); 00088 break; 00089 00090 case URI_ID_0x05: 00091 memcpy( pURI->protocol, URI_ID_0x05_STRING, strlen(URI_ID_0x05_STRING) ); 00092 Offset = strlen( URI_ID_0x05_STRING ); 00093 break; 00094 00095 case URI_ID_0x06: 00096 memcpy( pURI->protocol, URI_ID_0x06_STRING, strlen(URI_ID_0x06_STRING) ); 00097 Offset = strlen( URI_ID_0x06_STRING ); 00098 break; 00099 00100 case URI_ID_0x07: 00101 memcpy( pURI->protocol, URI_ID_0x07_STRING, strlen(URI_ID_0x07_STRING) ); 00102 Offset = strlen( URI_ID_0x07_STRING ); 00103 break; 00104 00105 case URI_ID_0x08: 00106 memcpy( pURI->protocol, URI_ID_0x08_STRING, strlen(URI_ID_0x08_STRING) ); 00107 Offset = strlen( URI_ID_0x08_STRING ); 00108 break; 00109 00110 case URI_ID_0x09: 00111 memcpy( pURI->protocol, URI_ID_0x09_STRING, strlen(URI_ID_0x09_STRING) ); 00112 Offset = strlen( URI_ID_0x09_STRING ); 00113 break; 00114 00115 case URI_ID_0x0A: 00116 memcpy( pURI->protocol, URI_ID_0x0A_STRING, strlen(URI_ID_0x0A_STRING) ); 00117 Offset = strlen( URI_ID_0x0A_STRING ); 00118 break; 00119 00120 case URI_ID_0x0B: 00121 memcpy( pURI->protocol, URI_ID_0x0B_STRING, strlen(URI_ID_0x0B_STRING) ); 00122 Offset = strlen( URI_ID_0x0B_STRING ); 00123 break; 00124 00125 case URI_ID_0x0C: 00126 memcpy( pURI->protocol, URI_ID_0x0C_STRING, strlen(URI_ID_0x0C_STRING) ); 00127 Offset = strlen( URI_ID_0x0C_STRING ); 00128 break; 00129 00130 case URI_ID_0x0D: 00131 memcpy( pURI->protocol, URI_ID_0x0D_STRING, strlen(URI_ID_0x0D_STRING) ); 00132 Offset = strlen( URI_ID_0x0D_STRING ); 00133 break; 00134 00135 case URI_ID_0x0E: 00136 memcpy( pURI->protocol, URI_ID_0x0E_STRING, strlen(URI_ID_0x0E_STRING) ); 00137 Offset = strlen( URI_ID_0x0E_STRING ); 00138 break; 00139 00140 case URI_ID_0x0F: 00141 memcpy( pURI->protocol, URI_ID_0x0F_STRING, strlen(URI_ID_0x0F_STRING) ); 00142 Offset = strlen( URI_ID_0x0F_STRING ); 00143 break; 00144 00145 case URI_ID_0x10: 00146 memcpy( pURI->protocol, URI_ID_0x10_STRING, strlen(URI_ID_0x10_STRING) ); 00147 Offset = strlen( URI_ID_0x10_STRING ); 00148 break; 00149 00150 case URI_ID_0x11: 00151 memcpy( pURI->protocol, URI_ID_0x11_STRING, strlen(URI_ID_0x11_STRING) ); 00152 Offset = strlen( URI_ID_0x11_STRING ); 00153 break; 00154 00155 case URI_ID_0x12: 00156 memcpy( pURI->protocol, URI_ID_0x12_STRING, strlen(URI_ID_0x12_STRING) ); 00157 Offset = strlen( URI_ID_0x12_STRING ); 00158 break; 00159 00160 case URI_ID_0x13: 00161 memcpy( pURI->protocol, URI_ID_0x13_STRING, strlen(URI_ID_0x13_STRING) ); 00162 Offset = strlen( URI_ID_0x13_STRING ); 00163 break; 00164 00165 case URI_ID_0x14: 00166 memcpy( pURI->protocol, URI_ID_0x14_STRING, strlen(URI_ID_0x14_STRING) ); 00167 Offset = strlen( URI_ID_0x14_STRING ); 00168 break; 00169 00170 case URI_ID_0x15: 00171 memcpy( pURI->protocol, URI_ID_0x15_STRING, strlen(URI_ID_0x15_STRING) ); 00172 Offset = strlen( URI_ID_0x15_STRING ); 00173 break; 00174 00175 case URI_ID_0x16: 00176 memcpy( pURI->protocol, URI_ID_0x16_STRING, strlen(URI_ID_0x16_STRING) ); 00177 Offset = strlen( URI_ID_0x16_STRING ); 00178 break; 00179 00180 case URI_ID_0x17: 00181 memcpy( pURI->protocol, URI_ID_0x17_STRING, strlen(URI_ID_0x17_STRING) ); 00182 Offset = strlen( URI_ID_0x17_STRING ); 00183 break; 00184 00185 case URI_ID_0x18: 00186 memcpy( pURI->protocol, URI_ID_0x18_STRING, strlen(URI_ID_0x18_STRING) ); 00187 Offset = strlen( URI_ID_0x18_STRING ); 00188 break; 00189 00190 case URI_ID_0x19: 00191 memcpy( pURI->protocol, URI_ID_0x19_STRING, strlen(URI_ID_0x19_STRING) ); 00192 Offset = strlen( URI_ID_0x19_STRING ); 00193 break; 00194 00195 case URI_ID_0x1A: 00196 memcpy( pURI->protocol, URI_ID_0x1A_STRING, strlen(URI_ID_0x1A_STRING) ); 00197 Offset = strlen( URI_ID_0x1A_STRING ); 00198 break; 00199 00200 case URI_ID_0x1B: 00201 memcpy( pURI->protocol, URI_ID_0x1B_STRING, strlen(URI_ID_0x1B_STRING) ); 00202 Offset = strlen( URI_ID_0x1B_STRING ); 00203 break; 00204 00205 case URI_ID_0x1C: 00206 memcpy( pURI->protocol, URI_ID_0x1C_STRING, strlen(URI_ID_0x1C_STRING) ); 00207 Offset = strlen( URI_ID_0x1C_STRING ); 00208 break; 00209 00210 case URI_ID_0x1D: 00211 memcpy( pURI->protocol, URI_ID_0x1D_STRING, strlen(URI_ID_0x1D_STRING) ); 00212 Offset = strlen( URI_ID_0x1D_STRING ); 00213 break; 00214 00215 case URI_ID_0x1E: 00216 memcpy( pURI->protocol, URI_ID_0x1E_STRING, strlen(URI_ID_0x1E_STRING) ); 00217 Offset = strlen( URI_ID_0x1E_STRING ); 00218 break; 00219 00220 case URI_ID_0x1F: 00221 memcpy( pURI->protocol, URI_ID_0x1F_STRING, strlen(URI_ID_0x1F_STRING) ); 00222 Offset = strlen( URI_ID_0x1F_STRING ); 00223 break; 00224 00225 case URI_ID_0x20: 00226 memcpy( pURI->protocol, URI_ID_0x20_STRING, strlen(URI_ID_0x20_STRING) ); 00227 Offset = strlen( URI_ID_0x20_STRING ); 00228 break; 00229 00230 case URI_ID_0x21: 00231 memcpy( pURI->protocol, URI_ID_0x21_STRING, strlen(URI_ID_0x21_STRING) ); 00232 Offset = strlen( URI_ID_0x21_STRING ); 00233 break; 00234 00235 case URI_ID_0x22: 00236 memcpy( pURI->protocol, URI_ID_0x22_STRING, strlen(URI_ID_0x22_STRING) ); 00237 Offset = strlen( URI_ID_0x22_STRING ); 00238 break; 00239 00240 case URI_ID_0x23: 00241 memcpy( pURI->protocol, URI_ID_0x23_STRING, strlen(URI_ID_0x23_STRING) ); 00242 Offset = strlen( URI_ID_0x23_STRING ); 00243 break; 00244 default: 00245 Offset = 0; 00246 /* Should not happened */ 00247 break; 00248 } 00249 /* add end of string character */ 00250 pURI->protocol[Offset] = '\0'; 00251 00252 pPayload++; /* go after well know byte */ 00253 00254 PayloadSize = pRecordStruct->PayloadLength; 00255 00256 PayloadSize = PayloadSize - 1; /* remove well know byte */ 00257 00258 memcpy( pURI->URI_Message, pPayload, PayloadSize ); 00259 /* add end of string character */ 00260 pURI->URI_Message[PayloadSize] = '\0'; 00261 00262 } 00263 00264 /** 00265 * @} 00266 */ 00267 00268 /** @defgroup libURI_Public_Functions 00269 * @{ 00270 * @brief This file is used to manage URI (stored or loaded in tag) 00271 */ 00272 00273 /** 00274 * @brief This function read NDEF and retrieve URI information if any. 00275 * @param pRecordStruct : Pointer on the record structure. 00276 * @param pURI : pointer on the structure to fill. 00277 * @retval NDEF_OK : URI information from NDEF have been retrieved. 00278 * @retval NDEF_ERROR : Not able to retrieve URI information. 00279 */ 00280 uint16_t NDEF_ReadURI( sRecordInfo_t *pRecordStruct, sURI_Info *pURI ) 00281 { 00282 uint16_t status = NDEF_ERROR; 00283 sRecordInfo_t *pSPRecordStruct; 00284 uint32_t PayloadSize, RecordPosition; 00285 uint8_t* pData; 00286 00287 if( pRecordStruct->NDEF_Type == WELL_KNOWN_ABRIDGED_URI_TYPE ) 00288 { 00289 NDEF_Parse_WellKnowType( pRecordStruct, pURI ); 00290 status = NDEF_OK; 00291 } 00292 else if( pRecordStruct->NDEF_Type == SMARTPOSTER_TYPE ) 00293 { 00294 for( RecordPosition = 0; RecordPosition < pRecordStruct->NbOfRecordInSPPayload; RecordPosition++ ) 00295 { 00296 pSPRecordStruct = pRecordStruct->SPRecordStructAdd[RecordPosition]; 00297 if( pSPRecordStruct->NDEF_Type == WELL_KNOWN_ABRIDGED_URI_TYPE ) 00298 { 00299 NDEF_Parse_WellKnowType( pSPRecordStruct, pURI ); 00300 status = NDEF_OK; 00301 } 00302 if( pSPRecordStruct->NDEF_Type == TEXT_TYPE ) 00303 { 00304 PayloadSize = pSPRecordStruct->PayloadLength; 00305 00306 /* The instruction content the UTF-8 language code that is not used here */ 00307 pData = (uint8_t*)pSPRecordStruct->PayloadBufferAdd; 00308 PayloadSize -= *pData + 1; /* remove not usefull data */ 00309 pData += *pData + 1; 00310 00311 memcpy( pURI->Information, pData, PayloadSize ); 00312 } 00313 } 00314 } 00315 else 00316 { 00317 status = NDEF_ERROR; 00318 } 00319 00320 return status; 00321 } 00322 00323 /** 00324 * @brief This function prepare the NDEF message with the URI data given in the structure. 00325 * @param pURI : pointer on structure that contain the URI information. 00326 * @param pNDEFMessage : pointer on the NDEF message. 00327 * @param size : to store the size of the NDEF message generated. 00328 */ 00329 void NDEF_PrepareURIMessage( sURI_Info *pURI, uint8_t *pNDEFMessage, uint16_t *size ) 00330 { 00331 uint32_t uriSize, totalSize, Offset = 0; 00332 uint32_t infoSize = 0; 00333 char type; 00334 00335 /* An URI can be included in a smart poster to add text to give instruction to user for instance */ 00336 00337 /* URI (smart poster) Record Header */ 00338 /************************************/ 00339 /* 7 | 6 | 5 | 4 | 3 | 2 1 0 */ 00340 /*----------------------------------*/ 00341 /* MB ME CF SR IL TNF */ /* <---- CF=0, IL=0 and SR=1 TNF=1 NFC Forum Well-known type*/ 00342 /*----------------------------------*/ 00343 /* TYPE LENGTH */ 00344 /*----------------------------------*/ 00345 /* PAYLOAD LENGTH 3 */ /* <---- Used only if SR=0 */ 00346 /*----------------------------------*/ 00347 /* PAYLOAD LENGTH 2 */ /* <---- Used only if SR=0 */ 00348 /*----------------------------------*/ 00349 /* PAYLOAD LENGTH 1 */ /* <---- Used only if SR=0 */ 00350 /*----------------------------------*/ 00351 /* PAYLOAD LENGTH 0 */ 00352 /*----------------------------------*/ 00353 /* ID LENGTH */ /* <---- Not Used */ 00354 /*----------------------------------*/ 00355 /* TYPE */ 00356 /*----------------------------------*/ 00357 /* ID */ /* <---- Not Used */ 00358 /************************************/ 00359 00360 /* We need to know the URI type in order to define if an abreviation is available */ 00361 type = getUriType( pURI->protocol ); 00362 00363 /* URI : 1+URI for abreviate protocol*/ 00364 if( type != URI_ID_0x00 ) 00365 uriSize = 1 + strlen(pURI->URI_Message); 00366 else /*: 1+protocol+URI else*/ 00367 uriSize = 1 + strlen(pURI->protocol) + strlen(pURI->URI_Message); 00368 00369 /* Check if a Smart poster is needed */ 00370 if( pURI->Information[0] != '\0' ) 00371 { 00372 /* Info : 1+2+info */ 00373 infoSize = 1 + ISO_ENGLISH_CODE_STRING_LENGTH + strlen(pURI->Information); 00374 /* Total */ 00375 totalSize = 4 + uriSize + 4 + infoSize; 00376 if( uriSize > 255 ) totalSize += 3; /* Normal URI size */ 00377 if( infoSize > 255 ) totalSize += 3; /* Normal Info size */ 00378 00379 /* SmartPoster header */ 00380 if( totalSize > 255 ) 00381 { 00382 pNDEFMessage[Offset++] = 0xC1; 00383 pNDEFMessage[Offset++] = SMART_POSTER_TYPE_STRING_LENGTH; 00384 pNDEFMessage[Offset++] = (totalSize & 0xFF000000) >> 24; 00385 pNDEFMessage[Offset++] = (totalSize & 0x00FF0000) >> 16; 00386 pNDEFMessage[Offset++] = (totalSize & 0x0000FF00) >> 8; 00387 pNDEFMessage[Offset++] = totalSize & 0x000000FF; 00388 } 00389 else 00390 { 00391 pNDEFMessage[Offset++] = 0xD1; 00392 pNDEFMessage[Offset++] = SMART_POSTER_TYPE_STRING_LENGTH; 00393 pNDEFMessage[Offset++] = (uint8_t)totalSize; 00394 } 00395 memcpy( &pNDEFMessage[Offset], SMART_POSTER_TYPE_STRING, SMART_POSTER_TYPE_STRING_LENGTH ); 00396 Offset += SMART_POSTER_TYPE_STRING_LENGTH; 00397 } 00398 00399 /* URI header */ 00400 pNDEFMessage[Offset] = 0x81; 00401 if( uriSize < 256 ) pNDEFMessage[Offset] |= 0x10; // Set the SR bit 00402 if( pURI->Information[0] == '\0' ) pNDEFMessage[Offset] |= 0x40; // Set the ME bit 00403 Offset++; 00404 00405 pNDEFMessage[Offset++] = URI_TYPE_STRING_LENGTH; 00406 if( uriSize > 255 ) 00407 { 00408 pNDEFMessage[Offset++] = (uriSize & 0xFF000000) >> 24; 00409 pNDEFMessage[Offset++] = (uriSize & 0x00FF0000) >> 16; 00410 pNDEFMessage[Offset++] = (uriSize & 0x0000FF00) >> 8; 00411 pNDEFMessage[Offset++] = uriSize & 0x000000FF; 00412 } 00413 else 00414 { 00415 pNDEFMessage[Offset++] = (uint8_t)uriSize; 00416 } 00417 memcpy( &pNDEFMessage[Offset], URI_TYPE_STRING, URI_TYPE_STRING_LENGTH ); 00418 Offset += URI_TYPE_STRING_LENGTH; 00419 00420 pNDEFMessage[Offset++] = type; 00421 if( type == URI_ID_0x00 ) // No abreviation 00422 { 00423 memcpy( &pNDEFMessage[Offset], pURI->protocol, strlen(pURI->protocol) ); 00424 Offset += strlen(pURI->protocol); 00425 } 00426 00427 memcpy( &pNDEFMessage[Offset], pURI->URI_Message, strlen(pURI->URI_Message) ); 00428 Offset += strlen(pURI->URI_Message); 00429 00430 /* Information header */ 00431 if( pURI->Information[0] != '\0' ) 00432 { 00433 if( infoSize > 255 ) 00434 { 00435 pNDEFMessage[Offset++] = 0x41; 00436 pNDEFMessage[Offset++] = TEXT_TYPE_STRING_LENGTH; 00437 pNDEFMessage[Offset++] = (infoSize & 0xFF000000) >> 24; 00438 pNDEFMessage[Offset++] = (infoSize & 0x00FF0000) >> 16; 00439 pNDEFMessage[Offset++] = (infoSize & 0x0000FF00) >> 8; 00440 pNDEFMessage[Offset++] = infoSize & 0x000000FF; 00441 } 00442 else 00443 { 00444 pNDEFMessage[Offset++] = 0x51; 00445 pNDEFMessage[Offset++] = TEXT_TYPE_STRING_LENGTH; 00446 pNDEFMessage[Offset++] = (uint8_t)infoSize; 00447 } 00448 00449 memcpy( &pNDEFMessage[Offset], TEXT_TYPE_STRING, TEXT_TYPE_STRING_LENGTH ); 00450 Offset+=TEXT_TYPE_STRING_LENGTH; 00451 pNDEFMessage[Offset++] = ISO_ENGLISH_CODE_STRING_LENGTH; /* UTF-8 with x byte language code */ 00452 memcpy( &pNDEFMessage[Offset], ISO_ENGLISH_CODE_STRING, ISO_ENGLISH_CODE_STRING_LENGTH ); 00453 Offset += ISO_ENGLISH_CODE_STRING_LENGTH; 00454 00455 /* Information payload */ 00456 memcpy( &pNDEFMessage[Offset], pURI->Information, strlen(pURI->Information) ); 00457 Offset += strlen(pURI->Information); 00458 } 00459 00460 *size = Offset; 00461 00462 } 00463 /** 00464 * @brief This function write the NDEF file with the URI data given in the structure. 00465 * @param pURI : pointer on structure that contain the URI information. 00466 * @retval NDEF_OK : NDEF file data written in the tag. 00467 * @retval NDEF_ERROR : not able to store NDEF in tag. 00468 * @retval NDEF_ERROR_MEMORY_INTERNAL : Cannot write to tag. 00469 * @retval NDEF_ERROR_NOT_FORMATED : CCFile data not supported or not present. 00470 * @retval NDEF_ERROR_MEMORY_TAG : Size not compatible with memory. 00471 * @retval NDEF_ERROR_LOCKED : Tag locked, cannot be write. 00472 */ 00473 uint16_t NDEF_WriteURI( sURI_Info *pURI, I2C* mi2cChannel ) 00474 { 00475 uint16_t status = NDEF_ERROR, Offset = 0; 00476 00477 NDEF_PrepareURIMessage( pURI, NDEF_Buffer, &Offset ); 00478 00479 00480 status = NfcTag_WriteNDEF( Offset , NDEF_Buffer, mi2cChannel ); 00481 00482 return status; 00483 } 00484 00485 char getUriType( char *protocol ) 00486 { 00487 if( !memcmp( protocol, URI_ID_0x01_STRING, strlen(URI_ID_0x01_STRING) ) ) return URI_ID_0x01; 00488 else if( !memcmp( protocol, URI_ID_0x02_STRING, strlen(URI_ID_0x02_STRING) ) ) return URI_ID_0x02; 00489 else if( !memcmp( protocol, URI_ID_0x03_STRING, strlen(URI_ID_0x03_STRING) ) ) return URI_ID_0x03; 00490 else if( !memcmp( protocol, URI_ID_0x04_STRING, strlen(URI_ID_0x04_STRING) ) ) return URI_ID_0x04; 00491 else if( !memcmp( protocol, URI_ID_0x05_STRING, strlen(URI_ID_0x05_STRING) ) ) return URI_ID_0x05; 00492 else if( !memcmp( protocol, URI_ID_0x06_STRING, strlen(URI_ID_0x06_STRING) ) ) return URI_ID_0x06; 00493 else if( !memcmp( protocol, URI_ID_0x07_STRING, strlen(URI_ID_0x07_STRING) ) ) return URI_ID_0x07; 00494 else if( !memcmp( protocol, URI_ID_0x08_STRING, strlen(URI_ID_0x08_STRING) ) ) return URI_ID_0x08; 00495 else if( !memcmp( protocol, URI_ID_0x09_STRING, strlen(URI_ID_0x09_STRING) ) ) return URI_ID_0x09; 00496 else if( !memcmp( protocol, URI_ID_0x0A_STRING, strlen(URI_ID_0x0A_STRING) ) ) return URI_ID_0x0A; 00497 else if( !memcmp( protocol, URI_ID_0x0B_STRING, strlen(URI_ID_0x0B_STRING) ) ) return URI_ID_0x0B; 00498 else if( !memcmp( protocol, URI_ID_0x0C_STRING, strlen(URI_ID_0x0C_STRING) ) ) return URI_ID_0x0C; 00499 else if( !memcmp( protocol, URI_ID_0x0D_STRING, strlen(URI_ID_0x0D_STRING) ) ) return URI_ID_0x0D; 00500 else if( !memcmp( protocol, URI_ID_0x0E_STRING, strlen(URI_ID_0x0E_STRING) ) ) return URI_ID_0x0E; 00501 else if( !memcmp( protocol, URI_ID_0x0F_STRING, strlen(URI_ID_0x0F_STRING) ) ) return URI_ID_0x0F; 00502 else if( !memcmp( protocol, URI_ID_0x10_STRING, strlen(URI_ID_0x10_STRING) ) ) return URI_ID_0x10; 00503 else if( !memcmp( protocol, URI_ID_0x11_STRING, strlen(URI_ID_0x11_STRING) ) ) return URI_ID_0x11; 00504 else if( !memcmp( protocol, URI_ID_0x12_STRING, strlen(URI_ID_0x12_STRING) ) ) return URI_ID_0x12; 00505 else if( !memcmp( protocol, URI_ID_0x13_STRING, strlen(URI_ID_0x13_STRING) ) ) return URI_ID_0x13; 00506 else if( !memcmp( protocol, URI_ID_0x14_STRING, strlen(URI_ID_0x14_STRING) ) ) return URI_ID_0x14; 00507 else if( !memcmp( protocol, URI_ID_0x15_STRING, strlen(URI_ID_0x15_STRING) ) ) return URI_ID_0x15; 00508 else if( !memcmp( protocol, URI_ID_0x16_STRING, strlen(URI_ID_0x16_STRING) ) ) return URI_ID_0x16; 00509 else if( !memcmp( protocol, URI_ID_0x17_STRING, strlen(URI_ID_0x17_STRING) ) ) return URI_ID_0x17; 00510 else if( !memcmp( protocol, URI_ID_0x18_STRING, strlen(URI_ID_0x18_STRING) ) ) return URI_ID_0x18; 00511 else if( !memcmp( protocol, URI_ID_0x19_STRING, strlen(URI_ID_0x19_STRING) ) ) return URI_ID_0x19; 00512 else if( !memcmp( protocol, URI_ID_0x1A_STRING, strlen(URI_ID_0x1A_STRING) ) ) return URI_ID_0x1A; 00513 else if( !memcmp( protocol, URI_ID_0x1B_STRING, strlen(URI_ID_0x1B_STRING) ) ) return URI_ID_0x1B; 00514 else if( !memcmp( protocol, URI_ID_0x1C_STRING, strlen(URI_ID_0x1C_STRING) ) ) return URI_ID_0x1C; 00515 else if( !memcmp( protocol, URI_ID_0x1D_STRING, strlen(URI_ID_0x1D_STRING) ) ) return URI_ID_0x1D; 00516 else if( !memcmp( protocol, URI_ID_0x1E_STRING, strlen(URI_ID_0x1E_STRING) ) ) return URI_ID_0x1E; 00517 else if( !memcmp( protocol, URI_ID_0x1F_STRING, strlen(URI_ID_0x1F_STRING) ) ) return URI_ID_0x1F; 00518 else if( !memcmp( protocol, URI_ID_0x20_STRING, strlen(URI_ID_0x20_STRING) ) ) return URI_ID_0x20; 00519 else if( !memcmp( protocol, URI_ID_0x21_STRING, strlen(URI_ID_0x21_STRING) ) ) return URI_ID_0x21; 00520 else if( !memcmp( protocol, URI_ID_0x22_STRING, strlen(URI_ID_0x22_STRING) ) ) return URI_ID_0x22; 00521 else if( !memcmp( protocol, URI_ID_0x23_STRING, strlen(URI_ID_0x23_STRING) ) ) return URI_ID_0x23; 00522 else return URI_ID_0x00; // No abreviation for this protocol 00523 } 00524 00525 00526 /** 00527 * @} 00528 */ 00529 00530 /** 00531 * @} 00532 */ 00533 00534 /** 00535 * @} 00536 */ 00537 00538 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/
Generated on Fri Jul 15 2022 08:51:12 by
1.7.2