📄 dtm.h
字号:
#ifndef dtm_h
#define dtm_h
#define _OPT_VERSION 1
#include "AT91R40008.h"
#include "lib_i2c.h"
// 类型定义
typedef unsigned char _BYTE;
typedef unsigned short _WORD;
typedef unsigned int _DWORD;
/* 16-bit Flash Data type */
typedef volatile unsigned short flash_word ;
#define U8 unsigned char
#define U16 unsigned short
#define U32 unsigned int
#define REG8 volatile unsigned char
#define REG16 volatile unsigned short
#define REG32 volatile unsigned int
#define VPchar *(REG8 *)
#define VPshort *(REG16 *)
#define VPint *(REG32 *)
#define Pchar (REG8 *)
#define Pshort (REG16 *)
#define Pint (REG32 *)
#define BAUDRATE 115200
// I2C使用的常量定义
#define AT24C256_CHIP1_ADDRESS 0xA0
#define AT24C256_CHIP2_ADDRESS 0xA6
#define AT24C64_I2C_ADDRESS 0xA0
#define FLASH_CHIP1 0x00
#define FLASH_CHIP2 0x01
#define I2CFLASH 0
#define I2CICCARD 1
#define AT24C256_PAGE_SIZE 64
#define AT24C64_PAGE_SIZE 16
#define I2CICCARDSPEED 100000
#define I2CFLASHSPEED 80000
// 常量定义
#define RECBUF_LEN 2048
// 定义加密解密用常量
#define B_BINFO 0x01 // 加密最基本的信息
#define B_DINFO 0x02 // 加密动态信息
#define B_FINFO 0x04 // 解密指纹信息
#define B_DIEF 0x08 // 加密日志信息
#define B_TIEF 0x10 // 加密TIEF文件信息
// 指纹评分的界限
#define C_FIGTHVAL 20 // 指纹评分的界限
#define GETFEATURESFROMDCBT 0x00
#define GETFEATURESFROMBIEF 0x01
// Flash使用的常量
#define FLASH1_DAT_ADDRESS 0x0000 // 第一个DAT表项在FLASH中的地址
#define FLASH1_SPB_ADDRESS 0x0005 // 第一个SPB表项在FLASH中的地址
#define FLASH1_KEY_ADDRESS 0x0018 // 第一个KEY表项在FLASH中的地址
#define FLASH1_CDTI_ADDRESS 0x0059 // 第一个CDTI表项在FLASH中的地址
#define FLASH1_QUEUE_ADDRESS 0x0094 // 第一组队列指针在FLASH中的地址
#define FLASH1_CSI_ADDRESS 0x009A // DCBT表项在FLASH中的地址
#define FLASH1_DCBT_ADDRESS 0x009E // DCBT表项在FLASH中的地址
#define FLASH1_LOGBUF_ADDRESS 0x1AFE // 日志存储区在FLASH中的地址
#define MAXFLASHLOGITEM_1 1436 // 第一片FLASH中的日志文件条数
#define FLASH2_DAT_ADDRESS 0x0000 // 第二个DAT表项在FLASH中的地址
#define FLASH2_SPB_ADDRESS 0x0005 // 第二个SPB表项在FLASH中的地址
#define FLASH2_KEY_ADDRESS 0x0018 // 第二个KEY表项在FLASH中的地址
#define FLASH2_CDTI_ADDRESS 0x0059 // 第二个CDTI表项在FLASH中的地址
#define FLASH2_QUEUE_ADDRESS 0x0094 // 第一组队列指针在FLASH中的地址
#define FLASH2_CSI_ADDRESS 0x009A // DCBT表项在FLASH中的地址
#define FLASH2_FINGER_ADDRESS 0x009E // 指纹数据区在FLASH中的地址
#define FLASH2_LOGBUF_ADDRESS 0x54DE // 日志存储区在FLASH中的地址
#define MAXFLASHLOGITEM_2 613 // 第一片FLASH中的日志文件条数
#define MAXFLASHLOGITEM 2049 // FLASH中日志文件总条数
// 内存和FLASH中各种数据结构的长度信息
#define LENOFDCB 211 // DCB表项的长度,含CRC
#define LENOFDAT 5 // DAT表项的长度,含CRC
#define LENOFSPB 19 // SPB表项的长度,含CRC
#define LENOFCSI 4 // CSI表项的长度,含CRC
#define LENOFKEY 65 // KEY表项的长度,含CRC
#define LENOFCDTI 59 // CDTI表项的长度,含CRC
#define LENOFDCBT 32 // DCBT表的DCB项数
#define LENOFLOGBUF1 0x64F8 // FLASH中第一个日志缓冲区的大小
#define LENOFLOGBUF2 0x3F12 // FLASH中第二个日志缓冲区的大小
#define LENOFQUEUEPOINT 6 // FLASH中队列指针的长度
#define LENOFMB 337 // 指纹模板的长度,含CRC
#define LENOFTZ 512 // 指纹特征的长度,含CRC
#define LENOFHZLIB 127 // 程序中使用到的字符的个数
#define VIDEOCOL 128
#define VIDEOPAGE 8
#define MAXFEATURE 64
#define LENOFPACKETDATA 1024
#define LENOFFLASHBOOTBLOCK 16*1024
#define LENOFFLASHPARABLOCK 8*1024
#define LENOFFLASHMAINBLOCK 480*1024
// IC卡各种数据结构的长度信息
#define LENOFIDEF 9 // IDEF文件的长度,含CRC
#define LENOFBIEFBASEINFO 814 // BIEF中静态信息的长度
#define LENOFBIEFTRAININFO 35 // BIEF中训练信息长度,含CRC
#define LENOFBIEFTIMEINFO 11 // BIEF中时间信息长度,含CRC
#define LENOFBIEF LENOFBIEFBASEINFO+LENOFBIEFTRAININFO*2+LENOFBIEFTIMEINFO*2 //906
// BIEF文件的长度
#define LENOFSTUDENTLOG 14 // 学员IC卡中LOG文件的长度,含CRC
#define LENOFCOACHLOG 18 // 教练IC卡中LOG文件的长度,含CRC
// IC卡使用的常量
#define IC_IDEF_ADDRESS 0 // IC卡中IDEF文件的偏移
#define IC_BIEF_ADDRESS LENOFIDEF // IC卡中BIEF文件静态信息的偏移
#define IC_BIEF_TRAININFO_ADDRESS IC_BIEF_ADDRESS+LENOFBIEFBASEINFO // IC卡中BIEF文件训练信息的偏移
#define IC_BIEF_TIMEINFO_ADDRESS IC_BIEF_TRAININFO_ADDRESS+LENOFBIEFTRAININFO*2 // ID卡中BIEF文件买钟信息的偏移
#define IC_DIEF_ADDRESS IC_BIEF_TIMEINFO_ADDRESS+LENOFBIEFTIMEINFO*2 // ID卡中DIEF文件的偏移
#define IC_TIEF_ADDRESS 0 // ID长度
// 电源信息
#define ON 1
#define OFF 0
#define ISASCII 1
#define ISHEX 0
#define TRUE 1
#define FALSE 0
// 定义按键
#define LOGIN_PGUP_KEY 0x2000 // 签到/上翻键
#define ENTER_MENU_KEY 0x4000 // 确认/菜单键
#define CANCEL_CHANGE_KEY 0x0800 // 取消/换人键
#define LOGOUT_PGDN_KEY 0x1000 // 签退/下翻键
#define MENU_LOGIN_KEY 0x8001 // 菜单虚拟键
#define MENU_QUERY_KEY 0x8002 // 菜单虚拟键
#define MENU_TMPLOG_KEY 0x8003 // 菜单虚拟键
#define MENU_SETUP_KEY 0x8004
// 卡类型
#define ADMINCARD 0x01
#define COACHCARD 0x02
#define STUEDENTCARD 0x03
#define EXAMCARD 0x04
#define DADMINCARD 0x05
#define SADMINCARD 0x06
//队列指针类型的常量
#define OUTQUEUE 0x1
#define INQUEUE 0x2
// 定义系统的状态
#define S_INIT 0 // 初始化状态
#define S_WAIT 10 // 等待状态
#define S_WAIT_TRAIN 20 // 等待训练状态
#define S_TRAINING 30 // 训练状态
#define S_SETUP 40 // 设置状态
#define S_QUERY 50 // 查询状态
// 语言信息
#define S_InsertIC 0x01 // 提示"请插卡"
#define S_RemoveIC 0x02 // 提示"请拔卡"
#define S_VerifyOk 0x03 // 提示"验证通过"
#define S_FingerDown 0x04 // 提示"请放手指"
#define S_FingerUp 0x08 // 提示"请抬手指"
#define S_VerifyFail 0x06 // 提示"验证失败"
#define S_OperateFail 0x0C // 提示"操作终止"
#define S_OperateOk 0x09 // 提示"操作完毕"
// 时钟
#define SPI_BASE_DELAY_TIME (MCK/10000000)
// 显示类
#define SAVEDISP 0
#define NOTRECOVERYDISP 0
#define RECOVERYDISP 1
#define NOTWAITDISP 0
#define WAITDISP 1
#define QUERYMODE 0
#define SETUPMODE 1
// 显示信息
#define M_LOGOUTOK 0xC0 // 成功签退
#define M_RESET 0xC1 // 请重新启动
#define M_LOGINOK 0xC2 // 成功签退
#define M_FINGERDOWN 0xC3 // 请放手指
#define M_FINGERUP 0xC4 // 请抬手指
#define M_VERIFYOK 0xC5 // 指纹验证通过
#define M_VERIFYFAIL 0xC6 // 指纹验证失败
#define M_INDEXEMPTY 0xC7 // 没有签到学员
#define M_ERROR 0xC8 // 操作出错
#define M_NOLOGOUT 0xCA // 不允许教练签退
#define M_MEMERROR 0xCB // 存储器操作出错
#define M_ICERROR 0xCC // 卡操作出错
#define M_WAIT 0xCD // 请等待
#define M_NOFINGERDOWN 0xCE // 未检测到手指
#define M_KPARAZERO 0xCF // K系数不能为0
#define M_SETUPERROR 0xD0 // 系统设置错误
// 函数返回信息
#define C_OK 0x00 // 操作正确
#define C_CMDERR 0x01 // 命令字错误
#define C_PARAERR 0x02 // 命令参数错误
#define C_CRCERR 0x03 // 校验和错误
#define C_ICTIMEOUT 0x10 // 卡超时错误
#define C_ICNOTINIT 0x11 // 卡未初始化
#define C_ICINITNOTEND 0x12 // 卡初始化未结束
#define C_ICLOCKED 0x13 // 卡锁定
#define C_ICUNKNOWN 0x14 // 卡状态未知
#define C_ICINVALID 0x15 // 卡无效
#define C_ICOPTERR 0x16 // 卡操作失败
#define C_ICVERIFYERR 0x17 // 卡回读错误
#define C_ICCRCERR 0x18 // 卡校验和错误
#define C_NOFIG 0x19 // 无指纹信息
#define C_PWDERR 0x1B // 操作员口令错误
#define C_NOIC 0x20 // 卡未插入
#define C_ITEMNOTFOUND 0x21 // 柜员内部编号不匹配
#define C_INDEXFULL 0x23 // 索引已经满
#define C_DUPCLERK 0x24 // 柜员号已经存在
#define C_CLERKNOTFOUND 0x25 // 找不到对应的柜员
#define C_FIGIMGERR 0x30 // 规定时间未采集到指纹图像
#define C_FIGENRERR 0x31 // 指纹登录错误
#define C_FIGCMPERR 0x32 // 指纹不匹配
#define C_FIGSMPERR 0x33 // 指纹采样错误
#define C_FIGNOMB 0x34 // 没有采集过指纹模板
#define C_ICCHANGED 0x40 // 卡号不匹配
#define C_TIMEOUT 0x50 // 通讯超时错误
#define C_NOCKINFO 0x60 // 没有权限信息
#define C_CKINFOERR 0x61 // 磁卡数据错误
#define C_FIDERROR 0x70 // FID模块操作错误
#define C_FIDACKERROR 0x71 // FID模块操作错误,命令返回错误应答
#define C_ENROLLERROR 0x72 // 指纹采集失败
#define C_OVERFLOW 0x81 // 取DIEF文件长度越界
#define C_FLASHERR 0x91 // 读写FLASH错误
#define C_FLASHFULL 0x92 // FLASH中的队列已经满
#define C_FLASHCRCERR 0x93 // 读写FLASH错误
#define C_FLASHVERIFYERR 0x94 // 回读错误
#define C_NOTOK 0xff // 通用错误
#define C_ICNOTMODIFIED 0x00 // IC卡没有修改过
#define C_CKCMD 0x00 // 表示收到的命令为磁卡命令
#define C_PROCESSCMD 0x01 // 表示收到的命令为处理命令
#define C_NOTCOACHIC 0xA0 // 非教练卡
#define C_ERRORKEY 0xA1 // 按键错误
#define C_CANCELED 0xA2 // 操作被取消
#define C_END 0xA3 // 读FLASH时结束,读完队列中当前内容后,队列为空
#define C_CMPERR 0xA4 // FIDRecieve接收到的信息比较错误
#define C_FINGERTIMEOUT 0xA5 // 未在规定的时间内放置手指错误
#define C_EMPTYQUEUE 0xA6 // 读队列前,判断队列的内容为空,不读
#define C_DOWNSTATUSERROR 0xA7 // 下载时手持机状态错误
#define C_DATETIMEERROR 0xA8 // 时间日期错误
#define C_NOTADMINIC 0xA9 // 非管理员卡
// 读写操作信息
#define ICREAD 0x0
#define ICWRITE 0x1
// 存储器映象信息
#define EBI_CS1 ((unsigned int )0x400000) //0x400000
#define wADDRESS (Pint(EBI_CS1)) // CPLD
#define BASE_CS2 ((unsigned int )0x20000000)
#define pCPLD (Pchar(BASE_CS2)) // CPLD
#define BASE_CS3 ((unsigned int )0x30000000)
#define pBCT (Pchar(BASE_CS3)) // CPLD
// BCT寄存器地址
#define BCT_CRL 0x00
#define BCT_CRH 0x01
#define BCT_CSRL 0x02
#define BCT_CSRH 0x03
#define BCT_VRLL 0x04
#define BCT_VRLH 0x05
// BCT寄存器常量
#define BCT_CRL_PDS (1<<3)
#define BCT_CRL_LDS (1<<2)
#define BCT_CRH_SLM (1<<3)
#define BCT_CRH_DCI (1<<2)
#define BCT_CSRL_SOCK1 (1<<3)
#define BCT_CSRL_SOCK2 (1<<2)
#define BCT_CSRH_TXDR (1<<3)
#define BCT_CSRH_SDOUT (1<<2)
#define BCT_VRLL_VRL3 (1<<3)
#define BCT_VRLL_VRL2 (1<<2)
#define BCT_VRLL_VRL1 (1<<1)
#define BCT_VRLL_VRL0 (1<<0)
#define BCT_VRLH_VRL5 (1<<3)
#define BCT_VRLH_VRL4 (1<<2)
#define BCT_VRLL_MASK BCT_VRLL_VRL3|BCT_VRLL_VRL2|BCT_VRLL_VRL1|BCT_VRLL_VRL0
#define BCT_VRLH_MASK BCT_VRLH_VRL5|BCT_VRLH_VRL4
// BCT延时时间信息
#define BCT_REG_DELAY 1
#define BCT_WE_DELAY 1
#define BCT_RESET_DELAY (10*10000)
#define BCT_DCI_DELAY 1 /* 150us */
#define BCT_DSC_DELAY 0
#define BCT_OPEN_WAIT (1000*10000)
#define BCT_INIT_WAIT (1000*10000)
#define BCT_SAMPLE_WAIT (1000*10000)
// BCT图形长宽信息
#define BCTWIDTH 256
#define BCTHEIGHT 384
#define IMG_WIDTH 160
#define IMG_HEIGHT 240
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -