> For the complete documentation index, see [llms.txt](https://sandbox-docs.verifone.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sandbox-docs.verifone.com/s-adk-5.1-programmers-guide/_e_m_v___common___interface_8h_source.md).

# EMV\_Common\_Interface.h

[Go to the documentation of this file.](/s-adk-5.1-programmers-guide/readme/files/dir_f2a776acea245b054b8e462971041f2d/dir_80881f393df249dc583814c3f321a110/dir_49ad5c5dc7899901ed3c01071194a6ed/dir_f903da7b326800d8643fdc82fbf02ea6/_e_m_v___common___interface_8h.md)

```cpp
 1 /****************************************************************************
 2 * Product: InFusion
 3 * Company: VeriFone
 4 * Author: GSS R&D Germany
 5 * Content: Interface definitions and functions
 6 ****************************************************************************/
 7 
 8 
 9 #ifndef EMVCTRL_COMMON_H /* avoid double interface-includes */
 10  #define EMVCTRL_COMMON_H
 11 
 12 #ifdef __cplusplus
 13 extern "C" {
 14 #endif
 15 
 16 
 17 
 18 // ========================================================================================================
 19 // === COMMON PART ===
 20 // ========================================================================================================
 21 
 33 #define EMV_ADK_MAX_LANG 20 
 34 #define EMV_ADK_DEFAULT_AIDSUPP 20 
 35 #define EMV_ADK_MAX_AIDSUPP EMV_ADK_DEFAULT_AIDSUPP 
 36 #define EMV_ADK_LIMIT_AIDSUPP 255 
 37 #define EMV_ADK_MAX_LG_DDOL 80 
 38 #define EMV_ADK_MAX_LG_TDOL 80 
 39 #define EMV_ADK_MAX_PRIO_APP 5 
 40 #define EMV_ADK_MAX_DOM_CHP 5 
 41 #define EMV_ADK_MAX_FB_MSR 20 
 42 #define EMV_ADK_MAX_CHP_TO_MSR 3 
 43 
 44 #define EMV_ADK_IAD_MAX_LEN 16 
 45 
 46 #define EMV_ADK_SCRIPT_RESULT_LEN 5 
 47 #define EMV_ADK_SCRIPT_RESULT_MAX 10 
 48 
 49 #define EMV_ADK_CHECKSUM_ASCII_SIZE 33 
 50 #define EMV_ADK_VERSION_ASCII_SIZE 128 
 51 #define EMV_ADK_CHECKSUM_SIZE 4 
 52 #define EMV_ADK_CHECKSUM_SIZE_NEW 16 
 53 #define EMV_ADK_BCD_AMOUNT_LEN 6
 54 #define EMV_ADK_BIN_AMOUNT_LEN 4
 55 #define EMV_ADK_BCD_COUNTRY_CURRENCY_CODE_LEN 2
 56 #define EMV_ADK_BCD_DATE_OR_TIME_LEN 3
 57 
 58 #define EMV_ADK_MAX_CVM 10 
 59 #define EMV_ADK_MAX_CVM_LIST_LEN (8 + EMV_ADK_MAX_CVM * 2) 
 60 
 61 #define EMV_ADK_MAX_PAN_LANGUAGES 6 
 62 
 63 
 65 
 66 // ========================================================================================================
 67 // === RETURN VALUES ===
 68 // ========================================================================================================
 69 
 81 typedef unsigned char EMV_ADK_INFO;
 82 #define EMV_ADK_OK 0 
 83 #define EMV_ADK_APP_REQ_START 0xA0 
 86 #define EMV_ADK_APP_REQ_CANDIDATE 0xA1 
 87 #define EMV_ADK_APP_REQ_READREC 0xA2 
 88 #define EMV_ADK_APP_REQ_DATAAUTH 0xA3 
 89 #define EMV_ADK_APP_REQ_ONL_PIN 0xA4 
 90 #define EMV_ADK_APP_REQ_OFL_PIN 0xA5 
 91 #define EMV_ADK_APP_REQ_PLAIN_PIN 0xA6 
 92 #define EMV_ADK_APP_REQ_CVM_END 0xA7 
 93 #define EMV_ADK_APP_REQ_RISK_MAN 0xA8 
 94 #define EMV_ADK_APP_REQ_CUST_CVM 0xA9 
 95 #define EMV_ADK_APP_REQ_APPS_PREPROC 0xAA 
 96 #define EMV_ADK_APP_REQ_AFTER_GPO 0xAB 
 97 #define EMV_ADK_APP_REQ_BUILD_LIST 0xAC 
 98 #define EMV_ADK_APP_REQ_END 0xAF 
 99 
 100 #define EMV_ADK_EMPTY_CONFIG 0xC6 
 101 #define EMV_ADK_TERMINATE_CDCVM_RETRY 0xC7 
 102 #define EMV_ADK_TIMEOUT 0xC8 
 103 
 104 #define EMV_ADK_CTLS_OFFLINE_PIN 0xCB 
 105 #define EMV_ADK_NOT_ACCEPTED 0xCC 
 106 #define EMV_ADK_CANCELLED 0xCD 
 107 #define EMV_ADK_CARD_LOG_LOG_OK 0xCE 
 108 #define EMV_ADK_CTLS_LOW_BATTERY 0xCF 
 109 #define EMV_ADK_VIRTTERMMAP_WRONG_INIT 0xD1 
 110 #define EMV_ADK_TOO_MANY_TAPS 0xD2 
 111 #define EMV_ADK_CAN_NOT_PROCESS 0xD3 
 112 #define EMV_ADK_USE_ANOTHER_CTLS_CARD 0xD4 
 114 #define EMV_ADK_USE_OTHER_TERMINAL 0xD5 
 115 #define EMV_ADK_SCRIPT_PROCESSING_COMPLETE 0xD6 
 116 #define EMV_ADK_FALLBACK_CHIP_ONLY 0xD7 
 117 
 118 #define EMV_ADK_NOT_ALLOWED 0xD9 
 119 #define EMV_ADK_CTLS_NOT_AVAILABLE 0xDA 
 120 #define EMV_ADK_USR_BCKSPC_KEY_PRESSED 0xDB 
 121 #define EMV_ADK_CEILING_LIMIT 0xDC 
 122 #define EMV_ADK_CTLS_RETAP_SAME 0xDD 
 123 #define EMV_ADK_CTLS_DOMESTIC_APP 0xDE 
 124 #define EMV_ADK_NO_CARD 0xDF 
 125 #define EMV_ADK_NOAPP 0xE0 
 126 #define EMV_ADK_NO_EXEC 0xE1 
 127 #define EMV_ADK_ARQC 0xE2 
 128 #define EMV_ADK_TC 0xE3 
 129 #define EMV_ADK_AAC 0xE4 
 130 #define EMV_ADK_AAR 0xE5 
 131 #define EMV_ADK_PARAM 0xE6 
 132 #define EMV_ADK_CARDERR 0xE7 
 133 #define EMV_ADK_BADAPP 0xE8 
 134 #define EMV_ADK_CVM 0xE9 
 135 #define EMV_ADK_ABORT 0xEA 
 136 #define EMV_ADK_CARD_BLOCKED 0xEB 
 137 #define EMV_ADK_CARDERR_FORMAT 0xEC 
 138 #define EMV_ADK_INTERNAL 0xED 
 139 #define EMV_ADK_ONLINE_PIN_RETRY 0xEE 
 140 #define EMV_ADK_SAVE_ERROR 0xEF 
 141 #define EMV_ADK_APP_BLOCKED 0xF0 
 142 #define EMV_ADK_READ_ERROR 0xF1 
 143 #define EMV_ADK_ERR_HSM 0xF2 
 144 #define EMV_ADK_TLV_BUILD_ERR 0xF3 
 145 #define EMV_ADK_FALLBACK 0xF4 
 146 #define EMV_ADK_ONL_PIN_REPEAT 0xF5 
 147 #define EMV_ADK_MAND_ELEM_MISSING 0xF6 
 148 #define EMV_ADK_INVALID_TERM_CAP 0xF7 
 149 #define EMV_ADK_REFERRAL 0xF8 
 150 #define EMV_ADK_2_CTLS_CARDS 0xF9 
 151 #define EMV_ADK_TXN_CTLS_L1_ERR 0xFA 
 152 #define EMV_ADK_TXN_CTLS_MOBILE 0xFB 
 153 #define EMV_ADK_TXN_CTLS_EMPTY_LIST 0xFC 
 154 #define EMV_ADK_TXN_EMPTY_LIST EMV_ADK_TXN_CTLS_EMPTY_LIST 
 155 #define EMV_ADK_TXN_CTLS_EMV_USE_OTHER_CARD 0xFD 
 156 #define EMV_ADK_CTLS_DOMESTIC_ONLY_NOT_READABLE 0xFE 
 157 #define EMV_ADK_CONTINUE 0xFF 
 158 
 160 
 161 // ========================================================================================================
 162 // === CONFIGURATION DEFINES ===
 163 // ========================================================================================================
 164 
 178 typedef unsigned char EMV_ADK_VIRTUALTERMMAP_TYPE;
 179  #define EMV_ADK_VIRTUALTERMMAP_APPEND 0x01 
 180  #define EMV_ADK_VIRTUALTERMMAP_DELETE_ALL 0x20 
 181 
 183 
 197 typedef unsigned char EMV_ADK_READAPPLI_TYPE;
 198  #define EMV_ADK_READ_AID 0 
 199  #define EMV_ADK_READ_FIRST 1 
 200  #define EMV_ADK_READ_NEXT 2 
 201  #define EMV_ADK_READ_MAX_APPLI 3 
 202 
 204 
 216 typedef unsigned char EMV_ADK_HANDLE_RECORD_TYPE;
 217  #define EMV_ADK_SET_ONE_RECORD 1 
 218  #define EMV_ADK_SET_TWO_RECORDS 2 
 219  #define EMV_ADK_SET_THREE_RECORDS 3 
 220  #define EMV_ADK_SET_FOUR_RECORDS 4 
 221  #define EMV_ADK_SET_FIVE_RECORDS 5 
 222  #define EMV_ADK_CLEAR_ONE_RECORD 0x10 
 223  #define EMV_ADK_CLEAR_ALL_RECORDS 0x20 
 224  #define EMV_ADK_FORCE_NEW_PARAMSET 0x30 
 225 
 226  #define EMV_ADK_TEMP_UPDATE 0xF0 
 227 
 232 #define EMV_ADK_ADD_TAG_SIZE 255 
 233 #define EMV_ADK_DEBUG_DATA_SIZE 32 
 234 
 235 
 252 #define EMV_ADK_EMV_ADK_MANUAL_REVERSAL_BYTE 0 
 253 #define EMV_ADK_MANUAL_REVERSAL_NIBBLE >> 4 & 0x0F 
 254 #define EMV_ADK_REFUND_BYTE 0 
 255 #define EMV_ADK_REFUND_NIBBLE & 0x0F 
 256 
 257 #define EMV_ADK_EMV_ADK_RESERVATION_BYTE 1 
 258 #define EMV_ADK_RESERVATION_NIBBLE >> 4 & 0x0F 
 259 #define EMV_ADK_TIP_BYTE 1 
 260 #define EMV_ADK_TIP_NIBBLE & 0x0F 
 261 
 262 #define EMV_ADK_REFERRAL_BYTE 2 
 263 #define EMV_ADK_REFERRAL_NIBBLE >> 4 & 0x0F 
 264 #define EMV_ADK_VOICEAUT_BYTE 2 
 265 #define EMV_ADK_VOICEAUT_NIBBLE & 0x0F 
 266 
 267 #define EMV_ADK_RFU_MODE_BYTE 3 
 268 #define EMV_ADK_RFU_MODE_NIBBLE >> 4 & 0x0F 
 269 #define EMV_ADK_FALLBACK_AFTER_CVM_BYTE 3 
 270 #define EMV_ADK_FALLBACK_AFTER_CVM_NIBBLE & 0x0F 
 271 
 272 #define EMV_ADK_IGNORE_CARD_ERROR_BYTE 4 
 273 #define EMV_ADK_IGNORE_CARD_ERROR_NIBBLE >> 4 & 0x0F 
 274 
 275 /* ------------------------------------------- */
 276 
 277 #define EMV_ADK_MANUAL_REVERSAL_NO 0 
 278 #define EMV_ADK_MANUAL_REVERSAL_A 1 
 279 #define EMV_ADK_MANUAL_REVERSAL_B 2 
 280 #define EMV_ADK_REFUND_NO 0 
 281 #define EMV_ADK_REFUND_YES 1 
 282 
 283 #define EMV_ADK_RESERVATION_NO 0 
 284 #define EMV_ADK_RESERVATION_A 1 
 285 #define EMV_ADK_RESERVATION_A_PLUS 2 
 286 #define EMV_ADK_RESERVATION_B 3 
 287 #define EMV_ADK_RESERVATION_B_PLUS 4 
 288 #define EMV_ADK_RESERVATION_B_OFFLINE 5 
 289 
 290 #define EMV_ADK_TIP_NO 0 
 291 #define EMV_ADK_TIP_YES 1 
 292 #define EMV_ADK_TIP_MODE_TIPPABLE 1 
 293 #define EMV_ADK_TIP_MODE_MIXED 2 
 294 #define EMV_ADK_TIP_MODE_INPUT 3 
 295 #define EMV_ADK_TIP_NON_REFUSED 3 
 296 
 297 #define EMV_ADK_REFERRAL_NO 0 
 298 #define EMV_ADK_REFERRAL_YES 1 
 299 
 300 #define EMV_ADK_VOICE_NO 0 
 301 #define EMV_ADK_VOICE_YES 1 
 302 
 303 #define EMV_ADK_FALLBACK_AFTER_CVM_NO 0 
 304 #define EMV_ADK_FALLBACK_AFTER_CVM_YES 1 
 305 
 306 #define EMV_ADK_IGNORE_CARD_ERROR_NO 0 
 307 #define EMV_ADK_IGNORE_CARD_ERROR_YES 1 
 308 
 309 #define EMV_ADK_TRX_CONFIG_DEFAULT "\x21\x20\x11\x01\x00\x00\x00\x00" 
 310 
 312 
 313 // ========================================================================================================
 314 // === TEXTS AND LANGUAGES ===
 315 // ========================================================================================================
 316 
 317 // === EMV_ADK_TXT_TYPE ===
 318 typedef struct
 319 {
 320  unsigned char byLanguage;
 321  unsigned char byTxt1;
 322  unsigned char byTxt2;
 323 } EMV_ADK_TXT_TYPE;
 324 
 337 #define EMV_ADK_TXT_NO_TXT 0x00 
 338 #define EMV_ADK_TXT_REFUND_CONF_AMOUNT 0x01 
 339 #define EMV_ADK_TXT_AMOUNT 0x02 
 340 #define EMV_ADK_TXT_3AMO_TIP 0xA1 
 341 #define EMV_ADK_TXT_3AMO_CASHBACK 0xA2 
 342 #define EMV_ADK_TXT_APPROVED 0x03 
 343 #define EMV_ADK_TXT_AUTH_APPROVED 0xA3 
 344 #define EMV_ADK_TXT_DECLINED 0x04 
 345 #define EMV_ADK_TXT_AUTH_DECLINED 0xA4 
 346 #define EMV_ADK_TXT_NOT_ACCEPTED 0x05 
 347 #define EMV_ADK_TXT_CARD_ERROR 0x06 
 348 #define EMV_ADK_TXT_PROCESSING_ERROR 0x07 
 349 #define EMV_ADK_TXT_CARD_READ_OK 0x08 
 350 #define EMV_ADK_TXT_AUTHORIZING 0x09 
 351 #define EMV_ADK_TXT_REMOVE_CARD 0x10 
 352 #define EMV_ADK_TXT_USE_CHIP_READER 0x11 
 353 #define EMV_ADK_TXT_USE_MAG_STRIPE 0x12 
 354 #define EMV_ADK_TXT_VOICEAUT 0x13 
 355 #define EMV_ADK_TXT_SEE_PHONE 0x14 
 356 #define EMV_ADK_TXT_RETAP_SAME 0x15 
 357 #define EMV_ADK_TXT_RETAP_SAME_L1 0x16 
 358 #define EMV_ADK_TXT_2_CARDS_IN_FIELD 0x17 
 359 #define EMV_ADK_TXT_CARD_READ_COMPLETE 0x18 
 360 
 362 #define EMV_ADK_LANG_NO_LANG 0x00 
 375 #define EMV_ADK_LANG_ENGLISH 0x01 
 376 #define EMV_ADK_LANG_GERMAN 0x02 
 377 #define EMV_ADK_LANG_FRENCH 0x03 
 378 #define EMV_ADK_LANG_SPANISH 0x04 
 379 #define EMV_ADK_LANG_ITALIAN 0x05 
 380 #define EMV_ADK_LANG_CZECH 0x06 
 381 #define EMV_ADK_LANG_SLOVAK 0x07 
 382 #define EMV_ADK_LANG_SWEDISH 0x08 
 383 #define EMV_ADK_LANG_POLISH 0x09 
 384 #define EMV_ADK_LANG_GREEK 0x0A 
 385 #define EMV_ADK_LANG_TURKISH 0x0B 
 386 #define EMV_ADK_LANG_DANSK 0x0C 
 387 #define EMV_ADK_LANG_DUTCH 0x0D 
 388 #define EMV_ADK_LANG_NORWEGIAN 0x0E 
 389 #define EMV_ADK_LANG_PORTUGUESE 0x0F 
 390 #define EMV_ADK_LANG_AUSTRIAN 0x10 
 391 #define EMV_ADK_LANG_ESTONIAN 0x11 
 392 #define EMV_ADK_LANG_FINNISH 0x12 
 393 #define EMV_ADK_LANG_LATVIA 0x13 
 394 #define EMV_ADK_LANG_LITHUANIA 0x14 
 395 #define EMV_ADK_LANG_RUSSIAN 0x15 
 396 #define EMV_ADK_LANG_BULGARIAN 0x16 
 397 #define EMV_ADK_LANG_CROATIAN 0x17 
 398 #define EMV_ADK_LANG_HUNGARIAN 0x18 
 399 #define EMV_ADK_LANG_MOLDAVIAN 0x19 
 400 #define EMV_ADK_LANG_ROMANIAN 0x1A 
 401 #define EMV_ADK_LANG_SERBIAN 0x1B 
 402 #define EMV_ADK_LANG_SLOVENIAN 0x1C 
 403 #define EMV_ADK_LANG_HEBREW 0x1D 
 404 #define EMV_ADK_LANG_UNKNOWN 0xFF 
 405 
 407 
 408 // ========================================================================================================
 409 // === COMMON TRANSACTION, TERMINAL AND ICC DEFINES ===
 410 // ========================================================================================================
 411 
 424  #define EMV_ADK_TT_BANK_ATTENDED_ONL_ONLY 0x11 
 425  #define EMV_ADK_TT_BANK_ATTENDED_OFFL_ONL 0x12 
 426  #define EMV_ADK_TT_BANK_ATTENDED_OFFL_ONLY 0x13 
 427  #define EMV_ADK_TT_BANK_UNATTENDED_ONL_ONLY 0x14 
 428  #define EMV_ADK_TT_BANK_UNATTENDED_OFFL_ONL 0x15 
 429  #define EMV_ADK_TT_BANK_UNATTENDED_OFFL_ONLY 0x16 
 430  #define EMV_ADK_TT_ATTENDED_ONL_ONLY 0x21 
 431  #define EMV_ADK_TT_ATTENDED_OFFL_ONL 0x22 
 432  #define EMV_ADK_TT_ATTENDED_OFFL_ONLY 0x23 
 433  #define EMV_ADK_TT_UNATTENDED_ONL_ONLY 0x24 
 434  #define EMV_ADK_TT_UNATTENDED_OFFL_ONL 0x25 
 435  #define EMV_ADK_TT_UNATTENDED_OFFL_ONLY 0x26 
 436  #define EMV_ADK_TT_CRDHC_UNATTENDED_ONL_ONLY 0x34 
 437  #define EMV_ADK_TT_CRDHC_UNATTENDED_OFFL_ONL 0x35 
 438  #define EMV_ADK_TT_CRDHC_UNATTENDED_OFFL_ONLY 0x36 
 439 
 441 
 463  #define EMV_ADK_TRAN_TYPE_GOODS_SERVICE 0x00 
 464  #define EMV_ADK_TRAN_TYPE_CASH 0x01 
 465  #define EMV_ADK_TRAN_TYPE_CASHBACK 0x09 
 466  #define EMV_ADK_TRAN_TYPE_VISA_QUASI_CASH 0x11 
 467  #define EMV_ADK_TRAN_TYPE_MANUAL_CASH 0x12 
 468  #define EMV_ADK_TRAN_TYPE_MASTERCARD_CASH 0x17 
 469  #define EMV_ADK_TRAN_TYPE_REFUND 0x20 
 473  #define EMV_ADK_TRAN_TYPE_AMEX_PREAUTH 0x30 
 474 //----------------------------------------
 478  #define EMV_ADK_TRAN_TYPE_INTERNAL_LIMIT 0x99
 479 //----------------------------------------
 480  #define EMV_ADK_TRAN_TYPE_INIT_RESERVATION_A 0xF0 
 481  #define EMV_ADK_TRAN_TYPE_INCREMENT_A 0xF1 
 482  #define EMV_ADK_TRAN_TYPE_ERHOEHUNG_A EMV_ADK_TRAN_TYPE_INCREMENT_A 
 483  #define EMV_ADK_TRAN_TYPE_BOOKING_A 0xF2 
 484  #define EMV_ADK_TRAN_TYPE_BUCHUNG_A EMV_ADK_TRAN_TYPE_BOOKING_A 
 485  #define EMV_ADK_TRAN_TYPE_INIT_RESERVATION_B 0xF3 
 486  #define EMV_ADK_TRAN_TYPE_INCREMENT_B 0xF4 
 487  #define EMV_ADK_TRAN_TYPE_ERHOEHUNG_B EMV_ADK_TRAN_TYPE_INCREMENT_B 
 488  #define EMV_ADK_TRAN_TYPE_BOOKING_B 0xF5 
 489  #define EMV_ADK_TRAN_TYPE_BUCHUNG_B EMV_ADK_TRAN_TYPE_BOOKING_B 
 490  #define EMV_ADK_TRAN_TYPE_TIP 0xE0 
 491  #define EMV_ADK_TRAN_TYPE_MANUAL_REVERSAL 0xD0 
 492  #define EMV_ADK_TRAN_TYPE_APPROVAL_PHONE 0xD1 
 493  #define EMV_ADK_TRAN_TYPE_READ_CARD_LOG 0xD2 
 494  #define EMV_ADK_TRAN_TYPE_READ_CARD_DATA 0xD3 
 495  #define EMV_ADK_TRAN_TYPE_TRANSIT 0xD4 
 496  #define EMV_ADK_TRAN_TYPE_REPEAT_ONLINE_PIN 0xC0 
 498  #define EMV_ADK_TRAN_TYPE_REPEAT_AMOUNT_CHANGE 0xB0 
 499  #define EMV_ADK_TRAN_TYPE_REPEAT_TRX_INTERCEPT 0xA0 
 500  #define EMV_ADK_TRAN_TYPE_REPEAT_TRX_DCC 0xA1 
 501 
 503  #define EMV_ADK_CARD_REQUESTS_ADVICE 0x08 
 518  #define EMV_ADK_CARD_ADDITIONAL_INFO 0x07 
 519 
 521 
 534 #define EMV_ADK_SI_ONLINE_PIN_REQUIRED 0x00000001u 
 535 #define EMV_ADK_SI_SIGNATURE_REQUIRED 0x00000002u 
 536 #define EMV_ADK_SI_FORCED_ACCEPTANCE 0x00000004u 
 537 #define EMV_ADK_SI_USER_DEFINED_CVM 0x00000008u 
 538 #define EMV_ADK_SI_ON_DEVICE_CVM 0x00000010u 
 539 #define EMV_ADK_SI_CUSTOMER_CARDWITHDRAWL 0x00000080u 
 540 #define EMV_ADK_SI_GICC_TIPPABLE 0x00000100u 
 541 #define EMV_ADK_SI_PTC_EXCEEDED 0x00000200u 
 542 #define EMV_ADK_SI_PIN_FAILURE 0x00000400u 
 543 #define EMV_ADK_SI_CONTACTLESS_CHIP 0x00000800u 
 544 #define EMV_ADK_SI_CONTACTLESS_MSR 0x00001000u 
 545 #define EMV_ADK_SI_TORN_CREATED 0x00002000u 
 546 #define EMV_ADK_SI_TORN_TRY_RECOVER 0x00004000u 
 547 #define EMV_ADK_SI_CONTACTLESS_WAITING 0x00008000u 
 548 #define EMV_ADK_SI_CONTACT_ONGOING 0x00008000u 
 549 #define EMV_ADK_SI_CTLS_LONG_TAP 0x00010000u 
 550 #define EMV_ADK_SI_ARQC_RESTART_ANY 0x00020000u 
 551 #define EMV_ADK_SI_ARQC_RESTART_UTGO 0x00040000u 
 552 #define EMV_ADK_SI_CONSUMER_DEVICE 0x00080000u 
 553 #define EMV_ADK_SI_CONTACTLESS_ONLY 0x00100000u 
 554 #define EMV_ADK_SI_OUTCOME_CD_CVM 0x00200000u 
 555 #define EMV_ADK_SI_OUTCOME_RECEIPT 0x00400000u 
 556 #define EMV_ADK_SI_WRITE_DS_FAILED 0x00800000u 
 557 #define EMV_ADK_SI_ARQC_RESTART_FORBIDDEN 0x01000000u 
 558 #define EMV_ADK_SI_ARQC_RESTART_NO_IAUTHD 0x02000000u 
 559 #define EMV_ADK_SI_TRANSIT_APPROVED 0x04000000u 
 560 
 562 
 575 #define EMV_ADK_SMART_STATUS_OK 0 
 576 #define EMV_ADK_SMART_STATUS_REMOVED 1 
 577 #define EMV_ADK_SMART_STATUS_OVERFLOW 2 
 578 #define EMV_ADK_SMART_STATUS_EXCHG_ERR 3 
 579 #define EMV_ADK_SMART_TWO_CARDS 4 
 580 #define EMV_ADK_SMART_ERR_INIT 5 
 581 #define EMV_ADK_SMART_INV_PARAM 6 
 582 #define EMV_ADK_SMART_WRONG_ATR 7 
 583 
 585 #define EMV_ADK_FETCHTAGS_NO_EMPTY (1 << 0) 
 599 #define EMV_ADK_FETCHTAGS_KERNEL (1 << 1) 
 602 #define EMV_ADK_FETCHTAGS_ADK (1 << 2) 
 607 #define EMV_ADK_FETCHTAGS_KERNEL_PRV (1 << 3) 
 612 #define EMV_ADK_FETCHTAGS_GET_DATA (1 << 4) 
 613 
 615 #define EMV_ADK_UPDATETAGS_ERROR_ON_NOT_ALLOWED_TAG (1 << 0) 
 629 
 631 enum EMV_CLIENT_MODE
 633 {
 634  EMV_CLIENT_MODE_LIBRARY,
 635  EMV_CLIENT_MODE_SERVER,
 636  EMV_CLIENT_MODE_GATEWAY,
 637  EMV_CLIENT_MODE_SDI
 638 };
 639 
 640 // ========================================================================================================
 641 // === END OF COMMON PART ===
 642 // ========================================================================================================
 643 
 644 #ifdef __cplusplus
 645 } // extern "C"
 646 #endif
 647 
 648 #endif // #ifndef EMVCTRL_COMMON_H
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://sandbox-docs.verifone.com/s-adk-5.1-programmers-guide/_e_m_v___common___interface_8h_source.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
