#ifndef __CommDefine__H 
#define __CommDefine__H



#define  delaytime   10                      //定义延时时间  表示延时N毫秒

//============= 常量定义 ==========================================================================
#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               	0x04
// 通信命令类型
#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      			300//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	 OLD_TO_NEW	 1             //旧帧转新帧  
#define	 NEW_TO_OLD	 0             //新帧转为旧帧
// 通信协议常量
#define STX     					0x20
#define ETX     					0x03
#define ACK							0x06

#define	   TRUE	    1
#define    FALSE	0
#define	   OK      2
//============================================================================



//======================错误类型======================================================
///////// 设备控制类命令      ////////////////////////////////////////////////////////
#define CommandOk                  0x00                 //命令执行成功
#define ErrPCD_GetDvcInfo          0x01                 //获取设备信息失败
#define ErrPCD_Config              0x02                 //配置PCD接口错误
#define ErrPCD_CLOSE               0x03                 //关闭PCD接口错误
#define ErrPCD_SetISOType          0x04                 //设置IC卡接口协议错误
#define ErrPCD_LoadKey             0x05                 //装载IC卡密钥错误
#define ErrPCD_SetReaderICReg      0x06                 //设置读卡芯片内部寄存器错误
#define ErrPCD_GetReaderICReg      0x07                 //获取读卡芯片内部寄存器错误
#define ErrPCD_SetBaud             0x08                 //设置读卡模块通信波特率错误
#define ErrPCD_SetTXMode           0x09                 //设置天线驱动方式错误
#define ErrPCD_SetFrameMode        0x0A                 //设置模块通信新旧帧格式错误
#define ErrPCD_SetMode_Addr        0x0B                 //设置模块上电工作模式以及地址错误
#define ErrPCD_GetMode_Addr        0x0C                 //获取模块上电工作模式以及地址错误
#define ErrPCD_LoadUserKey         0x0D                 //装载用户密钥错误
#define ErrPCD_ReadEEPROM          0x0E                 //读取模块内部EE错误
#define ErrPCD_WriteEEPROM         0x0F                 //写模块内部EE错误

///////// MifareS50/S70卡类命令 //////////////////////////////////////////////////////// 
#define ErrM1_Request              0x10                 //请求卡操作出错
#define ErrM1_Anticoll             0x11                 //防碰撞操作出错
#define ErrM1_Select               0x12                 //卡选择操作出错
#define ErrM1_CardHalt             0x13                 //卡片挂起操作出错
#define ErrM1_EEAuthkey            0x14                 //用EE密钥验证卡片密钥验证出错
#define ErrM1_DrictAuthKey         0x15                 //卡片直接密钥验证出错
#define ErrM1_Read                 0x16                 //卡片数据读取出错
#define ErrM1_Write                0x17                 //卡片数据写入出差
#define ErrM0_Write                0x18                 //M0卡片写数据出错
#define ErrM1_Value                0x19                 //M1卡值操作出错
#define ErrM1_SetValue             0x1A                 //设置值块的值操作出错
#define ErrM1_GetValue             0x1B                 //获取值块的值操作出错
#define ErrMF_TxPause              0x1C                 //关闭PCD天线信号复位卡片操作出错
#define ErrMF_ActiveCard           0x1D                 //卡片激活操作出错
#define ErrMF_PiccAutoDetect       0x1E                 //卡片自动检测操作出错
#define ErrMF_ReadAutoDetect       0x1F                 //读自动检测数据出错
#define ErrMF_ExchangeBlock        0x20                 //数据交互命令出错

///////// ISO7618  卡命令 //////////////////////////////////////////////////////// 
#define ErrCicc_Reste             0x50                 //卡片复位失败
#define ErrCicc_TPDU              0x51                 //卡片传输命了失败（自动失败T=0还是T=1）
#define ErrCicc_ColdReste         0x52                 //卡片冷复位失败
#define ErrCicc_WarmReste         0x53                 //卡片热复位失败
#define ErrCicc_Deactivation      0x54                 //卡片停活命了失败
#define ErrCicc_PPS               0x55                 //卡片PPS命了是吧 
#define ErrCicc_TP0               0x56                 //T=0命了传输失败
#define ErrCicc_TP1               0x57                 //T=1命令传输失败

///////// ISO14443-4  CPU卡命令 //////////////////////////////////////////////////////// 
#define	ErrPiccA_RATS             0x30                 //A型卡RATS操作出错
#define ErrPiccA_PPS              0x31                 //A型卡PPS操作出错
#define ErrPiccA_DeSelect         0x32                 //A型卡解除激活
#define ErrPiccA_TPCL             0x33                 //T=CL操作出错
#define ErrPiccA_ExchangeBlock    0x34                 //数据交互操作出错
#define ErrPiccA_Pause            0x35                 //第四层A型卡复位出错
#define ErrPiccA_Active           0x36                 //第四层A型卡激活出错
#define ErrPiccB_Active           0x37                 //第四层B型卡激活出错
#define ErrPiccB_Pause            0x38                 //B型卡复位出错
#define ErrPiccB_Request          0x39                 //B型卡请求出错
#define ErrPiccB_Anticoll         0x3A                 //B型卡防碰撞出错
#define ErrPiccB_Attrib           0x3B                 //B型卡修改传输属性出错
#define ErrPiccB_Halt             0x3C                 //B型卡挂起出错

///////// ISO14443-4  Plus CPU卡命令 //////////////////////////////////////////////////////// 
#define ErrPLUS_WritePersoTCL     0x40                 //SL0个人化更新数据出错
#define ErrPLUS_CommitPersoTCL    0x41                 //SL0提交个人化出错
#define ErrPLUS_SL3FirstAuth      0x42                 //SL3 PLUS CPU卡首次直接验证出错
#define ErrPLUS_SL3FirstAuthE2    0x43                 //SL3 PLUS CPU卡首次密钥验证（EE密钥验证）出错
#define ErrPLUS_SL3FollowAuth     0x44                 //SL3 PLUS CPU卡更随验证(直接密钥验证)出错
#define ErrPLUS_SL3FollowAuthE2   0x45                 //SL3 PLUS CPU卡更随验证(E2密钥验证) 出错 
#define ErrPLUS_SL3RestAuth       0x46                 //SL3复位验证出错
#define ErrPLUS_SL3Read           0x47                 //SL3读数据块出错
#define ErrPLUS_SL3Write          0x48                 //SL3写数据块出错
#define ErrPLUS_SL3ValueOperTran  0x49                 //SL3值块操作出错



#endif              // __CommDefine__H