Ejemplo n.º 1
0
INT32 nativeNdef_readText( UINT8*ndefBuff, UINT32 ndefBuffLen, char * outText, UINT32 textLen)
{
    int langCodeLen;
    UINT8 *payload;
    UINT32 payloadLength;
    UINT8 ndef_tnf;
    UINT8 *ndef_type;
    UINT8 ndef_typeLength;
    nfc_friendly_type_t friendly_type;

    ndef_type = NDEF_RecGetType((UINT8*)ndefBuff, &ndef_tnf, &ndef_typeLength);
    friendly_type = nativeNdef_getFriendlyType(ndef_tnf, ndef_type, ndef_typeLength);
    if (friendly_type != NDEF_FRIENDLY_TYPE_TEXT)
    {
        return -1;
    }
    payload = NDEF_RecGetPayload((UINT8*)ndefBuff, &payloadLength);
    if (payload == NULL)
    {
        return -1;
    }
    langCodeLen = payload[0];
    memcpy(outText, payload + langCodeLen + 1, payloadLength - langCodeLen - 1);
    outText[payloadLength - langCodeLen - 1] = '\0';
    return 0;
}
Ejemplo n.º 2
0
INT32 nativeNdef_readUrl(UINT8*ndefBuff, UINT32 ndefBuffLen, char * outUrl, UINT32 urlBufferLen)
{
    UINT32 prefixIdx;
    UINT32 prefixLen;
    UINT8 *payload;
    UINT32 payloadLength;
    UINT8 ndef_tnf;
    UINT8 *ndef_type;
    UINT8 ndef_typeLength;
    nfc_friendly_type_t friendly_type;

    ndef_type = NDEF_RecGetType((UINT8*)ndefBuff, &ndef_tnf, &ndef_typeLength);
    friendly_type = nativeNdef_getFriendlyType(ndef_tnf, ndef_type, ndef_typeLength);
    if (friendly_type != NDEF_FRIENDLY_TYPE_URL)
    {
        return -1;
    }
    payload = NDEF_RecGetPayload((UINT8*)ndefBuff, &payloadLength);
    if (payload == NULL)
    {
        return -1;
    }
    prefixIdx = payload[0];
    prefixLen = strlen(URI_PREFIX_MAP[prefixIdx]);
    if (urlBufferLen >= payloadLength + prefixLen)
    {
        memcpy(outUrl, URI_PREFIX_MAP[prefixIdx], prefixLen);
        memcpy(outUrl + prefixLen, payload + 1, payloadLength - 1);
    
        outUrl[prefixLen + payloadLength - 1] = '\0';
    }
    return 0;
}