OPOS FOR THE INGENICO iSERIES VERSION 2.74 - RELEASE NOTES
---------------------------------------------------------------

PART #: SA00577-02.74-0

FIXES/ENHANCEMENTS IN 2.74-0
--------------------------
2.7.4.2

- HealthCheck forms correction.
- LineDisplay DirectIO clear text also update the LineDisplay buffer.

2.7.4.1

- Add in support for .icg file version and date checking before download. This feature requires to use the v1.7.1.1 or v1.8.3.1 Ingenico Form control.
- Allow script file (.scr) and text file download for scripting.
- Add in On-Guard check for MSR Autodisable true case. OPOS driver will not call "Abort MSR".


FIXES/ENHANCEMENTS IN 2.73-0
--------------------------
2.7.3.5

- Fixes USB issue for Windows 7.
- Optimize ClearText for LineDisplay.

2.7.3.3

- Fixes the issue: POS application process is not killed after OPOS app closes and shuts down.  The issue was as a result of memory corruption because the OPOS tries to free the memory twice.

2.7.3.2

- UPOSRMB-16. Additional fix for Thread synchronization issue.
- OPOS MSR will parse track2 data non ISO cards if '=' is present and account number field has all numeric digits.


2.7.3.1

- UPOSRMB-16. Thread synchronization issue.  
- Suppport for optional load of image files via LoadImages property in .ICG file.  If an .ICG file has the entry "LoadImages=no" the OPOS driver will not download image files.
- UPOSRMB-15. DataEvent status returned as 0 for non clear entry input.  DataEvent status should be the id of button pressed during non clear entry input.

FIXES/ENHANCEMENTS IN 2.72-0
--------------------------
2.7.2.6
- When setting device enable to FALSE, OPOS will also turn off polling.
- On MSR. if the source is EMV, a DirectIOEvent will be fired if "Use EMV Reader" check box is selected on Control Panel. DirectIOEvent will contain the following properties: EventNumber = 1, Data= <source id> = 2 (EMV).
- On MSR. if the source is CPEM, a DataEvent will be fired and a DirectIOEvent will be fired if "Use CPEM Reader" check box is selected on Control Panel. DirectIOEvent will contain the following properties: EventNumber = 1, Data= <source id> = 1 (CPEM).
- On MSR. if the source is MSR, a DataEvent and a DirectIOEvent will be fired . DirectIOEvent will contain the following properties: EventNumber = 1, Data= <source id> = 0 (MSR).
- On PinPad, setting of DataEventEnable is not explicitly being set to TRUE 
- On PinPad, Order of setting the account number has changed.  Now if the account number is not set before the BeginEFTTransaction call, PIN Entry will Fail. 
- On PinPad, Timeout will now fire an ErrorEvent instead of a DataEvent

2.7.2.5
- Form name used will be all lower case during StoreFormOnDevice and DisplayFormOnDevice. This will required form with mix case to be reloaded.
- On Signature capture, when calling BeginCapture with older UIA prior to version 2.73 (with the exception of 2.71) OPOS will assume that the form name: "form<nnn>.icg" when using DWORD setting <nnn> is preloaded.
- On Pinpad. When calling BeginEFTTransaction, the client will not be able to set property until a call to End EFT is made. When Calling BeginEFTTransaction, a call to EndEFTTransaction will be implitly made if neccessary in order to reset internal variable.
- On MSR. A DataEvent fired will be followed by a DirectIOEvent with an EventNumber=1 and the Data=<source id> if "Use CPEM Reader" check box is selected on Control Panel. On MSR DirectIOEvent when its EventNumber is 1, its Data= <source id> = 0 (MSR), 1 (CPEM) or 2 (EMV).

2.7.2.4
- When storing .gif, increase timeout to give UIA a chance to convert it and to return.
- When an error event is fired, OPOS will set DataEventEnable property to FALSE in order to comply with UPOS Spec.

2.7.2.3
- Signature Capture. When the user press Cancel, prevent signature to be retreived by a call to EndCapture by marking it as Data not available.

