2024-06-11 23:30:29 +08:00

6.6 KiB
Raw Blame History

Inventory: inventory

  • request

    字段名称 比特数
    SOF
    Flags 8 bits
    Inventory 8 bits
    Optional AFI 8 bits
    Mask length 8 bits
    Mask value 0 64 bits
    CRC16 16 bits
    EOF
  • responses

    字段名称 比特数
    SOF
    Flags 8 bits
    DSFID 8 bits
    UID 64 bits
    CRC16 16 bits
    EOF
  • 函数

    int inventory(
        uint8 u8Flag, 
        uint8 u8AFI, 
        uint8 u8MaskLen, // bitlen 
        uint8 au8MaskValue[8], // .
    	uint8 *pu8RxFlags,
    	uint8 *pu8RxDSFID,
    	uint8 au8RxUID[8]
    );
    

    返回:

    • 1 表示清晰收到一个 VICC 的应答;
    • 0 表示没有 VICC 应答;
    • <0 表示有多个 VICC 应答;

    如果返回 < 0 或者VCD 发送 EOF继续点名或者修改 masklen & maskvalue重新发送 inventory()

Stay quiet:

  • request

    字段名称 比特数
    SOF
    Flags 8 bits
    Stay quiet 8 bits
    UID 64 bits
    CRC16 16 bits
    EOF
  • response

  • 函数

    int stayQuiet(
    	uint8 u8Flags,
    	uint8 au8UID[8]
    );
    

Read Single Block

  • request

    字段名称 比特数
    SOF
    Flags 8 bits
    Read single block 8 bits
    UID 64 bits
    Block number 8 bits
    CRC16 16 bits
    EOF

    request 中,是否存在 UID由 flags 决定address mode or select mode

  • response

    字段名称 比特数
    SOF
    Flags 8 bits
    Error code 8 bits
    CRC16 16 bits
    EOF
    字段名称 比特数
    SOF
    Flags 8 bits
    Block security status 8 bits
    Data
    Block length
    CRC16 16 bits
    EOF
  • 函数

    int readSingleBlk(
        uint8 u8Flags,
        uint8 au8UID[8],
        uint8 u8BlkNo,
        uint8 *pu8RxFlags,
        uint8 *pu8ErrCode
        uint8 *pu8BlkSecurityStatus,
        uint8 au8Dat[]
    );
    

    返回值flags. 是否返回pu8BlkSecurityStatus要看 u8Flags 中 optional_flag。

    // 返回0正确否则 Flags.
    Uint8 readSingleBlk(
        uint8 u8VisitMode, // 1 for address mode, 0 for select mode
        uint8 u8Optionalflag; // 1 return security status;
        uint8 au8UID[8],
        uint8 u8BlkNo,
        uint8 *pu8BlkSecurityStatus, // optionalflag = 1 时,有效;
        uint8 au8Dat[]
    );
    

Write Single Block

  • request

    字段名称 比特数
    SOF
    Flags 8 bits
    Write single block 8 bits
    UID 64 bits
    Block number 8 bits
    Data
    Block length
    CRC16 16 bits
    EOF
  • response

    • 有 Error_flag

      字段名称 比特数
      SOF
      Flags 8 bits
      Error code 8 bits
      CRC16 16 bits
      EOF
    • 无 Error_flag

      字段名称 比特数
      SOF
      Flags 8 bits
      Error code 8 bits
      CRC16 16 bits
      EOF
  • 函数

    int writeSingleBlk(
        uint8 u8Flags,
        uint8 au8UID[8],
        uint8 u8BlkNo,
        uint8 au8Dat[],
        uint8 *pu8RxFlags,
        uint8 *pu8ErrCode
    );
    

Read multiple Blocks

  • request

    字段名称 比特数
    SOF
    Flags 8 bits
    Read multiple block 8 bits
    UID 64 bits
    First block number 8 bits
    Number of blocks 8 bits
    CRC16 16 bits
    EOF
  • response

    • 有 Error_flag

      字段名称 比特数
      SOF
      Flags 8 bits
      Error code 8 bits
      CRC16 16 bits
      EOF
    • 无 Error_flag

      字段名称 比特数
      SOF
      Flags 8 bits
      Block security status 8 bits
      Data
      Block length
      CRC16 16 bits
      EOF

      : Data 和 Block length 的内容根据需要重复。

  • 函数

    int readMultipleBlks(
        uint8 u8Flags,
        uint8 au8UID[8],
        uint8 u8BlkFirstNo,
        uint8 u8BlkNums,
        uint8 *pu8RxFlags,
        uint8 *pu8ErrCode
        uint8 au8BlkSecurityStatus[],
        uint8 au8Dat[]
    );
    

    Write multiple Blocks

  • request

    字段名称 比特数
    SOF
    Flags 8 bits
    Write multiple block 8 bits
    UID 64 bits
    First block number 8 bits
    Number of blocks 8 bits
    Data
    Block length
    CRC16 16 bits
    EOF

    : Data 和 Block length 的内容根据需要重复。

  • response

    • 有 Error_flag

      字段名称 比特数
      SOF
      Flags 8 bits
      Error code 8 bits
      CRC16 16 bits
      EOF
    • 无 Error_flag

      字段名称 比特数
      SOF
      Flags 8 bits
      CRC16 16 bits
      EOF
  • 函数

    int writeMultipleBlks (
        uint8 u8Flags,
        uint8 au8UID[8],
        uint8 u8BlkFirstNo,
        uint8 u8BlkNums,
        uint8 au8Dat[],
        uint8 *pu8RxFlags,
        uint8 *pu8ErrCode
    );