98 lines
3.5 KiB
C
98 lines
3.5 KiB
C
#ifndef _MIFARE_H_
|
||
#define _MIFARE_H_
|
||
|
||
// 定义Mifare认证密钥类型
|
||
#define KEY_A_M1 0
|
||
#define KEY_B_M1 1
|
||
|
||
// 声明全局变量
|
||
extern unsigned char SECTOR,BLOCK,BLOCK_NUM;
|
||
extern unsigned char BLOCK_DATA[16];
|
||
extern unsigned char KEY_A[16][6];
|
||
extern unsigned char KEY_B[16][6];
|
||
|
||
/**
|
||
* @brief Mifare卡事件处理函数(示例)。
|
||
* @return 操作状态,SUCCESS表示成功,FAIL表示失败。
|
||
*/
|
||
extern unsigned char MIFARE_CARD_EVENT(void);
|
||
|
||
/**
|
||
* @brief 清除Mifare卡加密认证标志。
|
||
* @return 无。
|
||
*/
|
||
extern void Mifare_Clear_Crypto(void);
|
||
|
||
/**
|
||
* @brief 将6字节的Mifare密钥加载到芯片的密钥缓冲区。
|
||
* @param mifare_key [in] 指向6字节密钥数组的指针。
|
||
* @return 操作状态,SUCCESS表示成功,FAIL表示失败。
|
||
*/
|
||
unsigned char Mifare_LoadKey(unsigned char *mifare_key);
|
||
|
||
/**
|
||
* @brief 执行Mifare卡的传输(Transfer)命令。
|
||
* @param block [in] 块号。
|
||
* @return 操作状态,SUCCESS表示成功,FAIL表示失败。
|
||
*/
|
||
extern unsigned char Mifare_Transfer(unsigned char block);
|
||
|
||
/**
|
||
* @brief 执行Mifare卡的恢复(Restore)命令。
|
||
* @param block [in] 块号。
|
||
* @return 操作状态,SUCCESS表示成功,FAIL表示失败。
|
||
*/
|
||
extern unsigned char Mifare_Restore(unsigned char block);
|
||
|
||
/**
|
||
* @brief 将4字节数据格式化为Mifare值块格式并写入指定块。
|
||
* @param block [in] 目标块号。
|
||
* @param data_buff [in] 指向4字节源数据的指针。
|
||
* @return 操作状态,SUCCESS表示成功,FAIL表示失败。
|
||
*/
|
||
extern unsigned char Mifare_Blockset(unsigned char block,unsigned char *data_buff);
|
||
|
||
/**
|
||
* @brief 对Mifare卡的指定值块执行增值操作。
|
||
* @param block [in] 值块的块号。
|
||
* @param data_buff [in] 指向4字节增值数据的指针。
|
||
* @return 操作状态,SUCCESS表示成功,FAIL表示失败。
|
||
*/
|
||
extern unsigned char Mifare_Blockinc(unsigned char block,unsigned char *data_buff);
|
||
|
||
/**
|
||
* @brief 对Mifare卡的指定值块执行减值操作。
|
||
* @param block [in] 值块的块号。
|
||
* @param data_buff [in] 指向4字节减值数据的指针。
|
||
* @return 操作状态,SUCCESS表示成功,FAIL表示失败。
|
||
*/
|
||
extern unsigned char Mifare_Blockdec(unsigned char block,unsigned char *data_buff);
|
||
|
||
/**
|
||
* @brief 向Mifare卡写入一个16字节的数据块。
|
||
* @param block [in] 要写入的块号 (0x00 - 0x3F)。
|
||
* @param data_buff [in] 指向16字节数据的指针。
|
||
* @return 操作状态,SUCCESS表示成功,FAIL表示失败。
|
||
*/
|
||
extern unsigned char Mifare_Blockwrite(unsigned char block,unsigned char *data_buff);
|
||
|
||
/**
|
||
* @brief 从Mifare卡读取一个16字节的数据块。
|
||
* @param block [in] 要读取的块号 (0x00 - 0x3F)。
|
||
* @param data_buff [out] 指向16字节缓冲区的指针,用于存储读取的数据。
|
||
* @return 操作状态,SUCCESS表示成功,FAIL表示失败。
|
||
*/
|
||
extern unsigned char Mifare_Blockread(unsigned char block,unsigned char *data_buff);
|
||
|
||
/**
|
||
* @brief 对Mifare Classic卡片的指定扇区进行认证。
|
||
* @param key_mode [in] 认证模式,`KEY_A_M1` (0) 表示使用密钥A,`KEY_B_M1` (1) 表示使用密钥B。
|
||
* @param sector [in] 要认证的扇区号 (0-15)。
|
||
* @param mifare_key [in] 指向6字节认证密钥的指针。
|
||
* @param card_uid [in] 指向4字节卡片UID的指针。
|
||
* @return 操作状态,SUCCESS表示认证成功,FAIL表示失败。
|
||
*/
|
||
extern unsigned char Mifare_Auth(unsigned char key_mode,unsigned char sector,unsigned char *mifare_key,unsigned char *card_uid);
|
||
|
||
#endif
|