2.7.2.2
- Adjust Signature Capture logic as follow:
Using Form Control, when Polling for 0x16 command, if a button press is returned from UIA, OPOS will fire a DataEvent with status = button ID.
Using SIG Control, when Polling for 0x16 commands, if a button press is returned from UIA, OPOS will call EndCapture in order to retrieve signature and it will fire an event with status = 1 if there is a signature or 0 if there is not
Using Form Control, when Polling for 0x16 command, if the signature buffer is full (response code 0xF9 from UIA), OPOS will call QuerySignatureData without firing an event in order to get signature data and OPOS will fire an Error event with ErrorCode=114 and ErrorCodeExtended=0xF9
Using SIG Control, when Polling for 0x16 command, if the signature buffer is full (response code 0xF9 from UIA), OPOS will call EndCapture without firing an event in order to get signature data and OPOS will fire an Error event with ErrorCode=114 and ErrorCodeExtended=0xF9
Using Form Control, when calling QuerySignatureBoxData() method, if there is a signature OPOS will fire a DataEvent with status = 256 otherwise OPOS will fire a DataEvent with status = 0.
Using SIG Control, when calling EndCapture() method, if there is an error OPOS will return 106 otherwise OPOS will return SUCCESS=0.
Using Form control, when calling QuerySignatureBoxData() method, if there is a signature OPOS will fire a DataEvent with status = 256 otherwise a return code of 106 will be returned.  No DataEvent will be enqueued.
Using SIG control, when calling EndCapture() the signature retrieved is cached and it's returned for subsequent call. This allows the signature cached to be retrieved by either control.
Using Form control, when calling DisplayFormOnDevice() method if the form contain a signature box, the cached signature is cleared.
Using SIG control, when calling BeginCapture() the cached signature is cleared.
- Adjust MSR Account Number retrieval logic to make ISO compliant as follow:
Using MSR control, if Track1 exist retrieve the account number from it, set property and fire a DataEvent, if Track2 exist retrieve the account number from it, set property and fire a DataEvent. Note that if Track1 and Track2 exist Account number in Track2 will be the one retained.
Using MSR control, when setting Account number property prior to fire a DataEvent, the following validation will be performed for ISO compliance: 
a) If Track1 exist and it's not in error, do the following validation:
If Validate Account Number is not numeric, Set Account Number property to empty.
If Track1 do not contain a Field Separator, Set Account Number property to empty. Note: User can parse Account Number from Track1, but OPOS will not do it if Track1 was not ISO compliant.
b) If Track2 exist and Track1 does not, do the following validation:
If Validate Account Number is not numeric, Set Account Number property to empty.

2.7.2.1
- Add EnableMsr registry entry to display a form when enabling MSR.
- Add new registry entry, nameed "DcapLogHistMax", under DataCapture for Data capture improvement, this will allow us to manage disk space.
  It will contained the max number of log file we may stored in the system. Its default value is 5, and its valid value is between 1 and 256.
  The datacapture synthax when saving an old log file have changed as follow: 
  Let's consider the registry entries DcapFile = "drive:\path\filename.ext" and DcapLogHistMax = "n". When the maximum size of the log file is reached, we will save the current file into a new file name, the naming convention have changed in order to accomodate this logic.
   Before:
    We were saving the old log using the following file name pattern: "drive:\path\filename_[yyyymmmddhhmmss].ext" where [yyyymmmddhhmmss] is the current date stamp
   Now:
    We will save the old log using the following file name pattern: "drive:\path\filename_[nnn].ext" where [nnn] is the index between 1 and DcapLogHistMax and either "drive:\path\filename_[nnn].ext" do not exist or "drive:\path\filename_[nnn].ext" is the oldest file to be overwritten   
- Add DirectIO "const LONG DIO_LOOP_BITMAPS =20;" to start a repeated loop of a number of bitmap displays.
  

2.7.1.4
- When numeric keypad is enable of form, start polling.

2.7.1.3
- When keyboard is enable of form, start polling.

2.7.1.2
- When clear screen is sent via Form DirectIO command, reset all internal and stop polling.

