@@ -457,18 +457,31 @@ TEST(NDEF, Type5CapabilityContainer)
457457 EXPECT_EQ (cc.major_version (), NDEF_MAJOR_VERSION );
458458 EXPECT_EQ (cc.minor_version (), NDEF_MINOR_VERSION );
459459 EXPECT_EQ (cc.ndef_size (), 256 );
460+ // MLEN counts in units of 8 bytes, so the field holds a value eight times smaller
461+ EXPECT_EQ (cc.block [2 ], 256 / 8 );
460462
461- // 8-byte CC
463+ // 8-byte CC. MLEN is in the same units whatever the size of the container
462464 type5::CapabilityContainer cc8{};
463465 cc8.block [0 ] = MAGIC_NO_CC8 ;
464466 cc8.major_version (NDEF_MAJOR_VERSION );
465467 cc8.minor_version (NDEF_MINOR_VERSION );
466- cc8.block [6 ] = 0x10 ; // ndef_size high byte
467- cc8.block [7 ] = 0x00 ; // ndef_size low byte (4096)
468+ cc8.ndef_size (32768 );
468469
469470 EXPECT_TRUE (cc8.valid ());
470471 EXPECT_EQ (cc8.size (), 8 );
471- EXPECT_EQ (cc8.ndef_size (), 0x1000 );
472+ EXPECT_EQ (cc8.ndef_size (), 32768 );
473+ EXPECT_EQ (cc8.block [6 ], 0x10 );
474+ EXPECT_EQ (cc8.block [7 ], 0x00 );
475+
476+ // The container an ST25DV64K carries, which measures 8184 bytes as 1023 units of 8
477+ type5::CapabilityContainer st25dv{};
478+ st25dv.block [0 ] = MAGIC_NO_CC8 ;
479+ st25dv.major_version (NDEF_MAJOR_VERSION );
480+ st25dv.minor_version (NDEF_MINOR_VERSION );
481+ st25dv.ndef_size (8184 );
482+ EXPECT_EQ (st25dv.block [6 ], 0x03 );
483+ EXPECT_EQ (st25dv.block [7 ], 0xFF );
484+ EXPECT_EQ (st25dv.ndef_size (), 8184 );
472485
473486 // Additional feature
474487 cc.additional_feature (0x01 );
0 commit comments