15d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/* 25d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Copyright (C) 2010 NXP Semiconductors 35d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * 45d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Licensed under the Apache License, Version 2.0 (the "License"); 55d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * you may not use this file except in compliance with the License. 65d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * You may obtain a copy of the License at 75d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * 85d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * http://www.apache.org/licenses/LICENSE-2.0 95d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * 105d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Unless required by applicable law or agreed to in writing, software 115d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * distributed under the License is distributed on an "AS IS" BASIS, 125d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * See the License for the specific language governing permissions and 145d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * limitations under the License. 155d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */ 165d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 175d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*! 185d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \file phFriNfc_MapTools.c 195d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \brief NFC Ndef Internal Mapping File. 205d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * 215d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Project: NFC-FRI 225d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * 23794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands * $Date: Fri Oct 15 13:50:54 2010 $ 24794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands * $Author: ing02260 $ 25794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands * $Revision: 1.6 $ 26794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands * $Aliases: $ 275d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * 285d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */ 295d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 305d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phFriNfc_NdefMap.h> 315d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phFriNfc_MapTools.h> 325d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 335d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#ifndef PH_FRINFC_MAP_MIFAREUL_DISABLED 345d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phFriNfc_MifareULMap.h> 355d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#endif /* PH_FRINFC_MAP_MIFAREUL_DISABLED*/ 365d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 375d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#ifndef PH_FRINFC_MAP_MIFARESTD_DISABLED 385d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phFriNfc_MifareStdMap.h> 395d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#endif /* PH_FRINFC_MAP_MIFARESTD_DISABLED */ 405d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 415d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#ifndef PH_FRINFC_MAP_DESFIRE_DISABLED 425d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phFriNfc_DesfireMap.h> 435d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#endif /* PH_FRINFC_MAP_DESFIRE_DISABLED */ 445d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 455d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#ifndef PH_FRINFC_MAP_FELICA_DISABLED 465d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phFriNfc_FelicaMap.h> 475d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#endif /* PH_FRINFC_MAP_FELICA_DISABLED */ 485d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 495d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phFriNfc_OvrHal.h> 505d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 515d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*! \ingroup grp_file_attributes 525d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \name NDEF Mapping 535d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * 545d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * File: \ref phFriNfc_MapTools.c 555d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * This file has functions which are used common across all the 565d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * typ1/type2/type3/type4 tags. 575d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * 585d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */ 595d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*@{*/ 60794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands#define PHFRINFCNDEFMAP_FILEREVISION "$Revision: 1.6 $" 61794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands#define PHFRINFCNDEFMAP_FILEALIASES "$Aliases: $" 625d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*@}*/ 635d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 645d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick PellyNFCSTATUS phFriNfc_MapTool_SetCardState(phFriNfc_NdefMap_t *NdefMap, 655d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly uint32_t Length) 665d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly{ 675d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly NFCSTATUS Result = NFCSTATUS_SUCCESS; 685d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly if(Length == PH_FRINFC_NDEFMAP_MFUL_VAL0) 695d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly { 70794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands /* As the NDEF LEN / TLV Len is Zero, irrespective of any state the card 715d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly shall be set to INITIALIZED STATE*/ 72794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands NdefMap->CardState =(uint8_t) (((NdefMap->CardState == 73794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NDEFMAP_CARD_STATE_READ_ONLY) || 74794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands (NdefMap->CardState == 755d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly PH_NDEFMAP_CARD_STATE_INVALID))? 765d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly PH_NDEFMAP_CARD_STATE_INVALID: 775d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly PH_NDEFMAP_CARD_STATE_INITIALIZED); 785d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly } 795d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly else 805d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly { 815d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly switch(NdefMap->CardState) 825d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly { 835d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly case PH_NDEFMAP_CARD_STATE_INITIALIZED: 84794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands NdefMap->CardState =(uint8_t) ((NdefMap->CardState == 855d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly PH_NDEFMAP_CARD_STATE_INVALID)? 865d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly NdefMap->CardState: 875d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly PH_NDEFMAP_CARD_STATE_READ_WRITE); 885d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly break; 895d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 905d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly case PH_NDEFMAP_CARD_STATE_READ_ONLY: 91794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands NdefMap->CardState = (uint8_t)((NdefMap->CardState == 925d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly PH_NDEFMAP_CARD_STATE_INVALID)? 935d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly NdefMap->CardState: 945d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly PH_NDEFMAP_CARD_STATE_READ_ONLY); 955d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly break; 965d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 975d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly case PH_NDEFMAP_CARD_STATE_READ_WRITE: 98794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands NdefMap->CardState = (uint8_t)((NdefMap->CardState == 995d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly PH_NDEFMAP_CARD_STATE_INVALID)? 1005d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly NdefMap->CardState: 1015d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly PH_NDEFMAP_CARD_STATE_READ_WRITE); 10240734e7599249717860f7aeabda494e1bcd86ffeSunil Jogi if (NdefMap->CardType == PH_FRINFC_NDEFMAP_MIFARE_STD_1K_CARD || 10340734e7599249717860f7aeabda494e1bcd86ffeSunil Jogi NdefMap->CardType == PH_FRINFC_NDEFMAP_MIFARE_STD_4K_CARD) 10440734e7599249717860f7aeabda494e1bcd86ffeSunil Jogi { 10540734e7599249717860f7aeabda494e1bcd86ffeSunil Jogi if(NdefMap->StdMifareContainer.ReadOnlySectorIndex && 10640734e7599249717860f7aeabda494e1bcd86ffeSunil Jogi NdefMap->StdMifareContainer.SectorTrailerBlockNo == NdefMap->StdMifareContainer.currentBlock ) 10740734e7599249717860f7aeabda494e1bcd86ffeSunil Jogi { 10840734e7599249717860f7aeabda494e1bcd86ffeSunil Jogi NdefMap->CardState = (uint8_t)((NdefMap->CardState == 10940734e7599249717860f7aeabda494e1bcd86ffeSunil Jogi PH_NDEFMAP_CARD_STATE_INVALID)? 11040734e7599249717860f7aeabda494e1bcd86ffeSunil Jogi NdefMap->CardState: 11140734e7599249717860f7aeabda494e1bcd86ffeSunil Jogi PH_NDEFMAP_CARD_STATE_READ_ONLY); 11240734e7599249717860f7aeabda494e1bcd86ffeSunil Jogi } 11340734e7599249717860f7aeabda494e1bcd86ffeSunil Jogi } 1145d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly break; 1155d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 1165d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly default: 1175d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly NdefMap->CardState = PH_NDEFMAP_CARD_STATE_INVALID; 118794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands Result = PHNFCSTVAL(CID_FRI_NFC_NDEF_MAP, 1195d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly NFCSTATUS_NO_NDEF_SUPPORT); 1205d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly break; 1215d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly } 1225d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly } 123794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands Result = ((NdefMap->CardState == 1245d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly PH_NDEFMAP_CARD_STATE_INVALID)? 125794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PHNFCSTVAL(CID_FRI_NFC_NDEF_MAP, 1265d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly NFCSTATUS_NO_NDEF_SUPPORT): 1275d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly Result); 1285d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly return Result; 1295d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly} 1305d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 1315d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/* To check mapping spec version */ 1325d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 1335d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick PellyNFCSTATUS phFriNfc_MapTool_ChkSpcVer( const phFriNfc_NdefMap_t *NdefMap, 1345d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly uint8_t VersionIndex) 1355d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly{ 1365d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly NFCSTATUS status = NFCSTATUS_SUCCESS; 1375d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 1385d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly uint8_t TagVerNo = NdefMap->SendRecvBuf[VersionIndex]; 1395d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly 1405d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly if ( TagVerNo == 0 ) 1415d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly { 1425d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly /*Return Status Error � Invalid Format�*/ 1435d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly status = PHNFCSTVAL(CID_FRI_NFC_NDEF_MAP,NFCSTATUS_INVALID_FORMAT); 1445d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly } 1455d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly else 1465d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly { 147794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands switch (NdefMap->CardType) 1485d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly { 149794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands case PH_FRINFC_NDEFMAP_MIFARE_STD_1K_CARD: 150794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands case PH_FRINFC_NDEFMAP_MIFARE_STD_4K_CARD: 151794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands { 152794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands /* calculate the major and minor version number of Mifare std version number */ 153794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands status = (( (( PH_NFCFRI_MFSTDMAP_NFCDEV_MAJOR_VER_NUM == 154794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_MFSTDMAP_GET_MAJOR_TAG_VERNO(TagVerNo ) )&& 155794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands ( PH_NFCFRI_MFSTDMAP_NFCDEV_MINOR_VER_NUM == 156794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_MFSTDMAP_GET_MINOR_TAG_VERNO(TagVerNo))) || 157794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands (( PH_NFCFRI_MFSTDMAP_NFCDEV_MAJOR_VER_NUM == 158794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_MFSTDMAP_GET_MAJOR_TAG_VERNO(TagVerNo ) )&& 159794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands ( PH_NFCFRI_MFSTDMAP_NFCDEV_MINOR_VER_NUM < 160794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_MFSTDMAP_GET_MINOR_TAG_VERNO(TagVerNo) )))? 161794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands NFCSTATUS_SUCCESS: 162794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PHNFCSTVAL(CID_FRI_NFC_NDEF_MAP, 163794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands NFCSTATUS_INVALID_FORMAT)); 164794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands break; 165794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands } 166794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands 167794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands#ifdef DESFIRE_EV1 168794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands case PH_FRINFC_NDEFMAP_ISO14443_4A_CARD_EV1: 169794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands { 170794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands /* calculate the major and minor version number of T3VerNo */ 171794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands if( (( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM_2 == 172794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo ) )&& 173794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands ( PH_NFCFRI_NDEFMAP_NFCDEV_MINOR_VER_NUM == 174794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_NDEFMAP_GET_MINOR_TAG_VERNO(TagVerNo))) || 175794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands (( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM_2 == 176794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo ) )&& 177794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands ( PH_NFCFRI_NDEFMAP_NFCDEV_MINOR_VER_NUM < 178794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_NDEFMAP_GET_MINOR_TAG_VERNO(TagVerNo) ))) 179794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands { 180794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands status = PHNFCSTVAL(CID_NFC_NONE,NFCSTATUS_SUCCESS); 181794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands } 182794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands else 183794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands { 184794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands if (( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM_2 < 185794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo) ) || 186794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands ( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM_2 > 187794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo))) 188794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands { 189794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands status = PHNFCSTVAL(CID_FRI_NFC_NDEF_MAP,NFCSTATUS_INVALID_FORMAT); 190794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands } 191794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands } 192794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands break; 193794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands } 194794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands#endif /* #ifdef DESFIRE_EV1 */ 195794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands 196794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands default: 1975d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly { 198794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands /* calculate the major and minor version number of T3VerNo */ 199794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands if( (( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM == 200794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo ) )&& 201794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands ( PH_NFCFRI_NDEFMAP_NFCDEV_MINOR_VER_NUM == 202794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_NDEFMAP_GET_MINOR_TAG_VERNO(TagVerNo))) || 203794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands (( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM == 204794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo ) )&& 205794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands ( PH_NFCFRI_NDEFMAP_NFCDEV_MINOR_VER_NUM < 206794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_NDEFMAP_GET_MINOR_TAG_VERNO(TagVerNo) ))) 207794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands { 208794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands status = PHNFCSTVAL(CID_NFC_NONE,NFCSTATUS_SUCCESS); 209794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands } 210794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands else 211794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands { 212794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands if (( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM < 213794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo) ) || 214794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands ( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM > 215794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo))) 216794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands { 217794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands status = PHNFCSTVAL(CID_FRI_NFC_NDEF_MAP,NFCSTATUS_INVALID_FORMAT); 218794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands } 219794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands } 220794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands break; 2215d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly } 222794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands 223794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands 2245d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly } 2255d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly } 226794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands 2275d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly return (status); 2285d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly} 229