2.7.1.1
- Added Direct IO Commands:
const LONG DIO_GET_HEALTH_STAT			=19 ;
- Added OnGuard usage to get Track data with PINPAD when issuing a DirectIO DIO_SET_UIA_VARIABLE command (0xA1)



KNOWN DEFECTS
-------------

INGENICO OPOS DN #149: 
Applications moving from the 1.7 Form Control to the 1.8 Form Control may need to rebuild their source code for the Form Control Changes to take effect. 



FORM CONTROL NOTES
------------------

-The Installshield package contains the legacy Form Control Object.
-The new Form Control Object separate from the Installshield package is a UPOS 1.8 compliant Control Object.
-The new Form Control Object supports both a vtable (early-binding) and IDispatch (late-binding) COM interface.
-The Form Service Object contained in Ing6500SO.dll has also been upgraded to be 1.8 compliant.
-Applications built with the legacy Form Control Object may need to be rebuilt to work with the new. With the new Form Control Object registered, remove your Form Control from your dialog box and re-add it, and then rebuild. This is a bug under investigation by Ingenico.


FIXES/ENHANCEMENTS IN 2.62-0
----------------------------

2.6.2.2
- Set Account Number property to empty string if :
  a)- during MSR parsing Track data are not in ISO format (ie no field separator) or 
  b)- the Account Number contained non numeric data.

2.6.2.1
- Added Direct IO commands:
const LONG DIO_SEND_KEYBOARD_CLEAR_ENTRY	=16 ;
const LONG DIO_SEND_KEYPAD_CLEAR_ENTRY		=17 ;
const LONG DIO_SET_UIA_VARIABLE			=18 ;


FIXES/ENHANCEMENTS IN 2.61-0
----------------------------

2.6.1.8
- Added FILE_LEN Name variable support with 0xA1 command.

2.6.1.7
- Added Direct IO value to enable/disable Contactless

2.6.1.6
- For USB, use PNP event to close or open port. This replace device removal followed by rescan of device list

2.6.1.5
- For USB, ESD update with device removal followed by rescan of device list

2.6.1.4
- For USB, ESD update with rescan of device list

2.6.1.3
- Update Data capture mask, split POLLS mask into three:
	DCM_POLLS_71			= 0x040000, // Capture 71 polls command.
	DCM_POLLS_16_42			= 0x080000, // Capture 16 or 42 polls command.
	DCM_POLLS_ALL			= 0x0C0000, // Capture all polls command.


2.6.1.2
- Fix issue with signature capture.

2.6.1.1
- Add registry entries to control if a file need to be check during store form
On Line Display, when ever entry <UseBackground> is set, new entry to control for existence is <CheckUseBackgroundForm> (Default value is FALSE)
On Pinpad, when ever entry <UseFormFile> is set, new entry to control for existence is <CheckFormFile> (Default value is FALSE)
On Form, when ever entry <UseClearEntryForm> is set, new entry to control for existence is <CheckClearEntryForm> (Default value is FALSE)
On Form, when ever entry <UseAmountVerifyForm> is set, new entry to control for existence is <CheckAmountVerifyForm> (Default value is FALSE)
On Signature, when ever entry <END CAPTURE IDLE FORM> is set, new entry to control for existence is <CheckEndCaptureIdleForm> (Default value is FALSE)
On Signature, during begin capture when storing a file, new entry to control for existence is <CheckBeginCaptureForm> (Default value is FALSE)


FIXES/ENHANCEMENTS IN 2.60-0
----------------------------

2.6.0.1
- Added datacapture mask for turn around
	DCM_TURNARROUND_THREADS = 0x004000  // Thread activity for Turn Around
	DCM_THREAD_LOOP		= 0x008000  //	 Thread Loop activity
	DCM_TRACE_CCOPOLLSTACK	= 0x800000  // Multi Communicator traces of Control object poll stack

- Modified datacapture mask for turn around
	DCM_ALL_THREADS		= 0x007F00 // Capture all high-level thread activity (note: polling is separate)
	DCM_EVENTS		= 0x000070 // Capture all event information.
	DCM_HWI_ALL		= 0x030000 // Capture all activity in routines that interface to the 5991
	DCM_POLLS		= 0x040000 // Capture polls command.

