📄 iccard.h
字号:
#ifndef ICCARD_H
#define ICCARD_H
#ifdef __cplusplus
extern "C"
{
#endif
#define MAX_485_GPRS_UART_LEN 120
#define CLK_COUNT_9600 0x30
#define CLK_TX_9600 0x2D
#define RXDING 0x00
#define TXDING 0x01
#define VERIFY_ERROR 0x01
#define CPU_RST(pd) ( CPU_CARD_RST = pd )
#define ESAM_RST(pd) ( ESAM_RST_PIN = pd )
#define CPU_IO(pd) ( CPU_CARD_IO = pd )
#define CPU_IO_DIR(pd) ( CPU_CARD_IO_DIR = pd )
#define ESAM_IO(pd) ( ESAM_IO_PIN = pd )
#define ESAM_IO_DIR(pd) ( ESAM_IO_PIN_DIR = pd )
#define IC_IO(pd) if( Cpu_card_comm.selectDevice == SEL_CARD ) CPU_IO(pd);else ESAM_IO(pd)
#define IC_IO_DIR(pd) if( Cpu_card_comm.selectDevice == SEL_CARD ) CPU_IO_DIR(pd);else ESAM_IO_DIR(pd)
#define EPM_NONE 0 // put off
#define EPM_E__1 1 // incorrect card
#define EPM_E__2 2 // user not match
#define EPM_E__3 3 // incorrect password
#define EPM_E__4 4 // Exit Run
#define EPM_E__5 5 // read file error
#define EPM_E__6 6 // internal auth fatal error
#define EPM_E__7 7 // esam external auth fatal error
#define EPM_E__8 8 // cpu card external auth fatal error
#define EPM_E__9 9 // can't select Elect meter application
#define EPM_E__10 10 // 485 COMM error
#define EPM_E__11 11 // invalid user code
#define EPM_E__12 12 // Get ATR eror
#define EPM_E__13 13 // invalid buy times
#define EPM_E__14 14 // parse frame error, maybe beyond accu limit
#define EPM_E__15 15 // write back error
#define EPM_E__16 16 // check sum error
#define EPM_E__17 17 // invalid meter code
#define EPM_E__18 18 // fill too long
#define EPM_E__19 19 // check card beyond meter number
#define EPM_E__20 20 // checking card write back error for number
#define EPM_E__21 21 // need open account card for empty meter
#define EPM_E__22 22 // write ESAM error
#define EPM_E__23 23 //
#define EPM_E__24 24 //
#define EPM_E__25 25 //
#define EPM_E__26 26 //
#define EPM_E__27 27 // file malformat
#define EPM_E__28 28 // update_key_error
#define SEL_CARD 0
#define SEL_ESAM 1
#define IC_IO_DIR_INPUT 1
#define IC_IO_DIR_OUTPUT 0
#define FILE_ID_RIFFILLING_INFO 1
#define FILE_ID_ESAM_APPLICATION 1
#define IC_WRITE_START_ADDR 5
#define FILE_ID_MODIFY_PASSWORD 0x01
#define RESET_RESPONSE_DATA_NUBER 13
#define MAX_READ_CARD_NUM 1
#define IC_MONEY_START_POS 0x17
#define IC_USERCODE_START_POS 0x03
#define IC_METERCODE_START_POS 0x0D
#define IC_BUY_TIMES_POS 0x1b
#define IC_ALARM3_PWR_POS 0x1F
#define IC_ALARM1_PWR_POS 0x23
#define IC_CONER_PWR_POS 0x27
#define IC_KEY_LEN 0x18
#define USER_CODE_LEN 9
#define USER_METER_LEN 10
#define MAX_PWD_NUM 8
#define USED_METER 0x3B
#define SEL_TYPE_DF 0 //选择目录
#define SEL_TYPE_EF 2 //选择文件
#define AUTH_CPU_INTERNAL 0x04
#define AUTH_ESAM_EXTERNAL 0x05
#define AUTH_CPU_EXTERNAL 0x06
#define FILE_START 0
#define FILE_CMD 1
#define FILE_LEN 2
#define IC_CARD_CLR BIT0
#define IC_CARD_BUY BIT1
#define IC_CARD_PASSWORD BIT2
#define IC_CARD_CHECK BIT3
#define IC_CARD_BUY_ERR BIT4
#define CPUCARD_COMM_STOP() ( TMMK02 = 1 )
#define CPUCARD_COMM_START() ( TMMK02 = 0 )
#define ICCARD_UNLOCK() ( card_in_slot = 0 )
#define ICCARD_LOCK() ( card_in_slot = 1 )
#define ICCARD_WB_STAR (0x50)
#define ICCARD_MAX_DLEN (0x40)
extern uchar card_in_slot;
typedef struct Dummy_Comm485_Parameter
{
uchar verify;
uchar Uart_Data;
uchar State_T_Or_R;
uchar BIT_Count;
uchar FramePointer;
uchar Len_Of_Need_To_Send;
uchar UartState;
uchar ucCS;
uchar selectDevice;
uchar Serial_Buffer[MAX_485_GPRS_UART_LEN];
}Dummy_Comm485_ParameterS;
extern volatile Dummy_Comm485_ParameterS Cpu_card_comm;
extern uchar cd_data[ICCARD_MAX_DLEN];
extern void TM02Init(void);
extern void CPU_card_start_tx(uchar frame_start_Pointer, uchar len);
extern void CPU_card_receive(void);
extern void CPU_card_send(void);
extern void CPU_card_start_rx(void);
extern void CPU_card_comm_init(void);
extern void CPUCardReset();
extern void CPU_card_read_response(uchar read_len);
extern void CPU_card_send_command(uchar s_pos, uchar send_len);
extern void ICCardPolling(void);
extern uchar IC_get_ATR(void);
extern uchar IC_read_file(uchar sel_dev, uchar file_id, uchar s_pos, uchar read_len);
extern uchar IC_select_file(uchar sel_type, ushort file_id);
extern uchar IC_checking_writeback(uchar rec_num);
extern uchar IC_write_file(uchar sel_dev, uchar file_id, uchar s_pos, uchar w_len);
extern uchar IC_get_rand_data(uchar sel_dev, uchar len);
extern uchar IC_get_data_back(uchar sel_dev, uchar len);
extern uchar IC_write_file_MAC(uchar sel_dev, uchar file_id, uchar s_pos, uchar w_len);
extern uchar IC_write_file_ex(uchar sel_dev, ushort s_pos, uchar w_len);
extern uchar ESAM_read_MAC(uchar file_id, uchar start_pos, uchar len);
extern uchar ESAM_update_key();
extern uchar ESAM_update_key();
extern uchar UNIC_internal_auth_proc();
extern uchar UNIC_esam_external_auth_proc();
extern uchar UNIC_ic_external_auth_proc();
extern ulong card_decrypt(ulong key1);
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -