phFriNfc_MapTools.c revision 794aa72f7bd1e5b1fb51efb957cb925c7cfed746
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);
1025d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly            break;
1035d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1045d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly            default:
1055d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                NdefMap->CardState = PH_NDEFMAP_CARD_STATE_INVALID;
106794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                Result = PHNFCSTVAL(CID_FRI_NFC_NDEF_MAP,
1075d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                            NFCSTATUS_NO_NDEF_SUPPORT);
1085d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly            break;
1095d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly        }
1105d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    }
111794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands    Result = ((NdefMap->CardState ==
1125d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                PH_NDEFMAP_CARD_STATE_INVALID)?
113794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                PHNFCSTVAL(CID_FRI_NFC_NDEF_MAP,
1145d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                NFCSTATUS_NO_NDEF_SUPPORT):
1155d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                Result);
1165d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    return Result;
1175d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly}
1185d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1195d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*  To check mapping spec version */
1205d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1215d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick PellyNFCSTATUS   phFriNfc_MapTool_ChkSpcVer( const phFriNfc_NdefMap_t  *NdefMap,
1225d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                                        uint8_t             VersionIndex)
1235d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly{
1245d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    NFCSTATUS status = NFCSTATUS_SUCCESS;
1255d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1265d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint8_t TagVerNo = NdefMap->SendRecvBuf[VersionIndex];
1275d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1285d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    if ( TagVerNo == 0 )
1295d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    {
1305d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly        /*Return Status Error � Invalid Format�*/
1315d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly        status = PHNFCSTVAL(CID_FRI_NFC_NDEF_MAP,NFCSTATUS_INVALID_FORMAT);
1325d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    }
1335d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    else
1345d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    {
135794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands        switch (NdefMap->CardType)
1365d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly        {
137794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands            case PH_FRINFC_NDEFMAP_MIFARE_STD_1K_CARD:
138794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands            case PH_FRINFC_NDEFMAP_MIFARE_STD_4K_CARD:
139794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands            {
140794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                /* calculate the major and minor version number of Mifare std version number */
141794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                status = (( (( PH_NFCFRI_MFSTDMAP_NFCDEV_MAJOR_VER_NUM ==
142794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                                PH_NFCFRI_MFSTDMAP_GET_MAJOR_TAG_VERNO(TagVerNo ) )&&
143794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                            ( PH_NFCFRI_MFSTDMAP_NFCDEV_MINOR_VER_NUM ==
144794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                                PH_NFCFRI_MFSTDMAP_GET_MINOR_TAG_VERNO(TagVerNo))) ||
145794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                            (( PH_NFCFRI_MFSTDMAP_NFCDEV_MAJOR_VER_NUM ==
146794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                                PH_NFCFRI_MFSTDMAP_GET_MAJOR_TAG_VERNO(TagVerNo ) )&&
147794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                            ( PH_NFCFRI_MFSTDMAP_NFCDEV_MINOR_VER_NUM <
148794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                                PH_NFCFRI_MFSTDMAP_GET_MINOR_TAG_VERNO(TagVerNo) )))?
149794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                        NFCSTATUS_SUCCESS:
150794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                        PHNFCSTVAL(CID_FRI_NFC_NDEF_MAP,
151794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                                    NFCSTATUS_INVALID_FORMAT));
152794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                break;
153794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands            }
154794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands
155794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands#ifdef DESFIRE_EV1
156794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands            case PH_FRINFC_NDEFMAP_ISO14443_4A_CARD_EV1:
157794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands            {
158794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                /* calculate the major and minor version number of T3VerNo */
159794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                if( (( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM_2 ==
160794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                        PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo ) )&&
161794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    ( PH_NFCFRI_NDEFMAP_NFCDEV_MINOR_VER_NUM ==
162794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                        PH_NFCFRI_NDEFMAP_GET_MINOR_TAG_VERNO(TagVerNo))) ||
163794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    (( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM_2 ==
164794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                        PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo ) )&&
165794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    ( PH_NFCFRI_NDEFMAP_NFCDEV_MINOR_VER_NUM <
166794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                        PH_NFCFRI_NDEFMAP_GET_MINOR_TAG_VERNO(TagVerNo) )))
167794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                {
168794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    status = PHNFCSTVAL(CID_NFC_NONE,NFCSTATUS_SUCCESS);
169794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                }
170794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                else
171794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                {
172794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    if (( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM_2 <
173794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                            PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo) ) ||
174794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    ( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM_2 >
175794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                            PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo)))
176794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    {
177794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                        status = PHNFCSTVAL(CID_FRI_NFC_NDEF_MAP,NFCSTATUS_INVALID_FORMAT);
178794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    }
179794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                }
180794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                break;
181794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands            }
182794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands#endif /* #ifdef DESFIRE_EV1 */
183794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands
184794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands            default:
1855d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly            {
186794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                /* calculate the major and minor version number of T3VerNo */
187794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                if( (( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM ==
188794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                        PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo ) )&&
189794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    ( PH_NFCFRI_NDEFMAP_NFCDEV_MINOR_VER_NUM ==
190794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                        PH_NFCFRI_NDEFMAP_GET_MINOR_TAG_VERNO(TagVerNo))) ||
191794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    (( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM ==
192794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                        PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo ) )&&
193794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    ( PH_NFCFRI_NDEFMAP_NFCDEV_MINOR_VER_NUM <
194794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                        PH_NFCFRI_NDEFMAP_GET_MINOR_TAG_VERNO(TagVerNo) )))
195794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                {
196794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    status = PHNFCSTVAL(CID_NFC_NONE,NFCSTATUS_SUCCESS);
197794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                }
198794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                else
199794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                {
200794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    if (( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM <
201794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                            PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo) ) ||
202794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    ( PH_NFCFRI_NDEFMAP_NFCDEV_MAJOR_VER_NUM >
203794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                            PH_NFCFRI_NDEFMAP_GET_MAJOR_TAG_VERNO(TagVerNo)))
204794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    {
205794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                        status = PHNFCSTVAL(CID_FRI_NFC_NDEF_MAP,NFCSTATUS_INVALID_FORMAT);
206794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                    }
207794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                }
208794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands                break;
2095d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly            }
210794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands
211794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands
2125d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly        }
2135d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    }
214794aa72f7bd1e5b1fb51efb957cb925c7cfed746Jan Brands
2155d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    return (status);
2165d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly}
217