+
+int mfcl_block2sector(u_int8_t block)
+{
+ if (block < MIFARE_CL_SMALL_SECTORS * MIFARE_CL_BLOCKS_P_SECTOR_1k)
+ return block/MIFARE_CL_BLOCKS_P_SECTOR_1k;
+ else
+ return (block - MIFARE_CL_SMALL_SECTORS * MIFARE_CL_BLOCKS_P_SECTOR_1k)
+ / MIFARE_CL_BLOCKS_P_SECTOR_4k;
+}
+
+int mfcl_sector2block(u_int8_t sector)
+{
+ if (sector < MIFARE_CL_SMALL_SECTORS)
+ return sector * MIFARE_CL_BLOCKS_P_SECTOR_1k;
+ else if (sector < MIFARE_CL_SMALL_SECTORS + MIFARE_CL_LARGE_SECTORS)
+ return MIFARE_CL_SMALL_SECTORS * MIFARE_CL_BLOCKS_P_SECTOR_1k +
+ (sector - MIFARE_CL_SMALL_SECTORS) * MIFARE_CL_BLOCKS_P_SECTOR_4k;
+ else
+ return -EINVAL;
+}
+
+int mfcl_sector_blocks(u_int8_t sector)
+{
+ if (sector < MIFARE_CL_SMALL_SECTORS)
+ return MIFARE_CL_BLOCKS_P_SECTOR_1k;
+ else if (sector < MIFARE_CL_SMALL_SECTORS + MIFARE_CL_LARGE_SECTORS)
+ return MIFARE_CL_BLOCKS_P_SECTOR_4k;
+ else
+ return -EINVAL;
+}