- Added Posting of Window User message for Event successfully fired.
  message = WM_COMMAND
  wParam  = WM_USER
  lParam  = Event type (OPOSDATAEVENT, OPOSDIRECTIOEVENT, OPOSERROREVENT or OPOSSTATUSUPDATEEVENT)


IMPORTANT NOTES FOR 2.5X
------------------------
It is a self-extracting Installshield package. 

The behavior of physical keys when a form is displayed are now subject to that form's [keymask:] attribute, which is part of the InputMethod-> element. If this attribute has a value of zero, then the physical keyboard will not be enabled when the form is displayed. Otherwise the keyboard will be enabled. Legacy forms with nonzero keymasks will need to be changed if they require physical keys to be disabled.

Common controls v1.7 are installed by default. 
To install v1.8 Common Controls ocx you need to uninstall v1.7 and install v1.8 using .bat scripts provided.
To install v1.7 Common Controls ocx you need to uninstall v1.8 and install v1.7 using .bat scripts provided.
Scripts provided are:
- RegisterAllOPOSCCOls17.bat, this will register all v1.7 Common Controls
- RegisterAllOPOSCCOls18.bat, this will register all v1.8 Common Controls
- UnRegisterAllOPOSCCOls17.bat, this will unregister all v1.7 Common Controls
- UnRegisterAllOPOSCCOls18.bat, this will unregister all v1.8 Common Controls


FIXES/ENHANCEMENTS IN 2.59-0
----------------------------

2.5.9.6
- On store form before sending a file, Add a check to query if the file is already on the terminal, if true returned success.
On Store/display form method the following will be done:
a)- if the form number is between 1 and 255, the file will be rename to "form<n>.icg" where n is the form number. 
    Example: form1.icg form2.icg ... form255.icg. Example: StoreFormOnDevice(1,c:\myform.icg) will be renamed to form1.icg

b)- if the form number is -1, the file will be rename to "pinentry.icg". 
    Example: StoreFormOnDevice(-1,c:\myform.icg) will be renamed to pinentry.icg

c)- if the form number is -2, the file will be rename to "clrentry.icg". 
    Example: StoreFormOnDevice(-2,c:\myform.icg) will be renamed to clrentry.icg

d)- if the form number is -3, the file will be rename to "amt_ver.icg". 
    Example: StoreFormOnDevice(-3,c:\myform.icg) will be renamed to amt_ver.icg

e)- otherwise, the filename supplied will be sent as is and will be validate against the DFS Terminal OS file name requirement and must have the extension ".icg", as follow:
1- File and directory names are PSY_FILENAME_LENGTH ( = 12) characters long (NOT including the terminating NULL character).
2- Filenames must follow the rules below:
> the list of valid FIRST characters is ['a'..'z', 'A'..'Z', '.']    
> the list of valid LAST characters is ['0'..'9', 'a'..'z', 'A'..'Z', '_', '$', '.']
> the list of valid characters from second place to last but one is: ['0'..'9', 'a'..'z', 'A'..'Z', '-', '_', '$', '.']
> cannot comprise ".."
Example: StoreFormOnDevice(0,c:\myform.icg) will be stored as myform.icg on the terminal, while c:\my..form.icg c:\1form.icg etc... will be rejected

- When issuing a DirectIO with DIO_GET_FORM_INFO, a file name must be provided along with the variable name. The file name must be between '@' characters.
  Cmd     	= DIO_GET_FORM_INFO
  FrmNum 	= 0
  InputData  	= "@FILENAME@%VARNAME%"
  Example: DirectIO(Cmd, FrmNum, InputData)

- New DirectIO command to delete a form by passing only the form name: DIO_DELETE_FORM = 15 
  Cmd     	= DIO_DELETE_FORM
  FrmNum 	= 0
  InputData  	= "myform.icg"
  Example: DirectIO(Cmd, FrmNum, InputData)


2.5.9.5
- Fix handle leak issue.

2.5.9.4
- Enable Power Reporting for TCP/IP. 
- Fix ETX protocol issue.

2.5.9.3
- Free access to port and all resource associated with it when the last release is done. 

