IDTech Windows SDK Guide  3.2.4.393
API reference for Visual Studio .Net
IDTechSDK.IDT_VP8800 Class Reference

Public Member Functions

RETURN_CODE config_setEthernetMACAddress (byte[] address, string ident="")
 
RETURN_CODE config_getEthernetMACAddress (ref byte[] address, string ident="")
 
RETURN_CODE config_getPINKeySlot (ref int slot, string ident="")
 
RETURN_CODE config_setPINKeySlot (int slot, string ident="")
 
RETURN_CODE config_getDataKeySlot (ref int slot, string ident="")
 
RETURN_CODE config_setDataKeySlot (int slot, string ident="")
 
RETURN_CODE config_getStatusKeySlots (ref byte[] keyslots, string ident="")
 
RETURN_CODE config_getKeySlotInfo (int index, int slot, ref byte[] keyslot, string ident="")
 
RETURN_CODE config_getNetworkConfiguration (ref bool isStatic, ref string address, ref string subnet, ref string gateway, ref string dns, string ident="")
 
RETURN_CODE config_setNetworkConfiguration (bool isStatic, string address, string subnet, string gateway, string dns, string ident="")
 
RETURN_CODE config_getSerialNumber (ref string response, string ident="")
 
RETURN_CODE device_getFirmwareVersion (ref string response, string ident="")
 
RETURN_CODE device_getMerchantRecord (int index, ref byte[] record, string ident="")
 
RETURN_CODE device_retrieveAIDList (ref byte[][] response, string ident="")
 
RETURN_CODE device_sendDataCommand (string cmd, bool calcLRC, ref byte[] response, string ident="")
 
RETURN_CODE device_sendDataCommand_ext (string cmd, bool calcLRC, ref byte[] response, int timeout, bool noResponse, string ident="")
 
RETURN_CODE msr_flushTrackData (string ident="")
 
RETURN_CODE msr_startMSRSwipe (int timeout, string ident="")
 
RETURN_CODE lcd_customDisplayMode (bool enable, string ident="")
 
RETURN_CODE lcd_displayText (int xCord, int yCord, int xWidth, int yWidth, int font, int style, int displayProp, string text, ref byte[] identifier, string ident="")
 
RETURN_CODE lcd_displayButton (int xCord, int yCord, int xWidth, int yWidth, int font, int style, int displayProp, string text, ref byte[] identifier, byte[] foreRGB=null, byte[] backRGB=null, string ident="")
 
RETURN_CODE device_updateDeviceFirmware (byte[] firmwareData, string ident="")
 
RETURN_CODE device_startRKI (bool isTest, string ident="")
 
RETURN_CODE lcd_setForeBackColor (byte[] foreRGB, byte[] backRGB, string ident="")
 
RETURN_CODE lcd_captureSignature (int timeout, int format, string ident="")
 
RETURN_CODE lcd_clearInputEvents (string ident="")
 
RETURN_CODE lcd_getInputEvent (byte timeout, string ident="")
 
RETURN_CODE device_sendPAE (string command, ref string response, int timeout, string ident="")
 
RETURN_CODE lcd_resetInitialState (string ident="")
 
RETURN_CODE msr_cancelMSRSwipe (string ident="")
 
RETURN_CODE emv_cancelTransaction (string ident="")
 
RETURN_CODE ctls_cancelTransaction (string ident="")
 
RETURN_CODE ctls_displayOnlineAuthResult (bool isOK, byte[] TLV, string ident="")
 
RETURN_CODE ctls_displayOnlineAuthResult_ext (byte statusCode, byte[] TLV, string ident="")
 
RETURN_CODE emv_startTransaction (double amount, double amtOther, int exponent, int type, int timeout, byte[] tags, bool forceOnline, string ident="")
 
RETURN_CODE emv_activateTransaction (int timeout, byte[] tags, bool forceOnline, bool isFastEMV=false, string ident="")
 
RETURN_CODE emv_continueTransactionForCV (int result, byte[] pinblock, string ident="")
 
RETURN_CODE ctls_startTransaction (double amount, double amtOther, int exponent, int type, int timeout, byte[] tags, bool forceOnline, bool isFastEMV=false, string ident="")
 
RETURN_CODE ctls_activateTransaction (int timeout, byte[] tags, bool forceOnline, bool isFastEMV=false, string ident="")
 
RETURN_CODE emv_completeTransaction (bool commError, byte[] authCode, byte[] iad, byte[] tlvScripts, byte[] tlv, string ident="")
 
RETURN_CODE emv_callbackResponseLCD (EMV_LCD_DISPLAY_MODE type, byte selection, string ident="")
 
RETURN_CODE emv_callbackResponsePIN (EMV_PIN_MODE type, byte[] KSN, byte[] PIN, string ident="")
 
RETURN_CODE emv_callbackResponseMSR (byte[] MSR, string ident="")
 
RETURN_CODE emv_getEMVKernelCheckValue (ref string response, string ident="")
 
RETURN_CODE emv_clearTransactionLog (string ident="")
 
RETURN_CODE emv_getCRLStatus (ref byte[] status, string ident="")
 
RETURN_CODE emv_getTransactionLogRecord (ref byte[] record, ref int remaining, string ident="")
 
RETURN_CODE emv_getExemptionLogStatus (ref byte[] status, string ident="")
 
RETURN_CODE emv_getTransactionLogStatus (ref byte[] status, string ident="")
 
RETURN_CODE emv_getEMVConfigurationCheckValue (ref string response, string ident="")
 
RETURN_CODE emv_getEMVKernelVersionExt (ref string response, string ident="")
 
RETURN_CODE emv_getEMVKernelVersion (ref string response, string ident="")
 
RETURN_CODE emv_retrieveTransactionResult (byte[] tags, ref IDTTransactionData tlv, string ident="")
 
RETURN_CODE emv_removeApplicationData (byte[] AID, string ident="")
 
RETURN_CODE ctls_removeApplicationData (byte[] AID, string ident="")
 
RETURN_CODE emv_removeCAPK (byte[] capk, string ident="")
 
RETURN_CODE ctls_removeCAPK (byte[] capk, string ident="")
 
RETURN_CODE emv_removeAllCAPK (string ident="")
 
RETURN_CODE ctls_removeAllCAPK (string ident="")
 
RETURN_CODE emv_removeCRL (byte[] crl, string ident="")
 
RETURN_CODE emv_removeAllCRL (string ident="")
 
RETURN_CODE emv_retrieveApplicationData (byte[] AID, ref byte[] tlv, string ident="")
 
RETURN_CODE ctls_retrieveApplicationData (byte[] AID, ref byte[] tlv, string ident="")
 
RETURN_CODE emv_removeTerminalData (string ident="")
 
RETURN_CODE emv_removeTransactionAmountLog (string ident="")
 
RETURN_CODE emv_retrieveAIDList (ref byte[][] response, string ident="")
 
RETURN_CODE ctls_retrieveAIDList (ref byte[][] response, string ident="")
 
RETURN_CODE emv_retrieveCAPK (byte[] capk, ref byte[] key, string ident="")
 
RETURN_CODE ctls_retrieveCAPK (byte[] capk, ref byte[] key, string ident="")
 
RETURN_CODE emv_retrieveCAPKList (ref byte[] keys, string ident="")
 
RETURN_CODE device_controlLED (byte indexLED, byte control, string ident="")
 
RETURN_CODE ctls_retrieveCAPKList (ref byte[] keys, string ident="")
 
RETURN_CODE emv_retrieveCRLList (ref byte[] list, string ident="")
 
RETURN_CODE emv_retrieveExceptionList (ref byte[] list, string ident="")
 
RETURN_CODE ctls_retrieveTerminalData (ref byte[] tlv, string ident="")
 
RETURN_CODE emv_retrieveTerminalData (ref byte[] tlv, string ident="")
 
RETURN_CODE emv_setApplicationData (byte[] tlv, string ident="")
 
RETURN_CODE ctls_setApplicationData (byte[] tlv, string ident="")
 
RETURN_CODE ctls_setDefaultConfiguration (string ident="")
 
RETURN_CODE ctls_setConfigurationGroup (byte[] tlv, string ident="")
 
RETURN_CODE emv_setCAPK (byte[] key, string ident="")
 
RETURN_CODE ctls_setCAPK (byte[] key, string ident="")
 
RETURN_CODE emv_setCRL (byte[] crl, string ident="")
 
RETURN_CODE emv_setException (byte[] exception, string ident="")
 
RETURN_CODE emv_removeException (byte[] exception, string ident="")
 
RETURN_CODE emv_removeAllExceptions (string ident="")
 
RETURN_CODE emv_trySetTerminalData (byte[] tlv, ref byte[] rejectedTLV, ref byte[] convertedTLV, bool overwrite=false, string ident="")
 
RETURN_CODE emv_setTerminalDataVP8800 (byte[] tlv, int config, string ident="")
 
RETURN_CODE emv_addTerminalData (byte[] tlv, string ident="")
 
RETURN_CODE ctls_setTerminalData (byte[] tlv, string ident="")
 
RETURN_CODE ctls_trySetTerminalData (byte[] tlv, ref byte[] rejectedTLV, ref byte[] convertedTLV, string ident="")
 
RETURN_CODE device_pingDevice (string ident="")
 
RETURN_CODE device_buzzer (string ident="")
 
RETURN_CODE device_calibrateParameters (byte delta, string ident="")
 
RETURN_CODE device_cancelTransaction (string ident="")
 
RETURN_CODE device_controlIndicator (int indicator, bool enable, string ident="")
 
RETURN_CODE device_controlUserInterface (byte[] values, string ident="")
 
RETURN_CODE device_sendVivoCommandP2 (byte command, byte subCommand, byte[] data, ref byte[] response, string ident="")
 
RETURN_CODE device_sendVivoCommandP2_ext (byte command, byte subCommand, byte[] data, ref byte[] response, int timeout, bool noResponse, string ident="")
 
RETURN_CODE device_sendVivoCommandP3 (byte command, byte subCommand, byte[] data, ref byte[] response, string ident="")
 
RETURN_CODE device_sendVivoCommandP3_ext (byte command, byte subCommand, byte[] data, ref byte[] response, int timeout, bool noResponse, string ident="")
 
RETURN_CODE ctls_getConfigurationGroup (int group, ref byte[] tlv, string ident="")
 
RETURN_CODE emv_getConfigurationGroup (int group, ref byte[] tlv, string ident="")
 
RETURN_CODE device_getConfigurationGroup (int group, ref byte[] tlv, string ident="")
 
RETURN_CODE emv_resetConfigurationGroup (int group, string ident="")
 
RETURN_CODE device_resetConfigurationGroup (int group, string ident="")
 
RETURN_CODE ctls_resetConfigurationGroup (int group, string ident="")
 
RETURN_CODE ctls_removeConfigurationGroup (int group, string ident="")
 
RETURN_CODE emv_removeConfigurationGroup (int group, string ident="")
 
RETURN_CODE device_removeConfigurationGroup (int group, string ident="")
 
RETURN_CODE device_setBurstMode (byte mode, string ident="")
 
RETURN_CODE device_listDirectory (string directoryName, bool recursive, bool onSD, ref string directory, string ident="")
 
RETURN_CODE device_createDirectory (string directoryName, string ident="")
 
RETURN_CODE device_transferFile (string fileName, byte[] file, bool isSD=false, string ident="")
 
RETURN_CODE device_getDriveFreeSpace (ref int free, ref int used, string ident="")
 
RETURN_CODE device_deleteFile (string filename, bool isSD=false, string ident="")
 
RETURN_CODE lcd_setBackgroundImage (string file, bool enable, string ident="")
 
RETURN_CODE lcd_setDisplayImage (string file, int posX, int posY, int posMode, bool touchEnable, bool clearScreen, string ident="")
 
RETURN_CODE lcd_startSlideShow (string files, int posX, int posY, int posMode, bool touchEnable, bool recursion, bool touchTerminate, int delay, int loops, bool clearScreen, string ident="")
 
RETURN_CODE device_deleteDirectory (string filename, string ident="")
 
RETURN_CODE device_setBuzzerLED (byte buzzer, byte led, bool ledON, string ident="")
 
RETURN_CODE device_setPollMode (byte mode, string ident="")
 
RETURN_CODE device_setMerchantRecord (int index, bool enabled, string merchantID, string merchantURL, string ident="")
 
RETURN_CODE device_startTransaction (double amount, double amtOther, int exponent, int type, int timeout, byte[] tags, byte[] options, bool isFastEMV=false, int transMode=0, string ident="")
 
RETURN_CODE device_activateTransaction (int timeout, byte[] tags, byte[] options, bool isFastEMV=false, string ident="")
 
RETURN_CODE icc_powerOffICC (string ident="")
 
RETURN_CODE icc_powerOnICC (ref byte[] ATR, byte interfaces, string ident="")
 
RETURN_CODE icc_exchangeAPDU (string c_APDU, ref byte[] response, string ident="")
 
RETURN_CODE device_enablePassThrough (bool enablePassThrough, string ident="")
 
string device_getResponseCodeString (RETURN_CODE eCode)
 
RETURN_CODE device_getTransactionResults (ref IDTTransactionData results, string ident="")
 
RETURN_CODE pin_getEncryptedOnlinePIN (int keyType, int timeout, string ident="")
 
RETURN_CODE pin_promptCreditDebit (object currencySymbol, string displayAmount, int timeout, string ident="")
 
RETURN_CODE pin_getPAN (bool getCSC, int timeout, string ident="")
 
RETURN_CODE device_StartRKI (int type, string ident="")
 
RETURN_CODE felica_authentication (byte[] key, string ident="")
 
RETURN_CODE felica_SendCommand (byte[] command, ref byte[] response, string ident="")
 
RETURN_CODE felica_readWithMac (int numBlocks, byte[] blockList, ref byte[] blocks, string ident="")
 
RETURN_CODE felica_writeWithMac (int blockNumber, byte[] data, string ident="")
 
RETURN_CODE felica_read (byte[] serviceCode, int numBlocks, byte[] blockList, ref byte[] blocks, string ident="")
 
RETURN_CODE felica_write (byte[] serviceCode, int blockCount, byte[] blockList, byte[] data, ref byte[] statusFlag, string ident="")
 
RETURN_CODE ctls_nfcCommand (byte[] nfcCmdPkt, ref byte[] response, string ident="")
 
RETURN_CODE felica_requestService (byte[] nodeCode, ref byte[] response, string ident="")
 
bool createFastEMVData (ref IDTTransactionData cData, string ident="")
 
RETURN_CODE device_updateFirmwareFromZip (byte[] zipfile, string ident="", bool isForeground=false)
 
RETURN_CODE device_sendConfigurationFromZip (byte[] zip, string filename, VC_OPERATION_TYPE type, bool matchFW, string ident="", bool isForeground=false)
 
RETURN_CODE device_sendConfiguration (string filename, VC_OPERATION_TYPE type, bool matchFW, string ident="", bool isForeground=false)
 
RETURN_CODE device_readConfigurationToMemory (string memo, Configs.InstallRules rules, List< Configs.DeviceCommand > cmds, string ident="", bool isForeground=false)
 
RETURN_CODE device_getConfigurationFromMemory (ref string json, string ident="")
 
RETURN_CODE device_RemoteKeyInjection (RKI_KEY_TYPE type, string keyName, string ident="", bool performOnForeground=false)
 

Static Public Member Functions

static bool useSerialPort (int port)
 
static int getCommandTimeout (string ident="")
 
static void setCommandTimeout (int milliseconds, string ident="")
 
static bool useSerialPort (int port, int baud, string ident="")
 
static bool useSerialPortLinux (string path)
 
static bool useSerialPortLinux (string path, int baud)
 
static void initSC ()
 
static void setCallback (CallBack my_Callback)
 
static void setCallback (IntPtr my_Callback, SynchronizationContext context)
 
static String SDK_Version ()
 
static RETURN_CODE lcd_clearDisplay (string ident="")
 
static void emv_autoAuthenticate (bool authenticate, string ident="")
 
static void emv_autoAuthenticateTags (bool authenticate, byte[] tags, string ident="")
 
static void emv_allowFallback (bool allow, string ident="")
 
static void lcd_retrieveMessage (DisplayMessages.DISPLAY_MESSAGE_LANGUAGE lang, DisplayMessages.DISPLAY_MESSAGE_IDENTIFIER id, ref string line1, ref string line2)
 

Properties

static IDT_VP8800 SharedController [get]
 

Member Function Documentation

RETURN_CODE IDTechSDK.IDT_VP8800.config_getDataKeySlot ( ref int  slot,
string  ident = "" 
)

Get Data Key Slot

