/************************************************************************************************** * * reader header file * name : reader.h * * **************************************************************************************************/ enum myCardType { CT_UNKNOWN = 0, CT_SLE4432 = 1, CT_SLE4442 = 2, CT_SLE4418 = 3, CT_SLE4428 = 4, CT_SLE4406 = 5, CT_SLE4436 = 6, CT_AT88SC101 = 7, CT_AT88SC102 = 8, CT_X76F640 = 9, CT_AT24C01A = 10, CT_AT24C02 = 11, CT_AT24C04 = 12, CT_AT24C08 = 13, CT_AT24C16 = 14, CT_AT24C32 = 15, CT_AT24C64 = 16, CT_AT24C128 = 17, CT_AT24C256 = 18, CT_AT24C512 = 19, CT_AT88SC1604 = 20, CT_AT88SC1608 = 21, CT_AT88SC153 = 22, CT_AT45D041 = 23, CT_NO_CARD = 1000 }; enum myErrorCode { ERR_SUCCESS = 0, ERR_NO_CARD, ERR_TIMEOUT, ERR_COUNTER, ERR_PSC1, ERR_PSC2, ERR_FORMAT, ERR_NOT_ENOUGH_MEMORY, ERR_CREATE_PORT_FILE, ERR_GET_COMM_STATE, ERR_SET_COMM_STATE, ERR_SET_COMM_MASK, ERR_SET_COMM_TIMEOUTS, ERR_CREATE_THREAD, ERR_NULL_PORT_HANDLE, ERR_LAST }; // // int WINAPI OpenPort( char *PortName, int *PortHandle ); int WINAPI ClosePort( ); // // int WINAPI SelectPort( int PortHandle ); // // int WINAPI PowerOn( ); int WINAPI PowerOff( ); // // int WINAPI IssueCommandAndWait( char Command, char *Data ); int WINAPI IssueCommandNoWait( char Command, char *Data ); // // void WINAPI PackBufferBinary( char *Out, char In1, char *In2 ); // // int WINAPI CardPresent( ); int WINAPI CardChanged( ); int WINAPI GetCardType( char *ATRBuffer ); char * WINAPI GetCardName( int CardType ); int WINAPI ReaderVersion( ); // 4428 prototypes // int WINAPI Read_4428_With_PB( int StartPos, int NOB, char *Bfr, char *PB_Bfr ); int WINAPI Read_4428_NO_PB( int StartPos, int NOB, char *Bfr ); int WINAPI Write_4428( int StartPos, char DestByte, char PBSetFlag ); // PBSetFlag == 1 then set PB int WINAPI Verify_4428_PSC( char PSC1, char PSC2 ); int WINAPI Read_4428_SM( char *SM_Bfr, char *SM_PB_Bfr ); // SM_Bfr, SM_PB_Bfr : char [ 3 ] // 4442 // int WINAPI Read_4442_With_PB( int StartPos, int NOB, char *Bfr, char *PB_Bfr ); int WINAPI Read_4442_NO_PB( int StartPos, int NOB, char *Bfr ); int WINAPI Read_4442_PB( char *PB_Bfr ); // bit buffer int WINAPI Write_4442_PB( int Address ); // bit address int WINAPI Write_4442( int StartPos, char DestByte, char PBSetFlag ); // PBSetFlag == 1 then set PB int WINAPI Write_4442_Array( int StartPos, int NOB, char *Bfr, char *PBSetFlag ); int WINAPI Verify_4442_PSC( char PSC1, char PSC2, char PSC3 ); int WINAPI Read_4442_SM( char *SM_Bfr ); // SM_Bfr: char [ 4 ] int WINAPI Write_4442_SM( int SMAddress, char SMByte ); // 88sc102 // int WINAPI Read_102_Bit( int StartBitAddress, int NOBit, char *Data ); int WINAPI Write_102_Bit( int StartBitAddress, int NOBit, char *Data ); int WINAPI Read_102_Byte( int ByteAddress, char *Data ); int WINAPI Write_102_Byte( int ByteAddress, char Data ); int WINAPI Read_102_Byte_Array( int ByteAddress, int NOB, char *Data ); int WINAPI Write_102_Byte_Array( int ByteAddress, int NOB, char *Data ); int WINAPI Read_102_Word( int WordAddress, char *Data ); int WINAPI Write_102_Word( int WordAddress, char *Data ); int WINAPI Erase_102_Word( int WordAddress ); int WINAPI Erase_102_Word_Array( int WordAddress, int WordCount ); int WINAPI Verify_102_SC( char *SCArray ); int WINAPI Verify_102_EZ1( char *EZ1Array ); int WINAPI Verify_102_EZ2( char *EZ2Array ); int WINAPI Erase_102_Global( ); int WINAPI Erase_102_AZ1( char *EZArray ); int WINAPI Erase_102_AZ2( char *EZArray ); int WINAPI Erase_102_AZ2_EC( char *EZArray ); int WINAPI Fuse_High_102( ); int WINAPI Fuse_Low_102( ); int WINAPI Blow_Manufacturer_Fuse_102( ); int WINAPI Blow_EC2EN_Fuse_102( ); int WINAPI Blow_Issuer_Fuse_102( ); // 4406 int WINAPI Read_4406( char *Data ); // int WINAPI Read_4436( char *Data ); // X76F640 int WINAPI Read_X76F640( char *Data ); // AT24C01A/02 int WINAPI Read_AT24C01A( int Address, int NOB, char *Data ); int WINAPI Write_AT24C01A_Byte( int Address, char Data ); int WINAPI Write_AT24C01A_Page( int Address, int NOB, char *Data ); // AT24C04/08/16 int WINAPI Read_AT24C16( int Address, int NOB, char *Data ); int WINAPI Write_AT24C16_Byte( int Address, char Data ); int WINAPI Write_AT24C16_Page( int Address, int NOB, char *Data ); // AT24C32/64 int WINAPI Read_AT24C64( int Address, int NOB, char *Data ); int WINAPI Write_AT24C64_Byte( int Address, char Data ); int WINAPI Write_AT24C64_Page( int Address, int NOB, char *Data ); // AT24C128/256 int WINAPI Read_AT24C256( int Address, int NOB, char *Data ); int WINAPI Write_AT24C256_Byte( int Address, char Data ); int WINAPI Write_AT24C256_Page( int Address, int NOB, char *Data ); //AT88SC1608 int WINAPI Select_1608_User_Zone( int ZoneAddr ); // ZoneAddr = 0 - 8 int WINAPI Read_1608_User_Zone( int ByteAddr, int NOB, char *Data ); int WINAPI Write_1608_User_Zone( int ByteAddr, int NOB, char *Data ); int WINAPI Read_1608_Configuration( int ByteAddr, int NOB, char *Data ); int WINAPI Write_1608_Configuration( int ByteAddr, int NOB, char *Data ); int WINAPI Read_1608_Fuses( char *Fuses ); int WINAPI Write_1608_Fuses( ); int WINAPI Verify_1608_Password( int ReadWrite, int SetNumber, char *Password ); int WINAPI Init_1608_Authentication( char *Q0 ); int WINAPI Verify_1608_Authentication( char *Q1 ); int WINAPI Compute_Challenge( char *Q0, char *GC, char *Ci, char *Q1, char *Q2 ); //AT88SC153 int WINAPI Write_153( int ZoneNumber, int Address, int NOB, char *Data ); int WINAPI Read_153( int ZoneNumber, int Address, int NOB, char *Data ); int WINAPI Verify_Password_153( int ReadWrite, int SetNumber, char *Password ); int WINAPI InitializeAuthentication_153( char *Q ); int WINAPI VerifyAuthentication_153( char *CH ); int WINAPI ReadFuse_153( char *Fuse ); int WINAPI BlowFuse_153( int FuseNumber ); //AT45D041 int Reset_45D041( ); int Status_45D041( char *StatusByte ); int Read_Main_45D041( int Page, int ByteAddress, int NOB, char *Data ); int Read_Buffer_45D041( int Buffer, int ByteAddress, int NOB, char *Data ); int Transfer_45D041( int Page, int Buffer ); int Compare_45D041( int Page, int Buffer ); int Buffer_Write_45D041( int Buffer, int ByteAddress, int NOB, char *Data ); int Program_Erase_45D041( int Buffer, int Page ); int Program_No_Erase_45D041( int Buffer, int Page ); int Program_Main_45D041( int Buffer, int Page, int ByteAddress, int NOB, char *Data ); int Rewrite_45D041( int Buffer, int Page ); //Des encrypto & decrypto int WINAPI LoadKey( char *KeyBytes ); int WINAPI Encrypto( char *InputBytes, char *OutputBytes ); //bfr ovrdble int WINAPI Decrypto( char *InputBytes, char *OutputBytes ); //bfr ovrdble