2.5.9.2
- Fix issues on USB handle and multiple claim access by two different application.
- Fix issue with watcher thread when the state is in error. Add logic to Wait for 5 seconds and then terminate the watcher thread.

2.5.9.1
- Fix issue on TCP/IP with release build.


FIXES/ENHANCEMENTS IN 2.58-0
----------------------------

2.5.8.7
- Fixed Serial port port reading issue.
- Added new data capture mask
	DCM_APIMCOMM		= 0x000008 // Multi Communicator traces: Will traced claim and release on Comm device
	DCM_RAWIO_SEND		= 0x200000 // Package Sent ...
	DCM_RAWIO_RECEIVE	= 0x400000 // Package Received ...
- Added time out for Ping on control panel.


2.5.8.6
- Turn off data event on service object control when an event is fired.
- Fixed issue with DataCapture. New datacapture class is implemented with the following data mask:
	DCM_API         	= 0x00000F // Capture all API information.
	DCM_EVENTS      	= 0x000070 // Capture all event information.
	DCM_ALL_THREADS		= 0x007F00 // Capture all high-level thread activity (note: polling is separate)
	DCM_HWI_ALL		= 0x0F0000 // Capture all activity in routines that interface to the 5991

	DCM_HWI_HIGH		= 0x010000 // Capture entry/exit of hardware interface routines
	DCM_HWI_LOW		= 0x020000 // Capture low level ifaces to 5991 device

	DCM_LD_QUEUE		= 0x100000 // Capture enqueuing/dequeuing of Line Display requests ...
		
	DCM_APIHIGH     	= 0x000001 //   High-level traces: entry/exit.
	DCM_APILOW      	= 0x000004 //   Low-level traces.
	DCM_APIMID      	= 0x000002 //   Mid-level traces: High frequency APIs.

	DCM_EVENTQUEUE  	= 0x000010 //   Queuing of events.
	DCM_EVENTFIRE   	= 0x000020 //   Firing of and return from events.
	DCM_EVENTS_LOW		= 0x000040 //   Low-level event activity

	DCM_LD_THREADS		= 0x000100 //   Thread activity for Line Display
	DCM_SIGCAP_THREADS	= 0x000200 //   Thread activity for Signature Capture
	DCM_MSR_THREADS		= 0x000400 //   Thread activity for MSR
	DCM_PINPAD_THREADS  	= 0x000800 //   Thread activity for PinPad
	DCM_KBD_THREADS     	= 0x001000 //   Thread activity for POSKeyboard
	DCM_FORM_THREADS     	= 0x002000 //   Thread activity for FORM

2.5.8.5:
- Fixed lock-up after device go offline when closing a control object.
- Fixed EFT download issue.
- Removed check on control panel setting for QueryKeyPadBoardTextEx.
- Fixed issue on clear entry form display with no form elements using non color terminal. A message will now be logged instead of an error message been returned. 

2.5.8.4:
- Fixed OPOSD-47. Adjust validation ordering. Check of online status need to be done after check on claim.
- Fixed Multiple claim issue when multiple application run concurrently.

2.5.8.3:
- Fixed issue on power reporting when device goes offline and an attempt to call check health cause a lockup.

2.5.8.2:
- Timeout for the TURNAROUND command have been changed from 1 to 2 seconds.

2.5.8.1:
- Remove unnecessary tracing.


FIXES/ENHANCEMENTS IN 2.57-0
----------------------------

2.5.7.2:
- Fixed multiple claim issue when device is offline.

2.5.7.1:
- remove pop-up display when an attempt to convert a filename to 8.3 during Display form failed. An OPOS_E_FAILURE (111) will be returned instead.


FIXES/ENHANCEMENTS IN 2.56-0
----------------------------
2.5.6.1:
- Removed call to GetCommModemStatus(...).
- Make call to SetCommTimeouts(...) when there is any changes.
- Add code to prevent multiple Open to the same service object with the same device name.
- Add EMV support
- Common Control Objects Version 1.7 will be the default installation. IVICMForm.ocx, OPOSLineDisplay.ocx, OPOSMSR.ocx, OPOSPINPad.ocx, OPOSPOSKeyboard.ocx and OPOSSigCap.ocx.
- Common Control Objects version 1.8 will be install as option. 
- Provide script to ease registration of Common Control Objcets version 1.7 or 1.8. RegisterAllOPOSCCOlsxx.bat and UnRegisterAllOPOSCCOlsxx.bat (where xx is the version, example: 17, 18)