Returns the current key slot (in index #2) being used for Data encryption

Parameters
slotCurrent key slot, valid values 0-9
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.config_getEthernetMACAddress ( ref byte[]  address,
string  ident = "" 
)

Get Device Ethernet MAC Address

Parameters
address6-byte MAC Address
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.config_getKeySlotInfo ( int  index,
int  slot,
ref byte[]  keyslot,
string  ident = "" 
)

Get Key Slot Info

This command checks whether a valid DUKPT key is stored at the specified index and slot and if a valid key is found then some basic information related to the type of key is returned

Parameters
indexKey index: 0x01 = PIN, 0x02 = Data, 0x05 = MAC, 0x14 = KEK
slotKey Slot: PIN/Data = 0-9, MAC = 0, KEK = 0 Key Slot Data. If 0x00, no key at the slot, otherwise:
  • Byte 0 - Key State: 0x00 = Unused, 0x01 = Valid, 0x02 = End of Life, 0xFF = Not Available
  • Byte 1-2 - Key Usage: "K0" = Key Encryuption or Wrapping, "P0" = PIN Encryption, "D0" = Data Encryption, "M0" = MAC Verification, "B1" = IPEK
  • Byte 3 - Algorithm: "T" = TDES, "D" = DES, "A" = AES
  • Byte 4 - Mode of Use: "N" = No restriction, "E" = Encryption Only, "D" = Decryption Only, "B" = Both Encryption/Decryption
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.config_getNetworkConfiguration ( ref bool  isStatic,
ref string  address,
ref string  subnet,
ref string  gateway,
ref string  dns,
string  ident = "" 
)

Get Device Network Configuration

Parameters
isStaticTRUE = Static IP, FALSE = DHCP
addressDevice IP Address as string. Example "192.168.1.15"
subnetDevice Subnet as string. Example "255.255.255.0"
gatewayDevice Gateway address as a string. Example "8.8.8.8"
dnsDevice DNS address as string. Example "192.168.1.22"
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.config_getPINKeySlot ( ref int  slot,
string  ident = "" 
)

Get PIN Key Slot

Returns the current key slot (in index #1) being used for PIN encryption

Parameters
slotCurrent key slot, valid values 0-9
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.config_getSerialNumber ( ref string  response,
string  ident = "" 
)

Polls device for Serial Number

Parameters
responseReturns Serial Number
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.config_getStatusKeySlots ( ref byte[]  keyslots,
string  ident = "" 
)

Get status of the key slots

There are 10 keyslots for PIN Key at Index 1, slot #0-9 There are 10 keyslots for DATA Key at Index 2, slots #0-9 There is a keyslot for MAC Key at Index 5, slot 0 There is a keyslot for Key Encryption Key at Index 14, slot 0

This routine will return all the key slots values as one continuous byte[] of 4-byte key slot info.

  • Byte 0 = Key Index Number
  • Byte 1-2 = Key Slot Number
  • Byte 3 = State: 0x00 = Unused, 0x01 = Valid, 0x02 = End of life, 0xFF = Not Available
Parameters
keySlotsKey slot data
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.config_setDataKeySlot ( int  slot,
string  ident = "" 
)

Set Data Key Slot

Sets the key slot to use for Data encryption (in index #2, string ident = "")

Parameters
slotKey slot to use, valid values 0-9
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.config_setEthernetMACAddress ( byte[]  address,
string  ident = "" 
)

Set Device Ethernet MAC Address

Parameters
address6-byte MAC Address
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.config_setNetworkConfiguration ( bool  isStatic,
string  address,
string  subnet,
string  gateway,
string  dns,
string  ident = "" 
)

Set Device Network Configuration

Parameters
isStaticTRUE = Static IP, FALSE = DHCP
addressDevice IP Address as string. Example "192.168.1.15"
subnetDevice Subnet as string. Example "255.255.255.0"
gatewayDevice Gateway address as a string. Example "8.8.8.8"
dnsDevice DNS address as string. Example "192.168.1.22"
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.config_setPINKeySlot ( int  slot,
string  ident = "" 
)

Set PIN Key Slot

Sets the key slot to use for PIN encryption (in index #1, string ident = "")

Parameters
slotKey slot to use, valid values 0-9
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
bool IDTechSDK.IDT_VP8800.createFastEMVData ( ref IDTTransactionData  cData,
string  ident = "" 
)

Create Fast EMV Data

At the completion of a Fast EMV Transaction, after the final card decision is returned and the IDTTransactionData object is provided, sending that cData object to this method will populate the .fastEMV element with string data that represents the Fast EMV data that would be returned from and IDTech FastEMV over KB protocol

Parameters
cDataThe IDTTransactionData object populated with card data.
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_activateTransaction ( int  timeout,
byte[]  tags,
bool  forceOnline,
bool  isFastEMV = false,
string  ident = "" 
)

Start a CTLS Transaction Request

Authorizes the CTLS transaction for an CTLS card

The tags will be returned in the callback routine.

Parameters
timeoutTimeout value in seconds.
tagsThe tags to be included in the request. Passed as TLV Data. Example, tag 9F02 with amount 0x000000000100 would be 0x9F0206000000000100
forceOnlineTRUE = do not allow offline approval, FALSE = allow ICC to approve offline if terminal capable
isFastEMVIf TRUE, it will populate the IDTTransactionData.fastEMV with ASCII data similar to IDTech FastEMV KB output, after performing an auto-authenticate and auto-complete with ResultCode = Could Not Contact Host
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()

NOTE ON APPLEPAY VAS: To enable ApplePay VAS, first a merchant record must be defined in one of the six available index positions (1-6) using device_setMerchantRecord, then container tag FFEE06 must be sent as part of the additional tags parameter of ctls_startTransaction. Tag FFEE06 must contain tag 9F26 and 9F22, and can optionanally contain tags 9F2B and DFO1. Example FFEE06189F220201009F2604000000009F2B050100000000DF010101 9F22 = two bytes = ApplePay Terminal Applicaiton Version Number. Hard defined as 0100 for now. (required, string ident = "") 9F26 = four bytes = ApplePay Terminal Capabilities Information (required, string ident = "")

  • Byte 1 = RFU
  • Byte 2 = Terminal Type
  • - Bit 7 = VAS Support (1=on, 0 = off, string ident = "")
  • - Bit 6 = Touch ID Required (1=on, 0 = off, string ident = "")
  • - Bit 5 = RFU
  • - Bit 4 = RFU
  • - Bit 0,1,2,3
  • - - 0 = Payment Terminal
  • - - 1 = Transit Terminal
  • - - 2 = Access Terminal
  • - - 3 = Wireless Handoff Terminal
  • - - 4 = App Handoff Terminal
  • - - 15 = Other Terminal
  • Byte 3 = RFU
  • Byte 4 = Terminal Mode
  • - 0 = ApplePay VAS OR ApplePay
  • - 1 = ApplePay VAS AND ApplePay
  • - 2 = ApplePay VAS ONLY
  • - 3 = ApplePay ONLY 9F2B = 5 bytes = ApplePay VAS Filter. Each byte filters for that specific merchant index (optional, string ident = "") DF01 = 1 byte = ApplePay VAS Protocol. (optional, string ident = "")
  • - Bit 0 : 1 = URL VAS, 0 = Full VAS
  • - Bit 1 : 1 = VAS Beeps, 0 = No VAS Beeps
  • - Bit 2 : 1 = Silent Comm Error, 2 = EMEA Comm Error
  • - Bit 3-7 : RFU
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_cancelTransaction ( string  ident = "")

Cancel Transaction

Cancels the currently executing EMV or CTLS transaction.

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_displayOnlineAuthResult ( bool  isOK,
byte[]  TLV,
string  ident = "" 
)

Display Online Authorization Result

Use this command to display the status of an online authorization request on the reader’s display (OK or NOT OK). Use this command after the reader sends an online request to the issuer.

Parameters
isOKTRUE = OK, FALSE = NOT OK, string ident = "")
TLVOptional TLV for AOSA
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_displayOnlineAuthResult_ext ( byte  statusCode,
byte[]  TLV,
string  ident = "" 
)

Display Online Authorization Result Extended

Use this command to display the status of an online authorization request on the reader’s display (OK, NOT OK or ARC). Use this command after the reader sends an online request to the issuer.

Parameters
statusCode0 = NOT OK, 1 = OK, 2 = ARC
TLVOptional TLV for AOSA
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_getConfigurationGroup ( int  group,
ref byte[]  tlv,
string  ident = "" 
)

Get Configuration Group

Retrieves the Configuration for the specified Group. Group 0 = terminal settings.

Parameters
groupConfiguration Group
tlvreturn data
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_nfcCommand ( byte[]  nfcCmdPkt,
ref byte[]  response,
string  ident = "" 
)

NFC Command

This command uses nfcCmdPkt[0] in command data field to implement different functions. This command should be used in Pass-Through mode and command with “Poll for a NFC Tag” data should be used first. Command with other data can only be used once the “Poll for a NFC Tag” command has indicated that a NFC tag is present.

Parameters
nfcCmdPktSystem Code
  • Poll for NFC Tag: nfcCmdPkt[0] = 0xff, nfcCmdPkt[1] = timeout value (in seconds, string ident = "")
  • Tag1 Static Get All Data: nfcCmdPkt[0] = 0x11
  • Tag1 Static Read a Byte: nfcCmdPkt[0] = 0x12, nfcCmdPkt[1] = Address of Data
  • Tag1 Static Write a Byte: nfcCmdPkt[0] = 0x13 nfcCmdPkt[1] = Address of Data, nfcCmdPkt[2] = Data to be written
  • Tag1 Static Write a Byte NE: nfcCmdPkt[0] = 0x14, nfcCmdPkt[1] = Address of Data, nfcCmdPkt[2] = Data to be written
  • Tag1 Dynamic Read a Segment: nfcCmdPkt[0] = 0x15, nfcCmdPkt[1] = Address of Segment
  • Tag1 Dynamic Read 8 Bytes: nfcCmdPkt[0] = 0x16, nfcCmdPkt[1] = Address of Data
  • Tag1 Dynamic Write 8 Bytes: nfcCmdPkt[0] = 0x17, nfcCmdPkt[1] = Address of Data, nfcCmdPkt[2]~nfcCmdPkt[9] = Data to be written
  • Tag1 Dynamic Write 8 Bytes NE: nfcCmdPkt[0] = 0x18, nfcCmdPkt[1] = Address of Data, nfcCmdPkt[2]~nfcCmdPkt[9] = Data to be written
  • Tag2 Read Data (16 bytes): nfcCmdPkt[0] = 0x21, nfcCmdPkt[1] = Address of Data
  • Tag2 Write Data (4 bytes): nfcCmdPkt[0] = 0x22, nfcCmdPkt[1] = Address of Data, nfcCmdPkt[2]~nfcCmdPkt[5] = Data to be written
  • Tag2 Select Sect: nfcCmdPkt[0] = 0x23, nfcCmdPkt[1] = Sect number
  • Tag3 Read Data: – nfcCmdPkt[0] = 0x41, – nfcCmdPkt[1] = Number of services, value n – nfcCmdPkt[2]~nfcCmdPkt[2n+1]: Service code list – nfcCmdPkt[2n+2]: Number of blocks, value m. – nfcCmdPkt[2n+3....]: Block list, length is 2m~3m
  • Tag3 Write Data: – nfcCmdPkt[0] = 0x41, – nfcCmdPkt[1] = Number of services, value n – nfcCmdPkt[2]~nfcCmdPkt[2n+1]: Service code list – nfcCmdPkt[2n+2]: Number of blocks, value m. – nfcCmdPkt[2n+3....]: Block list, length is 2m~3m – nfcCmdPkt[...]: Block data, length is 16m
  • Tag4 Command: nfcCmdPkt[0] = 0x81, nfcCmdPkt[1]~nfcCmdPkt[n]:data
responseResponse as explained in FeliCA Lite-S User's Manual
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_removeAllCAPK ( string  ident = "")

Remove All Certificate Authority Public Key

Removes all the CAPK for CTLS

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_removeApplicationData ( byte[]  AID,
string  ident = "" 
)

Remove Application Data by AID

Removes the Application Data for CTLS as specified by the AID name passed as a parameter

Parameters
AIDName of ApplicationID Must be between 5 and 16 bytes
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_removeCAPK ( byte[]  capk,
string  ident = "" 
)

Remove Certificate Authority Public Key

Removes the CAPK for CTLS as specified by the RID/Index

Parameters
capk6 byte CAPK = 5 bytes RID + 1 byte INDEX
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_removeConfigurationGroup ( int  group,
string  ident = "" 
)

Remove Configuration Group

Removes the Configuration as specified by the Group. Must not by group 0

Parameters
groupConfiguration Group
Return values
RETURN_CODEReturn codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with IDT_VP8800::device_getResponseCodeString:(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_resetConfigurationGroup ( int  group,
string  ident = "" 
)

Reset Configuration Group

This command allows resetting a dataset to its default configuration. If the file exists, it will be overwritten. If not, it will be created.

Parameters
groupConfiguration Group
Return values
RETURN_CODEReturn codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with IDT_VP8800::device_getResponseCodeString:(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_retrieveAIDList ( ref byte  response[][],
string  ident = "" 
)

Retrieve AID list

Returns all the AID names and their assigned groups installed on the terminal for CTLS.

Parameters
responsearray of TLV data objects: DFEE2D (group name) followed by 9F06 (AID), and DFEE4F (Interface 01 = CTLS, 02 = CONTACT, string ident = "")
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_retrieveApplicationData ( byte[]  AID,
ref byte[]  tlv,
string  ident = "" 
)

Retrieve Application Data by AID

Retrieves the CTLS Application Data for System Default Group 0 as specified by the AID name passed as a parameter.

Parameters
AIDName of ApplicationID. Must be between 5 and 16 bytes
tlvThe TLV elements of the requested AID
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_retrieveCAPK ( byte[]  capk,
ref byte[]  key,
string  ident = "" 
)

Retrieve Certificate Authority Public Key

Retrieves the CAPKfor CTLS as specified by the RID/Index passed as a parameter.

Parameters
capk6 bytes CAPK = 5 bytes RID + 1 byte Index
keyResponse returned as a CAKey format: [1 byte Hash Algorithm][1 byte Encryption Algorithm][20 bytes HashValue][4 bytes Public Key Exponent][2 bytes Modulus Length][Variable bytes Modulus] Where:
  • Hash Algorithm: The only algorithm supported is SHA-1.The value is set to 0x01
  • Encryption Algorithm: The encryption algorithm in which this key is used. Currently support only one type: RSA. The value is set to 0x01.
  • HashValue: Which is calculated using SHA-1 over the following fields: RID & Index & Modulus & Exponent
  • Public Key Exponent: Actually, the real length of the exponent is either one byte or 3 bytes. It can have two values: 3 (Format is 0x00 00 00 03), or 65537 (Format is 0x00 01 00 01, string ident = "")
  • Modulus Length: LenL LenH Indicated the length of the next field.
  • Modulus: This is the modulus field of the public key. Its length is specified in the field above.
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_retrieveCAPKList ( ref byte[]  keys,
string  ident = "" 
)

Retrieve the Certificate Authority Public Key list

Returns all the CAPK RID and Index installed on the terminal for CTLS.

Parameters
keys[key1][key2]...[keyn], each key 6 bytes where key = 5 bytes RID + 1 byte index
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_retrieveTerminalData ( ref byte[]  tlv,
string  ident = "" 
)

Retrieve Terminal Data

Retrieves the Terminal Data for CTLS. This is configuration group 0 (Tag FFEE - > FFEE0100). The terminal data can also be retrieved by ctls_getConfiguraitonGroup(0).

Parameters
tlvResponse returned as a TLV
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_setApplicationData ( byte[]  tlv,
string  ident = "" 
)

Set Application Data by AID

Sets the Application Data as specified by TLV data

Parameters
tlvApplication data in TLV format The first tag of the TLV data must be the group number (DFEE2D). Group 0 = System, all other Groups = User The second tag of the TLV data must be the AID (9F06) If tag DFEE4F is included, it must have a value of 0x01 to be a CTLS AID

Example valid TLV, for Group #2, AID a0000000045010: "dfee2d01029f0607a0000000045010dfee4b0101dfee2e0110dfee4c0101dfee4f0101

Tags:

  • DFEE2D : Group Number. Mandatory First Tag. 0 = System, 1-255 = User
  • 9F06 : AID. Mandatory Second Tag
  • DFEE4B : Partial AID Matching. 01 = allowed, 00 = Disabled. Mandatory for Visa
  • DFEE4C : Application Flow, System: Never, User: Mandatory – 0x01 = MasterCard – 0x02 = AMEX – 0x03 = MasterCard w/Strip Application – 0x06 = Visa – 0x0D = Discover – 0x0E = JCB – 0x15 = Reserved – 0x16 = Reserved – 0x17 = Reserved
  • DFEE4D = PPSE Disable, Optional
  • DFEE2E = Max AID Length, Mandatory if DFEE4B included. Visa must be set to 16
  • DFEE2F = Disable System Aid (no effect on User AID, string ident = "")
  • DFEE4F = Interface Support. 01 = CTLS, 02 = Contact. If missing, defaults to CTLS
Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_setCAPK ( byte[]  key,
string  ident = "" 
)

Set Certificate Authority Public Key

Sets the CAPK for CTLS as specified by the CAKey structure

Parameters
keyCAKey format: [5 bytes RID][1 byte Index][1 byte Hash Algorithm][1 byte Encryption Algorithm][20 bytes HashValue][4 bytes Public Key Exponent][2 bytes Modulus Length][Variable bytes Modulus] Where:
  • Hash Algorithm: The only algorithm supported is SHA-1.The value is set to 0x01
  • Encryption Algorithm: The encryption algorithm in which this key is used. Currently support only one type: RSA. The value is set to 0x01.
  • HashValue: Which is calculated using SHA-1 over the following fields: RID & Index & Modulus & Exponent
  • Public Key Exponent: Actually, the real length of the exponent is either one byte or 3 bytes. It can have two values: 3 (Format is 0x00 00 00 03), or 65537 (Format is 0x00 01 00 01, string ident = "")
  • Modulus Length: LenL LenH Indicated the length of the next field.
  • Modulus: This is the modulus field of the public key. Its length is specified in the field above.
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_setConfigurationGroup ( byte[]  tlv,
string  ident = "" 
)

Set Configuration Group

Sets the Configuration Group for CTLS as specified by the TLV data

Parameters
tlvConfiguration Group Data in TLV format The first tag of the TLV data must be the group number (DFEE2D). A second tag must exist
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_setDefaultConfiguration ( string  ident = "")

Set Default Configuration Group

Resets the device to default CTLS configuration group settings

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_setTerminalData ( byte[]  tlv,
string  ident = "" 
)

Set Terminal Data

Sets the Terminal Data for CTLS as specified by the TLV. The first TLV must be Configuration Group Number (Tag DFEE2D). The terminal global data is group 0, so the first TLV would be DFEE2D0100. Other groups can be defined using this method (1 or greater), and those can be retrieved with emv_getConfigurationGroup(int group), and deleted with emv_removeConfigurationGroup(int group). You cannot delete group 0.

Parameters
tlvTerminalData configuration data
Return values
RETURN_CODEReturn codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with IDT_VP8800::device_getResponseCodeString:(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_startTransaction ( double  amount,
double  amtOther,
int  exponent,
int  type,
int  timeout,
byte[]  tags,
bool  forceOnline,
bool  isFastEMV = false,
string  ident = "" 
)

Start a CTLS Transaction Request

Authorizes the CTLS transaction for an CTLS card

The tags will be returned in the callback routine.

Parameters
amountTransaction amount value (tag value 9F02, string ident = "")
amtOtherOther amount value, if any (tag value 9F03, string ident = "")
exponentNumber of characters after decimile point
typeTransaction type (tag value 9C).
timeoutTimeout value in seconds.
tagsAny other tags to be included in the request. Passed as TLV Data. Example, tag 9F02 with amount 0x000000000100 would be 0x9F0206000000000100 If tags 9F02 (amount),9F03 (other amount), or 9C (transaction type) are included, they will take priority over these values supplied as individual parameters to this method.
forceOnlineTRUE = do not allow offline approval, FALSE = allow ICC to approve offline if terminal capable
isFastEMVIf TRUE, it will populate the IDTTransactionData.fastEMV with ASCII data similar to IDTech FastEMV KB output, after performing an auto-authenticate and auto-complete with ResultCode = Could Not Contact Host
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()

NOTE ON APPLEPAY VAS: To enable ApplePay VAS, first a merchant record must be defined in one of the six available index positions (1-6) using device_setMerchantRecord, then container tag FFEE06 must be sent as part of the additional tags parameter of ctls_startTransaction. Tag FFEE06 must contain tag 9F26 and 9F22, and can optionanally contain tags 9F2B and DFO1. Example FFEE06189F220201009F2604000000009F2B050100000000DF010101 9F22 = two bytes = ApplePay Terminal Applicaiton Version Number. Hard defined as 0100 for now. (required, string ident = "") 9F26 = four bytes = ApplePay Terminal Capabilities Information (required, string ident = "")

  • Byte 1 = RFU
  • Byte 2 = Terminal Type
  • - Bit 8 = VAS Support (1=on, 0 = off, string ident = "")
  • - Bit 7 = Touch ID Required (1=on, 0 = off, string ident = "")
  • - Bit 6 = RFU
  • - Bit 5 = RFU
  • - Bit 1,2,3,4
  • - - 0 = Payment Terminal
  • - - 1 = Transit Terminal
  • - - 2 = Access Terminal
  • - - 3 = Wireless Handoff Terminal
  • - - 4 = App Handoff Terminal
  • - - 15 = Other Terminal
  • Byte 3 = RFU
  • Byte 4 = Terminal Mode
  • - 0 = ApplePay VAS OR ApplePay
  • - 1 = ApplePay VAS AND ApplePay
  • - 2 = ApplePay VAS ONLY
  • - 3 = ApplePay ONLY 9F2B = 5 bytes = ApplePay VAS Filter. Each byte filters for that specific merchant index (optional, string ident = "") DF01 = 1 byte = ApplePay VAS Protocol. (optional, string ident = "")
  • - Bit 1 : 1 = URL VAS, 0 = Full VAS
  • - Bit 2 : 1 = VAS Beeps, 0 = No VAS Beeps
  • - Bit 3 : 1 = Silent Comm Error, 2 = EMEA Comm Error
  • - Bit 4-8 : RFU
RETURN_CODE IDTechSDK.IDT_VP8800.ctls_trySetTerminalData ( byte[]  tlv,
ref byte[]  rejectedTLV,
ref byte[]  convertedTLV,
string  ident = "" 
)

Try to Set CTLS Terminal Data

Atempts to set the CTLS Terminal Data. Use this functions to attempt to set the terminal data to the device. This function will allow the cross-device tag compatible writing of IDTech Legacy/New tag definitions

Parameters
tlvTerminalData TLV Data
rejectedTLVContains the tags (if any) that were rejected by the firmware
convertedTLVContains the tags (if any) that were converted and accepted by the firmware
identOptional identifier
Return values
RETURN_CODEReturn codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with IDT_BTPay::device_getResponseCodeString:()
RETURN_CODE IDTechSDK.IDT_VP8800.device_activateTransaction ( int  timeout,
byte[]  tags,
byte[]  options,
bool  isFastEMV = false,
string  ident = "" 
)

Start EMV Transaction Request

Authorizes the EMV transaction for an ICC card

The tags will be returned in the callback routine.

Parameters
timeoutTimeout value in seconds.
tagsThe tags to be included in the request. Passed as TLV Data. Example, tag 9F02 with amount 0x000000000100 would be 0x9F0206000000000100
optionsSelects interface and other device options. Must be 4 bytes
  • Byte 0
  • - b7, b6, b5 : must be 0
  • - b4, b3: 00 = normal, 01 = fallback from ICC, 10 = fallback from CTLS, 11 = INVALID SELECTION
  • - b2 : use MagStrip Interface
  • - b1 : use Contact interface
  • - b0 : Use CTLS interface
  • Byte 1
  • - RFU : Must be set to value 0
  • Byte 2
  • - b8, b7, b6, : must be 0
  • - b5 : Enable display of transaction type in default LCD UI Message
  • - b4 : Disable ViVOpay Default Contactless Logo
  • - b3 : Disable ViVOpay default Buzzer UI
  • - b2 : Disable ViVOpay default LED UI
  • - b1 : Disable ViVOpay default LCD UI Messages
  • Byte 3
  • - b8, b7, b6, b5, b4, b3, b2 : must be 0
  • - b1 : Use Event (non-blcoking) Mode

Note: To request tags to be included in default response, use tag DFEE1A, and specify tag list. Example four tags 9F02, 9F36, 95, 9F37 to be included in response = DFEE1A079F029F369f9F37

Parameters
isFastEMVIf TRUE, it will populate the IDTTransactionData.fastEMV with ASCII data similar to IDTech FastEMV KB output, after performing an auto-authenticate and auto-complete with ResultCode = Could Not Contact Host
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.device_buzzer ( string  ident = "")

Buzzer Device

Buzzer the reader. If success can hear one beep. Otherwise, returns timeout.

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_calibrateParameters ( byte  delta,
string  ident = "" 
)

Calibrate reference parameters

Parameters
deltaDelta value (0x02 standard default value, string ident = "")
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_cancelTransaction ( string  ident = "")

Cancel Transaction

Cancels the currently executing device transaction.

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.device_controlIndicator ( int  indicator,
bool  enable,
string  ident = "" 
)

Control Indicators

Control the reader. If connected, returns success. Otherwise, returns timeout.

Parameters
indicatordescription as follows: 00h: ICC LED 01h: Blue MSR 02h: Red MSR 03h: Green MSR
enableTRUE = ON, FALSE = OFF
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_controlLED ( byte  indexLED,
byte  control,
string  ident = "" 
)

Control LED

Controls the LED for the reader. This command will only operate in pass-through mode

Parameters
indexLEDFor LED
  • 00: LED 0 (Power LED, leftmost LED)
  • 01: LED 1
  • 02: LED 2
  • 03: LED 3
  • FF: All LED's
controlLED Status:
  • 00: LED Off
  • 01: LED On
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.device_controlUserInterface ( byte[]  values,
string  ident = "" 
)

Control User Interface

Controls the User Interface: Display, Beep, LED

Parameters
valuesFour bytes to control the user interface Byte[0] = LCD Message Messages 00-07 are normally controlled by the reader.
  • 00h: Idle Message (Welcome, string ident = "")
  • 01h: Present card (Please Present Card, string ident = "")
  • 02h: Time Out or Transaction cancel (No Card, string ident = "")
  • 03h: Transaction between reader and card is in the middle (Processing...)
  • 04h: Transaction Pass (Thank You, string ident = "")
  • 05h: Transaction Fail (Fail, string ident = "")
  • 06h: Amount (Amount $ 0.00 Tap Card, string ident = "")
  • 07h: Balance or Offline Available funds (Balance $ 0.00) Messages 08-0B are controlled by the terminal
  • 08h: Insert or Swipe card (Use Chip & PIN, string ident = "")
  • 09h: Try Again(Tap Again, string ident = "")
  • 0Ah: Tells the customer to present only one card (Present 1 card only)
  • 0Bh: Tells the customer to wait for authentication/authorization (Wait)
  • FFh: indicates the command is setting the LED/Buzzer only. Byte[1] = Beep Indicator
  • 00h: No beep
  • 01h: Single beep
  • 02h: Double beep
  • 03h: Three short beeps
  • 04h: Four short beeps
  • 05h: One long beep of 200 ms
  • 06h: One long beep of 400 ms
  • 07h: One long beep of 600 ms
  • 08h: One long beep of 800 ms Byte[2] = LED Number
  • 00h: LED 0 (Power LED) 01h: LED 1
  • 02h: LED 2
  • 03h: LED 3
  • FFh: All LEDs Byte[3] = LED Status
  • 00h: LED Off
  • 01h: LED On
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_createDirectory ( string  directoryName,
string  ident = "" 
)

Create Directory

This command adds a subdirectory to the indicated path.

Parameters
directoryNameDirectory Name. The data for this command is a ASCII string with the complete path and directory name you want to create. You do not need to specify the root directory. Indicate subdirectories with a forward slash (/).
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_deleteDirectory ( string  filename,
string  ident = "" 
)

Delete Directory

This command deletes an empty directory.

Parameters
filenameComplete path and file name of the directory you want to delete. You do not need to specify the root directory. Indicate subdirectories with a forward slash (/).
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_deleteFile ( string  filename,
bool  isSD = false,
string  ident = "" 
)

Delete File

This command deletes a file or group of files.

Parameters
filenameComplete path and file name of the file you want to delete. You do not need to specify the root directory. Indicate subdirectories with a forward slash (/).
isSDTRUE = Delete from SDCard, FALSE = Delete from Flash
ipOptional: IP address to execute command on (for IP connected devices, string ident = "")
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString( string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_enablePassThrough ( bool  enablePassThrough,
string  ident = "" 
)

Enable Pass Through

Enables Pass Through Mode for direct communication with L1 interface (power on icc, send apdu, etc).

Parameters
enablePassThroughtrue = pass through ON, false = pass through OFF
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_getConfigurationFromMemory ( ref string  json,
string  ident = "" 
)

Read Device Configuration From Memory Retrieves the ViVOconfig configuration data from memory after a successful device_readConfigurationToMemory

Parameters
jsonReturns the .json file data that can be saved to disk
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(). When no data is available, return code = RETURN_CODE_NO_DATA_AVAILABLE
RETURN_CODE IDTechSDK.IDT_VP8800.device_getConfigurationGroup ( int  group,
ref byte[]  tlv,
string  ident = "" 
)

Get Configuration Group

Retrieves the Configuration for the specified Group. Group 0 = terminal settings.

Parameters
groupConfiguration Group
tlvreturn data
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.device_getDriveFreeSpace ( ref int  free,
ref int  used,
string  ident = "" 
)

Drive Free Space

This command returns the free and used disk space on the flash drive.

Parameters
freeFree bytes available on device
usedUsed bytes on on device
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_getFirmwareVersion ( ref string  response,
string  ident = "" 
)

Polls device for Firmware Version

Parameters
responseResponse returned of Firmware Version
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_getMerchantRecord ( int  index,
ref byte[]  record,
string  ident = "" 
)

Get Merchant Record Gets the merchant record for ApplePay VAS

Parameters
indexMerchant Record index, valid values 1-6
recordData returned containing 99 bytes: Byte 0 = Merchand Index Byte 1 = Merchant Enabled (1 = enabled, string ident = "") Byte 2 - 33 = Merchant Protocol Hash-256 value Byte 34 = Length of Merchant URL Bytes 35 - 99 = URL
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
string IDTechSDK.IDT_VP8800.device_getResponseCodeString ( RETURN_CODE  eCode)

Get the description of response result.

Parameters
eCodethe response result.
Return values
thestring for description of response result
  • case 0: "no error, beginning task";
  • case 1: "no response from reader";
  • case 2: "invalid response data";
  • case 3: "time out for task or CMD";
  • case 4: "wrong parameter";
  • case 5: "SDK is doing MSR or ICC task";
  • case 6: "SDK is doing PINPad task";
  • case 7: "SDK is doing CTLS task";
  • case 8: "SDK is doing EMV task";
  • case 9: "SDK is doing Other task";
  • case 10: "err response or data";
  • case 11: "no reader attached";
  • case 12: "mono audio is enabled";
  • case 13: "did connection";
  • case 14: "audio volume is too low";
  • case 15: "task or CMD be canceled";
  • case 16: "UF wrong string format";
  • case 17: "UF file not found";
  • case 18: "UF wrong file format";
  • case 19: "Attempt to contact online host failed";
  • case 20: "Attempt to perform RKI failed";
  • case 0x300: "Key Type(TDES) of Session Key is not same as the related Master Key.";
  • case 0x400: "Related Key was not loaded.";
  • case 0x500: "Key Same.";
  • case 0x501: "Key is all zero";
  • case 0x502: "TR-31 format error";
  • case 0x702: "PAN is Error Key.";
  • case 0x705: "No Internal MSR PAN (or Internal MSR PAN is erased timeout)";
  • case 0X0C01: "Incorrect Frame Tag";
  • case 0X0C02: "Incorrect Frame Type";
  • case 0X0C03: "Unknown Frame Type";
  • case 0X0C04: "Unknown Command";
  • case 0X0C05: "Unknown Sub-Command";
  • case 0X0C06: "CRC Error";
  • case 0X0C07: "Failed";
  • case 0X0C08: "Timeout";
  • case 0X0C0A: "Incorrect Parameter";
  • case 0X0C0B: "Command Not Supported";
  • case 0X0C0C: "Sub-Command Not Supported";
  • case 0X0C0D: "Parameter Not Supported / Status Abort Command";
  • case 0X0C0F: "Sub-Command Not Allowed";
  • case 0X0D01: "Incorrect Header Tag";
  • case 0X0D02: "Unknown Command";
  • case 0X0D03: "Unknown Sub-Command";
  • case 0X0D04: "CRC Error in Frame";
  • case 0X0D05: "Incorrect Parameter";
  • case 0X0D06: "Parameter Not Supported";
  • case 0X0D07: "Mal-formatted Data";
  • case 0X0D08: "Timeout";
  • case 0X0D0A: "Failed / NACK";
  • case 0X0D0B: "Command not Allowed";
  • case 0X0D0C: "Sub-Command not Allowed";
  • case 0X0D0D: "Buffer Overflow (Data Length too large for reader buffer)";
  • case 0X0D0E: "User Interface Event";
  • case 0X0D11: "Communication type not supported, VT-1, burst, etc.";
  • case 0X0D12: "Secure interface is not functional or is in an intermediate state.";
  • case 0X0D13: "Data field is not mod 8";
  • case 0X0D14: "Pad 0x80 not found where expected";
  • case 0X0D15: "Specified key type is invalid";
  • case 0X0D1: "Could not retrieve key from the SAM(InitSecureComm)";
  • case 0X0D17: "Hash code problem";
  • case 0X0D18: "Could not store the key into the SAM(InstallKey)";
  • case 0X0D19: "Frame is too large";
  • case 0X0D1A: "Unit powered up in authentication state but POS must resend the InitSecureComm command";
  • case 0X0D1B: "The EEPROM may not be initialized because SecCommInterface does not make sense";
  • case 0X0D1C: "Problem encoding APDU";
  • case 0X0D20: "Unsupported Index(ILM) SAM Transceiver error – problem communicating with the SAM(Key Mgr)";
  • case 0X0D2: "Unexpected Sequence Counter in multiple frames for single bitmap(ILM) Length error in data returned from the SAM(Key Mgr)";
  • case 0X0D22: "Improper bit map(ILM)";
  • case 0X0D23: "Request Online Authorization";
  • case 0X0D24: "ViVOCard3 raw data read successful";
  • case 0X0D25: "Message index not available(ILM) ViVOcomm activate transaction card type(ViVOcomm)";
  • case 0X0D26: "Version Information Mismatch(ILM)";
  • case 0X0D27: "Not sending commands in correct index message index(ILM)";
  • case 0X0D28: "Time out or next expected message not received(ILM)";
  • case 0X0D29: "ILM languages not available for viewing(ILM)";
  • case 0X0D2A: "Other language not supported(ILM)";
  • case 0X0D41: "Unknown Error from SAM";
  • case 0X0D42: "Invalid data detected by SAM";
  • case 0X0D43: "Incomplete data detected by SAM";
  • case 0X0D44: "Reserved";
  • case 0X0D45: "Invalid key hash algorithm";
  • case 0X0D46: "Invalid key encryption algorithm";
  • case 0X0D47: "Invalid modulus length";
  • case 0X0D48: "Invalid exponent";
  • case 0X0D49: "Key already exists";
  • case 0X0D4A: "No space for new RID";
  • case 0X0D4B: "Key not found";
  • case 0X0D4C: "Crypto not responding";
  • case 0X0D4D: "Crypto communication error";
  • case 0X0D4E: "Module-specific error for Key Manager";
  • case 0X0D4F: "All key slots are full (maximum number of keys has been installed)";
  • case 0X0D50: "Auto-Switch OK";
  • case 0X0D51: "Auto-Switch failed";
  • case 0X0D90: "Account DUKPT Key not exist";
  • case 0X0D91: "Account DUKPT Key KSN exausted";
  • case 0x0D00: "This Key had been loaded.";
  • case 0x0E00: "Base Time was loaded.";
  • case 0x0F00: "Encryption Or Decryption Failed.";
  • case 0x1000: "Battery Low Warning (It is High Priority Response while Battery is Low.)";
  • case 0x1800: "Send “Cancel Command” after send “Get Encrypted PIN” &”Get Numeric “& “Get Amount”";
  • case 0x1900: "Press “Cancel” key after send “Get Encrypted PIN” &”Get Numeric “& “Get Amount”";
  • case 0x30FF: "Security Chip is not connect";
  • case 0x3000: "Security Chip is deactivation & Device is In Removal Legally State.";
  • case 0x3101: "Security Chip is activation & Device is In Removal Legally State.";
  • case 0x5500: "No Admin DUKPT Key.";
  • case 0x5501: "Admin DUKPT Key STOP.";
  • case 0x5502: "Admin DUKPT Key KSN is Error.";
  • case 0x5503: "Get Authentication Code1 Failed.";
  • case 0x5504: "Validate Authentication Code Error.";
  • case 0x5505: "Encrypt or Decrypt data failed.";
  • case 0x5506: "Not Support the New Key Type.";
  • case 0x5507: "New Key Index is Error.";
  • case 0x5508: "Step Error.";
  • case 0x5509: "KSN Error";
  • case 0x550A: "MAC Error.";
  • case 0x550B: "Key Usage Error.";
  • case 0x550C: "Mode Of Use Error.";
  • case 0x550F: "Other Error.";
  • case 0x6000: "Save or Config Failed / Or Read Config Error.";
  • case 0x6200: "No Serial Number.";
  • case 0x6900: "Invalid Command - Protocol is right, but task ID is invalid.";
  • case 0x6A01: "Unsupported Command – Protocol and task ID are right, but command is invalid – In this State";
  • case 0x6A00: "Unsupported Command - Protocol and task ID are right, but command is invalid.";
  • case 0x6B00: "Unknown parameter in command - Protocol task ID and command are right, but parameter is invalid.";
  • case 0x6C00: "Unknown parameter in command – Protocol task ID and command are right, but length is out of the requirement.";
  • case 0x7200: "Device is suspend (MKSK suspend or press password suspend).";
  • case 0x7300: "PIN DUKPT is STOP (21 bit 1).";
  • case 0x7400: "Device is Busy.";
  • case 0xE100: "Can not enter sleep mode";
  • case 0xE200: "File has existed";
  • case 0xE300: "File has not existed";
  • case 0xE313: "IO line low -- Card error after session start";
  • case 0xE400: "Open File Error";
  • case 0xE500: "SmartCard Error";
  • case 0xE600: "Get MSR Card data is error";
  • case 0xE700: "Command time out";
  • case 0xE800: "File read or write is error";
  • case 0xE900: "Active 1850 error!";
  • case 0xEA00: "Load bootloader error";
  • case 0xEF00: "Protocol Error- STX or ETX or check error.";
  • case 0xEB00: "Picture is not exist";
  • case 0x2C02: "No Microprocessor ICC seated";
  • case 0x2C06: "no card seated to request ATR";
  • case 0x2D01: "Card Not Supported,";
  • case 0x2D03: "Card Not Supported, wants CRC";
  • case 0x690D: "Command not supported on reader without ICC support";
  • case 0x8100: "ICC error time out on power-up";
  • case 0x8200: "invalid TS character received - Wrong operation step";
  • case 0x8300: "Decode MSR Error";
  • case 0x8400: "TriMagII no Response";
  • case 0x8500: "No Swipe MSR Card";
  • case 0x8510: "No Financial Card";
  • case 0x8600: "Unsupported F, D, or combination of F and D";
  • case 0x8700: "protocol not supported EMV TD1 out of range";
  • case 0x8800: "power not at proper level";
  • case 0x8900: "ATR length too long";
  • case 0x8B01: "EMV invalid TA1 byte value";
  • case 0x8B02: "EMV TB1 required";
  • case 0x8B03: "EMV Unsupported TB1 only 00 allowed";
  • case 0x8B04: "EMV Card Error, invalid BWI or CWI";
  • case 0x8B06: "EMV TB2 not allowed in ATR";
  • case 0x8B07: "EMV TC2 out of range";
  • case 0x8B08: "EMV TC2 out of range";
  • case 0x8B09: "per EMV96 TA3 must be > 0xF";
  • case 0x8B10: "ICC error on power-up";
  • case 0x8B11: "EMV T=1 then TB3 required";
  • case 0x8B12: "Card Error, invalid BWI or CWI";
  • case 0x8B13: "Card Error, invalid BWI or CWI";
  • case 0x8B17: "EMV TC1/TB3 conflict-";
  • case 0x8B20: "EMV TD2 out of range must be T=1";
  • case 0x8C00: "TCK error";
  • case 0xA304: "connector has no voltage setting";
  • case 0xA305: "ICC error on power-up invalid (SBLK(IFSD) exchange";
  • case 0xE301: "ICC error after session start";
  • case 0xFF00: "Request to go online";
  • case 0xFF01: "EMV: Accept the offline transaction";
  • case 0xFF02: "EMV: Decline the offline transaction";
  • case 0xFF03: "EMV: Accept the online transaction";
  • case 0xFF04: "EMV: Decline the online transaction";
  • case 0xFF05: "EMV: Application may fallback to magstripe technology";
  • case 0xFF06: "EMV: ICC detected tah the conditions of use are not satisfied";
  • case 0xFF07: "EMV: ICC didn't accept transaction";
  • case 0xFF08: "EMV: Transaction was cancelled";
  • case 0xFF09: "EMV: Application was not selected by kernel or ICC format error or ICC missing data error";
  • case 0xFF0A: "EMV: Transaction is terminated";
  • case 0xFF0B: "EMV: Other EMV Error";
  • case 0xFFFF: "NO RESPONSE";
  • case 0xF002: "ICC communication timeout";
  • case 0xF003: "ICC communication Error";
  • case 0xF00F: "ICC Card Seated and Highest Priority, disable MSR work request";
  • case 0xF200: "AID List / Application Data is not exist";
  • case 0xF201: "Terminal Data is not exist";
  • case 0xF202: "TLV format is error";
  • case 0xF203: "AID List is full";
  • case 0xF204: "Any CA Key is not exist";
  • case 0xF205: "CA Key RID is not exist";
  • case 0xF206: "CA Key Index it not exist";
  • case 0xF207: "CA Key is full";
  • case 0xF208: "CA Key Hash Value is Error";
  • case 0xF209: "Transaction format error";
  • case 0xF20A: "The command will not be processing";
  • case 0xF20B: "CRL is not exist";
  • case 0xF20C: "CRL number exceed max number";
  • case 0xF20D: "Amount,Other Amount,Trasaction Type are missing";
  • case 0xF20E: "The Identification of algorithm is mistake";
  • case 0xF20F: "No Financial Card";
  • case 0xF210: "In Encrypt Result state, TLV total Length is greater than Max Length";
  • case 0x1001: "INVALID ARG";
  • case 0x1002: "FILE_OPEN_FAILED";
  • case 0x1003: "FILE OPERATION_FAILED";
  • case 0x2001: "MEMORY_NOT_ENOUGH";
  • case 0x3002: "SMARTCARD_FAIL";
  • case 0x3003: "SMARTCARD_INIT_FAILED";
  • case 0x3004: "FALLBACK_SITUATION";
  • case 0x3005: "SMARTCARD_ABSENT";
  • case 0x3006: "SMARTCARD_TIMEOUT";
  • case 0x5001: "EMV_PARSING_TAGS_FAILED";
  • case 0x5002: "EMV_DUPLICATE_CARD_DATA_ELEMENT";
  • case 0x5003: "EMV_DATA_FORMAT_INCORRECT";
  • case 0x5004: "EMV_NO_TERM_APP";
  • case 0x5005: "EMV_NO_MATCHING_APP";
  • case 0x5006: "EMV_MISSING_MANDATORY_OBJECT";
  • case 0x5007: "EMV_APP_SELECTION_RETRY";
  • case 0x5008: "EMV_GET_AMOUNT_ERROR";
  • case 0x5009: "EMV_CARD_REJECTED";
  • case 0x5010: "EMV_AIP_NOT_RECEIVED";
  • case 0x5011: "EMV_AFL_NOT_RECEIVED";
  • case 0x5012: "EMV_AFL_LEN_OUT_OF_RANGE";
  • case 0x5013: "EMV_SFI_OUT_OF_RANGE";
  • case 0x5014: "EMV_AFL_INCORRECT";
  • case 0x5015: "EMV_EXP_DATE_INCORRECT";
  • case 0x5016: "EMV_EFF_DATE_INCORRECT";
  • case 0x5017: "EMV_ISS_COD_TBL_OUT_OF_RANGE";
  • case 0x5018: "EMV_CRYPTOGRAM_TYPE_INCORRECT";
  • case 0x5019: "EMV_PSE_NOT_SUPPORTED_BY_CARD";
  • case 0x5020: "EMV_USER_SELECTED_LANGUAGE";
  • case 0x5021: "EMV_SERVICE_NOT_ALLOWED";
  • case 0x5022: "EMV_NO_TAG_FOUND";
  • case 0x5023: "EMV_CARD_BLOCKED";
  • case 0x5024: "EMV_LEN_INCORRECT";
  • case 0x5025: "CARD_COM_ERROR";
  • case 0x5026: "EMV_TSC_NOT_INCREASED";
  • case 0x5027: "EMV_HASH_INCORRECT";
  • case 0x5028: "EMV_NO_ARC";
  • case 0x5029: "EMV_INVALID_ARC";
  • case 0x5030: "EMV_NO_ONLINE_COMM";
  • case 0x5031: "TRAN_TYPE_INCORRECT";
  • case 0x5032: "EMV_APP_NO_SUPPORT";
  • case 0x5033: "EMV_APP_NOT_SELECT";
  • case 0x5034: "EMV_LANG_NOT_SELECT";
  • case 0x5035: "EMV_NO_TERM_DATA";
  • case 0x6001: "CVM_TYPE_UNKNOWN";
  • case 0x6002: "CVM_AIP_NOT_SUPPORTED";
  • case 0x6003: "CVM_TAG_8E_MISSING";
  • case 0x6004: "CVM_TAG_8E_FORMAT_ERROR";
  • case 0x6005: "CVM_CODE_IS_NOT_SUPPORTED";
  • case 0x6006: "CVM_COND_CODE_IS_NOT_SUPPORTED";
  • case 0x6007: "NO_MORE_CVM";
  • case 0x6008: "PIN_BYPASSED_BEFORE";
  • case 0x7001: "PK_BUFFER_SIZE_TOO_BIG";
  • case 0x7002: "PK_FILE_WRITE_ERROR";
  • case 0x7003: "PK_HASH_ERROR";
  • case 0x8001: "NO_CARD_HOLDER_CONFIRMATION";
  • case 0x8002: "GET_ONLINE_PIN";
  • case 0xD000: "Data not exist";
  • case 0xD001: "Data access error";
  • case 0xD100: "RID not exist";
  • case 0xD101: "RID existed";
  • case 0xD102: "Index not exist";
  • case 0xD200: "Maximum exceeded";
  • case 0xD201: "Hash error";
  • case 0xD205: "System Busy";
  • case 0x0E01: "Unable to go online";
  • case 0x0E02: "Technical Issue";
  • case 0x0E03: "Declined";
  • case 0x0E04: "Issuer Referral transaction";
  • case 0x0F01: "Decline the online transaction";
  • case 0x0F02: "Request to go online";
  • case 0x0F03: "Transaction is terminated";
  • case 0x0F05: "Application was not selected by kernel or ICC format error or ICC missing data error";
  • case 0x0F07: "ICC didn't accept transaction";
  • case 0x0F0A: "Application may fallback to magstripe technology";
  • case 0x0F0C: "Transaction was cancelled";
  • case 0x0F0D: "Timeout";
  • case 0x0F0F: "Other EMV Error";
  • case 0x0F10: "Accept the offline transaction";
  • case 0x0F11: "Decline the offline transaction";
  • case 0x0F21: "ICC detected tah the conditions of use are not satisfied";
  • case 0x0F22: "No app were found on card matching terminal configuration";
  • case 0x0F23: "Terminal file does not exist";
  • case 0x0F24: "CAPK file does not exist";
  • case 0x0F25: "CRL Entry does not exist";
  • case 0x0FFE: "code when blocking is disabled";
  • case 0x0FFF: "code when command is not applicable on the selected device";
  • case 0xF005: "ICC Encrypted C-APDU Data Structure Length Error Or Format Error.";
  • case 0xBBE0: "CM100 Success";
  • case 0xBBE1: "CM100 Parameter Error";
  • case 0xBBE2: "CM100 Low Output Buffer";
  • case 0xBBE3: "CM100 Card Not Found";
  • case 0xBBE4: "CM100 Collision Card Exists";
  • case 0xBBE5: "CM100 Too Many Cards Exist";
  • case 0xBBE6: "CM100 Saved Data Does Not Exist";
  • case 0xBBE8: "CM100 No Data Available";
  • case 0xBBE9: "CM100 Invalid CID Returned";
  • case 0xBBEA: "CM100 Invalid Card Exists";
  • case 0xBBEC: "CM100 Command Unsupported";
  • case 0xBBED: "CM100 Error In Command Process";
  • case 0xBBEE: "CM100 Invalid Command";
  • case 0X9031: "Unknown command";
  • case 0X9032: "Wrong parameter (such as the length of the command is incorrect)";
  • case 0X9038: "Wait (the command couldn’t be finished in BWT)";
  • case 0X9039: "Busy (a previously command has not been finished)";
  • case 0X903A: "Number of retries over limit";
  • case 0X9040: "Invalid Manufacturing system data";
  • case 0X9041: "Not authenticated";
  • case 0X9042: "Invalid Master DUKPT Key";
  • case 0X9043: "Invalid MAC Key";
  • case 0X9044: "Reserved for future use";
  • case 0X9045: "Reserved for future use";
  • case 0X9046: "Invalid DATA DUKPT Key";
  • case 0X9047: "Invalid PIN Pairing DUKPT Key";
  • case 0X9048: "Invalid DATA Pairing DUKPT Key";
  • case 0X9049: "No nonce generated";
  • case 0X9949: "No GUID available. Perform getVersion first.";
  • case 0X9950: "MAC Calculation unsuccessful. Check BDK value.";
  • case 0X904A: "Not ready";
  • case 0X904B: "Not MAC data";
  • case 0X9050: "Invalid Certificate";
  • case 0X9051: "Duplicate key detected";
  • case 0X9052: "AT checks failed";
  • case 0X9053: "TR34 checks failed";
  • case 0X9054: "TR31 checks failed";
  • case 0X9055: "MAC checks failed";
  • case 0X9056: "Firmware download failed";
  • case 0X9060: "Log is full";
  • case 0X9061: "Removal sensor unengaged";
  • case 0X9062: "Any hardware problems";
  • case 0X9070: "ICC communication timeout";
  • case 0X9071: "ICC data error (such check sum error)";
  • case 0X9072: "Smart Card not powered up";
RETURN_CODE IDTechSDK.IDT_VP8800.device_getTransactionResults ( ref IDTTransactionData  results,
string  ident = "" 
)

Get Transaction Results Gets the transaction results when the reader is functioning in "Auto Poll" mode

Parameters
resultsThe transaction results
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(). When no data is available, return code = RETURN_CODE_NO_DATA_AVAILABLE
RETURN_CODE IDTechSDK.IDT_VP8800.device_listDirectory ( string  directoryName,
bool  recursive,
bool  onSD,
ref string  directory,
string  ident = "" 
)

List Directory

This command retrieves a directory listing of user accessible files from the reader.

Parameters
directoryNameDirectory Name. If null, root directory is listed
recursiveIncluded sub-directories
onSDTRUE = use flash storage The returned directory information
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_pingDevice ( string  ident = "")

Ping Device

Pings the reader. If connected, returns success. Otherwise, returns timeout.

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_readConfigurationToMemory ( string  memo,
Configs.InstallRules  rules,
List< Configs.DeviceCommand >  cmds,
string  ident = "",
bool  isForeground = false 
)

Read Device Configuration To Memory Executes a ViVOconfig read of device settings and stores the results in memory

Once a ViVOconfig read starts, all messages will be returned to the callback as DeviceState.ViVOconfig. The ViVOconfig operation is complete when the return code from a DeviceState.ViVOconfig message is one of the following values:

  • RETURN_CODE_SDK_VIVOCONFIG_READ_CONFIG_SUCCESS = Read process completed successfully. Execute device_getConfigurationFromMemory to retrieve the configuration data
  • RETURN_CODE_SDK_VIVOCONFIG_READ_CONFIG_FAILED = Read process FAILED.

    Parameters
    memoOptional: populates the memo field of the captured .json file
    rulesOptional: populates the .json file with available install rules
    cmdsOptional: populates the .json file with commands to execute
    identDevice ID to send command to. If not specified, current SDK default device will be used.
    isForegroundIf TRUE, will block program until update complete. Otherwise, FALSE performs update on background.
    Returns
    RETURN_CODE: Values can be parsed with errorCode.getErrorString(). When no data is available, return code = RETURN_CODE_NO_DATA_AVAILABLE
RETURN_CODE IDTechSDK.IDT_VP8800.device_RemoteKeyInjection ( RKI_KEY_TYPE  type,
string  keyName,
string  ident = "",
bool  performOnForeground = false 
)

Remote Key Injection Performs a remote key injection for the device

Parameters
typeRemote Key Injection Type
keyNameName of key (optional)
identDevice ID to send command to. If not specified, current SDK default device will be used.
performOnForegroundTRUE = block during process (default is false)
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(). When no data is available, return code = RETURN_CODE_NO_DATA_AVAILABLE
RETURN_CODE IDTechSDK.IDT_VP8800.device_removeConfigurationGroup ( int  group,
string  ident = "" 
)

Remove Configuration Group

Removes the Configuration as specified by the Group. Must not by group 0

Parameters
groupConfiguration Group
Return values
RETURN_CODEReturn codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with IDT_VP8800::device_getResponseCodeString:(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_resetConfigurationGroup ( int  group,
string  ident = "" 
)

Reset Configuration Group

This command allows resetting a dataset to its default configuration. If the file exists, it will be overwritten. If not, it will be created.

Parameters
groupConfiguration Group
Return values
RETURN_CODEReturn codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with IDT_VP8800::device_getResponseCodeString:(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_retrieveAIDList ( ref byte  response[][],
string  ident = "" 
)

Retrieve AID list

Returns all the AID names and their assigned groups installed on the terminal for CTLS/CONTACT.

Parameters
responsearray of 2-tag TLV data objects: DFEE2D (group name) followed by 9F06 (AID, string ident = "")
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_sendConfiguration ( string  filename,
VC_OPERATION_TYPE  type,
bool  matchFW,
string  ident = "",
bool  isForeground = false 
)

Send Configuration Executes a ViVOconfig update or verify to a device

Once a ViVOconfig write or verify starts, all messages will be returned to the callback as DeviceState.ViVOconfig. The ViVOconfig operation is complete when the return code from a DeviceState.ViVOconfig message is one of the following values:

  • RETURN_CODE_SDK_VIVOCONFIG_VERIFY_SUCCESS = Verification process completed successfully. No differences found.
  • RETURN_CODE_SDK_VIVOCONFIG_VERIFY_SUCCESS_WITH_WARNING = Verification process completed with warnings.
  • RETURN_CODE_SDK_VIVOCONFIG_VERIFY_FAILED = Verification process FAILED
  • RETURN_CODE_SDK_VIVOCONFIG_WRITE_SUCCESS = Write process completed successfully.
  • RETURN_CODE_SDK_VIVOCONFIG_WRITE_SUCCESS_WITH_WARNING = Write process completed with warnings
  • RETURN_CODE_SDK_VIVOCONFIG_WRITE_FAILED = Write process FAILED

    Parameters
    filenameThe .json configuration file to update the device with NOTE: You can also use this parameter to pass the path of where the .json file is located at on local storage instead
    filenameThe name of the .json configuration file
    typeVC_OPERATION_TYPE
  • VC_OPERATION_TYPE_WRITE = Write File To Device, Hash must validate
  • VC_OPERATION_TYPE_VERIFY = Verify Device With File
  • VC_OPERATION_TYPE_WRITE_IGNORE_HASH = Write File To Device, Ignore Hash
  • VC_OPERATION_TYPE_WRITE_FIX_HASH = Write File To Device, Fix Hash If Necessary
    Parameters
    matchFWTRUE = Device FW must match file FW, FALSE = Don't validate device FW against file
    identDevice ID to send command to. If not specified, current SDK default device will be used.
    isForegroundIf TRUE, will block program until update complete. Otherwise, FALSE performs update on background.
    Returns
    RETURN_CODE: Values can be parsed with errorCode.getErrorString(). When no data is available, return code = RETURN_CODE_NO_DATA_AVAILABLE
RETURN_CODE IDTechSDK.IDT_VP8800.device_sendConfigurationFromZip ( byte[]  zip,
string  filename,
VC_OPERATION_TYPE  type,
bool  matchFW,
string  ident = "",
bool  isForeground = false 
)

Send Configuration From Zip Executes a ViVOconfig update or verify to a device using files from a .zip archive

Once a ViVOconfig write or update starts, all messages will be returned to the callback as DeviceState.ViVOconfig. The ViVOconfig operation is complete when the return code from a DeviceState.ViVOconfig message is one of the following values:

  • RETURN_CODE_SDK_VIVOCONFIG_VERIFY_SUCCESS = Verification process completed successfully. No differences found.
  • RETURN_CODE_SDK_VIVOCONFIG_VERIFY_SUCCESS_WITH_WARNING = Verification process completed with warnings.
  • RETURN_CODE_SDK_VIVOCONFIG_VERIFY_FAILED = Verification process FAILED
  • RETURN_CODE_SDK_VIVOCONFIG_WRITE_SUCCESS = Write process completed successfully.
  • RETURN_CODE_SDK_VIVOCONFIG_WRITE_SUCCESS_WITH_WARNING = Write process completed with warnings
  • RETURN_CODE_SDK_VIVOCONFIG_WRITE_FAILED = Write process FAILED

    Parameters
    zip.Zip archive containing the .json configuration file and also any associated image assets NOTE: You can also use this parameter to pass the path of where the .zip file is located at on local storage instead
    filenameThe name of the .json configuration file
    typeVC_OPERATION_TYPE
  • VC_OPERATION_TYPE_WRITE = Write File To Device, Hash must validate
  • VC_OPERATION_TYPE_VERIFY = Verify Device With File
  • VC_OPERATION_TYPE_WRITE_IGNORE_HASH = Write File To Device, Ignore Hash
  • VC_OPERATION_TYPE_WRITE_FIX_HASH = Write File To Device, Fix Hash If Necessary
    Parameters
    matchFWTRUE = Device FW must match file FW, FALSE = Don't validate device FW against file
    identDevice ID to send command to. If not specified, current SDK default device will be used.
    isForegroundIf TRUE, will block program until update complete. Otherwise, FALSE performs update on background.
    Returns
    RETURN_CODE: Values can be parsed with errorCode.getErrorString(). When no data is available, return code = RETURN_CODE_NO_DATA_AVAILABLE
RETURN_CODE IDTechSDK.IDT_VP8800.device_sendDataCommand ( string  cmd,
bool  calcLRC,
ref byte[]  response,
string  ident = "" 
)

Send a data command to the device

Sends a command to the device.

Parameters
cmdString representation of command to execute
calcLRCIf TRUE, this will wrap command with start/length/lrc/sum/end: '{STX}{Len_Low}{Len_High} data {CheckLRC} {CheckSUM} {ETX}'
responseResponse data
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.device_sendDataCommand_ext ( string  cmd,
bool  calcLRC,
ref byte[]  response,
int  timeout,
bool  noResponse,
string  ident = "" 
)

Send a data command to the device - extended

Sends a command to the device.

Parameters
cmdString representation of command to execute
calcLRCIf TRUE, this will wrap command as NGA with start/length/lrc/sum/end: '{STX}{Len_Low}{Len_High} data {CheckLRC} {CheckSUM} {ETX}'
responseResponse data
timeoutTimeout value waiting for response, in milliseconds (1000 = 1 second, string ident = "")
noResponseif TRUE, this will not wait for a response and immediately return SUCCESS
calcITPIf TRUE, this will wrap command as ITP with start/end/lrc: '{STX} data {ETX}{CheckLRC}'
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.device_sendPAE ( string  command,
ref string  response,
int  timeout,
string  ident = "" 
)

Send Payment Application Engine Command

Executes a PAE command

Parameters
commandASCII command string, should start with "*PAE"
responsecommand response
timeouttimeout waiting for PAE response
ipOptional IP address when connected via TCP/IP
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_sendVivoCommandP2 ( byte  command,
byte  subCommand,
byte[]  data,
ref byte[]  response,
string  ident = "" 
)

Send Vivo Command Protocol 2

Sends a protocol 2 command to Vivo readers (IDG/NEO, string ident = "")

Parameters
commandCommand
subCommandSub-Command
dataData. May be null
responseResponse
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_sendVivoCommandP2_ext ( byte  command,
byte  subCommand,
byte[]  data,
ref byte[]  response,
int  timeout,
bool  noResponse,
string  ident = "" 
)

Send Vivo Command Protocol 2 Extended

Sends a protocol 2 command to Vivo readers (IDG/NEO, string ident = "")

Parameters
commandCommand
subCommandSub-Command
dataData. May be null
responseResponse
timeoutTimeout, in milliseconds (3000 = 3 seconds, string ident = "")
noResponseTRUE = don't wait for response, FALSE = wait for response defined by timeout
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_sendVivoCommandP3 ( byte  command,
byte  subCommand,
byte[]  data,
ref byte[]  response,
string  ident = "" 
)

Send Vivo Command Protocol 3

Sends a protocol 3 command to Vivo readers (IDG/NEO, string ident = "")

Parameters
commandCommand
subCommandSub-Command
dataData. May be null
responseResponse
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_sendVivoCommandP3_ext ( byte  command,
byte  subCommand,
byte[]  data,
ref byte[]  response,
int  timeout,
bool  noResponse,
string  ident = "" 
)

Send Vivo Command Protocol 3 Extended

Sends a protocol 3 command to Vivo readers (IDG/NEO, string ident = "")

Parameters
commandCommand
subCommandSub-Command
dataData. May be null
responseResponse
timeoutTimeout, in milliseconds (3000 = 3 seconds, string ident = "")
noResponseTRUE = don't wait for response, FALSE = wait for response defined by timeout
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_setBurstMode ( byte  mode,
string  ident = "" 
)

Send Burst Mode

Sets the burst mode forthe device.

Parameters
mode0 = OFF, 1 = Always On, 2 = Auto Exit
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_setBuzzerLED ( byte  buzzer,
byte  led,
bool  ledON,
string  ident = "" 
)

Set Buzzer/LED

Sets the readers buzzer and LED's.

Parameters
buzzer
  • 00h: No beep
  • 01h: Single beep
  • 02h: Double beep
  • 03h:  Three short beeps
  • 04h:  Four short beeps
  • 05h:  One long beep of 200 ms
  • 06h:  One long beep of 400 ms
  • 07h: One long beep of 600 ms
  • 08h:  One long beep of 800 ms
led
  • 00h: LED 0 (Leftmost LED, string ident = "")
  • 01h: LED 1
  • 02h: LED 2
  • 03h: LED 3
  • FFh: All LEDs
ledONTRUE = ON, FALSE = OFF
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_setMerchantRecord ( int  index,
bool  enabled,
string  merchantID,
string  merchantURL,
string  ident = "" 
)

Set Merchant Record Sets the merchant record for ApplePay VAS

Parameters
indexMerchant Record index, valid values 1-6
enabledMerchant Enabled/Valid flag
merchantIDMerchant unique identifer registered with Apple. Example com.idtechproducts.applePay
merchantURLMerchant URL, when applicable
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_setPollMode ( byte  mode,
string  ident = "" 
)

Send Poll Mode

Sets the poll mode forthe device. Auto Poll keeps reader active, Poll On Demand only polls when requested by terminal

Parameters
mode0 = Auto Poll, 1 = Poll On Demand
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_startRKI ( bool  isTest,
string  ident = "" 
)

Start Remote Key Injection

Starts a remote key injection request with IDTech RKI servers.

Parameters
isTestTRUE = Demo Device, FALSE = Production Device
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.device_StartRKI ( int  type,
string  ident = "" 
)

Start Remote Key Injection

Starts a remote key injection request with IDTech RKI servers. Set/Get RKI url with IDT_Device.RKI_URL.

Parameters
type0 = Symmetric RKI Demo Unit 1 = Symmetric RKI Production Unit 2 = PKI-RKI Demo Unit 3 = PKI-RKI Production Unit
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.device_startTransaction ( double  amount,
double  amtOther,
int  exponent,
int  type,
int  timeout,
byte[]  tags,
byte[]  options,
bool  isFastEMV = false,
int  transMode = 0,
string  ident = "" 
)

Start EMV Transaction Request

Authorizes the EMV transaction for an ICC card

The tags will be returned in the callback routine.

Parameters
amountTransaction amount value (tag value 9F02, string ident = "")
amtOtherOther amount value, if any (tag value 9F03, string ident = "")
exponentNumber of characters after decimile point
typeTransaction type (tag value 9C).
timeoutTimeout value in seconds.
tagsAny other tags to be included in the request. Passed as TLV Data. Example, tag 9F02 with amount 0x000000000100 would be 0x9F0206000000000100 If tags 9F02 (amount),9F03 (other amount), or 9C (transaction type) are included, they will take priority over these values supplied as individual parameters to this method.
optionsSelects interface and other device options. Must be 4 bytes
  • Byte 0
  • - b8, b7, b6 : must be 0
  • - b5, b4: 00 = normal, 01 = fallback from ICC, 10 = fallback from CTLS, 11 = INVALID SELECTION
  • - b3 : use MagStrip Interface
  • - b2 : use Contact interface
  • - b1 : Use CTLS interface
  • Byte 1
  • - RFU : Must be set to value 0
  • Byte 2
  • - b8, b7, b6, : must be 0
  • - b5 : Enable display of transaction type in default LCD UI Message
  • - b4 : Disable ViVOpay Default Contactless Logo
  • - b3 : Disable ViVOpay default Buzzer UI
  • - b2 : Disable ViVOpay default LED UI
  • - b1 : Disable ViVOpay default LCD UI Messages
  • Byte 3
  • - b8, b7, b6, b5, b4, b3, b2 : must be 0
  • - b1 : Use Event (non-blcoking) Mode

Note: To request tags to be included in default response, use tag DFEE1A, and specify tag list. Example four tags 9F02, 9F36, 95, 9F37 to be included in response = DFEE1A079F029F369f9F37

Parameters
isFastEMVIf TRUE, it will populate the IDTTransactionData.fastEMV with ASCII data similar to IDTech FastEMV KB output, after performing an auto-authenticate and auto-complete with ResultCode = Could Not Contact Host
transMode0 = normal, 1 = fallback from ICC, 2 = fallback from contactless
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.device_transferFile ( string  fileName,
byte[]  file,
bool  isSD = false,
string  ident = "" 
)

Transfer File

This command transfers a data file to the reader.

Parameters
fileNameFilename. The data for this command is a ASCII string with the complete path and file name you want to create. You do not need to specify the root directory. Indicate subdirectories with a forward slash (/).
fileThe data file.
isSDTRUE = tranfer to SD Card, FALSE = transfer to Flash.
ipOptional: IP address to execute command on (for IP connected devices, string ident = "")
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString( string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.device_updateDeviceFirmware ( byte[]  firmwareData,
string  ident = "" 
)

Update Firmware

Updates the firmware .

Parameters
firmwareDataSigned binary data of a firmware file provided by IDTech
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")

After you pass the firmwareData file, a new thread will start to execute the firmware download. You will receive status of the progress through callbacks to the IDTechSDK.Callback() delegate. The following parameters will be passed back:

  • sender = IDT_DEVICE_Types.IDT_DEVICE_AUGUSTA
  • state = DeviceState.FirmwareUpdate
  • transactionResultCode = status of the firmware update (starting, entering bootloader, applying update, block success, firmware success, string ident = "")
  • data = File Progress. Four bytes, with bytes [0][1] = current block, and bytes [2][3] = total blocks. 0x00030010 = block 3 of 16

Example code starting a firmware update

OpenFileDialog diag = new OpenFileDialog(ident);
diag.Filter = "NGA FW Files|*.fm";
if (diag.ShowDialog() == DialogResult.OK, string ident = "")
{
byte[] file = File.ReadAllBytes(diag.FileName, ident);
RETURN_CODE rt = IDT_Device.SharedController.device_updateDeviceFirmware(file, ident);
if (rt == RETURN_CODE.RETURN_CODE_DO_SUCCESS, string ident = "")
{
//Was a success
}
else
{
//Error starting firmware download
}
}

Example monitoring firmware update status / success

private void MessageCallBack(IDTechSDK.IDT_DEVICE_Types type, DeviceState state, byte[] data, IDTTransactionData cardData, EMV_Callback emvCallback, RETURN_CODE transactionResultCode, string ident = "")
{
switch (state, string ident = "")
{
case DeviceState.FirmwareUpdate:
switch (transactionResultCode, string ident = "")
{
case RETURN_CODE.RETURN_CODE_FW_STARTING_UPDATE:
SetOutputText(IP2 + " Starting Firmware Update\n", ident);
break;
case RETURN_CODE.RETURN_CODE_DO_SUCCESS:
SetOutputText(IP2 + " Firmware Update Successful\n", ident);
if (type == IDT_DEVICE_Types.IDT_DEVICE_VP8800) SetOutputText("The device will now reboot and validate the firmware file. This process may take up to 5 minutes. You may proceed once device is recognized\n", ident);
break;
case RETURN_CODE.RETURN_CODE_APPLYING_FIRMWARE_UPDATE:
SetOutputText(IP2 + " Applying Firmware Update....\n", ident);
break;
case RETURN_CODE.RETURN_CODE_ENTERING_BOOTLOADER_MODE:
SetOutputText(IP2 + " Entering Bootloader Mode....\n", ident);
break;
case RETURN_CODE.RETURN_CODE_BLOCK_TRANSFER_SUCCESS:
int start = data[0];
int end = data[1];
if (data.Length == 4, string ident = "")
{
start = data[0] * 0x100 + data[1];
end = data[2] * 0x100 + data[3];
}
SetOutputTextCS(IP2 + " Sent block " + start.ToString() + " of " + end.ToString() + "\n", ident);
break;
case RETURN_CODE.RETURN_CODE_ERASING_SPI:
int start1 = data[0];
int end1 = data[1];
if (data.Length == 4, string ident = "")
{
start1 = data[0] * 0x100 + data[1];
end1 = data[2] * 0x100 + data[3];
}
SetOutputTextCS(IP2 + " Erasing SPI Flash: " + start1.ToString() + "% complete", ident);
break;
default:
SetOutputText(IP2 + " Firmware Update Error Code: " + "0x" +
String.Format("{0:X}", (ushort) transactionResultCode) + ": " +
IDTechSDK.errorCode.getErrorString(transactionResultCode) + "\r\n", ident);
break;
}
break;
}
}
RETURN_CODE IDTechSDK.IDT_VP8800.device_updateFirmwareFromZip ( byte[]  zipfile,
string  ident = "",
bool  isForeground = false 
)

Update Firmware From Zip

Performs one or more device firmware updates from firmware files passed as a compressed archive with a valid configuration file (.json format)

Parameters
zipfileZip file containing on or more firmware update files and a .json configuration file
identDevice ID to send command to. If not specified, current SDK default device will be used.
isForegroundIf TRUE, will block program until firmware update complete. Otherwise, FALSE performs FW update on background.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.emv_activateTransaction ( int  timeout,
byte[]  tags,
bool  forceOnline,
bool  isFastEMV = false,
string  ident = "" 
)

Start EMV Transaction Request

Authorizes the EMV transaction for an ICC card

The tags will be returned in the callback routine.

Parameters
timeoutTimeout value in seconds.
tagsThe tags to be included in the request. Passed as TLV Data. Example, tag 9F02 with amount 0x000000000100 would be 0x9F0206000000000100
forceOnlineTRUE = do not allow offline approval, FALSE = allow ICC to approve offline if terminal capable Note: To request tags to be included in default response, use tag DFEE1A, and specify tag list. Example four tags 9F02, 9F36, 95, 9F37 to be included in response = DFEE1A079F029F369f9F37 Use tag DFEF1F to determine if the Authentication step must be executed. DFEF1F 02 XX YY, where XX = 00 forces Authentication step, and YY = RFU. DFEF1F020000 will force authentication.
isFastEMVIf TRUE, it will populate the IDTTransactionData.fastEMV with ASCII data similar to IDTech FastEMV KB output, after performing an auto-authenticate and auto-complete with ResultCode = Could Not Contact Host
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.emv_addTerminalData ( byte[]  tlv,
string  ident = "" 
)

Add Terminal Data

Adds to the exosting Terminal Data

Parameters
tlvTerminalData TLV Data
identOptional identifier
Return values
RETURN_CODEReturn codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with IDT_BTPay::device_getResponseCodeString:()
static void IDTechSDK.IDT_VP8800.emv_allowFallback ( bool  allow,
string  ident = "" 
)
static

Allow fallback for EMV transactions. Default is TRUE

Parameters
allowTRUE = allow fallback, FALSE = don't allow fallback
static void IDTechSDK.IDT_VP8800.emv_autoAuthenticate ( bool  authenticate,
string  ident = "" 
)
static

Enables authenticate for EMV transactions. If a startEMVTranaction results in code 0x0010 (start transaction success), then emv_authenticateEMVTransaction can automatically execute if parameter is set to TRUE

Parameters
authenticateTRUE = auto authenticate, FALSE = manually authenticate
static void IDTechSDK.IDT_VP8800.emv_autoAuthenticateTags ( bool  authenticate,
byte[]  tags,
string  ident = "" 
)
static

Enables authenticate for EMV transactions. If a startEMVTranaction results in code 0x0010 (start transaction success), then emv_authenticateEMVTransaction can automatically execute if parameter is set to TRUE

Parameters
authenticateTRUE = auto authenticate, FALSE = manually authenticate
tagsTags to pass during authentication stage;
RETURN_CODE IDTechSDK.IDT_VP8800.emv_callbackResponseLCD ( EMV_LCD_DISPLAY_MODE  type,
byte  selection,
string  ident = "" 
)

Callback Response LCD Display

Provides menu selection responses to the kernel after a callback was received with DeviceState.EMVCallback, and callbackType = EMV_CALLBACK_TYPE.EMV_CALLBACK_TYPE_LCD, and lcd_displayMode = EMV_LCD_DISPLAY_MODE_MENU, EMV_LCD_DISPLAY_MODE_PROMPT, or EMV_LCD_DISPLAY_MODE_LANGUAGE_SELECT

Parameters
typeIf Cancel key pressed during menu selection, then value is EMV_LCD_DISPLAY_MODE_CANCEL. Otherwise, value can be EMV_LCD_DISPLAY_MODE_MENU, EMV_LCD_DISPLAY_MODE_PROMPT, or EMV_LCD_DISPLAY_MODE_LANGUAGE_SELECT
selectionIf type = EMV_LCD_DISPLAY_MODE_MENU or EMV_LCD_DISPLAY_MODE_LANGUAGE_SELECT, provide the selection ID line number. Otherwise, if type = EMV_LCD_DISPLAY_MODE_PROMPT supply either 0x43 ('C') for Cancel, or 0x45 ('E') for Enter/accept
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_callbackResponseMSR ( byte[]  MSR,
string  ident = "" 
)

Callback Response MSR Entry

Provides MSR information to kernel after a callback was received with DeviceState.EMVCallback, and callbackType = EMV_CALLBACK_MSR

Parameters
MSRSwiped track data
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_callbackResponsePIN ( EMV_PIN_MODE  type,
byte[]  KSN,
byte[]  PIN,
string  ident = "" 
)

Callback Response PIN Entry

Provides (or cancels) PIN entry information to kernel after a callback was received with DeviceState.EMVCallback, and callbackType = EMV_CALLBACK_TYPE_PINPAD

Parameters
typeIf Cancel key pressed during PIN entry, then value is EMV_PIN_MODE_CANCEL. Otherwise, value can be EMV_PIN_MODE_ONLINE_DUKPT, EMV_PIN_MODE_ONLINE_MKSK, or EMV_PIN_MODE_OFFLINE
KSNIf enciphered PIN, this is either the PIN DUKPT Key (EMV_PIN_MODE_ONLINE_DUKPT) or PIN Session Key (EMV_PIN_MODE_ONLINE_MKSK), or PIN Pairing DUKPT key (EMV_PIN_MODE_OFFLINE, string ident = "")
PINIf encipherd PIN, this is encrypted PIN block. If device does not implement pairing function, this is plaintext PIN
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.emv_cancelTransaction ( string  ident = "")

Cancel Transaction

Cancels the currently executing EMV or CTLS transaction.

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_clearTransactionLog ( string  ident = "")

Clear Transaction Log

Clears the transaction log.

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_completeTransaction ( bool  commError,
byte[]  authCode,
byte[]  iad,
byte[]  tlvScripts,
byte[]  tlv,
string  ident = "" 
)

Complete EMV Transaction Request

Completes the EMV transaction for an ICC card when online authorization request is received from emv_authenticateTransaction

The tags will be returned in the callback routine.

Parameters
commErrorCommunication error with host. Set to TRUE if host was unreachable, or FALSE if host response received. If Communication error, authCode, iad, tlvScripts can be null.
authCodeAuthorization code from host. Two bytes. Example 0x3030. (Tag value 8A). Required
iadIssuer Authentication Data, if any. Example 0x11223344556677883030 (tag value 91).
tlvScripts71/72 scripts, if any
tlvAdditional TVL data to return with transaction results (if any, string ident = "")
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString

NOTE: There are three possible outcomes for Authorization Code: Approval, Refer To Bank, Decline. The kernel maps these three outcomes to valid authorization response codes using tag DFEE1B through 8 bytes: {2 bytes Approval Code}{2 bytes Referral Code}{2 bytes Decline Code}{2 bytes RFU} If your gateway uses "00" for Approval, "01" for Referral, and "05" for Decline, then DFEE1B 08 3030 3031 3035 0000 If you use an authorization code value that that is not defined in DFEE1B, the kernel will use the DECLINE value of DFEE1B by default.

RETURN_CODE IDTechSDK.IDT_VP8800.emv_continueTransactionForCV ( int  result,
byte[]  pinblock,
string  ident = "" 
)

Continue Transaction for Cardholder Verification

Use this command to send the results of Online PIN Request or Signature Request and to continue a Contact EMV transaction. If the prior response Status Code is 0x31h (Request Online PIN) or 0x32h (Request Signature), this is the next command to send.

The tags will be returned in the callback routine.

@param result  Cardholder Verification result:
 - 0: Success (PIN or Signature, string ident = "")
 - 1: Cancelled PIN request
 - 2: PIN pad not working
 - 3: Timeout
 - 4: Error
@param pinblock Encrypted PIN block if Success PIN result
@param ident Device ID to send command to.  If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.emv_getConfigurationGroup ( int  group,
ref byte[]  tlv,
string  ident = "" 
)

Get Configuration Group

Retrieves the Configuration for the specified Group. Group 0 = terminal settings.

Parameters
groupConfiguration Group
tlvreturn data
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_getCRLStatus ( ref byte[]  status,
string  ident = "" 
)

Get CRL Status

This command returns information about the EMV Certificate Revocation List. The version number, record size, and number of records contained in the file are returned.

Parameters
status12 bytes returned
  • bytes 0-3 = Version Number
  • bytes 4-7 = Number of records
  • bytes 8-11 = Size of record
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_getEMVConfigurationCheckValue ( ref string  response,
string  ident = "" 
)

Polls device for EMV Configuration Check Value

Parameters
responseResponse returned of Check Value of Configuration
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.emv_getEMVKernelCheckValue ( ref string  response,
string  ident = "" 
)

Polls device for EMV Kernel Check Value

Parameters
responseResponse returned of Check Value of Kernel
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.emv_getEMVKernelVersion ( ref string  response,
string  ident = "" 
)

Polls device for EMV Kernel Version

Parameters
responseResponse returned of Kernel Version
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.emv_getEMVKernelVersionExt ( ref string  response,
string  ident = "" 
)

Polls device for Extended EMV Kernel Version

Parameters
responseResponse returned of Kernel Version
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.emv_getExemptionLogStatus ( ref byte[]  status,
string  ident = "" 
)

Get EMV Exception Log Status

This command returns information about the EMV Exception log. The version number, record size, and number of records contained in the file are returned.

Parameters
status12 bytes returned
  • bytes 0-3 = Version Number
  • bytes 4-7 = Number of records
  • bytes 8-11 = Size of record
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_getTransactionLogRecord ( ref byte[]  record,
ref int  remaining,
string  ident = "" 
)

Get Transaction Log Record

Retrieves oldest transaction record on the Transaction Log. At successful completion, the oldest transaction record is deleted from the transaction log

Parameters
recordTransaction Record
remainingNumber of records remaining on the transaction log
Length Description Type
4 Transaction Log State (TLS) Enum (4-byte number, LSB first), SENT ONLINE = 0, NOT SENT = 1
4 Transaction Log Content (TLC) Enum (4-byte number, LSB first), BATCH = 0, OFFLINE ADVICE = 1, ONLINEADVICE = 2, REVERSAL = 3
4 AppExpDate unsigned char [4]
3 AuthRespCode unsigned char [3]
3 MerchantCategoryCode unsigned char [3]
16 MerchantID unsigned char [16]
2 PosEntryMode unsigned char [2]
9 TermID unsigned char [9]
3 AIP unsigned char [3]
3 ATC unsigned char [3]
33 IssuerAppData unsigned char [33]
6 TVR unsigned char [6]
3 TSI unsigned char [3]
11 Pan unsigned char [11]
2 PanSQNCNum unsigned char [2]
3 TermCountryCode unsigned char [3]
7 TranAmount unsigned char [7]
3 TranCurCode unsigned char [3]
4 TranDate unsigned char [4]
2 TranType unsigned char [2]
9 IFDSerialNum unsigned char [9]
12 AcquirerID unsigned char [12]
2 CID unsigned char [2]
9 AppCryptogram unsigned char [9]
5 UnpNum unsigned char [5]
7 AmountAuth unsigned char [7]
4 AppEffDate unsigned char [4]
4 CVMResults unsigned char [4]
129 IssScriptResults unsigned char [129]
4 TermCap unsigned char [4]
2 TermType unsigned char [2]
20 Track2 unsigned char [20]
4 TranTime unsigned char [4]
7 AmountOther unsigned char [7]
1 Unused Unsigned char [1]
Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_getTransactionLogStatus ( ref byte[]  status,
string  ident = "" 
)

Get Transaction Log Status

This command returns information about the EMV transaction log. The version number, record size, and number of records contained in the file are returned.

Parameters
status12 bytes returned
  • bytes 0-3 = Version Number
  • bytes 4-7 = Number of records
  • bytes 8-11 = Size of record
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_removeAllCAPK ( string  ident = "")

Remove All Certificate Authority Public Key

Removes all the CAPK for EMV Kernel

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.emv_removeAllCRL ( string  ident = "")

Remove All Certificate Revocation List Entries

Removes all CRLEntry entries

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.emv_removeAllExceptions ( string  ident = "")

Remove All EMV Exceptions

Removes all entries from the EMV Exception List

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_removeApplicationData ( byte[]  AID,
string  ident = "" 
)

Remove Application Data by AID

Removes the Application Data for EMV Kernel as specified by the AID name passed as a parameter

Parameters
AIDName of ApplicationID Must be between 5 and 16 bytes
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.emv_removeCAPK ( byte[]  capk,
string  ident = "" 
)

Remove Certificate Authority Public Key

Removes the CAPK for EMV Kernel as specified by the RID/Index

Parameters
capk6 byte CAPK = 5 bytes RID + 1 byte INDEX
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.emv_removeConfigurationGroup ( int  group,
string  ident = "" 
)

Remove Configuration Group

Removes the Configuration as specified by the Group. Must not by group 0

Parameters
groupConfiguration Group
Return values
RETURN_CODEReturn codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with IDT_VP8800::device_getResponseCodeString:(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.emv_removeCRL ( byte[]  crl,
string  ident = "" 
)

Remove Certificate Revocation List Entry

Removes CRLEntry as specified by the RID and Index passed as 6 bytes, or RID, Index, and serial number passed as 9 bytes

Parameters
crlcontaining the CRL to remove: where [CRL] is 9 bytes: [5 bytes RID][1 byte CAPK Index][3 bytes serial number] OR [CRL] is 6 bytes: [5 bytes RID][1 byte CAPK Index]
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.emv_removeException ( byte[]  exception,
string  ident = "" 
)

Remove EMV Exception

Removes an entry to the EMV Exception List

Parameters
exceptionEMV Exception entry containing the PAN and Sequence Number where [Exception] is 12 bytes: [1 byte Len][10 bytes PAN][1 byte Sequence Number] PAN, in compressed numeric, padded with F if required (example 0x5413339000001596FFFF, string ident = "")
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_removeTerminalData ( string  ident = "")

Remove Terminal Data

Removes the Terminal Data

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.emv_removeTransactionAmountLog ( string  ident = "")

Remove Transaction Amount Log

This command can delete transaction amount log in reader. (When EMV transaction is offline approved, or online, transaction amount log saves to reader., string ident = "")

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.emv_resetConfigurationGroup ( int  group,
string  ident = "" 
)

Reset Configuration Group

This command allows resetting a dataset to its default configuration. If the file exists, it will be overwritten. If not, it will be created.

Parameters
groupConfiguration Group
Return values
RETURN_CODEReturn codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with IDT_VP8800::device_getResponseCodeString:(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.emv_retrieveAIDList ( ref byte  response[][],
string  ident = "" 
)

Retrieve AID list

Returns all the AID names and their assigned groups installed on the terminal for CONTACT.

Parameters
responsearray of 2-tag TLV data objects: DFEE2D (group name) followed by 9F06 (AID, string ident = "")
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.emv_retrieveApplicationData ( byte[]  AID,
ref byte[]  tlv,
string  ident = "" 
)

Retrieve Application Data by AID

Retrieves the Application Data for EMV Kernel as specified by the AID name passed as a parameter.

Parameters
AIDName of ApplicationID. Must be between 5 and 16 bytes
tlvThe TLV elements of the requested AID
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_retrieveCAPK ( byte[]  capk,
ref byte[]  key,
string  ident = "" 
)

Retrieve Certificate Authority Public Key

Retrieves the CAPK for EMV Kernel as specified by the RID/Index passed as a parameter.

Parameters
capk6 bytes CAPK = 5 bytes RID + 1 byte Index
keyResponse returned as a CAKey format: [1 byte Hash Algorithm][1 byte Encryption Algorithm][20 bytes HashValue][4 bytes Public Key Exponent][2 bytes Modulus Length][Variable bytes Modulus] Where:
  • Hash Algorithm: The only algorithm supported is SHA-1.The value is set to 0x01
  • Encryption Algorithm: The encryption algorithm in which this key is used. Currently support only one type: RSA. The value is set to 0x01.
  • HashValue: Which is calculated using SHA-1 over the following fields: RID & Index & Modulus & Exponent
  • Public Key Exponent: Actually, the real length of the exponent is either one byte or 3 bytes. It can have two values: 3 (Format is 0x00 00 00 03), or 65537 (Format is 0x00 01 00 01, string ident = "")
  • Modulus Length: LenL LenH Indicated the length of the next field.
  • Modulus: This is the modulus field of the public key. Its length is specified in the field above.
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_retrieveCAPKList ( ref byte[]  keys,
string  ident = "" 
)

Retrieve the Certificate Authority Public Key list

Returns all the CAPK RID and Index installed on the terminal for EMV Kernel.

Parameters
keys[key1][key2]...[keyn], each key 6 bytes where key = 5 bytes RID + 1 byte index
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_retrieveCRLList ( ref byte[]  list,
string  ident = "" 
)

Retrieve the Certificate Revocation List

Returns the CRL entries on the terminal.

Parameters
list[CRL1][CRL2]...[CRLn], each CRL 9 bytes where CRL = 5 bytes RID + 1 byte index + 3 bytes serial number
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_retrieveExceptionList ( ref byte[]  list,
string  ident = "" 
)

Retrieve the EMV Exception List

Returns the EMV Exception entries on the terminal.

Parameters
list[Exception1][Exception2]...[Exceptionn], where [Exception] is 12 bytes: [1 byte Len][10 bytes PAN][1 byte Sequence Number]
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_retrieveTerminalData ( ref byte[]  tlv,
string  ident = "" 
)

Retrieve Terminal Data

Retrieves the Terminal Data for EMV Kernel.

Parameters
tlvResponse returned as a TLV
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_retrieveTransactionResult ( byte[]  tags,
ref IDTTransactionData  tlv,
string  ident = "" 
)

Retrieve Transaction Results

Retrieves specified EMV tags from the currently executing transaction.

Parameters
tagsTags to be retrieved. Example 0x9F028A will retrieve tags 9F02 and 8A
tlvAll requested tags returned as unencrypted, encrypted and masked TLV data in IDDTransactionData object
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.emv_setApplicationData ( byte[]  tlv,
string  ident = "" 
)

Set Application Data by AID

Sets the Application Data as specified by TLV data

Parameters
tlvApplication data in TLV format The first tag of the TLV data must be the group number (DFEE2D). The second tag of the TLV data must be the AID (9F06) Tag DFEE4F must be included, and it must have a value of 0x02 to be and EMV AID

Example valid TLV, for Group #8, AID a0000000045010: "dfee2d01089f0607a0000000045010dfee4b0101dfee2e0110dfee4c0101dfee4f0103

Tags:

  • DFEE2D : Group Number. Mandatory First Tag. 0 = System, 1-255 = User
  • 9F06 : AID. Mandatory Second Tag
  • DFEE4B : Partial AID Matching. 01 = allowed, 00 = Disabled. Mandatory for Visa
  • DFEE4C : Application Flow, System: Never, User: Mandatory – 0x01 = MasterCard – 0x02 = AMEX – 0x03 = MasterCard w/Strip Application – 0x06 = Visa – 0x0D = Discover – 0x0E = JCB – 0x15 = Reserved – 0x16 = Reserved – 0x17 = Reserved
  • DFEE4D = PPSE Disable, Optional
  • DFEE2E = Max AID Length, Mandatory if DFEE4B included. Visa must be set to 16
  • DFEE2F = Disable System Aid (no effect on User AID). 0x80 = Disable, 0x00 = Enable
  • DFEE4F = Interface Support. 01 = CTLS, 02 = Contact. If missing, defaults to CTLS
Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_setCAPK ( byte[]  key,
string  ident = "" 
)

Set Certificate Authority Public Key

Sets the CAPK for EMV Kernel as specified by the CAKey structure

Parameters
keyCAKey format: [5 bytes RID][1 byte Index][1 byte Hash Algorithm][1 byte Encryption Algorithm][20 bytes HashValue][4 bytes Public Key Exponent][2 bytes Modulus Length][Variable bytes Modulus] Where:
  • Hash Algorithm: The only algorithm supported is SHA-1.The value is set to 0x01
  • Encryption Algorithm: The encryption algorithm in which this key is used. Currently support only one type: RSA. The value is set to 0x01.
  • HashValue: Which is calculated using SHA-1 over the following fields: RID & Index & Modulus & Exponent
  • Public Key Exponent: Actually, the real length of the exponent is either one byte or 3 bytes. It can have two values: 3 (Format is 0x00 00 00 03), or 65537 (Format is 0x00 01 00 01, string ident = "")
  • Modulus Length: LenL LenH Indicated the length of the next field.
  • Modulus: This is the modulus field of the public key. Its length is specified in the field above.
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_setCRL ( byte[]  crl,
string  ident = "" 
)

Set Certificate Revocation List

Sets the CRL

Parameters
crlCRL Entries containing the RID, Index, and serial numbers to set where [CRL] is 9 bytes: [5 bytes RID][1 byte CAPK Index][3 bytes serial number]
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_setException ( byte[]  exception,
string  ident = "" 
)

Set EMV Exception

Adds an entry to the EMV Exception List

Parameters
exceptionEMV Exception entry containing the PAN and Sequence Number where [Exception] is 12 bytes: [1 byte Len][10 bytes PAN][1 byte Sequence Number] PAN, in compressed numeric, padded with F if required (example 0x5413339000001596FFFF, string ident = "")
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_setTerminalDataVP8800 ( byte[]  tlv,
int  config,
string  ident = "" 
)

Set Terminal Data

Sets the Terminal Data

Parameters
tlvTerminalData TLV Data
configConfig verification, valid values 1-4
identOptional identifier
Return values
RETURN_CODEReturn codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with IDT_BTPay::device_getResponseCodeString:()
RETURN_CODE IDTechSDK.IDT_VP8800.emv_startTransaction ( double  amount,
double  amtOther,
int  exponent,
int  type,
int  timeout,
byte[]  tags,
bool  forceOnline,
string  ident = "" 
)

Start EMV Transaction Request

Authorizes the EMV transaction for an ICC card

The tags will be returned in the callback routine.

Parameters
amountTransaction amount value (tag value 9F02, string ident = "")
amtOtherOther amount value, if any (tag value 9F03, string ident = "")
exponentNumber of characters after decimile point
typeTransaction type (tag value 9C).
timeoutTimeout value in seconds.
tagsAny other tags to be included in the request. Passed as TLV Data. Example, tag 9F02 with amount 0x000000000100 would be 0x9F0206000000000100 If tags 9F02 (amount),9F03 (other amount), or 9C (transaction type) are included, they will take priority over these values supplied as individual parameters to this method.
forceOnlineTRUE = do not allow offline approval, FALSE = allow ICC to approve offline if terminal capable Note: To request tags to be included in default response, use tag DFEE1A, and specify tag list. Example four tags 9F02, 9F36, 95, 9F37 to be included in response = DFEE1A079F029F369f9F37 Use tag DFEF1F to determine if the Authentication step must be executed. DFEF1F 02 XX YY, where XX = 00 forces Authentication step, and YY = RFU. DFEF1F020000 will force authentication.
isFastEMVIf TRUE, it will populate the IDTTransactionData.fastEMV with ASCII data similar to IDTech FastEMV KB output, after performing an auto-authenticate and auto-complete with ResultCode = Could Not Contact Host
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.emv_trySetTerminalData ( byte[]  tlv,
ref byte[]  rejectedTLV,
ref byte[]  convertedTLV,
bool  overwrite = false,
string  ident = "" 
)

Try to Set Terminal Data

Atempts to set the Terminal Data. Use this functions to attempt to set the terminal data to the device. This function will allow the cross-device tag compatible writing of IDTech Legacy/New tag definitions

Parameters
tlvTerminalData TLV Data
rejectedTLVContains the tags (if any) that were rejected by the firmware
convertedTLVContains the tags (if any) that were converted and accepted by the firmware
overwriteTRUE = add TLV to existing tags, FALSE = replace existing tags with TLV
identOptional identifier
Return values
RETURN_CODEReturn codes listed as typedef enum in IDTCommon:RETURN_CODE. Values can be parsed with IDT_BTPay::device_getResponseCodeString:()
RETURN_CODE IDTechSDK.IDT_VP8800.felica_authentication ( byte[]  key,
string  ident = "" 
)

FeliCa Authentication

Provides a key to be used in a follow up FeliCa Read with MAC (3 blocks max) or Write with MAC (1 block max). This command must be executed before each Read w/MAC or Write w/MAC command

NOTE: The reader must be in Pass Through Mode for FeliCa commands to work.

Parameters
key16 byte key used for MAC generation of Read or Write with MAC
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.felica_read ( byte[]  serviceCode,
int  numBlocks,
byte[]  blockList,
ref byte[]  blocks,
string  ident = "" 
)

FeliCa Read

Reads up to 4 blocks.

NOTE: The reader must be in Pass Through Mode for FeliCa commands to work.

Parameters
serviceCodeService Code List. Each service code in Service Code List = 2 bytes of data
numBlocksNumber of blocks
blockListBlocks to read. Maximum 4 block requests
blocksBlocks read. Each block 16 bytes.
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.felica_readWithMac ( int  numBlocks,
byte[]  blockList,
ref byte[]  blocks,
string  ident = "" 
)

FeliCa Read with MAC Generation

Reads up to 3 blocks with MAC Generation. FeliCa Authentication must be performed first

NOTE: The reader must be in Pass Through Mode for FeliCa commands to work.

Parameters
numBlocksNumber of blocks
blockListBlock to read. Each block in blockList Maximum 3 block requests
blocksBlocks read. Each block 16 bytes.
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.felica_requestService ( byte[]  nodeCode,
ref byte[]  response,
string  ident = "" 
)

FeliCa Request Service

Perform functions a Felica Request Service

NOTE: The reader must be in Pass Through Mode for FeliCa commands to work.

Parameters
nodeCodeNode Code
responseResponse as explained in FeliCA Lite-S User's Manual
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.felica_SendCommand ( byte[]  command,
ref byte[]  response,
string  ident = "" 
)

FeliCa Send Command

Send a Felica Command

Parameters
commandCommand data from settlement center to be sent to felica card
responseResponse data from felica card.
Returns
RETURN_CODE: Values can be parsed with device_getIDGStatusCodeString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.felica_write ( byte[]  serviceCode,
int  blockCount,
byte[]  blockList,
byte[]  data,
ref byte[]  statusFlag,
string  ident = "" 
)

FeliCa Write

Writes a block

NOTE: The reader must be in Pass Through Mode for FeliCa commands to work.

Parameters
serviceCodeService Code list. Each service code must be be 2 bytes
blockCountBlock Count
blockListBlock list.
dataBlock to write. Must be 16 bytes.
statusFlagStatus flag response as explained in FeliCA Lite-S User's Manual, Section 4.5
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.felica_writeWithMac ( int  blockNumber,
byte[]  data,
string  ident = "" 
)

FeliCa Write with MAC Generation

Writes a block with MAC Generation. FeliCa Authentication must be performed first

NOTE: The reader must be in Pass Through Mode for FeliCa commands to work.

Parameters
blockNumberNumber of block
dataBlock to write. Must be 16 bytes.
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
static int IDTechSDK.IDT_VP8800.getCommandTimeout ( string  ident = "")
static

Get Command Timeout

Gets the default timeout (in milliseconds) waiting for a blocking command response

Return values
timeTime
RETURN_CODE IDTechSDK.IDT_VP8800.icc_exchangeAPDU ( string  c_APDU,
ref byte[]  response,
string  ident = "" 
)

Exchange APDU

Sends an APDU packet to the ICC. If successful, response is returned in APDUResult class instance in response parameter.

Parameters
c_APDUAPDU data packet
responseUnencrypted/encrypted parsed APDU response
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.icc_powerOffICC ( string  ident = "")

Power Off ICC

Powers down the ICC

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")

If Success, empty If Failure, ASCII encoded data of error string

RETURN_CODE IDTechSDK.IDT_VP8800.icc_powerOnICC ( ref byte[]  ATR,
byte  interfaces,
string  ident = "" 
)

Power On ICC

Power up the currently selected microprocessor card in the ICC reader

Parameters
interfacesFor NEO2 devices allowed interfaces for which to get the ATR. 0x20h = retrieve last ATR received from PICC 0x21h = SAM1 (SRED version only, string ident = "") 0x22h = SAM2 (SRED version only, string ident = "") For other devices interfaces euquals to 0s
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString( string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.lcd_captureSignature ( int  timeout,
int  format,
string  ident = "" 
)

Enables Signature Capture

This command executes the signature capture screen. Once a signature is captured, it is sent to the callback with DeviceState.Signature, and the data will contain a .png of the signature

Parameters
timeoutTimeout waiting for the signature capture in 60 seconds
format1 = Windows BMP, 2 = png, 3 = raw
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
static RETURN_CODE IDTechSDK.IDT_VP8800.lcd_clearDisplay ( string  ident = "")
static

Clear Display

Command to clear the display screen on the reader.It returns the display to the currently defined background color and terminates all events

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.lcd_clearInputEvents ( string  ident = "")

Clear Input Events

Clears the input event buffer.

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.lcd_customDisplayMode ( bool  enable,
string  ident = "" 
)

Custom Display Mode

Controls the LCD display mode to custom display. Keyboard entry is limited to the Cancel, Clear, Enter and the function keys, if present. PIN entry is not permitted while the reader is in Custom Display Mode

Parameters
enableTRUE = enabled, FALSE = disabled
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.lcd_displayButton ( int  xCord,
int  yCord,
int  xWidth,
int  yWidth,
int  font,
int  style,
int  displayProp,
string  text,
ref byte[]  identifier,
byte[]  foreRGB = null,
byte[]  backRGB = null,
string  ident = "" 
)

Display Button

Displays a button on the screen. To remove buttons, use lcd_clearDisplay(). The button becomes sensitive after activating lcd_getInputEvent(string ident = "") and remains active until the display is cleared.

 While in Secure Mode (Pin Pad active), the text must match one of the following messages:
 DONE, CREDIT, DEBIT, CANCEL, CLEAR, OK, YES, NO, LOYALTY, EBT, GIFT CARD, CASH, TOUCH, ACCEPT, ENTER, DOES NOT APPLY, 
 AGREE, BACK, NEXT, PREVIOUS, HOME, DISAGREE, REJECT, CONTINUE, USE, DON’T USE, SELECT, NO THANK YOU, PAGE UP, PAGE DOWN, DECLINE?
Parameters
xCordThe x Coordinate for the text
yCordThe y Coordinate for the text
xWidthWidth of text field
yWidthHeight of text field
fontFont. Default font = 1
styleFont style:
  • 1 = 13px Regular
  • 2 = 17px Regular
  • 3 = 17px Bold
  • 4 = 22px Regular
  • 5 = 20px Regular
  • 6 = 20px Bold
  • 7 = 29px Regular
  • 8 = 38px Regular
  • 9 = 38px Bold
  • 10 = 58px Regular
displayProp
  • 0 = Center on line Y, do not clear screen, word wrap disabled
  • 1 = Center on line Y, clear screen before displaying button, word wrap disabled
  • 2 = Display button at (X,Y) specified, do not clear screen, word wrap disabled
  • 3 = Display button at (X,Y) specified, clear screen before displaying button, word wrap disabled
  • 4 = Center button on screen, do not clear screen, word wrap disabled
  • 5 = Center button on screen, clear screen before displaying button, word wrap disabled.
  • 64 = Center on line Y, do not clear screen, word wrap enabled
  • 65 = Center on line Y, clear screen before displaying button, word wrap enabled
  • 66 = Display button at (X,Y) specified, do not clear screen, word wrap enabled
  • 67 = Display button at (X,Y) specified, clear screen before displaying button, word wrap enabled
  • 68 = Center button on screen, do not clear screen, word wrap enabled
  • 69 = Center button on screen, clear screen before displaying button, word wrap enabled
textText to display. When in Secure Mode, must match secure messages exactly. When in custom mode, it can be any message.
identifierThe 4 byte Graphic ID assigned to the element once created
foreRGBText Color RGB. 000000 = black, FF0000 = red, 00FF00 = green, 0000FF = blue, FFFFFF = white. Pass NULL for default color
backRGBButton Color RGB. 000000 = black, FF0000 = red, 00FF00 = green, 0000FF = blue, FFFFFF = white. Pass NULL for default color
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.lcd_displayText ( int  xCord,
int  yCord,
int  xWidth,
int  yWidth,
int  font,
int  style,
int  displayProp,
string  text,
ref byte[]  identifier,
string  ident = "" 
)

Display Text

Displays text on the screen. While in Secure Mode (Pin Pad active), the text must match one of the following messages: Approved, approved avail, approved available, authorized, authorizing please wait, available, balance, call your bank, cancel, cancelled, cancel to reject, card read ok, card read ok remove card, cash, cash back?, Choose transaction type, clear, confirm amount, connecting online, convert to credit?, Copyright, credit, debit, declined, done, end of key life, enter configuration id, enter date and time, enter force transaction online, fail, fare, fatal error, fee, initializing, input date of birth and press enter, input joint applicant date of birth and press enter, input joint applicant social security number and press enter, input social security number and press enter, insert or swipe card, international card, international card please insert, international card please swipe, invalid entry, is amount ok?, Keys not found, no card, not accepted, not authorized, not connected, offline, offline available fund, other, other amount, out of order, payment, pin try limit exceeded, please enter amount, please enter cash back amount, please enter phone, please enter tip, please enter tip amount using keypad, please enter tip option using keypad, please enter zip code, please insert card, please insert or swipe card, please present card, please present one card only, please press enter on keypad to continue, please press enter to continue, please push enter, please re-enter phone number, please re-enter zip code, please remove card, please select 1 card, please select option, please sign on the screen, please sign the receipt, please swipe card, please tap card, please tap or swipe card, please use chip reader, please use keypad to confirm, please use keypad to confirm or cancel, please use keypad to select account, please use keypad to select option, please use other visa card, please wait, please wait..., present card, present one card only, press cancel to reject, press enter to accept, processing, processing..., push enter, receipt?, Remove card please wait, signature required, signature required transaction not completed, subtotal, swipe again, swipe card, tap again, tap card, tap or swipe card, thank you, timeout, tip, tip amount, total, total charged to card, transaction complete, transaction completed, transaction not completed, unit disabled, vivotech, inc., voucher, welcome, would you like a receipt?

Parameters
xCordThe x Coordinate for the text
yCordThe y Coordinate for the text
xWidthThe display width - Enter 0 for default display dimensions
yWidthThe display height - Enter 0 for default display dimensions
fontFont. Default font = 1
styleFont style:
  • 1 = 13px Regular
  • 2 = 17px Regular
  • 3 = 17px Bold
  • 4 = 22px Regular
  • 5 = 20px Regular
  • 6 = 20px Bold
  • 7 = 29px Regular
  • 8 = 38px Regular
  • 9 = 38px Bold
  • 10 = 58px Regular
displayProp
  • 0 = Center on line Y, do not clear screen
  • 1 = Center on line Y, clear screen before displaying button
  • 2 = Display text at (X,Y) specified, do not clear screen
  • 3 = Display text at (X,Y) specified, clear screen before displaying button
  • 4 = Center text on screen, do not clear screen
  • 5 = Center text on screen, clear screen before displaying button
  • 6 = right justified, do not clear screen before display amount
  • 7 = right justified, clear screen before displaying amount
textText to display. When in Secure Mode, must match secure messages exactly. When in custom mode, it can be any message.
identifierThe 4 byte Graphic ID assigned to the element once created
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.lcd_getInputEvent ( byte  timeout,
string  ident = "" 
)

Get Input Event

Returns the event in the input buffer. If no events in the input buffer, with will wait the specified timeout for an event to occur. It will continue to listen until an event is received, timeout, or lcd_ClearScreen is executed. Events returned to MessageCallback: DeviceState.InputEvent Data Format: {Event Type 1 byte}{Event Graphic ID 4 bytes}{Event Specific data variable bytes}

  • Event Type 0 = Button Event
  • Event Type 0 Data = {01h = Pressed}{Null Terminated Caption}
  • Event Type 1 = Checkbox Event
  • Event Type 1 Data = {01h = Checked, 00h = Unchecked}
  • Event Type 2 = Line Item Event
  • Event Type 2 Data = {01h = Selected}{Null Terminated Caption}
  • Event Type 3 = Keypad Event
  • Event Type 3 Data = {01h = Pressed, 02h = Released}{0030h = KEYPAD_0, 0031h = KEYPAD_1, 0032h = KEYPAD_2, 0033h = KEYPAD_3, 0034h = KEYPAD_4, 0035h = KEYPAD_5, 0036h = KEYPAD_6, 0037h = KEYPAD_7, 0038h = KEYPAD_8, 0039h = KEYPAD_9, 000Dh = KEYPAD_ENTER, 0008h = KEYPAD_CLEAR, 001Bh = KEYPAD_CANCEL }
  • Event Type 4 = Touchscreen Event
  • Event Type 4 Data = {00h = RFU}{Null Terminated Image Name}
  • Event Type 5 = Slideshow Event
  • Event Type 5 Data = {00h = RFU}
  • Event Type 6 = Transaction Event
  • Event Type 6 Data = {00h = RFU}{3 bytes card type}{00000000h = Success, 00000008h = Timeout, 0000000Ah = Failed}
  • Event Type 7 = Radio Button Event
  • Event Type 7 Data = {00h = RFU}{31 bytes null terminated group name}{31 bytes radio button caption null terminated}

    Parameters
    timeoutTimeout to wait for event.
    identDevice ID to send command to. If not specified, current SDK default device will be used.
    Returns
    RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.lcd_resetInitialState ( string  ident = "")

Reset to Initial State

This command places the reader UI into the idle state and displays the appropriate idle display.

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
static void IDTechSDK.IDT_VP8800.lcd_retrieveMessage ( DisplayMessages.DISPLAY_MESSAGE_LANGUAGE  lang,
DisplayMessages.DISPLAY_MESSAGE_IDENTIFIER  id,
ref string  line1,
ref string  line2 
)
static

Retrieve LCD Message

Returns the string value for a message ID returned for LCD messaging

Parameters
langLanguage.
idMessage ID
line1Line 1 string value
line2Line 2 string value
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with device_getResponseCodeString
RETURN_CODE IDTechSDK.IDT_VP8800.lcd_setBackgroundImage ( string  file,
bool  enable,
string  ident = "" 
)

Set Background Image

You must send images to the reader’s memory and send a Start Custom Mode command to the reader before it will respond to Image commands. Image files must be in .bmp or .png format.

Parameters
fileComplete path and file name of the file you want to use. Example "file.png" will put in root directory, while "ss/file.png" will put in ss directory (which must exist, string ident = "")
enableTRUE = Use Background Image, FALSE = Use Background Color
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.lcd_setDisplayImage ( string  file,
int  posX,
int  posY,
int  posMode,
bool  touchEnable,
bool  clearScreen,
string  ident = "" 
)

Set Display Image

You must send images to the reader’s memory and send a Start Custom Mode command to the reader before it will respond to Image commands. Image files must be in .bmp or .png format.

Parameters
filesComplete path and file name of the file you want to use. Example "file.png" will put in root directory, while "ss/file.png" will put in ss directory (which must exist, string ident = "")
posXX coordinate in pixels, Range 0-271
posYY coordinate in pixels, Range 0-479
posModePosition Mode
  • 0 = Center on Line Y
  • 1 = Display at (X,Y, string ident = "")
  • 2 - Center on screen
touchEnableTRUE = Image is touch sensitive
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.lcd_setForeBackColor ( byte[]  foreRGB,
byte[]  backRGB,
string  ident = "" 
)

Set Foreground and Background Color

This command sets the foreground and background colors of the LCD.

Parameters
foreRGBForeground RGB. 000000 = black, FF0000 = red, 00FF00 = green, 0000FF = blue, FFFFFF = white
backRGBBackground RGB. 000000 = black, FF0000 = red, 00FF00 = green, 0000FF = blue, FFFFFF = white
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.lcd_startSlideShow ( string  files,
int  posX,
int  posY,
int  posMode,
bool  touchEnable,
bool  recursion,
bool  touchTerminate,
int  delay,
int  loops,
bool  clearScreen,
string  ident = "" 
)

Start slide show

You must send images to the reader’s memory and send a Start Custom Mode command to the reader before it will respond to this commands. Image files must be in .bmp or .png format.

Parameters
filesComplete paths and file names of the files you want to use, separated by commas. If a directory is specified, all files in the dirctory are displayed
posXX coordinate in pixels, Range 0-271
posYY coordinate in pixels, Range 0-479
posModePosition Mode
  • 0 = Center on Line Y
  • 1 = Display at (X,Y, string ident = "")
  • 2 - Center on screen
touchEnableTRUE = Image is touch sensitive
recursionTRUE = Recursively follow directorys in list
touchTerminateTRUE = Terminate slideshow on touch (if touch enabled, string ident = "")
delayNumber of seconds between image displays
loopsNumber of display loops. A zero indicates continuous display.
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.msr_cancelMSRSwipe ( string  ident = "")

Disable MSR Swipe Cancels MSR swipe request.

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.msr_flushTrackData ( string  ident = "")

Flush Track Data

Clears any track data being retained in memory by future PIN Block request.

Parameters
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.msr_startMSRSwipe ( int  timeout,
string  ident = "" 
)

Enable MSR Swipe

Enables MSR, waiting for swipe to occur.

Parameters
timeoutSwipe Timeout Value
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.pin_getEncryptedOnlinePIN ( int  keyType,
int  timeout,
string  ident = "" 
)

Get Encrypted DUKPT PIN

Requests PIN Entry for online authorization. PIN block and KSN returned in callback function DeviceState.TransactionData with cardData.pin_pinblock. A swipe must be captured first before this function can execute

Parameters
keyTypePIN block key type. Valid values 0,3 for TDES, 4 for AES
timeoutPIN entry timout
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.pin_getPAN ( bool  getCSC,
int  timeout,
string  ident = "" 
)

Get PAN

Requests PAN Entry on pinpad

Parameters
getCSCInclude Customer Service Code (also known as CVV, CVC, string ident = "")
timeoutPAN entry timout
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
RETURN_CODE IDTechSDK.IDT_VP8800.pin_promptCreditDebit ( object  currencySymbol,
string  displayAmount,
int  timeout,
string  ident = "" 
)

Prompt for Credit or Debit

Requests prompt for Credit or Debit. Response returned in callback function as DeviceState.MenuItem with data MENU_SELECTION_CREDIT = 0, MENU_SELECTION_DEBIT = 1

Parameters
currencySymbolAllowed values are $ (0x24), ¥ (0xA5), £ (0xA3), € (0xA4), or NULL
displayAmountAmount to display (can be NULL, string ident = "")
timeoutMenu entry timout. Valid values 2-20 seconds
identDevice ID to send command to. If not specified, current SDK default device will be used.
Returns
RETURN_CODE: Values can be parsed with errorCode.getErrorString(string ident = "")
static String IDTechSDK.IDT_VP8800.SDK_Version ( )
static

SDK Version

  • All Devices

Returns the current version of SDK

Returns
Framework version
static void IDTechSDK.IDT_VP8800.setCallback ( CallBack  my_Callback)
static

Set Callback

Sets the class callback
static void IDTechSDK.IDT_VP8800.setCallback ( IntPtr  my_Callback,
SynchronizationContext  context 
)
static

Set Callback

Sets the class callback

Parameters
my_CallbackThe callback function to receive the response message from device. defined as follows. public unsafe delegate void MFCCallBack(Parameters parameters, ident);
contextThe context of the UI thread
static void IDTechSDK.IDT_VP8800.setCommandTimeout ( int  milliseconds,
string  ident = "" 
)
static

Set Command Timeout

Sets the default timeout (in milliseconds) waiting for a blocking command response

Parameters
millisecondsTime
static bool IDTechSDK.IDT_VP8800.useSerialPort ( int  port)
static

Use Serial Port Interface

Instructs SDK to attempt to use the Serial Port for communication with VP8800 using default baud rate

Parameters
portSerial Port to use. Example COM1 = 1.
Returns
bool TRUE=successful, FALSE=failure
static bool IDTechSDK.IDT_VP8800.useSerialPort ( int  port,
int  baud,
string  ident = "" 
)
static

Use Serial Port Interface with baud rate

Instructs SDK to attempt to use the Serial Port for communication with VP8800

Parameters
portSerial Port to use. Example COM1 = 1.
baudBaud rate to override default. Example 115200;
Returns
bool TRUE=successful, FALSE=failure
static bool IDTechSDK.IDT_VP8800.useSerialPortLinux ( string  path)
static

Use Serial Port Interface on Linux

Instructs SDK to attempt to use the Serial Port for communication with BTMag using default baud rate on Linux implementations

Parameters
pathPath to use. Example /dev/ttyUSB*
Returns
bool TRUE=successful, FALSE=failure
static bool IDTechSDK.IDT_VP8800.useSerialPortLinux ( string  path,
int  baud 
)
static

Use Serial Port Interface on Linux with baud rate

Instructs SDK to attempt to use the Serial Port for communication with BTPay on Linux implementations

Parameters
pathPath to use. Example /dev/ttyUSB*
baudBaud rate to override default. Example 115200;
Returns
bool TRUE=successful, FALSE=failure

Property Documentation

IDT_VP8800 IDTechSDK.IDT_VP8800.SharedController
staticget

Singleton Instance

Establishes an singleton instance of IDT_VP8800 class.

Returns
Instance of IDT_VP8800

The documentation for this class was generated from the following file: