NFC NDEF library
Dependents: Nucleo_NFC_Example I2C_NFC_Master Print_Entire_Nucleo_NFC01A1_Memory
Fork of lib_NDEF by
Diff: lib_NDEF_URI.c
- Revision:
- 0:3b093bd0819e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib_NDEF_URI.c Mon Dec 15 19:41:36 2014 +0000 @@ -0,0 +1,543 @@ +/** + ****************************************************************************** + * @file lib_NDEF_URI.c + * @author MMY Application Team + * @version V1.0.0 + * @date 20-November-2013 + * @brief This file help to manage NDEF file that represent URI. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT 2014 STMicroelectronics</center></h2> + * + * Licensed under MMY-ST Liberty SW License Agreement V2, (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.st.com/software_license_agreement_liberty_v2 + * + * 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. + * + ****************************************************************************** + */ +/* Includes ------------------------------------------------------------------*/ +#include "lib_NDEF_URI.h" + +/** @addtogroup NFC_libraries + * @{ + * @brief <b>This is the library used to manage the content of the TAG (data) + * But also the specific feature of the tag, for instance + * password, gpo... </b> + */ + + +/** @addtogroup libNFC_FORUM + * @{ + * @brief This part of the library manage data which follow NFC forum organisation. + */ + +/** + * @brief This buffer contains the data send/received by TAG + */ +extern uint8_t NDEF_Buffer [NDEF_MAX_SIZE]; + +/** @defgroup libURI_Private_Functions + * @{ + */ + +static void NDEF_Parse_WellKnowType(sRecordInfo *pRecordStruct, sURI_Info* pURI ); + +/** + * @brief This fonction read the URI information and store data in a structure + * @param pRecordStruct : Pointer on the record structure + * @param pURI : pointer on the structure to fill + * @retval NONE + */ +static void NDEF_Parse_WellKnowType(sRecordInfo *pRecordStruct, sURI_Info* pURI ) +{ + uint32_t PayloadSize; + uint8_t Offset; + uint8_t* pPayload; + + pPayload = (uint8_t*)(pRecordStruct->PayloadBufferAdd); + + switch( *pPayload) + { + case URI_ID_0x01: + memcpy( pURI->protocol, URI_ID_0x01_STRING, strlen(URI_ID_0x01_STRING)); + Offset = strlen(URI_ID_0x01_STRING); + break; + + case URI_ID_0x02: + memcpy( pURI->protocol, URI_ID_0x02_STRING, strlen(URI_ID_0x02_STRING)); + Offset = strlen(URI_ID_0x02_STRING); + break; + + case URI_ID_0x03: + memcpy( pURI->protocol, URI_ID_0x03_STRING, strlen(URI_ID_0x03_STRING)); + Offset = strlen(URI_ID_0x03_STRING); + break; + + case URI_ID_0x04: + memcpy( pURI->protocol, URI_ID_0x04_STRING, strlen(URI_ID_0x04_STRING)); + Offset = strlen(URI_ID_0x04_STRING); + break; + + case URI_ID_0x05: + memcpy( pURI->protocol, URI_ID_0x05_STRING, strlen(URI_ID_0x05_STRING)); + Offset = strlen(URI_ID_0x05_STRING); + break; + + case URI_ID_0x06: + memcpy( pURI->protocol, URI_ID_0x06_STRING, strlen(URI_ID_0x06_STRING)); + Offset = strlen(URI_ID_0x06_STRING); + break; + + case URI_ID_0x07: + memcpy( pURI->protocol, URI_ID_0x07_STRING, strlen(URI_ID_0x07_STRING)); + Offset = strlen(URI_ID_0x07_STRING); + break; + + case URI_ID_0x08: + memcpy( pURI->protocol, URI_ID_0x08_STRING, strlen(URI_ID_0x08_STRING)); + Offset = strlen(URI_ID_0x08_STRING); + break; + + case URI_ID_0x09: + memcpy( pURI->protocol, URI_ID_0x09_STRING, strlen(URI_ID_0x09_STRING)); + Offset = strlen(URI_ID_0x09_STRING); + break; + + case URI_ID_0x0A: + memcpy( pURI->protocol, URI_ID_0x0A_STRING, strlen(URI_ID_0x0A_STRING)); + Offset = strlen(URI_ID_0x0A_STRING); + break; + + case URI_ID_0x0B: + memcpy( pURI->protocol, URI_ID_0x0B_STRING, strlen(URI_ID_0x0B_STRING)); + Offset = strlen(URI_ID_0x0B_STRING); + break; + + case URI_ID_0x0C: + memcpy( pURI->protocol, URI_ID_0x0C_STRING, strlen(URI_ID_0x0C_STRING)); + Offset = strlen(URI_ID_0x0C_STRING); + break; + + case URI_ID_0x0D: + memcpy( pURI->protocol, URI_ID_0x0D_STRING, strlen(URI_ID_0x0D_STRING)); + Offset = strlen(URI_ID_0x0D_STRING); + break; + + case URI_ID_0x0E: + memcpy( pURI->protocol, URI_ID_0x0E_STRING, strlen(URI_ID_0x0E_STRING)); + Offset = strlen(URI_ID_0x0E_STRING); + break; + + case URI_ID_0x0F: + memcpy( pURI->protocol, URI_ID_0x0F_STRING, strlen(URI_ID_0x0F_STRING)); + Offset = strlen(URI_ID_0x0F_STRING); + break; + + case URI_ID_0x10: + memcpy( pURI->protocol, URI_ID_0x10_STRING, strlen(URI_ID_0x10_STRING)); + Offset = strlen(URI_ID_0x10_STRING); + break; + + case URI_ID_0x11: + memcpy( pURI->protocol, URI_ID_0x11_STRING, strlen(URI_ID_0x11_STRING)); + Offset = strlen(URI_ID_0x11_STRING); + break; + + case URI_ID_0x12: + memcpy( pURI->protocol, URI_ID_0x12_STRING, strlen(URI_ID_0x12_STRING)); + Offset = strlen(URI_ID_0x12_STRING); + break; + + case URI_ID_0x13: + memcpy( pURI->protocol, URI_ID_0x13_STRING, strlen(URI_ID_0x13_STRING)); + Offset = strlen(URI_ID_0x13_STRING); + break; + + case URI_ID_0x14: + memcpy( pURI->protocol, URI_ID_0x14_STRING, strlen(URI_ID_0x14_STRING)); + Offset = strlen(URI_ID_0x14_STRING); + break; + + case URI_ID_0x15: + memcpy( pURI->protocol, URI_ID_0x15_STRING, strlen(URI_ID_0x15_STRING)); + Offset = strlen(URI_ID_0x15_STRING); + break; + + case URI_ID_0x16: + memcpy( pURI->protocol, URI_ID_0x16_STRING, strlen(URI_ID_0x16_STRING)); + Offset = strlen(URI_ID_0x16_STRING); + break; + + case URI_ID_0x17: + memcpy( pURI->protocol, URI_ID_0x17_STRING, strlen(URI_ID_0x17_STRING)); + Offset = strlen(URI_ID_0x17_STRING); + break; + + case URI_ID_0x18: + memcpy( pURI->protocol, URI_ID_0x18_STRING, strlen(URI_ID_0x18_STRING)); + Offset = strlen(URI_ID_0x18_STRING); + break; + + case URI_ID_0x19: + memcpy( pURI->protocol, URI_ID_0x19_STRING, strlen(URI_ID_0x19_STRING)); + Offset = strlen(URI_ID_0x19_STRING); + break; + + case URI_ID_0x1A: + memcpy( pURI->protocol, URI_ID_0x1A_STRING, strlen(URI_ID_0x1A_STRING)); + Offset = strlen(URI_ID_0x1A_STRING); + break; + + case URI_ID_0x1B: + memcpy( pURI->protocol, URI_ID_0x1B_STRING, strlen(URI_ID_0x1B_STRING)); + Offset = strlen(URI_ID_0x1B_STRING); + break; + + case URI_ID_0x1C: + memcpy( pURI->protocol, URI_ID_0x1C_STRING, strlen(URI_ID_0x1C_STRING)); + Offset = strlen(URI_ID_0x1C_STRING); + break; + + case URI_ID_0x1D: + memcpy( pURI->protocol, URI_ID_0x1D_STRING, strlen(URI_ID_0x1D_STRING)); + Offset = strlen(URI_ID_0x1D_STRING); + break; + + case URI_ID_0x1E: + memcpy( pURI->protocol, URI_ID_0x1E_STRING, strlen(URI_ID_0x1E_STRING)); + Offset = strlen(URI_ID_0x1E_STRING); + break; + + case URI_ID_0x1F: + memcpy( pURI->protocol, URI_ID_0x1F_STRING, strlen(URI_ID_0x1F_STRING)); + Offset = strlen(URI_ID_0x1F_STRING); + break; + + case URI_ID_0x20: + memcpy( pURI->protocol, URI_ID_0x20_STRING, strlen(URI_ID_0x20_STRING)); + Offset = strlen(URI_ID_0x20_STRING); + break; + + case URI_ID_0x21: + memcpy( pURI->protocol, URI_ID_0x21_STRING, strlen(URI_ID_0x21_STRING)); + Offset = strlen(URI_ID_0x21_STRING); + break; + + case URI_ID_0x22: + memcpy( pURI->protocol, URI_ID_0x22_STRING, strlen(URI_ID_0x22_STRING)); + Offset = strlen(URI_ID_0x22_STRING); + break; + + case URI_ID_0x23: + memcpy( pURI->protocol, URI_ID_0x23_STRING, strlen(URI_ID_0x23_STRING)); + Offset = strlen(URI_ID_0x23_STRING); + break; + + default: + Offset = 0; + /* Should not happened */ + break; + } + /* add end of string charactere */ + pURI->protocol[Offset] = '\0'; + + pPayload++; /* go after well know byte */ + + PayloadSize = ((uint32_t)(pRecordStruct->PayloadLength3)<<24) | ((uint32_t)(pRecordStruct->PayloadLength2)<<16) | + ((uint32_t)(pRecordStruct->PayloadLength1)<<8) | pRecordStruct->PayloadLength0; + + PayloadSize = PayloadSize -1; /* remove well know byte */ + + memcpy( pURI->URI_Message, pPayload, PayloadSize); + /* add end of string charactere */ + pURI->URI_Message[PayloadSize] = '\0'; + +} + +/** + * @} + */ + +/** @defgroup libURI_Public_Functions + * @{ + * @brief This file is used to manage URI (stored or loaded in tag) + */ + +/** + * @brief This fonction read NDEF and retrieve URI information if any + * @param pRecordStruct : Pointer on the record structure + * @param pURI : pointer on the structure to fill + * @retval SUCCESS : URI information from NDEF have been retrieved + * @retval ERROR : Not able to retrieve URI information + */ +uint16_t NDEF_ReadURI(sRecordInfo *pRecordStruct, sURI_Info *pURI) +{ + uint16_t status = ERROR; + sRecordInfo *pSPRecordStruct; + uint32_t PayloadSize, RecordPosition; + uint8_t* pData; + + if( pRecordStruct->NDEF_Type == WELL_KNOWN_ABRIDGED_URI_TYPE ) + { + NDEF_Parse_WellKnowType(pRecordStruct, pURI ); + status = SUCCESS; + } + else if( pRecordStruct->NDEF_Type == SMARTPOSTER_TYPE) + { + for (RecordPosition = 0; RecordPosition<pRecordStruct->NbOfRecordInSPPayload; RecordPosition++) + { + pSPRecordStruct = (sRecordInfo *)(pRecordStruct->SPRecordStructAdd[RecordPosition]); + if(pSPRecordStruct->NDEF_Type == WELL_KNOWN_ABRIDGED_URI_TYPE ) + { + NDEF_Parse_WellKnowType(pSPRecordStruct, pURI ); + status = SUCCESS; + } + if(pSPRecordStruct->NDEF_Type == TEXT_TYPE ) + { + PayloadSize = ((uint32_t)(pSPRecordStruct->PayloadLength3)<<24) | ((uint32_t)(pSPRecordStruct->PayloadLength2)<<16) | + ((uint32_t)(pSPRecordStruct->PayloadLength1)<<8) | pSPRecordStruct->PayloadLength0; + + /* The instruction content the UTF-8 language code that is not used here */ + pData = (uint8_t*)pSPRecordStruct->PayloadBufferAdd; + pData += *pData+1; + + memcpy(pURI->Information, pData, PayloadSize); + } + } + } + else + { + status = ERROR; + } + + return status; +} + +/** + * @brief This fonction write the NDEF file with the URI data given in the structure + * @param pURI : pointer on structure that contain the URI information + * @retval SUCCESS : the function is succesful + * @retval ERROR : Not able to store NDEF file inside tag. + */ +uint16_t NDEF_WriteURI ( sURI_Info *pURI) +{ + uint16_t status = ERROR; + uint32_t uriSize, infoSize, totalSize, Offset = 0; + char type; + + /* GEO is an URI but can be included in a smart poster to add text to give instruction to user for instance */ + + /* GEO (smart poster) Record Header */ + /************************************/ + /* 7 | 6 | 5 | 4 | 3 | 2 1 0 */ + /*----------------------------------*/ + /* MB ME CF SR IL TNF */ /* <---- CF=0, IL=0 and SR=1 TNF=1 NFC Forum Well-known type*/ + /*----------------------------------*/ + /* TYPE LENGTH */ + /*----------------------------------*/ + /* PAYLOAD LENGTH 3 */ /* <---- Used only if SR=0 */ + /*----------------------------------*/ + /* PAYLOAD LENGTH 2 */ /* <---- Used only if SR=0 */ + /*----------------------------------*/ + /* PAYLOAD LENGTH 1 */ /* <---- Used only if SR=0 */ + /*----------------------------------*/ + /* PAYLOAD LENGTH 0 */ + /*----------------------------------*/ + /* ID LENGTH */ /* <---- Not Used */ + /*----------------------------------*/ + /* TYPE */ + /*----------------------------------*/ + /* ID */ /* <---- Not Used */ + /************************************/ + + NDEF_Buffer[0] = 0; + NDEF_Buffer[1] = 0; + Offset = FIRST_RECORD_OFFSET; + infoSize = 0; + + /* We need to know the URI type in order to define if an abreviation is available */ + type = getUriType(pURI->protocol); + + /* URI : 1+URI for abreviate protocol*/ + if (type != URI_ID_0x00) + uriSize = 1+strlen(pURI->URI_Message); + else /*: 1+protocol+URI else*/ + uriSize = 1+strlen(pURI->protocol)+strlen(pURI->URI_Message); + + /* Check if a Smart poster is needed */ + if (pURI->Information[0] != '\0') + { + /* Info : 1+2+info */ + infoSize = 1+ISO_ENGLISH_CODE_STRING_LENGTH+strlen(pURI->Information); + /* Total */ + totalSize = 4+uriSize+4+infoSize; + if (uriSize > 255) totalSize+=3; /* Normal URI size */ + if (infoSize > 255) totalSize+=3; /* Normal Info size */ + + /* SmartPoster header */ + if (totalSize > 255) + { + NDEF_Buffer[Offset++] = 0xC1; + NDEF_Buffer[Offset++] = SMART_POSTER_TYPE_STRING_LENGTH; + NDEF_Buffer[Offset++] = (totalSize & 0xFF000000)>>24; + NDEF_Buffer[Offset++] = (totalSize & 0x00FF0000)>>16; + NDEF_Buffer[Offset++] = (totalSize & 0x0000FF00)>>8; + NDEF_Buffer[Offset++] = (totalSize & 0x000000FF); + } + else + { + NDEF_Buffer[Offset++] = 0xD1; + NDEF_Buffer[Offset++] = SMART_POSTER_TYPE_STRING_LENGTH; + NDEF_Buffer[Offset++] = (uint8_t)totalSize; + } + memcpy(&NDEF_Buffer[Offset], SMART_POSTER_TYPE_STRING, SMART_POSTER_TYPE_STRING_LENGTH); + Offset+=SMART_POSTER_TYPE_STRING_LENGTH; + } + + /* URI header */ + NDEF_Buffer[Offset] = 0x81; + if (uriSize < 256) NDEF_Buffer[Offset] |= 0x10; // Set the SR bit + if (pURI->Information[0] == '\0') NDEF_Buffer[Offset] |= 0x40; // Set the ME bit + Offset++; + + NDEF_Buffer[Offset++] = URI_TYPE_STRING_LENGTH; + if (uriSize > 255) + { + NDEF_Buffer[Offset++] = (uriSize & 0xFF000000)>>24; + NDEF_Buffer[Offset++] = (uriSize & 0x00FF0000)>>16; + NDEF_Buffer[Offset++] = (uriSize & 0x0000FF00)>>8; + NDEF_Buffer[Offset++] = (uriSize & 0x000000FF); + } + else + { + NDEF_Buffer[Offset++] = (uint8_t)uriSize; + } + memcpy(&NDEF_Buffer[Offset], URI_TYPE_STRING, URI_TYPE_STRING_LENGTH); + Offset+=URI_TYPE_STRING_LENGTH; + + NDEF_Buffer[Offset++]=type; + if (type == URI_ID_0x00) // No abreviation + { + memcpy(&NDEF_Buffer[Offset], pURI->protocol, strlen(pURI->protocol)); + Offset+=strlen(pURI->protocol); + } + + memcpy(&NDEF_Buffer[Offset], pURI->URI_Message, strlen(pURI->URI_Message)); + Offset+=strlen(pURI->URI_Message); + + /* Information header */ + if (pURI->Information[0] != '\0') + { + if (infoSize > 255) + { + NDEF_Buffer[Offset++] = 0x41; + NDEF_Buffer[Offset++] = TEXT_TYPE_STRING_LENGTH; + NDEF_Buffer[Offset++] = (infoSize & 0xFF000000)>>24; + NDEF_Buffer[Offset++] = (infoSize & 0x00FF0000)>>16; + NDEF_Buffer[Offset++] = (infoSize & 0x0000FF00)>>8; + NDEF_Buffer[Offset++] = (infoSize & 0x000000FF); + } + else + { + NDEF_Buffer[Offset++] = 0x51; + NDEF_Buffer[Offset++] = TEXT_TYPE_STRING_LENGTH; + NDEF_Buffer[Offset++] = (uint8_t)infoSize; + } + + memcpy(&NDEF_Buffer[Offset], TEXT_TYPE_STRING, TEXT_TYPE_STRING_LENGTH); + Offset+=TEXT_TYPE_STRING_LENGTH; + NDEF_Buffer[Offset++] = ISO_ENGLISH_CODE_STRING_LENGTH; /* UTF-8 with x byte language code */ + memcpy(&NDEF_Buffer[Offset], ISO_ENGLISH_CODE_STRING, ISO_ENGLISH_CODE_STRING_LENGTH); + Offset+=ISO_ENGLISH_CODE_STRING_LENGTH; + + /* Information payload */ + memcpy( &NDEF_Buffer[Offset], pURI->Information,strlen(pURI->Information)); + Offset += strlen(pURI->Information); + } + + /* Write NDEF */ + status = WriteData ( 0x00 , Offset , NDEF_Buffer); + + /* Write NDEF size to complete*/ + if( status == NDEF_ACTION_COMPLETED) + { + Offset -= 2; /* Must not count the 2 byte that represent the NDEF size */ + NDEF_Buffer[0] = (Offset & 0xFF00)>>8; + NDEF_Buffer[1] = (Offset & 0x00FF); + + status = WriteData ( 0x00 , 2 , NDEF_Buffer); + } + + if( status == NDEF_ACTION_COMPLETED) + return SUCCESS; + else + return ERROR; +} + +char getUriType(char *protocol) +{ + if(!memcmp( protocol, URI_ID_0x01_STRING, strlen(URI_ID_0x01_STRING))) return URI_ID_0x01; + else if(!memcmp( protocol, URI_ID_0x02_STRING, strlen(URI_ID_0x02_STRING))) return URI_ID_0x02; + else if(!memcmp( protocol, URI_ID_0x03_STRING, strlen(URI_ID_0x03_STRING))) return URI_ID_0x03; + else if(!memcmp( protocol, URI_ID_0x04_STRING, strlen(URI_ID_0x04_STRING))) return URI_ID_0x04; + else if(!memcmp( protocol, URI_ID_0x05_STRING, strlen(URI_ID_0x05_STRING))) return URI_ID_0x05; + else if(!memcmp( protocol, URI_ID_0x06_STRING, strlen(URI_ID_0x06_STRING))) return URI_ID_0x06; + else if(!memcmp( protocol, URI_ID_0x07_STRING, strlen(URI_ID_0x07_STRING))) return URI_ID_0x07; + else if(!memcmp( protocol, URI_ID_0x08_STRING, strlen(URI_ID_0x08_STRING))) return URI_ID_0x08; + else if(!memcmp( protocol, URI_ID_0x09_STRING, strlen(URI_ID_0x09_STRING))) return URI_ID_0x09; + else if(!memcmp( protocol, URI_ID_0x0A_STRING, strlen(URI_ID_0x0A_STRING))) return URI_ID_0x0A; + else if(!memcmp( protocol, URI_ID_0x0B_STRING, strlen(URI_ID_0x0B_STRING))) return URI_ID_0x0B; + else if(!memcmp( protocol, URI_ID_0x0C_STRING, strlen(URI_ID_0x0C_STRING))) return URI_ID_0x0C; + else if(!memcmp( protocol, URI_ID_0x0D_STRING, strlen(URI_ID_0x0D_STRING))) return URI_ID_0x0D; + else if(!memcmp( protocol, URI_ID_0x0E_STRING, strlen(URI_ID_0x0E_STRING))) return URI_ID_0x0E; + else if(!memcmp( protocol, URI_ID_0x0F_STRING, strlen(URI_ID_0x0F_STRING))) return URI_ID_0x0F; + else if(!memcmp( protocol, URI_ID_0x10_STRING, strlen(URI_ID_0x10_STRING))) return URI_ID_0x10; + else if(!memcmp( protocol, URI_ID_0x11_STRING, strlen(URI_ID_0x11_STRING))) return URI_ID_0x11; + else if(!memcmp( protocol, URI_ID_0x12_STRING, strlen(URI_ID_0x12_STRING))) return URI_ID_0x12; + else if(!memcmp( protocol, URI_ID_0x13_STRING, strlen(URI_ID_0x13_STRING))) return URI_ID_0x13; + else if(!memcmp( protocol, URI_ID_0x14_STRING, strlen(URI_ID_0x14_STRING))) return URI_ID_0x14; + else if(!memcmp( protocol, URI_ID_0x15_STRING, strlen(URI_ID_0x15_STRING))) return URI_ID_0x15; + else if(!memcmp( protocol, URI_ID_0x16_STRING, strlen(URI_ID_0x16_STRING))) return URI_ID_0x16; + else if(!memcmp( protocol, URI_ID_0x17_STRING, strlen(URI_ID_0x17_STRING))) return URI_ID_0x17; + else if(!memcmp( protocol, URI_ID_0x18_STRING, strlen(URI_ID_0x18_STRING))) return URI_ID_0x18; + else if(!memcmp( protocol, URI_ID_0x19_STRING, strlen(URI_ID_0x19_STRING))) return URI_ID_0x19; + else if(!memcmp( protocol, URI_ID_0x1A_STRING, strlen(URI_ID_0x1A_STRING))) return URI_ID_0x1A; + else if(!memcmp( protocol, URI_ID_0x1B_STRING, strlen(URI_ID_0x1B_STRING))) return URI_ID_0x1B; + else if(!memcmp( protocol, URI_ID_0x1C_STRING, strlen(URI_ID_0x1C_STRING))) return URI_ID_0x1C; + else if(!memcmp( protocol, URI_ID_0x1D_STRING, strlen(URI_ID_0x1D_STRING))) return URI_ID_0x1D; + else if(!memcmp( protocol, URI_ID_0x1E_STRING, strlen(URI_ID_0x1E_STRING))) return URI_ID_0x1E; + else if(!memcmp( protocol, URI_ID_0x1F_STRING, strlen(URI_ID_0x1F_STRING))) return URI_ID_0x1F; + else if(!memcmp( protocol, URI_ID_0x20_STRING, strlen(URI_ID_0x20_STRING))) return URI_ID_0x20; + else if(!memcmp( protocol, URI_ID_0x21_STRING, strlen(URI_ID_0x21_STRING))) return URI_ID_0x21; + else if(!memcmp( protocol, URI_ID_0x22_STRING, strlen(URI_ID_0x22_STRING))) return URI_ID_0x22; + else if(!memcmp( protocol, URI_ID_0x23_STRING, strlen(URI_ID_0x23_STRING))) return URI_ID_0x23; + else return URI_ID_0x00; // No abreviation for this protocol +} + + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2013 STMicroelectronics *****END OF FILE****/ + + + +