FIXES/ENHANCEMENTS IN 2.55-0
----------------------------

2.5.5.3:
- Fixed issue on ETX protocol with USB. 

2.5.5.2:
- Fixed issue on Line Display windows array pointer. 

2.55 BUILD 1:
- Fixed issue on Interactive Heath check flag. 


FIXES/ENHANCEMENTS IN 2.54-0
----------------------------

2.54 BUILD 9:
- Fixed issue on Unit Reset request. 
Note that when a Unit Reset Request is issue, the caller need to close/release any service objects that were claimed.
The application will prevent any public command other than Close or Release (ReleaseDevice) to succeed.
This is because the port handle is no longer valid, and a new port handle is initiated only when all claimed service objects are released.


2.54 BUILD 8:
- Fixed issue on Power management. 

2.54 BUILD 7:
- Fixed issue on IO Port and service object. 

2.54 BUILD 6:
- Fixed issue with calling close without disable the device.

2.54 BUILD 5:
- Fixed Control Panel issue with resgistry update on Pinpad. 
- Fixed Keyboard not responding issue on check health
- Integrate new error code 0xF9 for signature full
- Fixed Signature display issue on check health.
Please note that previous version of EN-T-1k were using version 1.5, be sure to avoid having both versions installed for IVICMForm.ocx.


2.54 BUILD 4:
- Fixed Form control issue for backward compatibility with eNT-Touch 1000. 
- Update IBMEFTDL.exe 

2.54 BUILD 3:
- Add Checking signature capture buffer full 0xF3 status
- Add a new method QueryKeyPadBoardTextEx(clrEntryFormFilePath). This method required a valid path of a clrentry.icg, it will attempt to store the file in the device. After successful storage of the new clrentry.icg file, it will call QueryKeyPadBoardText().
- Filter sensitive data logging through Property setting (MSR, PinPad).
- Fixed issue on signature capture file size.
- Fixed issue on SO Form DisplayAtText function for iSeries 3070.
- Fixed issue on SO Form Pin Pad entry for iSeries 3070.
- Reorder Control Panel Device name radio button under Line Display Tab
- Sort Control Panel Device Prompt Management Model list box under PINPad Tab.
- Serial Port. On close make sure that the worker thread (Ping) is terminated.

2.54 BUILD 2:
Improvements to DirectIO implementation; removed rare crashes that could occur after repeated open/close in a VB6 IDE.

2.54 BUILD 1:
Added support for the i6580 terminal.


FIXES/ENHANCEMENTS IN 2.53-0
----------------------------

2.53 BUILD 3:
Ingen DN202: LineDisplay methods now correctly return OPOS_E_NOHARDWARE if the terminal
is disconnected AND asynchronous power reporting is in use.
Ingen DN208: OLEForRetail registry entries could be deleted while still in use. Fixed.

2.53 BUILD 1:
Ingen DN203: Excessive 'MSR Disable' commands result in communications timeouts.

Ingen DN205: If sigcap buffer is filled, an ErrorEvent is now fired with 
ResultCode = OPOS_E_FAILURE and ResultCodeExtended = OPOSERREXT+1.

Further changes to eliminate Ingen DN203


FIXES/ENHANCEMENTS IN 2.52-0
----------------------------

2.52 BUILD 1:
Ingen DN204: The ResultCodeExtended property of the PINPad control is now set to OPOS_E_TIMEOUT
prior to firing an ErrorEvent. This value persists until the next call to EnablePINEntry.


FIXES/ENHANCEMENTS IN 2.51-0
----------------------------

2.51 BUILD 1:
Ingen DN???: Support for configuring max signature size.


FIXES/ENHANCEMENTS IN 2.50
--------------------------

