IDTech iOS SDK Guide  1.1.166.045
API reference for NEO2
IDTCommon.h
1 //
2 // IDTCommon.h
3 // IDTech
4 //
5 // Created by Randy Palermo on 5/4/15.
6 // Copyright (c) 2015 IDTech Products. All rights reserved.
7 //
8 
9 
10 
13 typedef struct {
14  bool iccPower;
15  bool cardSeated;
16  bool latchClosed;
17  bool cardPresent;
20 
21 
25 typedef struct {
26  BOOL sendIFS;
27  BOOL explicitPPS;
30  unsigned char* pps;
31  unsigned char ppsLength;
33 #ifndef UNIPAY_SHOULD_SKIP_THIS
34 
42 typedef struct {
43  unsigned char hashAlgorithm;
44  unsigned char encryptionAlgorithm;
45  unsigned char rid[5];
46  unsigned char index;
47  unsigned char exponentLength;
48  unsigned char keyLength;
49  unsigned char exponent[3];
50  unsigned char key[248];
51 
52 } CAKey;
53 
54 
58 typedef struct {
59  unsigned char aid[16];
60  unsigned char aidLen;
61 } AIDEntry;
62 
66 typedef struct {
67  unsigned char prePANClear;
68  unsigned char postPANClear;
69  unsigned char maskChar;
70  unsigned char displayExpDate;
71  unsigned char baseKeyType;
72  unsigned char encryptionType;
73  unsigned char encryptionOption;
74  unsigned char maskOption;
83 
84 
92 typedef struct {
93  unsigned char acquirerIdentifier[6];
94  unsigned char aid[16];
95  unsigned char aidLen;
97  unsigned char applicationVersionNumber[2];
98  unsigned char XAmount[3];
99  unsigned char YAmount[3];
100  unsigned char skipTACIACDefault;
101  unsigned char tac;
102  unsigned char floorlLimitChecking;
104  unsigned char velocitiyChecking;
105  unsigned char tACDenial[5];
106  unsigned char tACOnline[5];
107  unsigned char tACDefault[5];
108  unsigned char terminalFloorLimit[3];
109  unsigned char targetPercentage;
110  unsigned char thresholdValue[3];
111  unsigned char maxTargetPercentage;
112  unsigned char defaultTDOL;
113  unsigned char tdolValue[252];
114  unsigned char tdolLen;
115  unsigned char defaultDDOL;
116  unsigned char ddolValue[252];
117  unsigned char ddolLen;
118  unsigned char transactionCurrencyCode[2];
120 
121 } ApplicationID;
122 
123 
131 typedef struct {
132  unsigned char terminalCountryCode[2];
134  unsigned char terminalType;
135  unsigned char emvContact;
136  unsigned char terminalCapabilities[3];
137  unsigned char additionalTerminalCapabilities[5];
138  unsigned char emvContactless;
139  unsigned char magstripe;
140  unsigned char pinTimeOut;
141  unsigned char batchManaged;
142  unsigned char adviceManaged;
143  unsigned char pse;
144  unsigned char autoRun;
145  unsigned char predefinedAmount[3];
146  unsigned char pinByPass;
147  unsigned char referalManaged;
148  unsigned char defaultTAC;
149  unsigned char defaultTACDenial[5];
150  unsigned char defaultTACOnline[5];
151  unsigned char defaultTACDefault[5];
152  unsigned char notRTS;
153  unsigned char notVelocity;
154  unsigned char cdaType;
155 } TerminalData;
156 
163 typedef struct {
164  unsigned char rid[5];
165  unsigned char index;
166  unsigned char serialNumber[3];
167 } CRLEntry;
168 
169 #endif
170 //Versioning
171 
173 typedef enum _CAPTURE_ENCODE_TYPE{
174  CAPTURE_ENCODE_TYPE_UNKNOWN=0,
175  CAPTURE_ENCODE_TYPE_ISOABA=1,
176  CAPTURE_ENCODE_TYPE_AAMVA=3,
177  CAPTURE_ENCODE_TYPE_Other=4,
178  CAPTURE_ENCODE_TYPE_Raw=5,
179  CAPTURE_ENCODE_TYPE_JIS_I=6,
180  CAPTURE_ENCODE_TYPE_JIS_II,
181  CAPTURE_ENCODE_TYPE_CTLS_VISA_K1,
182  CAPTURE_ENCODE_TYPE_CTLS_MC,
183  CAPTURE_ENCODE_TYPE_CTLS_VISA_K3,
184  CAPTURE_ENCODE_TYPE_CTLS_AMEX,
185  CAPTURE_ENCODE_TYPE_CTLS_JCB,
186  CAPTURE_ENCODE_TYPE_CTLS_DISCOVER,
187  CAPTURE_ENCODE_TYPE_CTLS_UNIONPAY,
188  CAPTURE_ENCODE_TYPE_CTLS_OTHER,
189  CAPTURE_ENCODE_TYPE_MANUAL_ENTRY
190 } CAPTURE_ENCODE_TYPE;
191 
193 typedef enum{
194  CAPTURE_ENCRYPT_TYPE_UNKNOWN=0,
195  CAPTURE_ENCRYPT_TYPE_TDES=1,
196  CAPTURE_ENCRYPT_TYPE_AES,
197  CAPTURE_ENCRYPT_TYPE_NONE, CAPTURE_ENCRYPT_TRANS_ARMOR_PKI, CAPTURE_ENCRYPT_VOLTAGE, CAPTURE_ENCRYPT_VISA_FPE, CAPTURE_ENCRYPT_VERIFONE_FPE, CAPTURE_ENCRYPT_DESJARDIN, CAPTURE_ENCRYPT_TRANS_ARMOR_TDES,
198  CAPTURE_ENCRYPT_TYPE_NO_ENCRYPTION=99
199 } CAPTURE_ENCRYPT_TYPE;
200 
201  typedef enum
202  {
203  CAPTURE_CARD_TYPE_UNKNOWN, CAPTURE_CARD_TYPE_CONTACT, CAPTURE_CARD_TYPE_CTLS_EMV, CAPTURE_CARD_TYPE_CTLS_MSD, CAPTURE_CARD_TYPE_MSR
204  } CAPTURE_CARD_TYPE;
205 
206  typedef enum
207  {
208  KEY_VARIANT_TYPE_UNKNOWN, KEY_VARIANT_TYPE_DATA, KEY_VARIANT_TYPE_PIN
209  }KEY_VARIANT_TYPE;
210 
211 typedef enum{
212  POWER_ON_OPTION_IFS_FLAG=1,
213  POWER_ON_OPTION_EXPLICIT_PPS_FLAG=2,
214  POWER_ON_OPTION_AUTO_PPS_FLAG=64,
215  POWER_ON_OPTION_IFS_RESPONSE_CHECK_FLAG=128
216 }POWER_ON_OPTION;
217 
218 typedef enum{
219  LANGUAGE_TYPE_ENGLISH=1,
220  LANGUAGE_TYPE_PORTUGUESE,
221  LANGUAGE_TYPE_SPANISH,
222  LANGUAGE_TYPE_FRENCH
223 }LANGUAGE_TYPE;
224 
225 typedef enum{
226  PIN_KEY_TDES_MKSK_extp=0x00, //external plain text
227  PIN_KEY_TDES_DUKPT_extp=0x01, //external plain text
228  PIN_KEY_TDES_MKSK_intl=0x10, //internal BTPay
229  PIN_KEY_TDES_DUKPT_intl=0x11, //internal BTPay
230  PIN_KEY_TDES_MKSK2_intl=0x20, //internal UniPayII
231  PIN_KEY_TDES_DUKPT2_intl=0x21, //internal UniPayII
232 }PIN_KEY_Types;
233 
234 #define EVENT_IDLE 0
235 #define EVENT_ASYNC_DATA 0x0100
236 #define EVENT_SDK_BUSY 0x0200
237 
238 typedef enum{
239  EVENT_PINPAD_UNKNOWN = 11,
240  EVENT_PINPAD_ENCRYPTED_PIN,
241  EVENT_PINPAD_NUMERIC,
242  EVENT_PINPAD_AMOUNT,
243  EVENT_PINPAD_ACCOUNT,
244  EVENT_PINPAD_ENCRYPTED_DATA,
245  EVENT_PINPAD_CANCEL,
246  EVENT_PINPAD_TIMEOUT,
247  EVENT_PINPAD_FUNCTION_KEY,
248  EVENT_PINPAD_DATA_ERROR,
249  EVENT_PINPAD_PAN_ERROR,
250  EVENT_PINPAD_PIN_DUKPT_MISSING,
251  EVENT_PINPAD_PIN_DUKPT_EXHAUSTED,
252  EVENT_PINPAD_DISPLAY_MESSAGE_ERROR
253 }EVENT_PINPAD_Types;
254 
255 
256 
257 typedef enum{
258  IDT_DEVICE_BTPAY_IOS = 0,
259  IDT_DEVICE_BTPAY_OSX_BT,
260  IDT_DEVICE_BTPAY_OSX_USB,
261  IDT_DEVICE_UNIPAY_IOS,
262  IDT_DEVICE_UNIPAY_OSX_USB,
263  IDT_DEVICE_UNIPAYII_IOS,
264  IDT_DEVICE_UNIPAYII_OSX_USB,
265  IDT_DEVICE_IMAG_IOS,
266  IDT_DEVICE_VP3300_IOS,
267  IDT_DEVICE_VP3300_OSX_USB,
268  IDT_DEVICE_UNIMAG,
269  IDT_DEVICE_BTMAG_IOS,
270  IDT_DEVICE_BTMAG_OSX_BT,
271  IDT_DEVICE_BTMAG_OSX_USB,
272  IDT_DEVICE_UNIPAYI_V_IOS,
273  IDT_DEVICE_UNIPAYI_V_OSX_USB,
274  IDT_DEVICE_NEO2_IOS,
275  IDT_DEVICE_VP8800_IOS,
276  IDT_DEVICE_UNIMAG_PRO,
277  IDT_DEVICE_NONE
278 
279 
280 
281 
282 }IDT_DEVICE_Types;
283 
284 
285 
286 typedef enum{
287  EVENT_MSR_UNKNOWN = 31,
288  EVENT_MSR_CARD_DATA,
289  EVENT_MSR_CANCEL_KEY,
290  EVENT_MSR_BACKSPACE_KEY,
291  EVENT_MSR_ENTER_KEY,
292  EVENT_MSR_DATA_ERROR,
293  EVENT_MSR_ICC_START,
294  EVENT_BTPAY_CARD_DATA,
295  EVENT_UNIPAYII_EMV_NO_ICC_MSR_DATA,
296  EVENT_UNIPAYII_EMV_FALLBACK_DATA,
297  EVENT_UNIPAY_KEYLOADING,
298  EVENT_MSR_TIMEOUT
299 }EVENT_MSR_Types;
300 
301 typedef enum{
302  EVENT_ACTIVE_TRANSACTION = 51
303 }EVENT_CTLS_Types;
304 
305 typedef enum{
306  UNIMAG_COMMAND_DEFAULT_GENERAL_SETTINGS,
307  UNIMAG_COMMAND_ENABLE_ERR_NOTIFICATION,
308  UNIMAG_COMMAND_DISABLE_ERR_NOTIFICATION,
309  UNIMAG_COMMAND_ENABLE_EXP_DATE,
310  UNIMAG_COMMAND_DISABLE_EXP_DATE,
311  UNIMAG_COMMAND_CLEAR_BUFFER,
312  UNIMAG_COMMAND_RESET_BAUD_RATE
313 }UNIMAG_COMMAND_Types;
314 
315 typedef enum {
316  RETURN_CODE_DO_SUCCESS = 0,
317  RETURN_CODE_ERR_DISCONNECT_,
318  RETURN_CODE_ERR_CMD_RESPONSE_,
319  RETURN_CODE_ERR_TIMEDOUT_,
320  RETURN_CODE_ERR_INVALID_PARAMETER_,
321  RETURN_CODE_SDK_BUSY_MSR_,
322  RETURN_CODE_SDK_BUSY_PINPAD_,
323  RETURN_CODE_SDK_BUSY_CTLS_,
324  RETURN_CODE_SDK_BUSY_EMV_,
325  RETURN_CODE_ERR_OTHER_,
326  RETURN_CODE_FAILED_,
327  RETURN_CODE_NOT_ATTACHED_,
328  RETURN_CODE_MONO_AUDIO_,
329  RETURN_CODE_CONNECTED_,
330  RETURN_CODE_LOW_VOLUME_,
331  RETURN_CODE_CANCELED_,
332  RETURN_CODE_INVALID_STR_,
333  RETURN_CODE_NO_FILE_,
334  RETURN_CODE_INVALID_FILE_,
335  RETURN_CODE_HOST_UNREACHABLE_,
336  RETURN_CODE_RKI_FAILURE_,
337  RETURN_CODE_MISSING_DLL_,
338  RETURN_CODE_BLOCK_TRANSFER_SUCCESS_,
339  RETURN_CODE_SDK_BUSY_FIRMWARE_UPDATE_,
340  RETURN_CODE_APPLYING_FIRMWARE_UPDATE_,
341  RETURN_CODE_NO_DATA_AVAILABLE_,
342  RETURN_CODE_SDK_BUSY_FILE_TRANSFER_,
343  RETURN_CODE_APPLYING_FILE_TRANSFER_,
344  RETURN_CODE_FILE_TRANSFER_SUCCESSFUL_,
345  RETURN_CODE_NO_DRIVE_SPACE_,
346  RETURN_CODE_ENTERING_BOOTLOADER_MODE_,
347  RETURN_CODE_FW_STARTING_UPDATE_,
348  RETURN_CODE_FW_PCI_MISMATCH_,
349  RETURN_CODE_FW_BLOCK_MISMATCH_,
350  RETURN_CODE_DEVICE_FINALIZING_TRANSACTION_,
351  RETURN_CODE_SDK_BUSY_RKI_UPDATE_,
352  RETURN_CODE_BAD_MSR_SWIPE_,
353  RETURN_CODE_FINANCIAL_CARD_NOT_ALLOWED_,
354  RETURN_CODE_SDK_BUSY_GET_EVENT_,
355  RETURN_CODE_UNSUPPORTED_COMMAND_,
356  RETURN_CODE_ERR_DISCONNECT = 0xFF01,
357  RETURN_CODE_ERR_CMD_RESPONSE = 0xFF02,
358  RETURN_CODE_ERR_TIMEDOUT = 0xFF03,
359  RETURN_CODE_ERR_INVALID_PARAMETER = 0xFF04,
360  RETURN_CODE_SDK_BUSY_MSR = 0xFF05,
361  RETURN_CODE_SDK_BUSY_PINPAD = 0xFF06,
362  RETURN_CODE_SDK_BUSY_CTLS = 0xFF07,
363  RETURN_CODE_ERR_OTHER = 0xFF08,
364  RETURN_CODE_FAILED = 0xFF09,
365  RETURN_CODE_NOT_ATTACHED = 0xFF0A,
366  RETURN_CODE_MONO_AUDIO = 0xFF0B,
367  RETURN_CODE_CONNECTED = 0xFF0C,
368  RETURN_CODE_LOW_VOLUME = 0xFF0D,
369  RETURN_CODE_CANCELED = 0xFF0E,
370  RETURN_CODE_INVALID_STR = 0xFF0F,
371  RETURN_CODE_NO_FILE = 0xFF10,
372  RETURN_CODE_INVALID_FILE = 0xFF11,
373  RETURN_CODE_HOST_UNREACHABLE = 0xFF12,
374  RETURN_CODE_RKI_FAILURE = 0xFF13,
375  RETURN_CODE_SDK_BUSY_CMD = 0xFF14,
376 
377 
378 
379  RETURN_CODE_EMV_AUTHORIZATION_ACCEPTED = 0x0E00,
380  RETURN_CODE_EMV_AUTHORIZATION_UNABLE_TO_GO_ONLINE = 0x0E01,
381  RETURN_CODE_EMV_AUTHORIZATION_TECHNICAL_ISSUE = 0x0E02,
382  RETURN_CODE_EMV_AUTHORIZATION_DECLINED = 0x0E03,
383  RETURN_CODE_EMV_AUTHORIZATION_ISSUER_REFERRAL = 0x0E04,
384 
385  RETURN_CODE_EMV_APPROVED = 0x0F00,
386  RETURN_CODE_EMV_DECLINED = 0x0F01,
387  RETURN_CODE_EMV_GO_ONLINE = 0x0F02,
388  RETURN_CODE_EMV_FAILED = 0x0F03,
389  RETURN_CODE_EMV_SYSTEM_ERROR = 0x0F05,
390  RETURN_CODE_EMV_NOT_ACCEPTED = 0x0F07,
391  RETURN_CODE_EMV_FALLBACK = 0x0F0A,
392  RETURN_CODE_EMV_CANCEL = 0x0F0C,
393  RETURN_CODE_EMV_TIMEOUT = 0x0F0D,
394  RETURN_CODE_EMV_OTHER_ERROR = 0x0F0F,
395  RETURN_CODE_EMV_OFFLINE_APPROVED = 0x0F10,
396  RETURN_CODE_EMV_OFFLINE_DECLINED = 0x0F11,
397 
398 
399 
400  RETURN_CODE_EMV_NEW_SELECTION = 0x0F21,
401  RETURN_CODE_EMV_NO_AVAILABLE_APPS = 0x0F22,
402  RETURN_CODE_EMV_NO_TERMINAL_FILE = 0x0F23,
403  RETURN_CODE_EMV_NO_CAPK_FILE = 0x0F24,
404  RETURN_CODE_EMV_NO_CRL_ENTRY = 0x0F25,
405  RETURN_CODE_BLOCKING_DISABLED = 0x0FFE,
406  RETURN_CODE_COMMAND_UNAVAILABLE = 0x0FFF,
407 
408  //IDG Return Codes
409  RETURN_CODE_NEO_SUCCESS = 0xEE00,
410  RETURN_CODE_NEO_INCORRECT_HEADER_TAG = 0xEE01,
411  RETURN_CODE_NEO_UNKNOWN_COMMAND = 0xEE02,
412  RETURN_CODE_NEO_UNKNOWN_SUB_COMMAND = 0xEE03,
413  RETURN_CODE_NEO_CRC_ERROR_IN_FRAME = 0xEE04,
414  RETURN_CODE_NEO_INCORRECT_PARAMETER = 0xEE05,
415  RETURN_CODE_NEO_PARAMETER_NOT_SUPPORTED = 0xEE06,
416  RETURN_CODE_NEO_MAL_FORMATTED_DATA = 0xEE07,
417  RETURN_CODE_NEO_TIMEOUT = 0xEE08,
418  RETURN_CODE_NEO_FAILED_NAK = 0xEE0A,
419  RETURN_CODE_NEO_COMMAND_NOT_ALLOWED = 0xEE0B,
420  RETURN_CODE_NEO_SUB_COMMAND_NOT_ALLOWED = 0xEE0C,
421  RETURN_CODE_NEO_BUFFER_OVERFLOW = 0xEE0D,
422  RETURN_CODE_NEO_USER_INTERFACE_EVENT = 0xEE0E,
423  RETURN_CODE_NEO_COMM_TYPE_NOT_SUPPORTED = 0xEE11,
424  RETURN_CODE_NEO_SECURE_INTERFACE_NOT_FUNCTIONAL = 0xEE12,
425  RETURN_CODE_NEO_DATA_FIELD_NOT_MOD8 = 0xEE13,
426  RETURN_CODE_NEO_PADDING_UNEXPECTED = 0xEE14,
427  RETURN_CODE_NEO_INVALID_KEY_TYPE = 0xEE15,
428  RETURN_CODE_NEO_CANNOT_RETRIEVE_KEY = 0xEE16,
429  RETURN_CODE_NEO_HASH_CODE_ERROR = 0xEE17,
430  RETURN_CODE_NEO_CANNOT_STORE_KEY = 0xEE18,
431  RETURN_CODE_NEO_FRAME_TOO_LARGE = 0xEE19,
432  RETURN_CODE_NEO_RESEND_COMMAND = 0xEE1A,
433  RETURN_CODE_NEO_EEPROM_NOT_INITALIZED = 0xEE1B,
434  RETURN_CODE_NEO_PROBLEM_ENCODING_APDU = 0xEE1C,
435  RETURN_CODE_NEO_UNSUPPORTED_INDEX = 0xEE20,
436  RETURN_CODE_NEO_UNEXPECTED_SEQUENCE_COUNTER = 0xEE21,
437  RETURN_CODE_NEO_IMPROPER_BITMAP = 0xEE22,
438  RETURN_CODE_NEO_REQUEST_ONLINE_AUTHORIZATION = 0xEE23,
439  RETURN_CODE_NEO_RAW_DATA_READ_SUCCESSFUL = 0xEE24,
440  RETURN_CODE_NEO_MESSAGE_NOT_AVAILABLE = 0xEE25,
441  RETURN_CODE_NEO_VERSION_INFORMATION_MISMATCH = 0xEE26,
442  RETURN_CODE_NEO_NOT_SENDING_COMMANDS = 0xEE27,
443  RETURN_CODE_NEO_TIMEOUT_ILM = 0xEE28,
444  RETURN_CODE_NEO_ILM_NOT_AVAILABLE = 0xEE29,
445  RETURN_CODE_NEO_OTHER_LANG_NOT_SUPPORTED = 0xEE2A,
446  RETURN_CODE_UNKNOWN_ERROR_FROM_SAM = 0XEE41,
447  RETURN_CODE_INVALID_DATA_DETECTED_BY_SAM = 0XEE42,
448  RETURN_CODE_INCOMPLETE_DATA_DETECTED_BY_SAM = 0XEE43,
449  RETURN_CODE_RESERVED = 0XEE44,
450  RETURN_CODE_INVALID_KEY_HASH_ALGORITHM = 0XEE45,
451  RETURN_CODE_INVALID_KEY_ENCRYPTION_ALRORITHM = 0XEE46,
452  RETURN_CODE_INVALID_MODULUS_LENGTH = 0XEE47,
453  RETURN_CODE_INVALID_EXPONENT = 0XEE48,
454  RETURN_CODE_KEY_ALREADY_EXISTS = 0XEE49,
455  RETURN_CODE_NO_SPACE_FOR_NEW_RID = 0XEE4A,
456  RETURN_CODE_KEY_NOT_FOUND = 0XEE4B,
457  RETURN_CODE_CRYPTO_NOT_RESPONDING = 0XEE4C,
458  RETURN_CODE_CRYPTO_COMMUNICATION_ERROR = 0XEE4D,
459  RETURN_CODE_P2_KEY_MANAGER_ERROR_4E = 0XEE4E,
460  RETURN_CODE_ALL_KEY_SLOTS_FULL = 0XEE4F,
461  RETURN_CODE_NEO_AUTO_SWITCH_OK = 0xEE50,
462  RETURN_CODE_NEO_AUTO_SWITCH_FAILED = 0xEE51,
463  RETURN_CODE_DATA_DOES_NOT_EXIST = 0xEE60,
464  RETURN_CODE_DATA_FULL = 0xEE61,
465  RETURN_CODE_WRITE_FLASH_ERROR = 0xEE62,
466  RETURN_CODE_OK_NEXT_COMMAND = 0xEE63,
467  RETURN_CODE_KERNEL_ABSENT = 0xEE64,
468  RETURN_CODE_UNEXPECTED_COMMAND_SEQUENCE = 0xEE65,
469  RETURN_CODE_UNEXPECTED_INDEX = 0xEE66,
470  RETURN_CODE_FILE_SIZE_DOES_NOT_MATCH = 0xEE67,
471  RETURN_CODE_PLUG_IN_CHARGING_CABLE = 0xEE68,
472 
473  RETURN_CODE_CANNOT_START_CONTACT_EMV = 0xEE80,
474  RETURN_CODE_CTLS_MSR_CANCELLED_BY_CARD_INSERT = 0xEE81,
475 
476 
477  RETURN_CODE_ACCT_DUKPT_KEY_NOT_EXIST = 0xEE90,
478  RETURN_CODE_ACCT_DUKPT_KEY_EXHAUSTED = 0xEE91,
479 
480 
481 
482  RETURN_CODE_NO_SERIAL_NUMBER = 0x6200,
483  RETURN_CODE_INVALID_COMMAND = 0x6900,
484  RETURN_CODE_NO_ADMIN_DUKPT_KEY = 0x5500,
485  RETURN_CODE_DUKPT_KEY_STOP = 0x5501,
486  RETURN_CODE_DUKPT_KEY_KSN_IS_ERROR = 0x5502,
487  RETURN_CODE_GET_AUTH_CODE1_FAILED = 0x5503,
488  RETURN_CODE_VALIDATE_AUTH_CODE_ERROR = 0x5504,
489  RETURN_CODE_DECRYPT_DATA_FAILED = 0x5505,
490  RETURN_CODE_NOT_SUPPORT_NEW_KEY_TYPE = 0x5506,
491  RETURN_CODE_NEW_KEY_INDEX_IS_ERROR = 0x5507,
492  RETURN_CODE_STEP_ERROR = 0x5508,
493  RETURN_CODE_TIMED_OUT = 0x5509,
494  RETURN_CODE_MAC_CHECKING_ERROR = 0x550A,
495  RETURN_CODE_KEY_USAGE_ERROR = 0x550B,
496  RETURN_CODE_MODE_OF_USE_ERROR = 0x550C,
497  RETURN_CODE_ALGORITHM_ERROR = 0x550D,
498  RETURN_CODE_OTHER_ERROR = 0x550F,
499 
500  RETURN_CODE_CANNOT_AUTHORIZE_RKI = 0x8001,
501  RETURN_CODE_NO_KEY_INJECTION_ESTABLISHED = 0x8101,
502  RETURN_CODE_FAILED_TO_ENCRYPT_CHALLENGE = 0x8102,
503  RETURN_CODE_CHALLENGE_LENGTH_INCORRECT = 0x8103,
504  RETURN_CODE_INCORRECT_CHALLENGE_DATA_STEP1 = 0x8104,
505  RETURN_CODE_RESPONSE_LENGTH_INCORRECT = 0x8105,
506  RETURN_CODE_FIRMWARE_RESPOND_NAK_STEP1 = 0x8106,
507  RETURN_CODE_KEY_ID_NOT_FOUND_IN_DB = 0x8201,
508  RETURN_CODE_KEY_SLOT_DOES_NOT_EXIST = 0x8202,
509  RETURN_CODE_NO_FUTURE_KSI_FROM_SERVER = 0x8203,
510  RETURN_CODE_NO_TR31_DATA_BLOCK = 0x8204,
511  RETURN_CODE_TR31_BLOCK_LENGTH_INCORRECT = 0x8205,
512  RETURN_CODE_INCORRECT_CHALLENGE_DATA_STEP2 = 0x8206,
513  RETURN_CODE_FIRMWARE_RESPOND_NAK_STEP2 = 0x8207,
514  RETURN_CODE_NO_KEY_INJECTION_RECORD = 0x8301,
515  RETURN_CODE_RKI_FAILED = 0x8302,
516  RETURN_CODE_INCORRECT_RESPONSE_FORM = 0x8303,
517  RETURN_CODE_FIRMWARE_RESPOND_NAK_STEP3 = 0x8304
518 
519 } RETURN_CODE;
520 
521 typedef enum {
522  PK_STATUS_STARTED,
523  PK_STATUS_FAILED,
524  PK_STATUS_SENDING_BLOCK,
525  PK_STATUS_APPLYING_UPDATE,
526  PK_STATUS_COMPLETED
527 } PK_STATUS_Type;
528 
529 typedef enum {
530  DUKPT_KEY_MSR = 0x00,
531  DUKPT_KEY_ICC = 0x01,
532  DUKPT_KEY_Admin = 0x10,
533  DUKPT_KEY_Pairing_PinPad = 0x20,
534 } DUKPT_KEY_Type;
535 
536 typedef enum{
537  EMV_PIN_MODE_CANCEL = 0X00,
538  EMV_PIN_MODE_ONLINE_PIN_DUKPT = 0X01,
539  EMV_PIN_MODE_ONLINE_PIN_MKSK = 0X02,
540  EMV_PIN_MODE_OFFLINE_PIN = 0X03,
541  EMV_PIN_MODE_BYPASS = 4,
542  EMV_PIN_MODE_POG = 0x10,
543  EMV_PIN_MODE_MCPOG = 0x11
544 } EMV_PIN_MODE_Types;
545 
546 typedef enum{
547  EMV_RESULT_CODE_NO_RESPONSE = -1,
548  EMV_RESULT_CODE_OFFLINE_APPROVED = 0X10,
549  EMV_RESULT_CODE_OFFLINE_DECLINED = 0X11,
550  EMV_RESULT_CODE_APPROVED = 0X00,
551  EMV_RESULT_CODE_DECLINED = 0X01,
552  EMV_RESULT_CODE_GO_ONLINE = 0X02,
553  EMV_RESULT_CODE_FAILED = 0X03,
554  EMV_RESULT_CODE_SYSTEM_ERROR = 0X05,
555  EMV_RESULT_CODE_NOT_ACCEPT = 0X07,
556  EMV_RESULT_CODE_FALLBACK = 0X0A,
557  EMV_RESULT_CODE_CANCEL = 0X0C,
558  EMV_RESULT_CODE_OTHER_ERROR = 0X0F,
559  EMV_RESULT_CODE_TIME_OUT = 0X0D,
560  EMV_RESULT_CODE_REFERRAL_PROCESSING = 0X12,
561  EMV_RESULT_CODE_ERROR_APP_PROCESSING = 0X13,
562  EMV_RESULT_CODE_ERROR_APP_READING = 0X14,
563  EMV_RESULT_CODE_ERROR_DATA_AUTH = 0X15,
564  EMV_RESULT_CODE_ERROR_PROCESSING_RESTRICTIONS = 0X16,
565  EMV_RESULT_CODE_ERROR_CVM_PROCESSING = 0X17,
566  EMV_RESULT_CODE_ERROR_RISK_MGMT = 0X18,
567  EMV_RESULT_CODE_ERROR_TERM_ACTION_ANALYSIS = 0X19,
568  EMV_RESULT_CODE_ERROR_CARD_ACTION_ANALYSIS = 0X1A,
569  EMV_RESULT_CODE_ERROR_APP_SELECTION_TIMEOUT = 0X1B,
570  EMV_RESULT_CODE_ERROR_NO_CARD_INSERTED = 0X1C,
571  EMV_RESULT_CODE_ERROR_APP_SELECTING = 0X1D,
572  EMV_RESULT_CODE_ERROR_READING_CARD_APP = 0X1E,
573  EMV_RESULT_CODE_ERROR_POWER_CARD_ERROR = 0X1F,
574  EMV_RESULT_CODE_ERROR_NO_RESULT_CODE_PROVIDED_FOR_COMPLETION = 0X20,
575  EMV_RESULT_CODE_APPROVED_WITH_ADVISE_NO_REASON = 0X21,
576  EMV_RESULT_CODE_APPROVED_WITH_ADVISE_IA_FAILED = 0X22,
577  EMV_RESULT_CODE_ERROR_AMOUNT_NOT_SPECIFIED = 0X23,
578  EMV_RESULT_CODE_ERROR_CARD_COMPLETION = 0X24,
579  EMV_RESULT_CODE_ERROR_DATA_LEN_INCORRECT = 0X25,
580  EMV_RESULT_CODE_CALL_YOUR_BANK = 0X26,
581  EMV_RESULT_CODE_NO_ICC_ON_CARD = 0X27,
582  EMV_RESULT_CODE_NEW_SELECTION = 0X28,
583  EMV_RESULT_CODE_START_TRANSACTION_SUCCESS = 0X29
584 } EMV_RESULT_CODE_Types;
585 
586 
587 typedef enum{
588  EMV_RESULT_CODE_V2_NO_RESPONSE = -1,
589  EMV_RESULT_CODE_V2_APPROVED_OFFLINE = 0x0000,
590  EMV_RESULT_CODE_V2_DECLINED_OFFLINE = 0x0001,
591  EMV_RESULT_CODE_V2_APPROVED = 0x0002,
592  EMV_RESULT_CODE_V2_DECLINED = 0x0003,
593  EMV_RESULT_CODE_V2_GO_ONLINE = 0x0004,
594  EMV_RESULT_CODE_V2_CALL_YOUR_BANK = 0x0005,
595  EMV_RESULT_CODE_V2_NOT_ACCEPTED = 0x0006,
596  EMV_RESULT_CODE_V2_USE_MAGSTRIPE = 0x0007,
597  EMV_RESULT_CODE_V2_TIME_OUT = 0x0008,
598  EMV_RESULT_CODE_V2_START_TRANS_SUCCESS = 0x0010,
599  EMV_RESULT_CODE_V2_SWIPE_NON_ICC = 0x0011,
600  EMV_RESULT_CODE_V2_TRANSACTION_CANCELLED = 0x0012,
601  EMV_RESULT_CODE_V2_GO_ONLINE_CTLS = 0x0023,
602  EMV_RESULT_CODE_CTLS_TWO_CARDS = 0x7A,
603  EMV_RESULT_CODE_CTLS_TERMINATE = 0x7E,
604  EMV_RESULT_CODE_CTLS_TERMINATE_TRY_ANOTHER = 0x7D,
605  EMV_RESULT_CODE_MSR_SWIPE_CAPTURED = 0x80,
606  EMV_RESULT_CODE_REQUEST_ONLINE_PIN = 0x81,
607  EMV_RESULT_CODE_REQUEST_SIGNATURE = 0x82,
608  EMV_RESULT_CODE_FALLBACK_TO_CONTACT = 0x83,
609  EMV_RESULT_CODE_FALLBACK_TO_OTHER = 0x84,
610  EMV_RESULT_CODE_REVERSAL_REQUIRED = 0x85,
611  EMV_RESULT_CODE_ADVISE_REQUIRED = 0x86,
612  EMV_RESULT_CODE_ADVISE_REVERSAL_REQUIRED = 0x87,
613  EMV_RESULT_CODE_NO_ADVISE_REVERSAL_REQUIRED = 0x88,
614  EMV_RESULT_CODE_UNABLE_TO_REACH_HOST = 0xFF,
615  EMV_RESULT_CODE_V2_FILE_ARG_INVALID = 0x1001,
616  EMV_RESULT_CODE_V2_FILE_OPEN_FAILED = 0x1002,
617  EMV_RESULT_CODE_V2_FILE_OPERATION_FAILED = 0X1003,
618  EMV_RESULT_CODE_V2_MEMORY_NOT_ENOUGH = 0x2001,
619  EMV_RESULT_CODE_V2_SMARTCARD_FAIL = 0x3001,
620  EMV_RESULT_CODE_V2_SMARTCARD_INIT_FAILED = 0x3003,
621  EMV_RESULT_CODE_V2_FALLBACK_SITUATION = 0x3004,
622  EMV_RESULT_CODE_V2_SMARTCARD_ABSENT = 0x3005,
623  EMV_RESULT_CODE_V2_SMARTCARD_TIMEOUT = 0x3006,
624  EMV_RESULT_CODE_V2_MSR_CARD_ERROR = 0x3007,
625  EMV_RESULT_CODE_V2_MSR_CARD_READ_ERROR = 0x3012,
626  EMV_RESULT_CODE_V2_TIMEOUT_INSERT_OR_FALLBACK = 0x3013,
627  EMV_RESULT_CODE_V2_PARSING_TAGS_FAILED= 0X5001,
628  EMV_RESULT_CODE_V2_CARD_DATA_ELEMENT_DUPLICATE = 0X5002,
629  EMV_RESULT_CODE_V2_DATA_FORMAT_INCORRECT = 0X5003,
630  EMV_RESULT_CODE_V2_APP_NO_TERM = 0X5004,
631  EMV_RESULT_CODE_V2_APP_NO_MATCHING = 0X5005,
632  EMV_RESULT_CODE_V2_AMANDATORY_OBJECT_MISSING = 0X5006,
633  EMV_RESULT_CODE_V2_APP_SELECTION_RETRY = 0X5007,
634  EMV_RESULT_CODE_V2_AMOUNT_ERROR_GET = 0X5008,
635  EMV_RESULT_CODE_V2_CARD_REJECTED = 0X5009,
636  EMV_RESULT_CODE_V2_AIP_NOT_RECEIVED = 0X5010,
637  EMV_RESULT_CODE_V2_AFL_NOT_RECEIVEDE = 0X5011,
638  EMV_RESULT_CODE_V2_AFL_LEN_OUT_OF_RANGE = 0X5012,
639  EMV_RESULT_CODE_V2_SFI_OUT_OF_RANGE = 0X5013,
640  EMV_RESULT_CODE_V2_AFL_INCORRECT = 0X5014,
641  EMV_RESULT_CODE_V2_EXP_DATE_INCORRECT = 0X5015,
642  EMV_RESULT_CODE_V2_EFF_DATE_INCORRECT = 0X5016,
643  EMV_RESULT_CODE_V2_ISS_COD_TBL_OUT_OF_RANGE = 0X5017,
644  EMV_RESULT_CODE_V2_CRYPTOGRAM_TYPE_INCORRECT = 0X5018,
645  EMV_RESULT_CODE_V2_PSE_BY_CARD_NOT_SUPPORTED = 0X5019,
646  EMV_RESULT_CODE_V2_USER_LANGUAGE_SELECTED = 0X5020,
647  EMV_RESULT_CODE_V2_SERVICE_NOT_ALLOWED = 0X5021,
648  EMV_RESULT_CODE_V2_NO_TAG_FOUND = 0X5022,
649  EMV_RESULT_CODE_V2_CARD_BLOCKED = 0X5023,
650  EMV_RESULT_CODE_V2_LEN_INCORRECT = 0X5024,
651  EMV_RESULT_CODE_V2_CARD_COM_ERROR = 0X5025,
652  EMV_RESULT_CODE_V2_TSC_NOT_INCREASED = 0X5026,
653  EMV_RESULT_CODE_V2_HASH_INCORRECT = 0X5027,
654  EMV_RESULT_CODE_V2_ARC_NOT_PRESENCED = 0X5028,
655  EMV_RESULT_CODE_V2_ARC_INVALID = 0X5029,
656  EMV_RESULT_CODE_V2_COMM_NO_ONLINE = 0X5030,
657  EMV_RESULT_CODE_V2_TRAN_TYPE_INCORRECT = 0X5031,
658  EMV_RESULT_CODE_V2_APP_NO_SUPPORT = 0X5032,
659  EMV_RESULT_CODE_V2_APP_NOT_SELECT = 0X5033,
660  EMV_RESULT_CODE_V2_LANG_NOT_SELECT = 0X5034,
661  EMV_RESULT_CODE_V2_TERM_DATA_NOT_PRESENCED = 0X5035,
662  EMV_RESULT_CODE_V2_CVM_TYPE_UNKNOWN = 0X6001,
663  EMV_RESULT_CODE_V2_CVM_AIP_NOT_SUPPORTED = 0X6002,
664  EMV_RESULT_CODE_V2_CVM_TAG_8E_MISSING = 0X6003,
665  EMV_RESULT_CODE_V2_CVM_TAG_8E_FORMAT_ERROR = 0X6004,
666  EMV_RESULT_CODE_V2_CVM_CODE_IS_NOT_SUPPORTED = 0X6005,
667  EMV_RESULT_CODE_V2_CVM_COND_CODE_IS_NOT_SUPPORTED = 0X6006,
668  EMV_RESULT_CODE_V2_CVM_NO_MORE = 0X6007,
669  EMV_RESULT_CODE_V2_PIN_BYPASSED_BEFORE = 0X6008,
670  EMV_RESULT_CODE_V2_GO_ONLINE_CL = 0xEE23
671 } EMV_RESULT_CODE_V2_Types;
672 
673 
674 
675 
676 typedef enum{
677  EMV_AUTHORIZATION_RESULT_ACCEPTED = 0X00,
678  EMV_AUTHORIZATION_RESULT_UNABLE_TO_GO_ONLINE = 0X01,
679  EMV_AUTHORIZATION_RESULT_TECHNICAL_ISSUE = 0X02,
680  EMV_AUTHORIZATION_RESULT_DECLINED = 0X03,
681  EMV_AUTHORIZATION_RESULT_ISSUER_REFERAL = 0X04
682 } EMV_AUTHORIZATION_RESULT;
683 
684 
685 typedef enum{
686  FIRMWARE_TYPE_UNKNOWN = -1,
687  FIRMWARE_TYPE_External_EMV_CTL2 = 0x00,
688  FIRMWARE_TYPE_EMV_CLL2_PPSE = 0x01,
689  FIRMWARE_TYPE_EMV_CLL2_VCPS = 0x02,
690  FIRMWARE_TYPE_EMV_CLL2_MChip = 0x03,
691  FIRMWARE_TYPE_EMV_CLL2_DPass = 0x04,
692  FIRMWARE_TYPE_EMV_CLL2_Amex = 0x05,
693  FIRMWARE_TYPE_EMV_CLL2_Interac = 0x06,
694  FIRMWARE_TYPE_EMV_CLL2_CUP = 0x07,
695  FIRMWARE_TYPE_EMV_CLL2_JCB = 0x08,
696  FIRMWARE_TYPE_APVAS = 0x09,
697  FIRMWARE_TYPE_SmartTap = 0x0A,
698  FIRMWARE_TYPE_SCRP = 0x0B,
699  FIRMWARE_TYPE_ADF_SDK = 0x0C,
700  FIRMWARE_TYPE_ADF_App = 0x0D,
701  FIRMWARE_TYPE_1050 = 0x10,
702  FIRMWARE_TYPE_DEVICE_TREE_PRJ = 0x31,
703  FIRMWARE_TYPE_NEO3_BOOTLOADER = 0xFC,
704  FIRMWARE_TYPE_K81_BOOTLOADER_A = 0xFD,
705  FIRMWARE_TYPE_K81_BOOTLOADER_B = 0xFE,
706  FIRMWARE_TYPE_K81 = 0xFF,
707 } FIRMWARE_TYPE;
708 
709 typedef enum{
710  RKI_KEY_TYPE_NONE = 0,
711  RKI_KEY_TYPE_REV_A_PROD = 1,
712  RKI_KEY_TYPE_REV_B_PROD = 2,
713  RKI_KEY_TYPE_PKI_PROD = 3,
714  RKI_KEY_TYPE_REV_A_DEMO = 4,
715  RKI_KEY_TYPE_REV_B_DEMO = 5,
716  RKI_KEY_TYPE_PKI_DEMO = 6,
717  RKI_KEY_TYPE_AUTO = 7
718 } RKI_KEY_TYPE;
719 
720 typedef enum{
721  ADF_TYPE_SDK,
722  ADF_TYPE_APP
723 } ADF_TYPE;
724 
725 typedef struct{
726  int type;
727  int address;
728  int size;
729 } ADF_Info;
730 
731 typedef enum
732 {
733  EVENT_TRANSACTION_DATA_UNKNOWN,
734  EVENT_TRANSACTION_DATA_CARD_DATA,
735  EVENT_TRANSACTION_DATA_EMV_DATA,
736  EVENT_TRANSACTION_DATA_MSR_CANCEL_KEY,
737  EVENT_TRANSACTION_DATA_MSR_BACKSPACE_KEY,
738  EVENT_TRANSACTION_DATA_MSR_ENTER_KEY,
739  EVENT_TRANSACTION_DATA_MSR_DATA_ERROR,
740  EVENT_TRANSACTION_PIN_DATA
741 } EVENT_TRANSACTION_DATA_Types;
742 
743 typedef enum
744 {
745  KEY_MANAGEMENT_UNKNOWN,
746  KEY_MANAGEMENT_TDES_DUKPT,
747  KEY_MANAGEMENT_TDES_DUKPT_AES_112,
748  KEY_MANAGEMENT_AES_DUKPT_DATA_KEY_ENCRYPT_DECRYPT,
749  KEY_MANAGEMENT_AES_DUKPT_DATA_KEY_ENCRYPT,
750  KEY_MANAGEMENT_AES_DUKPT_DATA_KEY_DECRYPT,
751  KEY_MANAGEMENT_AES_DUKPT_MAC_KEY_ENCRYPT_DECRYPT,
752  KEY_MANAGEMENT_AES_DUKPT_MAC_KEY_ENCRYPT,
753  KEY_MANAGEMENT_AES_DUKPT_MAC_KEY_DECRYPT
754 } KEY_MANAGEMENT;
755 
756 typedef enum
757 {
758  EVENT_NOTIFICATION_UNKNOWN,
759  EVENT_NOTIFICATION_Card_Not_Seated,
760  EVENT_NOTIFICATION_Card_Seated,
761  EVENT_NOTIFICATION_Swipe_Card,
762  EVENT_NOTIFICATION_Insert_Card,
763  EVENT_NOTIFICATION_Remove_Card,
764  EVENT_NOTIFICATION_Card_Insert_Timeout,
765  EVENT_NOTIFICATION_Transaction_Timeout,
766  EVENT_NOTIFICATION_Card_Remove_Timeout,
767  EVENT_NOTIFICATION_Insert_Tap_Card,
768  EVENT_NOTIFICATION_Device_Unresponsive,
769  EVENT_NOTIFICATION_Device_Soft_Reboot_Complete,
770  EVENT_NOTIFICATION_Unable_To_Soft_Reboot,
771  EVENT_NOTIFICATION_Card_Seated_Data_Captured,
772  EVENT_NOTIFICATION_Card_Seated_Data_Not_Captured,
773  EVENT_NOTIFICATION_Card_Seated_No_MSR_Detected,
774  EVENT_NOTIFICATION_Card_Removed_Data_Captured,
775  EVENT_NOTIFICATION_Card_Removed_Data_Not_Captured,
776  EVENT_NOTIFICATION_Card_Removed_No_MSR_Detected,
777  EVENT_NOTIFICATION_Card_Inserted_Not_Seated,
778  EVENT_NOTIFICATION_Card_Removed,
779  EVENT_NOTIFICATION_Message
780 } EVENT_NOTIFICATION_Types;
781 
782 typedef enum
783 {
784  CTLS_APPLICATION_NONE = 0,
785  CTLS_APPLICATION_MASTERCARD = 1,
786  CTLS_APPLICATION_VISA = 2,
787  CTLS_APPLICATION_AMEX = 3,
788  CTLS_APPLICATION_DISCOVER = 4,
789  CTLS_APPLICATION_SPEEDPASS = 5,
790  CTLS_APPLICATION_GIFT_CARD = 6,
791  CTLS_APPLICATION_DINERS_CLUB = 7,
792  CTLS_APPLICATION_EN_ROUTE = 8,
793  CTLS_APPLICATION_JCB = 9,
794  CTLS_APPLICATION_VIVO_DIAGNOSTIC = 10,
795  CTLS_APPLICATION_HID = 11,
796  CTLS_APPLICATION_MSR_SWIPE = 12,
797  CTLS_APPLICATION_RESERVED = 13,
798  CTLS_APPLICATION_DES_FIRE_TRACK_DATA = 14,
799  CTLS_APPLICATION_DES_FIRE_RAW_DATA = 15,
800  CTLS_APPLICATION_RBS = 17,
801  CTLS_APPLICATION_VIVO_COMM = 20
802 } CTLS_APPLICATION;
803 
804 //Added from IDT_Transactions
805 typedef enum
806 {
807  TRANS_ERROR_CODE_OUT_OF_SEQ = 0x01,
808  TRANS_ERROR_CODE_USE_CONTACT = 0x02,
809  TRANS_ERROR_CODE_TRANS_AMOUNT_ZERO = 0x03,
810  TRANS_ERROR_CODE_USE_OTHER_INF = 0x04,
811  TRANS_ERROR_CODE_USE_NEARBY_CONTACT_INF = 0x05,
812  TRANS_ERROR_CODE_USE_MAG_INF = 0x06,
813  TRANS_ERROR_CODE_CARD_RETURNED_ERROR = 0x20,
814  TRANS_ERROR_CODE_COLLISION = 0x21,
815  TRANS_ERROR_CODE_MAX_AMT_EXCEEDED = 0x22,
816  TRANS_ERROR_CODE_GO_ONLINE = 0x23,
817  TRANS_ERROR_CODE_CARD_BLOCKED = 0x25,
818  TRANS_ERROR_CODE_CARD_EXPIRED = 0x26,
819  TRANS_ERROR_CODE_UNSUPPORTED_CARD = 0x27,
820  TRANS_ERROR_CODE_CARD_NO_RESPONSE = 0x30,
821  TRANS_ERROR_CODE_UNKNOWN_DATA_ELEMENT = 0x40,
822  TRANS_ERROR_CODE_REQ_DATA_MISSING = 0x41,
823  TRANS_ERROR_CODE_AAC = 0x42,
824  TRANS_ERROR_CODE_ARQC = 0x43,
825  TRANS_ERROR_CODE_DATA_AUTH_FAILED_NOT_SUP = 0x44,
826  TRANS_ERROR_CODE_DATA_AUTH_FAILED_CAPK = 0x50,
827  TRANS_ERROR_CODE_DATA_AUTH_FAILED_ISS_PK = 0x51,
828  TRANS_ERROR_CODE_DATA_AUTH_FAILED_SSAD = 0x52,
829  TRANS_ERROR_CODE_DATA_AUTH_FAILED_ICC_PK = 0x53,
830  TRANS_ERROR_CODE_DATA_AUTH_FAILED_SIG_VER = 0x54,
831  TRANS_ERROR_CODE_PROC_REST_FAILED = 0x55,
832  TRANS_ERROR_CODE_TRM_FAILED = 0x56,
833  TRANS_ERROR_CODE_CV_FAILED = 0x57,
834  TRANS_ERROR_CODE_TAA_FAILED = 0x58,
835  TRANS_ERROR_CODE_SD_MEMORY = 0x61,
836  TRANS_ERROR_CODE_CONTACT_EMV = 0x70,
837  TRANS_ERROR_CODE_NO_MERCHANTS = 0x80,
838  TRANS_ERROR_CODE_TLV_PARSE = 0x81,
839  TRANS_ERROR_CODE_MERCHANT_DATA = 0x82,
840  TRANS_ERROR_CODE_SYSTEM_MEMORY = 0x83,
841  TRANS_ERROR_CODE_APP_SKIP = 0x84,
842  TRANS_ERROR_CODE_APP_VER = 0x85
843 } TRANS_ERROR_CODE;
844 
845 typedef enum
846 {
847  RF_STATE_NONE = 0x00,
848  RF_STATE_PPSE = 0x01,
849  RF_STATE_SELECT = 0x02,
850  RF_STATE_GPO = 0x03,
851  RF_STATE_READ_RECORD = 0x04,
852  RF_STATE_GEN_AC = 0x05,
853  RF_STATE_CCC = 0x06,
854  RF_STATE_IA = 0x07,
855  RF_STATE_SDA = 0x08,
856  RF_STATE_DDA = 0x09,
857  RF_STATE_CDA = 0x0A,
858  RF_STATE_TAA = 0x0B,
859  RF_STATE_GET_DATA = 0x0C,
860  RF_STATE_CARD_READ_COMPLETE = 0x21,
861  RF_STATE_PROCESSING_RESTRICTIONS = 0x22,
862  RF_STATE_ODA = 0x23,
863  RF_STATE_CARDHOLDER_VERIFICATION = 0x24,
864  RF_STATE_ONLINE_PROCESSING = 0x25,
865  RF_STATE_COMPLETION = 0x26,
866 } RF_STATE;
867 
868 typedef enum
869 {
870  ESC_ERR_APPMGR_CLIENT_CREATE = 0x000A0000,
871  ESC_ERR_APPMGR_CLIENT_INVALID = 0x000A0001,
872  ESC_ERR_APPMGR_SERVICE_UNAVAILABLE = 0x000A0002,
873  ESC_ERR_APPMGR_BAD_RESPONSE = 0x000A0003,
874  ESC_ERR_APPMGR_CMD_CANCELED = 0x000A0004,
875  ESC_ERR_APPMGR_CMD_DEFERRED = 0x000A0005,
876  ESC_ERR_APPMGR_MODULE_CORRUPT = 0x000A0006,
877  ESC_ERR_APPMGR_MODULE_MISSING_INIT = 0x000A0007,
878  ESC_ERR_APPMGR_MODULE_MISSING_EXIT = 0x000A0008,
879  ESC_ERR_APPMGR_MODULE_MISSING_INSTALL = 0x000A0009,
880  ESC_ERR_APPMGR_MODULE_MISSING_PROCESS = 0x000A000A,
881  ESC_ERR_APPMGR_MODULE_INSTALL_FAILED = 0x000A000B,
882  ESC_ERR_APPMGR_PROCOTOL_VIOLATION = 0x000A000C,
883  ESC_ERR_APPMGR_CL_BAD_NUM_AIDS = 0x000A000D,
884  ESC_ERR_APPMGR_CL_NO_EPS_MODULE = 0x000A000E,
885  ESC_ERR_APPMGR_CL_NO_AID_MODULE = 0x000A000F,
886  ESC_ERR_APPMGR_CL_NO_MIFARE_MODULE = 0x000A0010,
887  ESC_ERR_APPMGR_CL_MIFARE_FAILED_AUTH = 0x000A0011,
888  ESC_ERR_APPMGR_CL_MIFARE_FAILED_BLOCK_READ = 0x000A0012,
889  ESC_ERR_APPMGR_CL_FALLBACK_TO_MAGSTRIPE = 0x000A0013,
890  ESC_ERR_APPMGR_CL_FALLBACK_TO_CONTACT = 0x000A0014,
891  ESC_ERR_APPMGR_CL_FALLBACK_TO_OTHER = 0x000A0015,
892  ESC_ERR_APPMGR_CL_FALLBACK_TO_MIFARE = 0x000A0016,
893  ESC_ERR_APPMGR_CL_REQUEST_MID_PROCESSING = 0x000A0018,
894  ESC_ERR_APPMGR_CL_DESFIRE_RAW_DATA_SUCCESS = 0x000A0019,
895  ESC_ERR_APPMGR_CL_VIVOCOMM_RAW_DATA_SUCCESS = 0x000A001A,
896  ESC_ERR_APPMGR_CL_VIVOCOMM_RAW_WRITE_SUCCESS = 0x000A001B,
897  ESC_ERR_APPMGR_CT_BAD_NUM_AIDS = 0x000A001C,
898  ESC_ERR_APPMGR_CT_NO_APPSEL_MODULE = 0x000A001D,
899  ESC_ERR_APPMGR_CT_NO_AID_MODULE = 0x000A001E,
900  ESC_ERR_APPMGR_CT_FALLBACK_TO_MAGSTRIPE = 0x000A001F,
901  ESC_ERR_APPMGR_CL_NO_MSR_MODULE = 0x000A0020,
902  ESC_ERR_APPMGR_UI_PLATFORM_MISMATCH = 0x000A0021,
903  ESC_ERR_APPMGR_DECLINE = 0x000A0022,
904  ESC_ERR_APPMGR_NO_ADVICE_OR_REVERSAL_REQUIRED = 0x000A0023,
905  ESC_ERR_APPMGR_ADVICE_REQUIRED = 0x000A0024,
906  ESC_ERR_APPMGR_REVERSAL_REQUIRED = 0x000A0025,
907  ESC_ERR_APPMGR_ADVICE_AND_REVERSAL_REQUIRED = 0x000A0026,
908  ESC_ERR_APPMGR_APP_SELECTION_RETRY = 0x000A0027,
909  ESC_ERR_APPMGR_REQUEST_ONLINE_AUTH = 0x000A0028,
910  ESC_ERR_APPMGR_CL_REQUEST_ONLINE_AUTH = 0x000A0029,
911  ESC_ERR_APPMGR_REQUEST_ONLINE_PIN = 0x000A002A,
912  ESC_ERR_APPMGR_REQUEST_SIGNATURE = 0x000A002B,
913  ESC_CEMV_STATUS_CARD_L1_ERROR = 0x60000,
914  ESC_CEMV_STATUS_CARD_NOT_FOUND = 0x60001,
915  ESC_CEMV_STATUS_BAD_RESPONSE = 0x60002,
916  ESC_CEMV_STATUS_EMVK_ERROR = 0x60003,
917  ESC_CEMV_STATUS_CARD_REJECTED = 0x60004,
918  ESC_CEMV_STATUS_CARD_TIMEOUT = 0x60005,
919  ESC_CEMV_STATUS_CARD_BLOCKED = 0x60006,
920  ESC_CEMV_STATUS_SERVICE_NOT_ALLOWED_BY_CARD = 0x60007,
921  ESC_CEMV_STATUS_CARD_FALLBACK = 0x60008,
922  ESC_CEMV_STATUS_TLV_FORMAT_ERROR = 0x60009,
923  ESC_CEMV_STATUS_TLV_LENGTH_EXCEEDS_MAX_SPECIFIED = 0x0006000A,
924  ESC_CEMV_STATUS_CARD_DATA_FORMAT_INCORRECT = 0x0006000B,
925  ESC_CEMV_STATUS_MANDATORY_OBJECT_MISSING = 0x0006000C,
926  ESC_CEMV_STATUS_DUPLICATE_DATA = 0x0006000D,
927  ESC_CEMV_STATUS_PSE_NOT_SUPPORTED_BY_CARD = 0x0006000E,
928  ESC_CEMV_STATUS_NO_APPS_ON_CARD = 0x0006000F,
929  ESC_CEMV_STATUS_NO_SUPPORTED_APPS_ON_CARD = 0x60010,
930  ESC_CEMV_STATUS_APPLIST_PARSE_ERROR = 0x60011,
931  ESC_CEMV_STATUS_APP_NAME_NOT_FOUND = 0x60012,
932  ESC_CEMV_STATUS_ISS_COD_TBL_OUT_OF_RANGE = 0x60013,
933  ESC_CEMV_STATUS_AIP_NOT_RECEIVED = 0x60014,
934  ESC_CEMV_STATUS_AFL_NOT_RECEIVED = 0x60015,
935  ESC_CEMV_STATUS_AFL_LEN_OUT_OF_RANGE = 0x60016,
936  ESC_CEMV_STATUS_AFL_INCORRECT = 0x60017,
937  ESC_CEMV_STATUS_EXP_DATE_INCORRECT = 0x60018,
938  ESC_CEMV_STATUS_EFF_DATE_INCORRECT = 0x60019,
939  ESC_CEMV_STATUS_SFI_NOT_CORRECT = 0x0006001A,
940  ESC_CEMV_STATUS_INCORRECT_SFI = 0x0006001B,
941  ESC_CEMV_STATUS_SFI_OUT_OF_RANGE = 0x0006001C,
942  ESC_CEMV_STATUS_CA_PUBLIC_KEY_NOT_FOUND = 0x0006001D,
943  ESC_CEMV_STATUS_CA_PUBLIC_KEY_FAILED_HASH_CHECK = 0x0006001E,
944  ESC_CEMV_STATUS_CA_PUBLIC_KEY_INVALID_HASH_ALGO = 0x0006001F,
945  ESC_CEMV_STATUS_CA_PUBLIC_KEY_INVALID_KEY_ALGO = 0x60020,
946  ESC_CEMV_STATUS_CA_PUBLIC_KEY_INVALID_MOD_LEN = 0x60021,
947  ESC_CEMV_STATUS_CA_PUBLIC_KEY_INVALID_EXPONENT = 0x60022,
948  ESC_CEMV_STATUS_CA_PUBLIC_KEY_ALREADY_EXISTS = 0x60023,
949  ESC_CEMV_STATUS_CA_PUBLIC_KEY_NO_SPACE = 0x60024,
950  ESC_CEMV_STATUS_CA_PUBLIC_KEY_BAD_DATA = 0x60025,
951  ESC_CEMV_STATUS_TERMINAL_PARAM_NOT_FOUND = 0x60026,
952  ESC_CEMV_STATUS_CVMLIST_LEN_INCORRECT = 0x60027,
953  ESC_CEMV_STATUS_CRYPTOGRAM_TYPE_INCORRECT = 0x60028,
954  ESC_CEMV_STATUS_TAG_NOT_FOUND = 0x60029,
955  ESC_CEMV_STATUS_GET_AMOUNT_ERROR = 0x0006002A,
956  ESC_CEMV_STATUS_USER_SELECTED_LANGUAGE = 0x0006002B,
957  ESC_CEMV_STATUS_REQUEST_ONLINE_PIN = 0x0006002C,
958  ESC_CEMV_STATUS_REQUEST_SIGNATURE = 0x0006002D,
959  ESC_CEMV_STATUS_APP_SELECTION_RETRY = 0x0006002E,
960  ESC_CEMV_STATUS_TSC_NOT_INCREASED = 0x0006002F,
961  ESC_CEMV_STATUS_AUTH_RESP_CODE_MISSING = 0x60030,
962  ESC_CEMV_STATUS_AUTH_RESP_CODE_INVALID = 0x60031,
963  ESC_CEMV_STATUS_EMVK_NO_ONLINE_COMM = 0x60032,
964  ESC_CEMV_STATUS_CVM_TYPE_UNKNOWN = 0x60033,
965  ESC_CEMV_STATUS_CVM_AIP_NOT_SUPPORTED = 0x60034,
966  ESC_CEMV_STATUS_CVM_LIST_MISSING = 0x60035,
967  ESC_CEMV_STATUS_CVM_LIST_FORMAT_ERROR = 0x60036,
968  ESC_CEMV_STATUS_CVM_CODE_NOT_SUPPORTED = 0x60037,
969  ESC_CEMV_STATUS_CVM_COND_CODE_NOT_SUPPORTED = 0x60038,
970  ESC_CEMV_STATUS_CVM_NO_MORE_CVM = 0x60039,
971  ESC_CEMV_STATUS_CVM_PIN_BYPASSED_BEFOFRE = 0x0006003A,
972  ESC_ERR_CFG_CLIENT_CREATE = 0x70000,
973  ESC_ERR_CFG_SERVICE_UNAVAILABLE = 0x70001,
974  ESC_ERR_CFG_BAD_RESPONSE = 0x70002,
975  ESC_EFAILED = 0x1,
976  ESC_EOUTOFMEMORY = 0x2,
977  ESC_EBADPARAM = 0x3,
978  ESC_ENOTSUPPORTED = 0x4,
979  ESC_ENOTFOUND = 0x5,
980  ESC_EALREADYEXISTS = 0x6,
981  ESC_EOUTOFBOUNDS = 0x7,
982  ESC_ENOTAUTH = 0x8,
983  ESC_EQFAILURE = 0x9,
984  ESC_ETIMEOUT = 0x0000000A,
985  ESC_ENODEVICE = 0x0000000B,
986  ESC_EFOPEN = 0x0000000C,
987  ESC_EFOPERATION = 0x0000000D,
988  ESC_ECANCEL = 0x0000000E,
989  ESC_ERESOURCEBUSY = 0x0000000F,
990  ESC_ENOTADIRECTORY = 0x10,
991  ESC_EFILETOOBIG = 0x11,
992  ESC_ENOSPACE = 0x12,
993  ESC_ERR_ICC_BAD_RESPONSE = 0x50000,
994  ESC_ERR_ICC_SLOT_IN_USE = 0x50001,
995  ESC_ERR_ICC_DRIVER_RESOURCE_BUSY = 0x50002,
996  ESC_ERR_ICC_CARD_NOT_PRESENT = 0x50003,
997  ESC_ERR_ICC_CARD_NOT_READY = 0x50004,
998  ESC_ERR_ICC_L1_ERROR_CARD_DEACTIVATED = 0x50005,
999  ESC_ERR_ICC_L1_ERROR_CARD_NOT_DEACTIVATED = 0x50006,
1000  ESC_ERR_ICC_CARD_DID_NOT_RESPOND = 0x50007,
1001  ESC_ERR_ICC_ATR_NOT_AVAILABLE = 0x50008,
1002  ESC_ERR_ICC_UNKNOWN_MODE = 0x50009,
1003  ESC_ERR_ICC_COMMAND_NOT_ALLOWED = 0x0005000A,
1004  ESC_ERR_MSR_BAD_RESPONSE = 0x90000,
1005  ESC_ERR_MSR_BAD_SWIPE = 0x90001,
1006  ESC_ERR_MSR_COMMAND_NOT_ALLOWED = 0x90002,
1007  ESC_ERR_PCI_CLIENT_CREATE = 0x10000,
1008  ESC_ERR_PCI_SERVICE_UNAVAILABLE = 0x10001,
1009  ESC_ERR_PCI_BAD_RESPONSE = 0x10002,
1010  ESC_ERR_PCI_KEY_NOT_FOUND = 0x10003,
1011  ESC_ERR_PCI_CEASE_OPERATION = 0x10004,
1012  ESC_ERR_PCI_PIN_ENTRY_CANCELLED = 0x10005,
1013  ESC_ERR_PCI_BAD_KEY = 0x10006,
1014  ESC_ERR_PCI_RNG_DEVICE_FAILURE = 0x10007,
1015  ESC_ERR_PCI_ILLEGAL_NUMERIC_CHAR = 0x10008,
1016  ESC_ERR_PCI_ILLEGAL_CURRENCY_CHAR = 0x10009,
1017  ESC_ERR_PCI_CMD_CANCELLED = 0x0001000A,
1018  ESC_ERR_PCI_KEYPAD_INTRUSION_DETECTED = 0x0001000B,
1019  ESC_ERR_PCI_KEYPAD_BLOCKED = 0x0001000C,
1020  ESC_ERR_PCI_NO_DATA = 0x0001000D,
1021  ESC_ERR_PICC_CLIENT_CREATE_ERROR = 0x40000,
1022  ESC_ERR_PICC_SERVICE_UNAVAILABLE = 0x40001,
1023  ESC_ERR_PICC_BAD_RESPONSE = 0x40002,
1024  ESC_ERR_PICC_CMD_CANCELLED = 0x40003,
1025  ESC_ERR_PICC_POLL_TIMEOUT = 0x40004,
1026  ESC_ERR_PICC_CARD_NOT_FOUND = 0x40005,
1027  ESC_ERR_PICC_COLLISION = 0x40006,
1028  ESC_ERR_PICC_TYPE_NOT_SUPPORTED = 0x40007,
1029  ESC_ERR_PICC_CRC_ERR = 0x40008,
1030  ESC_ERR_PICC_PARITY_ERR = 0x40009,
1031  ESC_ERR_PICC_FRAMING_ERR = 0x0004000A,
1032  ESC_ERR_PICC_BIT_COUNT_ERR = 0x0004000B,
1033  ESC_ERR_PICC_TRANSMISSION_ERR = 0x0004000C,
1034  ESC_ERR_PICC_BYTE_COUNT_ERR = 0x0004000D,
1035  ESC_ERR_PICC_AUTHENTICATION_FAILED = 0x0004000E,
1036  ESC_ERR_PICC_ACCESS_TIMEOUT = 0x0004000F,
1037  ESC_ERR_PICC_READ_ERR = 0x40010,
1038  ESC_ERR_PICC_WRITE_ERR = 0x40011,
1039  ESC_ERR_PICC_NOT_AUTHORIZED = 0x40012,
1040  ESC_ERR_PICC_RETURN_CODE_ERR = 0x40013,
1041  ESC_ERR_PICC_VALUE_ERR = 0x40014,
1042  ESC_ERR_PICC_KEY_ERR = 0x40015,
1043  ESC_ERR_PICC_FIFO_OVERFLOW = 0x40016,
1044  ESC_ERR_PICC_TX_BUFFER_OVERFLOW = 0x40017,
1045  ESC_ERR_PICC_RX_BUFFER_OVERFLOW = 0x40018,
1046  ESC_ERR_PICC_DATA_CODING_ERR = 0x40019,
1047  ESC_ERR_PICC_GEN_PROTOCOL_ERR = 0x0004001A,
1048  ESC_ERR_PICC_EXCEEDED_RETRIES = 0x0004001B,
1049  ESC_ERR_PICC_BLOCK_PROTOCOL_ERR = 0x0004001C,
1050  ESC_ERR_PICC_UNK_COMMAND = 0x0004001D,
1051  ESC_ERR_PICC_COLLISION_INTERPRETED = 0x0004001E,
1052  ESC_ERR_PICC_TIMEOUT_WITH_ERR = 0x0004001F,
1053  ESC_ERR_PICC_ALREADY_POLLING = 0x40020,
1054  ESC_ERR_PICC_CARD_NOT_REMOVED = 0x40021,
1055  ESC_ERR_PICC_CODE_END = 0x00040022,
1056  ESC_ERR_SOFTSAM_BAD_RESPONSE = 0x000B0000,
1057  ESC_ERR_SOFTSAM_CA_KEY_NOT_FOUND = 0x000B0001,
1058  ESC_ERR_SOFTSAM_BAD_MODULUS_LENGTH = 0x000B0002,
1059  ESC_ERR_SOFTSAM_BAD_EXPONENT_LENGTH = 0x000B0003,
1060  ESC_ERR_SOFTSAM_BAD_CERTIFICATE_LENGTH = 0x000B0004,
1061  ESC_ERR_SOFTSAM_MALFORMATTED_CERTIFICATE = 0x000B0005,
1062  ESC_ERR_SOFTSAM_RECOVERY_FN_FAILED = 0x000B0006,
1063  ESC_ERR_SOFTSAM_BUFFER_OVF = 0x000B0007,
1064  ESC_ERR_SOFTSAM_ALG_NOT_SUPPORTED = 0x000B0008,
1065  ESC_ERR_SOFTSAM_HASH_ALG_NOT_SUPPORTED = 0x000B0009,
1066  ESC_ERR_SOFTSAM_CRYPT_ALG_NOT_SUPPORTED = 0x000B000A,
1067  ESC_ERR_SOFTSAM_HASH_FN_FAILED = 0x000B000B,
1068  ESC_ERR_SOFTSAM_RID_KEY_SLOTS_FULL = 0x000B000C,
1069  ESC_ERR_SOFTSAM_KEY_ALREADY_EXISTS = 0x000B000D,
1070  ESC_ERR_SOFTSAM_NO_SPACE_FOR_NEW_RID = 0x000B000E,
1071  ESC_ERR_SOFTSAM_NO_FREE_KEY_SLOTS = 0x000B000F,
1072  ESC_ERR_SOFTSAM_BAD_PKT_DATA_LEN = 0x000B0010,
1073  ESC_ERR_SOFTSAM_BAD_PACKET_NUMBERING = 0x000B0011,
1074  ESC_ERR_SOFTSAM_INVALID_CRYPTO_ALGORITHM = 0x000B0012,
1075  ESC_ERR_SOFTSAM_INVALID_CRYPTO_CMD = 0x000B0013,
1076  ESC_ERR_SOFTSAM_INVALID_CRYPTO_KEYTYPE = 0x000B0014,
1077  ESC_ERR_SOFTSAM_INVALID_CRYPTO_DATA_LENGTH = 0x000B0015,
1078  ESC_ERR_SOFTSAM_RESP_EMV_FAILURE = 0x000B0016,
1079  ESC_ERR_SOFTSAM_RESP_EMV_BAD_PKT_DATA_LEN = 0x000B0017,
1080  ESC_ERR_SOFTSAM_RESP_EMV_CA_KEY_NOT_FOUND = 0x000B0018,
1081  ESC_ERR_SOFTSAM_RESP_EMV_BAD_CERTIFICATE_LENGTH = 0x000B0019,
1082  ESC_ERR_SOFTSAM_RESP_EMV_RECOVERY_FN_FAILED = 0x000B001A,
1083  ESC_ERR_SOFTSAM_RESP_EMV_MALFORMATTED_CERTIFICATE = 0x000B001B,
1084  ESC_ERR_SOFTSAM_RESP_EMV_HASH_ALG_NOT_SUPPORTED = 0x000B001C,
1085  ESC_ERR_SOFTSAM_RESP_EMV_HASH_FN_FAILED = 0x000B001D,
1086  ESC_ERR_SOFTSAM_RESP_EMV_CRYPT_ALG_NOT_SUPPORTED = 0x000B001E,
1087  ESC_ERR_SOFTSAM_RESP_EMV_BAD_EXPONENT_LENGTH = 0x000B001F,
1088  ESC_ERR_SOFTSAM_UNKNOWN_ERROR = 0x000B0020,
1089  ESC_ERR_TLV_BAD_TAG = 0x20000,
1090  ESC_ERR_TLV_BAD_LENGTH = 0x20001,
1091  ESC_ERR_TLV_ILLEGAL_SCOPE = 0x20002,
1092  ESC_ERR_TLV_BAD_FORMAT = 0x20003,
1093  ESC_ERR_TLV_ILLEGAL_NC_TAG = 0x20004,
1094  ESC_ERR_UI_CLIENT_CREATE = 0x30000,
1095  ESC_ERR_UI_SERVICE_UNAVAILABLE = 0x30001,
1096  ESC_ERR_UI_BAD_RESPONSE = 0x30002,
1097  ESC_ERR_UI_NOT_ENOUGH_ROOM = 0x30003,
1098  ESC_ERR_UI_UNSUPPORTED_FONT = 0x30004,
1099  ESC_ERR_UI_NO_BUTTONS = 0x30005,
1100  ESC_ERR_UI_CMD_CANCELLED = 0x30006,
1101  ESC_ERR_UI_TEXT_AREAS_OVERLAP = 0x30007,
1102  ESC_ERR_UI_BUTTON_AREAS_OVERLAP = 0x30008,
1103  ESC_ERR_UI_LINE_ITEM_AREAS_OVERLAP = 0x30009,
1104  ESC_ERR_UI_CHECKBOX_AREAS_OVERLAP = 0x0003000A,
1105  ESC_ERR_UI_NO_CHECKBOXES = 0x0003000B,
1106  ESC_ERR_UI_SIGCAP_AREAS_OVERLAP = 0x0003000C,
1107  ESC_ERR_UI_INPUT_FIELD_AREAS_OVERLAP = 0x0003000D,
1108  ESC_ERR_UI_NO_DATA = 0x0003000E,
1109  ESC_ERR_UI_EXCEEDED_ITEM_LIMIT = 0x0003000F,
1110  ESC_ERR_UI_TOUCH_AREAS_OVERLAP = 0x30010,
1111  ESC_ERR_UI_NO_TOUCH_AREAS = 0x30011,
1112  ESC_ERR_UI_CUSTOM_MODE_REQUIRED = 0x30012,
1113  ESC_ERR_UI_SLIDESHOW_ALREADY_ACTIVE = 0x30013,
1114  ESC_ERR_UI_TOUCHSCREEN_UNAVAILABLE = 0x30014,
1115 
1116  ESC_ERR_UI_GRAPHIC_DISPLAY_UNAVAILABLE = 0x30015,
1117  ESC_ERR_UI_RECTANGLE_AREAS_OVERLAP = 0x30016,
1118  ERR_UI_PARAGRAPH_AREAS_OVERLAP = 0x00030017,
1119  ERR_UI_WORD_TOO_WIDE_FOR_RECTANGLE = 0x00030018,
1120  ERR_UI_PARAGRAPH_VIOLATES_MIN_DIMENSIONS = 0x00030019,
1121  ERR_UI_PAN_ENTRY_CANCELLED = 0x0003001A,
1122  ERR_FIO_RECORD_TOO_LARGE_FOR_BUFFER = 0x00080000,
1123  ERR_FIO_FILE_SIZE_INVALID = 0x00080001,
1124  ERR_FIO_FILE_EMPTY = 0x00080002,
1125  ERR_FIO_NO_MATCHING_RECORDS = 0x00080003,
1126  ERR_FIO_INVALID_RECORD_LENGTH = 0x00080004,
1127  ERR_FIO_FAILED_TO_READ_RECORD = 0x00080005,
1128  ERR_FIO_DUPLICATE_RECORD = 0x00080006,
1129  ERR_FIO_FAILED_TO_WRITE_RECORD = 0x00080007
1130 } EXTENDED_STATUS_CODES;
1131 
1132 typedef enum
1133 {
1134  CEMV_APP_ERROR_FN_NONE = 0x00,
1135  CEMV_APP_ERROR_FN_CEMV_INITIALIZE = 0x01,
1136  CEMV_APP_ERROR_FN_CEMV_INITIATE_TRANSACTION = 0x02,
1137  CEMV_APP_ERROR_FN_CEMV_BUILD_CANDIDATE_LIST = 0x03,
1138  CEMV_APP_ERROR_FN_CEMV_FINAL_APPLICATION_SELECTION = 0x04,
1139  CEMV_APP_ERROR_FN_CEMV_INITIATE_APPLICATION = 0x05,
1140  CEMV_APP_ERROR_FN_CEMV_READ_APPLICATION_DATA = 0x06,
1141  CEMV_APP_ERROR_FN_CEMV_OFFLINE_DATA_AUTHENTICATION = 0x07,
1142  CEMV_APP_ERROR_FN_CEMV_PROCESS_RESTRICTIONS = 0x08,
1143  CEMV_APP_ERROR_FN_CEMV_CARDHOLDER_VERIFICATION = 0x09,
1144  CEMV_APP_ERROR_FN_CEMV_CARDHOLDER_VERIFICATION_CONTINUE = 0x0a,
1145  CEMV_APP_ERROR_FN_CEMV_TERMINAL_RISK_MANAGEMENT = 0x0b,
1146  CEMV_APP_ERROR_FN_CEMV_TERMINAL_ACTION_ANALYSIS = 0x0c,
1147  CEMV_APP_ERROR_FN_CEMV_CARD_ACTION_ANALYSIS = 0x0d,
1148  CEMV_APP_ERROR_FN_CEMV_COMPLETION = 0x0e,
1149  CEMV_APP_ERROR_FN_CEMV_TRANSACTION_MODE = 0x0f,
1150  CEMV_APP_ERROR_FN_CEMV_GET_APPLICATION_NAME = 0x10,
1151  CEMV_APP_ERROR_FN_CEMV_SET_DATA_ELEMENTS = 0x11,
1152  CEMV_APP_ERROR_FN_CEMV_GET_DATA_ELEMENTS = 0x12,
1153  CEMV_APP_ERROR_FN_CEMV_UPDATE_EMV_KERNEL_CONFIG_FILE = 0x13,
1154  CEMV_APP_ERROR_FN_UI_DISPLAY_CLEAR = 0x20,
1155  CEMV_APP_ERROR_FN_UI_DISLAY_TEXT = 0x21,
1156  CEMV_APP_ERROR_FN_UI_DISPLAY_BUTTON = 0x22,
1157  CEMV_APP_ERROR_FN_UI_LIST_CREATE = 0x23,
1158  CEMV_APP_ERROR_FN_UI_LIST_ADD_ITEM = 0x24,
1159  CEMV_APP_ERROR_FN_UI_LIST_READ_BUTTON = 0x25,
1160  CEMV_APP_ERROR_FN_UI_LIST_GET_SELECTED_ITEM = 0x26,
1161  CEMV_APP_ERROR_FN_PCI_START_CUSTOM_DISPLAY_MODE = 0x30
1162 } CEMV_APP_ERROR_FN;
1163 
1164 typedef enum
1165 {
1166  CEMV_APP_ERROR_STATE_NONE = 0x00,
1167  CEMV_APP_ERROR_STATE_SERIAL_COMM = 0x01,
1168  CEMV_APP_ERROR_STATE_VALIDATE_COMMAND = 0x02,
1169  CEMV_APP_ERROR_STATE_TRANSACTION = 0x03,
1170  CEMV_APP_ERROR_STATE_CANDIDATE_SELECTION = 0x04,
1171  CEMV_APP_ERROR_STATE_DISPLAY_APP_MENU = 0x05,
1172  CEMV_APP_ERROR_STATE_LOAD_CONFIG_GROUP = 0x06,
1173  CEMV_APP_ERROR_STATE_CARD_REMOVAL = 0x07,
1174  CEMV_APP_ERROR_STATE_UNKNOWN = 0xff
1175 } CEMV_APP_ERROR_STATE;
1176 
1177 typedef enum
1178 {
1179  EMV_LCD_DISPLAY_MODE_CANCEL = 0,
1180  EMV_LCD_DISPLAY_MODE_MENU = 1,
1181  EMV_LCD_DISPLAY_MODE_PROMPT = 2,
1182  EMV_LCD_DISPLAY_MODE_MESSAGE = 3,
1183  EMV_LCD_DISPLAY_MODE_LANGUAGE_SELECT = 8,
1184  EMV_LCD_DISPLAY_MODE_CLEAR_SCREEN = 16,
1185  EMV_LCD_DISPLAY_MODE_AR_MESSAGE2 = 0Xf2,
1186  EMV_LCD_DISPLAY_MODE_AR_MESSAGE3 = 0Xf3,
1187  EMV_LCD_DISPLAY_MODE_AR_MESSAGE4 = 0Xf4
1188 } EMV_LCD_DISPLAY_MODE;
unsigned char displayExpDate
Mask or display expiration date. Values '0' = mask, '1' = don't mask. Default '1'.
Definition: IDTCommon.h:70
unsigned char cdaType
Supported CDA type. Value should be 0x02.
Definition: IDTCommon.h:154
unsigned char terminalType
Standard parameter. Tag 9F35 See EMVCo book IV.
Definition: IDTCommon.h:134
BOOL disableAutoPPS
No auto pps for negotiate mode.
Definition: IDTCommon.h:28
unsigned char exponentLength
Length of exponent. 0x01 or 0x03 as per EMV specs.
Definition: IDTCommon.h:47
unsigned char index
As per payment networks definition.
Definition: IDTCommon.h:165
Definition: IDTCommon.h:58
unsigned char floorlLimitChecking
Indicates whether or not terminal uses Floor Limit Checking. 0x00 or 0x01.
Definition: IDTCommon.h:102
unsigned char adviceManaged
Indicates whether or not Advice messages are supported by Terminal (only if needed by Level3 implemen...
Definition: IDTCommon.h:142
unsigned char pse
Indicates whether or not PSE Selection method is supported by Terminal. 0x00 or 0x01.
Definition: IDTCommon.h:143
unsigned char pinTimeOut
In seconds. Time allocated to cardholder to enter PIN. Binary value Example : 0x0F for 15s...
Definition: IDTCommon.h:140
unsigned char baseKeyType
BTPay Only. Key Type. Values '0' = Data Key, '1' = Pin Key. Default '0'.
Definition: IDTCommon.h:71
unsigned char maxTargetPercentage
EMV offline risk management parameter.
Definition: IDTCommon.h:111
unsigned char tac
Indicates whether or not terminal uses Terminal Action Code. 0x00 or 0x01.
Definition: IDTCommon.h:101
unsigned char defaultDDOL
Standard parameter.. Tag.
Definition: IDTCommon.h:115
unsigned char ppsLength
lenght of pps data
Definition: IDTCommon.h:31
unsigned char batchManaged
Indicates whether or not Batch messages are supported by Terminal. 0x00 or 0x01.
Definition: IDTCommon.h:141
unsigned char pinByPass
Indicates whether or not PIN bypass is supported by Terminal. 0x00 or 0x01.
Definition: IDTCommon.h:146
Definition: IDTCommon.h:163
unsigned char emvContact
Indicates whether terminal supports EMV contact. Tag 9F33, byte 1, bit 6 0x00 or 0x01.
Definition: IDTCommon.h:135
bool latchClosed
Determines if Card Latch is engaged. If device does not have a latch, value is always FALSE...
Definition: IDTCommon.h:16
unsigned char referalManaged
Indicates whether or not Referal managed are supported by Terminal (only if needed by Level3 implemen...
Definition: IDTCommon.h:147
unsigned char postPANClear
Last PAN digits to display. Values '0' - '4'. Default '4'.
Definition: IDTCommon.h:68
unsigned char aidLen
AID’s length.
Definition: IDTCommon.h:95
unsigned char index
As per payment networks definition.
Definition: IDTCommon.h:46
unsigned char hashAlgorithm
Hash Algorithm 0x01 = SHA-1.
Definition: IDTCommon.h:43
unsigned char ddolLen
Dynamic Data Object List length.
Definition: IDTCommon.h:117
Definition: IDTCommon.h:13
unsigned char targetPercentage
EMV offline risk management parameter.
Definition: IDTCommon.h:109
Definition: IDTCommon.h:42
unsigned char transactionCurrencyExponent
Transaction Currency Exponent. Example: Amount 4.53$ is managed as 453. Tag 5F36. ...
Definition: IDTCommon.h:119
unsigned char randomTransactionSelection
Indicates whether or not terminal uses Random Transaction Selection. 0x00 or 0x01.
Definition: IDTCommon.h:103
unsigned char encryptionAlgorithm
Encryption Algorithm 0x01 = RSA.
Definition: IDTCommon.h:44
unsigned char applicationSelectionIndicator
Standard parameter.
Definition: IDTCommon.h:96
unsigned char notVelocity
Indicates Velocity are not supported by Terminal or not. 0x00 or 0x01.
Definition: IDTCommon.h:153
unsigned char provideCardholderConfirmation
Indicates whether or not cardholder may confirm application selection at EMV Selection time...
Definition: IDTCommon.h:133
bool iccPower
Determines if ICC has been powered up.
Definition: IDTCommon.h:14
BOOL sendIFS
Send S(IFS) request if T=1 protocolError: Reference source not found.
Definition: IDTCommon.h:26
Definition: IDTCommon.h:66
unsigned char encryptionType
BTPay Only. Key Type. Values '1' = TDES, '2' = AES. Default '1'.
Definition: IDTCommon.h:72
unsigned char autoRun
Indicates whether or not Terminal is configured in AutoRun. 0x00 or 0x01.
Definition: IDTCommon.h:144
Definition: IDTCommon.h:131
unsigned char defaultTAC
Indicates whether or not Default TAC are supported by Terminal. 0x00 or 0x01.
Definition: IDTCommon.h:148
unsigned char prePANClear
Leading PAN digits to display. Values '0' - '6'. Default '4'.
Definition: IDTCommon.h:67
Definition: IDTCommon.h:25
Definition: IDTCommon.h:92
unsigned char velocitiyChecking
Indicates whether or not terminal uses Velocity Checking. 0x00 or 0x01.
Definition: IDTCommon.h:104
unsigned char tdolLen
Transaction Data Object List length.
Definition: IDTCommon.h:114
BOOL disableResponseCheck
No check on response of S(IFS) request.
Definition: IDTCommon.h:29
BOOL explicitPPS
Explicit PPSError: Reference source not found.
Definition: IDTCommon.h:27
unsigned char notRTS
Indicates RTS are not supported by Terminal or not. 0x00 or 0x01.
Definition: IDTCommon.h:152
unsigned char defaultTDOL
Standard parameter.
Definition: IDTCommon.h:112
bool cardSeated
Determines if card is inserted.
Definition: IDTCommon.h:15
unsigned char * pps
pps is used to set the Protocol and Parameters Selection between card and reader, only Di <= 4 are su...
Definition: IDTCommon.h:30
Definition: IDTCommon.h:725
unsigned char emvContactless
Indicates whether or not terminal support scontactless in EMV mode. 0x00 or 0x01. ...
Definition: IDTCommon.h:138
unsigned char keyLength
Length of key. max 248 bytes as per EMV specs.
Definition: IDTCommon.h:48
unsigned char skipTACIACDefault
Indicates whether or not terminal uses default values for risk management.
Definition: IDTCommon.h:100
unsigned char magstripe
Indicates whether terminal supports magstripe. 0x00 or 0x01.
Definition: IDTCommon.h:139
bool magneticDataPresent
True = Magnetic data present, False = No Magnetic Data.
Definition: IDTCommon.h:18
unsigned char encryptionOption
Definition: IDTCommon.h:73
bool cardPresent
If device has a latch, determines if the card is present in device. If the device does not have a lat...
Definition: IDTCommon.h:17
unsigned char aidLen
AID’s length.
Definition: IDTCommon.h:60
unsigned char maskChar
Last PAN digits to display. Values 0x20-0x7E. Default 0x2A &#39;*&#39;.
Definition: IDTCommon.h:69