SE050 Driver
API reference
Loading...
Searching...
No Matches
Namespaces | Functions
se050_crc.hpp File Reference

ISO/IEC 7816-3 T=1 EDC (16-bit CRC) for NXP SE050 T1oI2C blocks. More...

#include <cstddef>
#include <cstdint>

Go to the source code of this file.

Namespaces

namespace  se050
 
namespace  se050::crc
 

Functions

std::uint16_t se050::crc::Crc16Edc7816 (const std::uint8_t *buffer, std::size_t offset, std::size_t length) noexcept
 Compute T=1 EDC over bytes [offset, offset+length) of buffer.
 
void se050::crc::AppendEdc (std::uint8_t *frame, std::size_t len_without_edc) noexcept
 Append EDC immediately after frame[0 .. len_without_edc-1].
 
bool se050::crc::VerifyFrameCrc (const std::uint8_t *frame, std::size_t total_len) noexcept
 Verify EDC on a full received frame (includes trailing 2-byte CRC).
 

Detailed Description

ISO/IEC 7816-3 T=1 EDC (16-bit CRC) for NXP SE050 T1oI2C blocks.

The polynomial and bit ordering match the NXP EdgeLock T=1oI2C stack (CRC-16 “ANSI” / IBM-SDLC style, reflected input, reflected output with final XOR 0xFFFF). UM11225 and SE050C2 silicon put EDC LSB first: frame[len] = crc & 0xFF, frame[len+1] = crc >> 8. MSB-first is answered with R-block PCB 0x81 (EDC error).