BUILD 15:
Ingen DN194: Support for RS-232 connections using COM9 or greater.
Ingen DN195: Spurious StatusUpdateEvents for RS-232 during active communication periods. Fixed.
Ingen DN197: QueryRadioButtonState() reported incorrect states for checkboxes with ID > 127. Fixed.

BUILD 14:
Ingen DN188: EFT downloads can now be scheduled via silent installations.
Ingen DN191: OPOS Form control now performs for physical keypresses in accordance with DirectIO keymask settings.
Ingen DN192: Support for forcing a defrag via the DirectIO parameter DIO_FORCE_DEFRAG.

BUILD 13:
Ingen DN182: Alternative fix that does not require I/O interface changes.

BUILD 12:
Ingen DN184: Whether the physical keypad is enabled when a form is displayed is subject to that form's keymask attribute.

BUILD 11:
Ingen DN189: Adjustments to QueryKeyPadBoardText() so that 6780 and 6550 have the same interface.

BUILD 10:
Ingen DN182: Crash at Claim() for disconnected USBIO connections. Fixed.

BUILD 9:
Ingen DN180: Timeouts excessive when iSeries terminal is disconnected. Fixed.
Ingen DN181: Claim() timeouts for RS-232 were not honored. Fixed.
Ingen DN183: Datacapture did not work unless Open() string was Ing6xxx. Fixed.

BUILD 8:
Ingen DN157: StatusUpdateEvents now provided for connect/disconnect events for RS-232 and HID USB.
Ingen DN176: MSR ErrorEvents for missing CPEM and bad swipes are now differentiated by the MSR's ResultCodeExtended property.
Ingen DN178: USB HID devices with long HID descriptors (for example, Versakey keyboards) could lead to conflicts with iSeries terminals. Fixed.
Ingen DN179: OPOS unable to send commands to terminal after HID USB connection is unplugged and plugged back in. Fixed.

BUILD 7:
Ingen DN140: Long strings passed to the DisplayTextAt() method of the Form Control gave invalid display data. Fixed.
Ingen DN141: Clear text entry prompts that filled the screen width had their final character truncated. Fixed.
Ingen DN172: Tracks with errors and no data or data and no errors used to result in empty TrackXData properties. These properties
             are now populated with "[Error]" strings as per page A-6 of the UPOS specification.
Ingen DN173: eN-Form Sig Display control does not print signatures properly from a browser. Fixed.

BUILD 6:
Ingen DN161: Values set in Control Panel Application for colors, paths, and prompts sometimes were not retained. Fixed.
Ingen DN162: Extended ASCII for Spanish PINPad prompts rendered incorrectly. Fixed.
Ingen DN165: When multiple controls had Open() strings passed to them with different cases, multiple I/O stacks were created. Fixed.
Ingen DN171: Five-byte nature of MSR polling messages led to rare OPOS crash under USBIO. Fixed.

BUILD 5:
Ingen DN158: Resetting specifier for formatted clear entry session gave unpredictable results. Fixed.
Ingen ?????: Support for turning off MSR beeps via the Control Panel Application.
JCP Item 15: Support for version stamps on a form, retrievable via Direct I/O.
JCP Item 18: The Form Control's DisplayText() and DisplayTextAt() methods now support proportional fonts.
JCP Item 17: PIN prompts can now be customized at configuration-time via the Control Panel.

BUILD 4:
JCP Item 20: Terminal cannot automatically move to new screen after button press on signature form. Now provided through automatic application flow.

BUILD 3:
JCP Item 6: Add Direct I/O to invoke RefreshWindow() via the Form Control.
JCP Item 1: Contention with HID USB 6780 connection and Symbol Scanner HID connection. Fixed.

BUILD 2:
JCP Item 14: Direct I/O to change foreground/background colors of LineDisplay now available.
JCP Item 3: New Ingenico Form Control Object to support Dual Interface.

BUILD 1:
Ingen DN143: OPOS Claim() rules for multiple applications were not honored for USB connections. Fixed.
JCP Item 16.5: 6780 English prompts for 'entering your PIN' and 'reentering your PIN' were the same. Fixed.


