#ifndef __CommDefine__H 
#define __CommDefine__H


//============= 常量定义 ==========================================================================
#define  ZLG522S                   0
#define  ZLG522SP                  1
#define  ZLG600SP                  2
//============= 常量定义 ==========================================================================
//定义A型卡命令
#define REQ_STD						0x26		// 请求(IDLE 卡)命令码	
#define REQ_ALL						0x52		// 请求(ALL  卡)命令码
#define SEL_CODE_LV1				0x93		// 防碰撞/选择等级1命令码
#define SEL_CODE_LV2				0x95		// 防碰撞/选择等级2命令码
#define SEL_CODE_LV3				0x97		// 防碰撞/选择等级3命令码

#define KEYA		                0x60
#define KEYB		                0x61
#define DECREMENT	                0xc0
#define INCREMENT	                0xc1
#define RESTORE		                0xc2
#define ISO14443A	                0x00
#define ISO14443B               	0x80
// 通信命令类型
#define CMD_TYPE_DVC_CONTROL		1			// 设备控制类命令
#define CMD_TYPE_TYPE_A				2			// TypeA(包括Mifare卡)类命令				
#define CMD_TYPE_ISO7816			5			// ISO7816类命令
#define CMD_TYPE_COMM_PROT			6			// 通信协议(包括ISO14443-4)类命令
#define CMD_TYPE_PLUS_CPU			7			// PLUS CPU卡(不包括Mifare卡)类命令
// 波特率设置

// 定义缓冲区大小
#define MAX_SER_SIZE      			72//64+2+6

#define ZLG522S_DELAY_20MS			2
#define ZLG522S_DELAY_500MS			50
#define ZLG522S_DELAY_1000MS		1000
// 定义串行数据缓冲区各字符单元索引值
#define FRAMELEN					0				// 帧长度
#define CMDTYPE						1				// 包号
#define COMMAND						2				// 命令
#define STATUS						2				// 响应状态
#define LENGTH      				3				// 数据长度
#define DATA        				4				// 数据起始位置
#define PRTCLEN						6				// 协议字符长度

//新帧格式定义数据
#define  NewFormatAddlength           10   //同一条命令，新帧数据比旧帧多出的固定长度数据
// 定义串行数据缓冲区各字符单元索引值
#define Addr						0			// 地址
#define Slot						1			// 卡槽
#define MSGseq						2			// 命令包号
#define MSGClass      				3			// 命令类型
#define MSG        				    4			// 命令代码（2字节）
#define MSGLength				    6			// 命令长度（2字节）
#define MSGData                     8           // 命令数据（n字节）

// 通信协议常量
#define STX     					0x20
#define ETX     					0x03
#define ACK							0x06

#define	   TRUE	    1
#define    FALSE	0
#define	   OK      2
//============================================================================
extern unsigned char g_ucSerBuf[72];// 串行数据缓冲区
extern unsigned char g_ucSEQ;


//======================错误类型======================================================
#define CommandOk       0x00                 //命令执行成功
#define RequestErr      0x01                 //请求操作出错
#define AnticollErr1    0x02                 //一级防碰撞操作出错
#define AnticollErr2    0x03                 //二级防碰撞操出错
#define SelectErr1      0x04                 //一级卡选择操作出错
#define SelectErr2      0x05                 //二级卡选择操作出错
#define WriteErr        0x06                 //卡片写操作错误
#define ReadErr         0x07                 //卡片读操作错误
#define MakeCardErr     0x08                 //卡片制作操作失败
#define BlueFormatErr   0x09                 //蓝牙设备名称或MAC地址输入格式出差
#define CardDataCmpErr  0x0A                 //写入卡片数据和读出数据不一致
#define CardAuthErr     0x0B                 //卡片直接密钥验证失败
#define LoadKeyErr      0x0C                 //密钥下载失败
#define ActiveCardErr   0x0D                 //卡片激活失败
#define CardAuthEEErr      0x0E                 //EE密钥验证错误
#define PICCHaltErr     0x0F                 //卡片挂起失败
#define PICCRESTErr     0x10                 //卡片复位失败

#endif              // __CommDefine__H
