#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