Added support for NDEF on ICODE.

This patch allows reading and writing of NDEF messages on ICODE tags.

Change-Id: I43b4845c898c2bf268f609a5a81e991460059ff6
diff --git a/src/phFriNfc_NdefMap.c b/src/phFriNfc_NdefMap.c
index 88cf5ff..28f39f7 100644
--- a/src/phFriNfc_NdefMap.c
+++ b/src/phFriNfc_NdefMap.c
@@ -50,6 +50,10 @@
 #include <phFriNfc_FelicaMap.h>
 #endif  /* PH_FRINFC_MAP_FELICA_DISABLED */
 
+#ifndef PH_FRINFC_MAP_ISO15693_DISABLED
+#include <phFriNfc_ISO15693Map.h>
+#endif  /* PH_FRINFC_MAP_ISO15693_DISABLED */
+
 #ifdef PHFRINFC_OVRHAL_MOCKUP
 #include <phFriNfc_MockupMap.h>
 #endif  /* PHFRINFC_OVRHAL_MOCKUP */
@@ -404,6 +408,15 @@
 #endif  /* PH_FRINFC_MAP_TOPAZ_DYNAMIC_DISABLED */
 #endif  /* PH_FRINFC_MAP_TOPAZ_DISABLED */
 
+#ifndef PH_FRINFC_MAP_ISO15693_DISABLED
+                case PH_FRINFC_NDEFMAP_ISO15693_CARD:
+                    status =  phFriNfc_ISO15693_RdNdef(  NdefMap,
+                        PacketData,
+                        PacketDataLength,
+                        Offset);
+                    break;
+#endif /* #ifndef PH_FRINFC_MAP_ISO15693_DISABLED */
+
 #ifdef PHFRINFC_OVRHAL_MOCKUP
                 case PH_FRINFC_NDEFMAP_MOCKUP_CARD :
                     /*  Mockup card selected. Call Mockup Write */
@@ -596,6 +609,15 @@
 #endif  /* PH_FRINFC_MAP_TOPAZ_DYNAMIC_DISABLED */
 #endif  /* PH_FRINFC_MAP_TOPAZ_DISABLED */
 
+#ifndef PH_FRINFC_MAP_ISO15693_DISABLED
+                case PH_FRINFC_NDEFMAP_ISO15693_CARD:
+                    status =  phFriNfc_ISO15693_WrNdef(  NdefMap,
+                        PacketData,
+                        PacketDataLength,
+                        Offset);
+                    break;
+#endif /* #ifndef PH_FRINFC_MAP_ISO15693_DISABLED */
+
 
 #ifdef PHFRINFC_OVRHAL_MOCKUP
                 case PH_FRINFC_NDEFMAP_MOCKUP_CARD :
@@ -618,6 +640,7 @@
 }
 
 #ifdef FRINFC_READONLY_NDEF
+
 NFCSTATUS
 phFriNfc_NdefMap_ConvertToReadOnly (
     phFriNfc_NdefMap_t          *NdefMap)
@@ -657,10 +680,17 @@
                                     NFCSTATUS_INVALID_REMOTE_DEVICE);
                 break;
             }
+
+            case PH_FRINFC_NDEFMAP_ISO15693_CARD:
+            {
+                result = phFriNfc_ISO15693_ConvertToReadOnly (NdefMap);
+                break;
+            }
         }
     }
     return result;
 }
+
 #endif /* #ifdef FRINFC_READONLY_NDEF */
 
 /*!
@@ -721,6 +751,17 @@
 
             switch ( NdefMap->psRemoteDevInfo->RemDevType )
             {
+#ifndef PH_FRINFC_MAP_ISO15693_DISABLED
+            case phHal_eISO15693_PICC:
+            {
+                status = phFriNfc_ISO15693_ChkNdef (NdefMap);
+                break;
+            }
+#else /* #ifndef PH_FRINFC_MAP_ISO15693_DISABLED */
+            status = PHNFCSTVAL(CID_FRI_NFC_NDEF_MAP, 
+                                NFCSTATUS_INVALID_REMOTE_DEVICE);
+#endif /* #ifndef PH_FRINFC_MAP_ISO15693_DISABLED */
+
             case phHal_eMifare_PICC:
             case phHal_eISO14443_3A_PICC:
                 /*  Remote device is Mifare card . Check for Mifare
@@ -1156,6 +1197,9 @@
 #ifndef PH_FRINFC_MAP_TOPAZ_DYNAMIC_DISABLED
             case  PH_FRINFC_NDEFMAP_TOPAZ_DYNAMIC_CARD :
 #endif
+#ifndef PH_FRINFC_MAP_ISO15693_DISABLED
+            case PH_FRINFC_NDEFMAP_ISO15693_CARD:
+#endif
 #endif
                 /*  Mifare card selected. Call Mifare Write */
                 status =  phFriNfc_NdefMap_WrNdef( NdefMap,
@@ -1360,6 +1404,38 @@
                 break;
 #endif  /* PH_FRINFC_MAP_FELICA_DISABLED */
 
+#ifndef PH_FRINFC_MAP_ISO15693_DISABLED
+            case PH_FRINFC_NDEFMAP_ISO15693_CARD:
+            {
+#if 0
+                uint16_t                    block_no = 0;
+                uint8_t                     byte_no = 0;
+
+                block_no = (uint16_t)
+                    ISO15693_GET_VALUE_FIELD_BLOCK_NO (
+                        NdefMap->ISO15693Container.ndef_tlv_type_blk, 
+                        NdefMap->ISO15693Container.ndef_tlv_type_byte, 
+                        NdefMap->ISO15693Container.actual_ndef_size);
+                byte_no = (uint8_t)
+                    ISO15693_GET_VALUE_FIELD_BYTE_NO (
+                        NdefMap->ISO15693Container.ndef_tlv_type_blk, 
+                        NdefMap->ISO15693Container.ndef_tlv_type_byte, 
+                        NdefMap->ISO15693Container.actual_ndef_size);
+
+                *maxSize = (NdefMap->ISO15693Container.max_data_size - 
+                            ((NdefMap->ISO15693Container.actual_ndef_size > 0) ? 
+                            ((block_no * ISO15693_BYTES_PER_BLOCK) + byte_no) : 
+                            ISO15693_BYTES_PER_BLOCK));
+#else /* #if 0 */
+                /* 2 is used to exclude the T and L part of the TLV */
+                *maxSize = (NdefMap->ISO15693Container.max_data_size
+                            - ISO15693_BYTES_PER_BLOCK - 2);
+#endif /* #if 0 */
+                *actualSize = NdefMap->ISO15693Container.actual_ndef_size;
+                break;
+            }
+#endif
+
 #ifdef PHFRINFC_OVRHAL_MOCKUP
             case PH_FRINFC_NDEFMAP_MOCKUP_CARD :
                 *maxSize = 0xFFFFFFFF;