📄 s3c2440_iccard.h
字号:
#ifndef S3C2440_ICCARD_H /*S3C2440_ICCARD_H*/
#define S3C2440_ICCARD_H
// sikinzen: 标准定义的命令返回值
#define RES_SUCC 0x9000
#define SELECT_FILE_INVALID 0x6283
#define STATUS_NOT_CHANGE 0x6400
#define FAIL_WRITE_EEPROM 0x6581
#define LC_ERROR 0x6700
#define STATUS_INVALID 0x6901
#define FILETYPE_NOT_MATCH 0x6981
#define SAFE_STATUS_NOT_MEET 0x6982
#define KEY_LOCK 0x6983
#define RANDOM_INVALID 0x6984
#define COND_NOT_MEET 0x6985
#define MESG_DATA_ERROR 0x6988
#define FILE_EXIST 0x6a80
#define FUNCTION_NOT_SUPPORT 0x6a81
#define NOT_FIND_FILE 0x6a82
#define NOT_FIND_RECORD 0x6a83
#define MEM_NOT_ENOUGH 0x6a84
#define P1_P2_ERROR 0x6a86
#define PARA_INVALID 0x6b00
#define CMD_INVALID 0x6d00
#define CLA_INVALID 0x6e00
#define ERROR_NOT_DEFINE 0x6f00
#define PERMANENT_LOCK 0x9303
#define MONEY_INVALID 0x9401
#define KEY_INDEX_NOT_SUPPORT 0x9403
// sikinzen: 自定义的错误
#define ERR_RECORD_LEN 0xFFFC
#define ERR_SHORT_INDEX 0xFFFB
#define ERR_CMD_RESPOND 0xFFFA
#define ERR_ICCARD_PULL_OUT 0xFFF9
#define ERR_WRONG_CARD_TYPE 0xFFF8
#define ERR_ICCARD_LOCK 0xFFF7
#define ERR_UNKNOWN_CARD 0xFFF6
#define ERR_BUF_EMPTY 0xFFF5
#define ERR_TIMEOUT 0xFFF4
#define ERR_NOT_RET_CMD 0xFFF3
#define ERR_ACCESS_MODE 0xFFF2
/****************** 工作卡的头文件 *******************/
typedef struct GZ_HEAD
{
char CardType[2]; //类型:2B,二进制数据,标识当前卡为流通卡 (NP)
char CardNum[8]; //卡号,8B,二进制数据;
char AreaCode[8]; //区码,8B,ASCII码,标识卡分发地的区划编码,用于认证
char name[8]; //姓名,ASCII数据,中文用GB2312表示
char passwd[8];
char WorkArea[40]; // 机构
char WorkAreaID[40]; // 机构ID
char AreaName[4]; // 区划名称
char AreaID[2]; // 区划ID
char CountyID[2]; //县级ID
char ProvinceID[2]; //省级ID
char duty[2]; //职责
} gz_info;
/****************** 流通卡的头文件 *******************/
typedef struct LT_HEAD
{
char ManufacturerId[2]; //卡商:2B,二进制数据,标识卡的供应商
char CardType[2]; //类型:2B,二进制数据,标识当前卡为流通卡 (NP)
char CardNum[8]; //卡号,8B,二进制数据;
char AreaCode[8]; //区码,8B,ASCII码,标识卡分发地的区划编码,用于认证
char name[8]; //姓名,经营范围,发证机关:ASCII数据,中文用GB2312表示
char address[40];
char WorkArea[20];
char MasterCompany[30];
char youxiaoqi[3]; //有效期:年月日,二进制格式,如0x0A,0x02,0x03,表示2010年2月3日
unsigned short MaxIndexRecord;//记录总数,
unsigned short FileNum; //文件数,2字节数字型,采用大端格式存储。
unsigned short RecordPerFile; //每文件记录数,2字节数字型,采用大端格式存储。
unsigned short RecordLen; //每记录长度,2字节数字型,采用大端格式存储。
unsigned short StartRecordLen; //记录状态位长度,2字节数字型,采用大端格式存储。
unsigned short CardNumLen; //证号长度,2字节数字型,采用大端格式存储。
unsigned short TwoDimensionCodeLen; //二维码长度,2字节数字型,采用大端格式存储。
unsigned short KeyEdition; //密钥版本:00和01密钥的版本,二进制数据,从0x0001开始
char Reserve[8]; //预留位[8B]
} lt_head;
/****************** 流通卡的索引文件 *******************/
typedef struct LT_INDEX
{
char ID[16]; // 证号
unsigned short RecordID; //记录号
} lt_index;
/****************** 流通卡的数据文件 *******************/
typedef struct LT_RECORD
{
char RecordStatus[2]; // 记录状态位
char ID[16]; // 证号
char TwoDimensionCode[28]; //二维码数据
} lt_record;
/****************** 规模场卡的头文件 *******************/
typedef struct GM_HEAD
{
char ManufacturerId[2];
char CardType[2];
char CardNum[8];
char AreaCode[8];
char name[8];
char company[40];
char WorkArea[20];
char MasterCompany[30];
unsigned int CunLanLiang;
unsigned int ChuLanLiang;
char youxiaoqi[3];
unsigned short MaxIndexRecord;
unsigned short ValidIndexRecord;
unsigned short RecordLen;
unsigned short RecordFieldLen;
unsigned short StartRecordLen;
unsigned short EndRecordLen;
unsigned short StateRecordLen;
unsigned short EarLen;
unsigned short RecordMaxNum;
unsigned short KeyEdition;
char Reserve[8];
} gm_head;
/****************** 规模场卡的索引文件 *******************/
typedef struct GM_INDEX
{
unsigned short Sn; // 序号
unsigned short QuanHao; //圈号
unsigned short StartRecord; //起始记录号
unsigned short EndRecord; //结束记录号
char RecordStatus[2]; // 记录状态位
} gm_index;
/****************** 规模场卡的数据文件 *******************/
typedef struct GM_RECORD
{
char EarID[20]; //耳标号
} gm_record;
/****************** 散养卡的头文件 *******************/
typedef struct SY_HEAD
{
char ManufacturerId[2];
char CardType[2];
char CardNum[8];
char AreaCode[8];
char village[20];
char town[20];
unsigned int CunLanLiang;
unsigned int ChuLanLiang;
unsigned short MaxIndexRecord;
unsigned short ValidIndexRecord;
unsigned short RecordPerFile;
unsigned short MasterRecordFieldLen;
unsigned short StartRecordLen;
unsigned short EndRecordLen;
unsigned short StateRecordLen;
unsigned short EarLen;
unsigned short RecordMaxNum;
unsigned short KeyEdition;
char Reserve[8];
} sy_head;
/****************** 散养卡的索引文件 *******************/
typedef struct SY_INDEX
{
unsigned short Sn; // 序号
char Master[8]; //畜主
unsigned short StartRecord; //起始记录号
unsigned short EndRecord; //结束记录号
char RecordStatus[2]; // 记录状态位
}sy_index;
/****************** 散养卡的数据文件 *******************/
typedef struct SY_RECORD
{
char EarID[20]; //耳标号
} sy_record;
/****************** 函数声明 *******************/
/********************************************************************
* 原形:int IccardGet_LT_Head(lt_head *lt_head_info);
* 功能:将流通卡的头文件信息读到lt_head_info 指向的结构体中
* 参数:lt_head_info,指向存储信息的结构体
* 返回值: 若成功则返回读到的字节数;
* 若失败则返回错误码的负值.错误码见本头文件
* 说明:
********************************************************************/
int IccardGet_LT_Head(lt_head *lt_head_info);
/********************************************************************
* 原形:int IccardGet_GM_Head(gm_head *gm_head_info);
* 功能:将规模卡的头文件信息读到gm_head_info 指向的结构体中
* 参数:gm_head_info,指向存储信息的结构体
* 返回值: 若成功则返回读到的字节数;
* 若失败则返回错误码的负值.错误码见本头文件
* 说明:
********************************************************************/
int IccardGet_GM_Head(gm_head *gm_head_info);
/********************************************************************
* 原形:int IccardGet_SY_Head(sy_head *sy_head_info);
* 功能:将散养卡的头文件信息读到sy_head_info 指向的结构体中
* 参数:sy_head_info,指向存储信息的结构体
* 返回值: 若成功则返回读到的字节数;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -