All rights reserved. No part of the contents of this document may be reproduced or transmitted in any form without the written
permission of Verifone, Inc.
The information contained in this document is subject to change without notice. Although Verifone has attempted to ensure the
accuracy of the contents of this document, this document may include errors or omissions. The examples and sample programs are
for illustration only and may not be suited for your purpose. You should verify the applicability of any example or sample p rogram
before placing the software into productive use. This document, including without limitation the examples and software programs, is
supplied “As-Is.”
Verifone, the Verifone logo, VeriCentre, and Verix are registered trademarks of Verifone. Other brand names or trademarks
associated with Verifone’s products and services are trademarks of Verifone, Inc.
All other brand names and trademarks appearing in this manual are the property of their respective holders.
Comments? Please e-mail all comments on this document to your local Verifone Support Team.
This guide presents the features, best practices, and software architecture of the
e355/e265, as well as references to additional documentation.
Audience
Organization
Related
Documentation
This guide is intended for support engineers and regional development teams to
help understand the product and write effective applications.
This guide is organized as follows:
Chapter 1, e355 Device
Chapter 2, Architecture
Chapter 3, Communication Interfaces
Chapter 4, Power
Chapter 5, Special Features
Chapter 6, System Mode - VTM
Chapter 7, Logging Options
Chapter 8, Software Package
Chapter 9, Control and Barcode Applications
Chapter 10, Key Features of e265 vs. e355
To learn more about the e355 terminal, refer to the following set of documents:
•Verix eVo Bluetooth Manager User Guide, VPN DOC00327
•Verix eVo Volume I: Operating System Programmers Manual, VPN
DOC00301
E355/E265 USERAND BEST PRACTICES GUIDE7
PREFACE
NOTE
CAUTION
WARNING
Conventions and Acronyms
•Verix eVo Volume II: Operating System and Communication Programmers
Manual, VPN DOC00302
•Verix eVo Volume III: Operating System Programming Tools Reference
Manual, VPN DOC00303
•Verix Package Installer (VPI) User Guide, VPN DOC00385
Conventions and
Acronyms
Document
Conventions
This section describes the conventions and acronyms used in this guide.
V arious conventions are used to help you quickly identify special formatting. Table
1 describes these conventions and provides examples of their use.
Table 1Document Conventions
ConventionMeaningExample
BlueText in blue indicates terms
that are cross referenced.
ItalicsItalic typeface indicates
book titles or emphasis.
CourierThe courier type face is
used while specifying
onscreen text, such as text
that you would enter at a
command prompt, or to
provide an URL.
The pencil icon is used to
highlight important
information.
See Conventions and Acronyms.
You must install a roll of thermalsensitive paper in the printer.
http://www.verifone.com
RS-232-type devices do not work
with the PINpad port.
Abbreviations
Table 2 shows the abbreviations used throughout this guide.
Table 2Abbreviations
8E355/E265 USERAND BEST PRACTICES GUIDE
The caution symbol
indicates possible hardware
or software failure, or loss
of data.
The lightning symbol is
used as a warning when
bodily injury might occur.
Unit of MeasureDefinition
KBKilobyte
MBMegabyte
msecmillisecond
The terminal is not waterproof or
dustproof, and is intended for indoor
use only.
Due to risk of shock do not use the
terminal near water.
PREFACE
Conventions and Acronyms
Acronym
Acronyms are used in place of the full definition.
Table 3Acronym Definition
AcronymDefinition
ADKApplication Development Toolkit
ASCIIAmerican Standard Code for Information Interchange
BTBluetooth
CRCCyclic Redundancy Check, a method to check for data errors
FIFOFirst In, First Out
iAP1Apple accessory protocol for 30 pin connector devices
iAP2Apple accessory protocol for Lightning connector devices
mADKPWM application using ADK
MFiMade for iPhone/iPod/iPad
NFCNear Field Communication
OBEXObject exchange profile of Bluetooth
PANPersonal Area Network
PDPower Delivery, controller for Windows charging
PWMPAYware Mobile Reader (mPOS)
SSPSecure Simple Pairing
SPPSerial Port Profile of Bluetooth
VTM Verix Terminal Manager
XPIExternal PINpad Interface Application
Terminology
Table 4 lists the standard terms used in this manual and their definition.
Table 4Definition of Terms
TermDefinition
ACKAcknowledgement code that signal is successfully received
Hyper TerminalTerminal emulation program capable of connecting to systems
through TCP/IP networks, Dial-up modems, and COM ports.
iOSApple’s proprietary mobile operating system for iPhone, iPad, and
iPod touch devices
NAKNegative acknowledgment, a signal is received with errors
PMR-MUX2Verifone proprietary protocol for communicating with smart devices
Smart DeviceRefers to iPad mini, iPad mini 4, iPod, Android tablet, Windows
Tablet, iPhone, Android phone, Windows phone
StandaloneAn e355 not connected to smart device
Mobile PINpad
mode
e355 connected to smart device
E355/E265 USERAND BEST PRACTICES GUIDE9
PREFACE
Conventions and Acronyms
10E355/E265 USERAND BEST PRACTICES GUIDE
e355 Device
CHAPTER 1
e355 is a flexible payment device, which can operate in standalone mode (POS)
or Mobile PINpad mode (mPOS). In standalone mode, the application running on
e355 utilizes the e355 unit to complete the POS transaction. In Mobile PINpad
mode, the e355 unit and a smart device are used together to complete the POS
transaction. The smart device and e355 connection is either wired or wireless.
Wired connection is via USB interface and modular frame, and wireless
connection is via Bluetooth and optional frame.
Below are the terminal features on the front panel.
Figure 1Front Panel Features
Figure 2 shows the terminal features on the back panel.
Figure 2Back Panel Features
12E355/E265 USERAND BEST PRACTICES GUIDE
E355 DEVICE
Software Features
Software
Features
Low Power Modes
Loadable drivers
e355 supports the following software features:
“Always On/Instant Activate” design similar to e315. Remote wake on data, no
data loss. All communication modes (USB, BT and Wi-Fi) support low power
modes. Sleep walking API (dark wake) feature from VX 690 device is supported.
Most e355 drivers are downloadable. This gives the advantage of updating the
driver without updating the OS. The following drivers are downloadable:
•Bluetooth
•Wi-Fi
•Barcode
•USB device
•USB host
•iAP1
•iAP2
•PMR-MUX2
Mobile PINpad
Architecture
Modular frame
iOS, Android/
Windows Protocols
•Frame Manager
•Ethernet-USB
•Battery monitor, and
•Contactless
e355 has the same Mobile PINpad architecture as the e315 device, providing
support of same virtual communication ports COM1A, COM1B, COM1C, COM1D
and COM1E over the protocols iAP1/iAP2 or PMR-MUX2 used to communicate
with smart device.
e355 can dock into different frames for connecting with iOS, Android, and
Windows smart devices. Frame detection and configuration happen early on
during e355 power-up. This means that users will need to restart e355 when they
switch to a different frame configuration. The default frame configuration is
Bluetooth, this is when there is no frame detected or error in frame detection
occurs.
e355 supports iAP1 protocol for iOS devices having 30 pin connector, iAP2
protocol for iOS devices having lightning connector and PMR-MUX2 protocol for
all Android and Windows devices. Wired connection (USB interface) uses any of
the three protocols iAP1, iAP2 and PMR-MUX2, whereas wireless (BT) interface
does not support iAP1, but supports iAP2 and PMR-MUX2 protocols.
E355/E265 USERAND BEST PRACTICES GUIDE13
E355 DEVICE
Software Features
Bluetooth Support
Wi-Fi Support
VTM on the Display
Software Changes
for PCI4
e355 shares the same hardware family as VX 690 device. The BT solution also
uses StoneStreetOne (SS1) BT stack. New SPP Server mode is supported, which
allows e355 to be discoverable in this configuration. Pairing modes are compliant
with PCI4 standard and supported profiles are SPP, OBEX and PAN.
e355 shares the same hardware family as VX 690 device and the same software
stack used by VHQ for device management. Mobile PINpad architecture is not
supported over Wi-Fi.
The e355 VTM is displayed on an LCD display unlike the e315's VTM, which is
displayed on a remote PC terminal such as Hyper Terminal. VTM menu layout is
similar as e315 and other Verix terminals. New menus such as sof tware ve rsions,
barcode diagnostic, contactless diagnostic, and IPP and ADE keys KSI
information are added.
The following software changes comply with PCI4 security standard:
•Added 24-hour restart change for memory initialization and file system
integrity check.
•Pre-expired passwords for key loading menus in VTM for RKL, ADE and IPP
keys.
Charging Schemes
Software Packaging
•Full system integrity check (file system integrity and binary files authentication)
at every boot-up.
•OS software hardening with buffer clearin g in secure modules af ter usage and
static code analysis fixes.
•Restrictions to BT pairing modes, only SSP numeric comparison is allowed.
Hardware supports simultaneous charging of e355 and smart device from frame
connector only (i.e., barrel and gang charger). However , simult aneous charging is
not supported from the side Micro-USB port of e355. Power sharing is also not
supported. Sequential charging is only supported in iPod 6 frame configuration
through the side Micro-USB port.
e355 uses Verix Package Installer (VPI) tool for packaging OS, drivers, EOS,
CTLS and applications. This allows for download of multiple components in single
download step with guaranteed order of install and to speed up package
installation process. NOVA package name is used for internal releases of e355
software, for example NOVA-01.00.03. Customer pa ckages are released on top
of the base NOVA packages with desired configuration parameters and software
components. For example,
for Verizo n custom er.
ZNOVA-01.01.02
is created on top of
NOVA-01.00.03
14E355/E265 USERAND BEST PRACTICES GUIDE
Architecture
NOTE
CHAPTER 2
The e355 operates in Standalone and Mobile PINpad modes.
Standalone
Architecture
In this mode, e355 is not attached to a smart device and not docked in modular
frame. The payment application that processes the p ayment runs on the e355 and
the payment transactions are displayed on its LCD d isplay. Communications from
e355 to payment gateway is via Wi-Fi or Bluetooth interface only.
Figure 3Communication via Wi-Fi Access Point, Bluetooth Access
Point, or Tethered Host via BT PAN Profile
Key Points in this set-up:
1*GO configuration variable is set to payment application.
2Disables the start-up of Control, Barcode, and Bluetooth Manager
applications.
3Virtual Communication ports COM1A to COM1E are disabled.
4Protocols iAP1, iAP2 and PMR-MUX2 for communicating with smart device
are disabled.
5OS drivers, EOS, COMM engine (CE), and libraries are all available for use.
6Possible to access control and barcode applications from payment
applications using pipe interface.
Smart Device P AN mode (tethering) is usually only supported on th e devices that
have a 3G/4G radio installed.
E355/E265 USERAND BEST PRACTICES GUIDE15
ARCHITECTURE
1
QZ.
#
X
2
ABC
3
DEF
4
GHI
5
JKL
6
MNO
7
PRS
8
TUV
9
WXY
*
,
‘
‘
‘
0
-SP
e355 Side
iPad mini Side
1
QZ.
#
X
2
ABC
3
DEF
4
GHI
5
JKL
6
MNO
7
PRS
8
TUV
9
WXY
*
,
‘
‘
‘
0
-SP
Mobile PINpad Architecture
Mobile PINpad
Architecture
In this mode, e355 is attached to a smart device and connected via USB or
Bluetooth interface. Payment application runs on the smart device and it drives
the e355 to perform actions of reading card data, taking PIN number, and
displaying messages on the LCD screen. The e355 provides five virtual
communication ports to the applications, which are multiplexed over USB or
Bluetooth interface. The iAP1/iAP2 and PMR-MUX2 protocols have the ability to
provide multiple virtual ports over single interface.
Figure 4e355 To iPad mini via USB Interface
Figure 5 shows connection via BT.
Figure 5e355 to iPad mini Via Bluetooth Interface
16E355/E265 USERAND BEST PRACTICES GUIDE
ARCHITECTURE
Protocol string1
Smart Device
Protocol string2...Protocol string5
COM1A
e355
...
COM1BCOM1E
Mobile PINpad Architecture
Virtual
Communication
Ports
By virtue of iAP1/iAP2/PMR-MUX2 protocols, the smart device and e355 can use
separate communications ports. The smart device uses a unique protocol string
for starting the communications with corresponding virtual communication port on
e355 side.
Figure 6Virtual Communication Port Architecture
Protocol Strings
Table 5 presents the protocol strings for iOS devices with Lightning and 30-pin
Apple iOS device with Lightning connector uses iAP2 protocol to communicate
with e355, and Apple iOS device with 30-pin connector uses iAP1 protocol to
communicate with e355. Both iAP1 and iAP2 protocols use the same protocol
strings on iOS device. For more information on communicating with accessory
using protocol strings, refer to External Accessory Framework on the Apple
developer website.
Table 6 shows protocol strings (commands) for Android/Windows devices and the
PMR-MUX2 protocol uses commands to open, send, and close the
communications ports. For full details on the PMR-MUX2 protocol, refer to section
PMR-MUX2.
Applications running on e355 open the virtual COM device ports COM1A,
COM1B, COM1C, COM1D, and COM1E. These applications respond to the data
sent to these ports.
Table 7 shows the application names that open specific device ports.
XPI application uses COM1C port for supporting Zontalk downloads in addition to
its COM1A port for communicating with smart devices. The last COM1E port is
available for debug message output. There are no applications using this port.
Open and Close Events of Communication Ports
The e355 sends a Connect event to its application when application on the smart
device opens the port for communication. The e355 sends a Disconnect event
to its application when application on smart device closes the communication port.
If the e355 application has not opened the device port, but application on smart
device tries to open it, then e355 responds with an error code.
Applications on e355 can use API get_port_status() for detecting open and
close status of communication port in the smart device application.
Device Port APIs
Following are the APIs used by the device ports.
18E355/E265 USERAND BEST PRACTICES GUIDE
open()
ARCHITECTURE
open()
This claims ownership of the device. Calling this function also flushes all data an d
clears all error conditions in the communication channel. The device names that
can be opened for ports are:
"/DEV/COM1A"
"/DEV/COM1B"
"/DEV/COM1C"
"/DEV/COM1D"
"/DEV/COM1E"
Use get_port_status() to get the status of the smart device connection. A
smart device cannot open a communication port until the e355 application has
opened the corresponding device.
close()
PrototypeInt open(const char *devname, int attributes);
Parameters
devnamePointer to the null terminated device name string.
attributesIgnored in this driver.
Return ValuesPositive integer device handle if successful, or -1 with errno set to an error code
if error occurs.
This releases ownership of the device. Calling this function also flushes all data
and clears all error conditions in the communication port.
Prototypeint close(int device_handle) parameters:
Parameters
device_handleThe handle returned for the device by the open() call.
Return ValuesReturns 0 for success, -1 with errno set to EBADF if device not open.
E355/E265 USERAND BEST PRACTICES GUIDE19
ARCHITECTURE
rea d()
read()
This copies message-based data (header, data, CRC) received from the
communication port to the given buffer . The actual number of bytes copied may be
less than the requested count. In e355, the receive data logic drop s packet s larger
than 1024 bytes for iOS devices and 2048 bytes for Android and Windows
devices.
The Rx message packets are first put into a FIFO of up to 7 message packet s and
a kernel task routes the message packets to the correct device port buffers. It is
possible, but unlikely that the kernel task can't keep up with the incoming packet s.
If the FIFO overflows, the entire message packet is dropped. When packets are
internally dropped, log messages are generated. The end-to-end request/
response handshaking normally prevents buffer overflows.
The read function returns a complete message that is aligned on packet
boundaries. The communication port driver does a CRC checksum on the data to
assure integrity, but, it does not guarantee delivery.
Prototypeint read(int handle, char *buffer, int count);
Parameters
handleThe handle returned for the device by the open() call.
bufferThe buffer from which to copy the data.
countThe maximum number of bytes requested.
Return ValuesReturns the number of bytes read, or -1 if an error occurred.
20E355/E265 USERAND BEST PRACTICES GUIDE
write()
ARCHITECTURE
write()
This copies the given data to system transmit buffers for transmission over the
communication port. The function may return before the data is actually sent. In
e355, the write() function works differently than a standard serial port. The
driver assumes that each write contains a whole packet and that a request/reply
type of protocol is running on the link that limits the number of outstanding
transmit packets in the buffers. Usually, a device port will have, at most, one
outstanding packet in the buffers. No packet is sent until a response is received.
There are a total of 7 transmit buffers shared among all channels. If a
communication protocol attempts to write when there are no buffers, the error
ENOSPC is returned. Each buffer allows up to 1024 bytes for iOS devices and
2048 bytes for Android and Windows devices.
Prototypeint write(int handle, const char *buffer, int count);
Parameters
Return ValuesReturns the number of bytes sent, or -1 if an error occurred.
Reset_port_error()
Prototypeint reset_port_error(int handle);
Parameters
Return ValuesReturns 0 if successful, or -1 if an error occurred.
handleThe handle returned for the device by the open() call.
bufferThe buffer from which to copy the data.
countThe number of bytes to send.
Resets all error flags for the given communication channel.
handleThe handle returned for the device by the open() call.
E355/E265 USERAND BEST PRACTICES GUIDE21
ARCHITECTURE
Get_port_status()
Get_port_status()
Parameters
Return ValuesReturns 0 if no output is pending, 1 if output is pending, or -1 if an error occurred
handleThe handle returned for the device by the open() call.
bufferThe 4-byte buffer in which to copy the status information.
and errno is set to an error code.
For a communication port, the four status bytes copied into the given buffer are as
follows:
•Byte 1: The number of input messages pending.
•Byte 2: Event Cause Bits described below.
•Byte 3: The number of output messages pending.
•Byte 4: The status byte described below.
The event cause bits are set when an event is sent to the application. The
application can read the bits to determine the cause of the event. The event cause
bits are cleared when they are read. The definitions are as follows:
Table 8Event Cause Bits
BitEventDefinition
Bit 0Connect EventSet when a communication port is opened.
Bit 1Disconnect EventSet when a communication port is closed or Bluetooth
connection is lost.
Bit 2RX ReadySet when new received data is ready to be read.
22E355/E265 USERAND BEST PRACTICES GUIDE
set_event_bit()
Prototypeint set_event_bit(int handle, long bitmask);
Parameters
ARCHITECTURE
set_event_bit()
Allows the application to select one of the event bits that would otherwise be
unused, and assigns it to a communication port.
By default, the communication ports do not generate events. This function allows
the communication ports to generate events when data is received. This
mechanism is provided when almost all the bits in the event mask have already
been allocated. However , in a specific terminal installation, many of the predefined
event bits are not used.
handleThe handle returned for the device by the open() call.
bitmaskA mask with 1 or 0 bits set corresponding to the event bit.
Return ValuesReturns 0 if successful. If an error occurs this function returns -1.
get_event_bit()
Prototypelong get_event_bit(int handle);
Parameters
Only one event bit may be selected for a given device. The following event bits
must not be assigned: EVT_USER, EVT_SHUTDOWN and EVT_SYSTEM.
Any attempt to violate these rules will result in set_event_bit() returning -1
and errno being set to EINVAL. If the command fails, the event bit setting will not
be changed.
Allows the application to find out what event, if any, will be generated by the given
device. The mask returned will have one bit set that corresponds to the event bit
generated by the device.
handleThe handle returned for the device by the open() call.
bitmaskA mask with 1 or 0 bits set corresponding to the event bit.
Return ValuesReturns 0 if no event is to be generated or a mask with one bit se t, if an event is to
be generated. -1 if the device does not support soft events.
E355/E265 USERAND BEST PRACTICES GUIDE23
ARCHITECTURE
iap_control_function()
iap_control_function()
Prototypeint iap_control_function (int handle, int function);
Parameters
This allows an application to control the keypad state. The possible functions
defined in SDK header, SVC.H, are:
•IAP_CONTROL_KEYPAD_SLEEP, turns off the keypad.
•IAP_CONTROL_KEYPAD_WAKE, turns the keypad on.
•IAP_CONTROL_DISABLE_KEYBEEP, turns off the keypad beeps.
•IAP_CONTROL_ENABLE_KEYBEEP, turns on the keypad beeps.
handleThe handle returned for the device by the open() call.
function An integer specifying the function to be performed.
Return ValuesReturns 0 if successful. If an error occurs, the function returns -1 and errno is se t
to an error code.
iap_get_keypad_state()
Copies the keypad status to the given buffer. The first byte is the "Enable State."
The second byte is the "Beep State." The two status bytes are as follows:
•<Enable State>
0 if keypad is disabled, 1 if keypad is enabled and awake, 2 if keypad is
enabled, but still waking up.