完成实验1

This commit is contained in:
2024-06-11 23:30:29 +08:00
parent 5fc6d8f2b4
commit 30189650c2
27 changed files with 503 additions and 0 deletions

View File

@@ -0,0 +1,313 @@
# 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 | |
- 函数
```c
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
- 函数
```c
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 | |
- 函数
```c
int readSingleBlk(
uint8 u8Flags,
uint8 au8UID[8],
uint8 u8BlkNo,
uint8 *pu8RxFlags,
uint8 *pu8ErrCode
uint8 *pu8BlkSecurityStatus,
uint8 au8Dat[]
);
```
返回值flags.
是否返回pu8BlkSecurityStatus要看 u8Flags 中 optional_flag。
```c
// 返回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 | |
- 函数
```c
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 的内容根据需要重复。
- 函数
```c
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 | |
- 函数
```c
int writeMultipleBlks (
uint8 u8Flags,
uint8 au8UID[8],
uint8 u8BlkFirstNo,
uint8 u8BlkNums,
uint8 au8Dat[],
uint8 *pu8RxFlags,
uint8 *pu8ErrCode
);
```