1 module libpafe4d.libpafe; 2 import libusb; 3 4 extern (C) { 5 enum PASORI_TYPE { 6 PASORI_TYPE_S310, 7 PASORI_TYPE_S320, 8 PASORI_TYPE_S330 9 } 10 11 struct pasori { 12 libusb_device **devs; 13 libusb_context *ctx; 14 libusb_device_handle *dh; 15 libusb_device_descriptor desc; 16 17 int b_ep_in, b_ep_out, i_ep_in; 18 int timeout; 19 PASORI_TYPE type; 20 } 21 22 23 struct felica_area { 24 ushort code, attr, bin; 25 felica_area *next; 26 } 27 28 /* DEFINE felica */ 29 struct felica { 30 pasori *p; 31 ushort systemcode; 32 ubyte[8] IDm; 33 ubyte[8] PMm; 34 ushort area_num; 35 felica_area[256] area; 36 ushort service_num; 37 felica_area[256] service; 38 felica *next; 39 } 40 41 struct felica_block { 42 ubyte[8] data; 43 } 44 45 struct felica_block_info { 46 ushort service; 47 ubyte mode; 48 ushort block; 49 } 50 51 /* DEFINE constants */ 52 53 enum FELICA_IDM_LENGTH = 8; 54 enum FELICA_PMM_LENGTH = 8; 55 enum FELICA_BLOCK_LENGTH = 16; 56 57 enum FELICA_AREA_NUM_MAX = 121; 58 59 enum FELICA_POLLING_ANY = 0xffff; 60 enum FELICA_POLLING_SUICA = 0x0003; 61 enum FELICA_POLLING_EDY = 0xfe00; 62 63 64 enum FELICA_SERVICE_SUICA_IN_OUT = 0x108f; 65 enum FELICA_SERVICE_SUICA_HISTORY = 0x090f; 66 enum FELICA_SERVICE_IRUCA_HISTORY = 0xde80; 67 enum FELICA_SERVICE_EDY_NUMBER = 0x110b; 68 enum FELICA_SERVICE_EDY_HISTORY = 0x170f; 69 70 71 enum FELICA_CMD_POLLING = 0; 72 enum FELICA_ANS_POLLING = 1; 73 74 enum FELICA_CMD_REQUEST_SERVICE = 2; 75 enum FELICA_ANS_REQUEST_SERVCCE = 3; 76 77 enum FELICA_CMD_REQUEST_RESPONSE = 4; 78 enum FELICA_ANS_REQUEST_RESPONSE = 5; 79 80 enum FELICA_CMD_READ_WITHOUT_ENCRYPTION = 6; 81 enum FELICA_ANS_READ_WITHOUT_ENCRYPTION = 7; 82 83 enum FELICA_CMD_WRITE_WITHOUT_ENCRYPTION = 8; 84 enum FELICA_ANS_WRITE_WITHOUT_ENCRYPTION = 9; 85 86 enum FELICA_CMD_AUTHENTICATION1 = 0x10; 87 enum FELICA_ANS_AUTHENTICATION1 = 0x11; 88 89 enum FELICA_CMD_AUTHENTICATION2 = 0x12; 90 enum FELICA_ANS_AUTHENTICATION2 = 0x13; 91 92 enum FELICA_CMD_READ_FROM_SECURE_FILE = 0x14; 93 enum FELICA_ANS_READ_FROM_SECURE_FILE = 0x15; 94 95 enum FELICA_CMD_WRITE_TO_SECURE_FILE = 0x16; 96 enum FELICA_ANS_WRITE_TO_SECURE_FILE = 0x17; 97 98 99 enum FELICA_CMD_SEARCH_SERVICE_CODE = 0x0a; 100 enum FELICA_ANS_SEARCH_SERVICE_CODE = 0x0b; 101 102 enum FELICA_CMD_REQUEST_SYSTEM = 0x0c; 103 enum FELICA_ANS_REQUEST_SYSTEM = 0x0d; 104 105 106 enum PASORI2_CMD_SELF_DIAGNOSIS = 0x52; 107 enum PASORI2_ANS_SELF_DIAGNOSIS = 0x53; 108 109 enum PASORI2_CMD_GET_FIRMWARE_VERSION = 0x58; 110 enum PASORI2_ANS_GET_FIRMWARE_VERSION = 0x59; 111 112 enum PASORI2_CMD_SEND_PACKET = 0x5c; 113 enum PASORI2_ANS_SEND_PACKET = 0x5d; 114 115 enum PASORI2_DIAG_COMMUNICATION_LINE_TEST = 0x00; 116 enum PASORI2_DIAG_EEPROM_TEST = 0x01; 117 enum PASORI2_DIAG_RAM_TEST = 0x02; 118 enum PASORI2_DIAG_CPU_FUNCTION_TEST = 0x03; 119 enum PASORI2_DIAG_CPU_FANCTION_TEST = 0x03; 120 enum PASORI2_DIAG_POLLING_TEST_TO_CARD = 0x10; 121 122 123 enum PASORI_ERR_PARM = 1; 124 enum PASORI_ERR_MEM = 2; 125 enum PASORI_ERR_COM = 3; 126 enum PASORI_ERR_DATA = 4; 127 enum PASORI_ERR_CHKSUM = 5; 128 enum PASORI_ERR_FORMAT = 6; 129 enum PASORI_ERR_TYPE = 7; 130 }