TUEV Event blocks are used to transfer events and status messages about the application and environment but are not part of the application itself. They are primarily used for monitoring and instrumentation.
An event is sent in reaction to something that happened. A TUST status message is sent for periodic advice of status. The two appear very similar but are actually different concepts.
Packet Structure
TUEV blocks share a single schema, but individual events are free to populate only those fields that are relevant. Conceptually it is like using a single database table with hundreds/thousands of columns, where each row is an event
Example Entry, shown in XML format
<TUEV> <Target>1001</Target> <MAC>3C7BEB449F03</MAC> <Code>255</Code> ; Bad scan <GenLicid>682</GenLicid> ; Pos Unique Id <Barcode>918438237343</Barcode> <BarcodeType>0</BarcodeType> </TUEV>Some fields ommitted to keep example small
Standard Header
Each TUEV packet contains an standard header used to define who generated the information and whom it is intended for. The following fields will typically always be present
Field# | Field Name | Description |
f100 | Target | Target system that this packet is intended for |
f101 | Source | Source of this packet |
f102 | Urgency | Urgency and importance flags |
f103 | Discard | Discard lifetime in seconds. Defines when this packet can be considered no longer of use. |
f106 | MAC | Generating system MAC address |
f107 | RmSystem | RmSystem identification number |
f113 | DeviceFingerPrint | Device Fingerprint. A unique code identifying this hardware at this point in time. |
f114 | OpMode | Operating mode of the system. Only supplied if different from the expected value for the application.
Bitmask:
|
Semi Required Fields
In addition to the standard fields above, the following fields are usually present in all packets too unless there is good reason a field cannot be supplied
Field# | Field Name | Description |
f300 | Generator | Generating Program Code. Identifies the program that generated this packet. 38=ProcAgent 14=Fpos 17=Gds/2 15=Android 16=Website 18=SecureServices 19=WebSell |
f301 | Code | Type of message. 1=Watchdog expiration 201=sys startup, 208=Bis End. See Event Contents for more details about each event |
f302 | GenLicid | Unique Id |
f303 | DateTime | Current system date/time (local time) |
f304 | ProcessId | Current process Id |
f307 | TellerId | Current staff Id using system |
f500 | SystemTypeB | System Type B indicator |
f501 | LocationId | System Location |
f502 | Lane | System Lane Number |
Optional Fields
Field# | Field Name | Description |
f305 | ElapsedSec | Elapsed time, in Seconds. This is the time of an operation, not total run time. This can be whole seconds only or include fractional seconds depending on the function loading the value |
f306 | ElapsedMS | Elapsed time, in Milli seconds. This is the time of an operation, not total run time |
f308 | ThreadId | Generating Thread Id |
f310 | Number of pending messages/work actively queued. Systems that process work queues can use this field to signal how much work they have at this instant. | |
f311 | YesNo | Yes/No, or true/false indicator |
f312 | Percent | Percentage indicator |
f313 | Sequence | Sequence number. This number relates to the TUEV type, it is not a sequence of all TUEV. |
f314 | CountGood | A counter of good or pass. |
f315 | CountBad | A counter of bad or fail |
f316 | Mask | A bitmask. Actual details of what depends on event type |
f317 | CountOther1 | A general purpose counter. |
f318 | CountOther2 | A general purpose counter. |
f319 | CountOther3 | A general purpose counter. |
f320 | CountOther4 | A general purpose counter. |
f321 | CountOther5 | A general purpose counter. |
f350 | Text | General message text |
f351 | MessageDisplayType | Message display types (ok, error, yes/no etc) |
f352 | General error message text strings. Often present multiple times. | |
f353 | MessageDisplaySelect | Button selected by user (ok, error, yes/no etc) |
f354 | EventTarget | Target group this message is intended for. Rarely used. Allows an event to specifically request that it be displayed to a specific group. This is a request, there is not guarantee it will be honoured. Bitmask: Operations=1, Developers=2, Support=4 |
f360 | Flow Point Module | |
f361 | Flow Point Line | |
f362 | Version | Code Version String |
f363 | QuickCode | Quick Code |
f364 | SubType | Transaction Subtype. TUEV Event specific code. |
f365 | Version2 | Code Version String (old), or secondary version if reporting another files version |
f366 | Computer name | |
f367 | RuntimeErrorGroup | Runtime Error Group number |
f368 | RuntimeErrorMember | Runtime Error Member number |
f369 | FlowPoint | Flow Manager Number |
f370 | FlowPointData | Flow Manager Data |
f371 | FlowPointType | Flow Manager Error Type |
f390 | Image Data. This is a binary field and is not normally returned to clients. | |
f400 | TotalFileCount | Number of files in applications folder |
f401 | TotalFileSize | Total size of files in application folder, in bytes |
f402 | TotalFileSizeMb | Total size of files in application folder, in MegaBytes |
f450, f455, f460, f465, f470 | LargeFile1 to LargeFile5 | Name of file in 5 largest in folder |
f451, f456, f461, f466, f471 | LargeFileSize1 to LargeFileSize5 | Size of file in bytes. |
f500 | SystemTypeB | System Type B indicator |
f501 | LocationId | System Location |
f502 | Lane | System Lane Number |
f503 | CountryCode | Country Code |
f504 | CountryCodeISO | ISO Country Code |
f505 | Interface port. eg Com1, com16, lpt4 | |
f506 | DriveLetter | Drive letter/path |
f507 | DeviceName | Name of a device |
f600 | BytesSent | Bytes sent |
f601 | BytesRecv | Bytes received |
f602 | SalesCount | Count of Sales in operation |
f605 | Result | Result |
f606 | Stage | Stage |
f607 | MaxStage | Max Stage |
f608 | Protocol | Protocol |
f609 | ThreadCount | Thread Count |
f610 | UserInterrupt | User interupted indicator |
f611 | TransactionType | Transaction Type. |
f612 | Search Data (eg from lookup screens) | |
f613 | EFTPOS Result Code, two character codes. | |
f614 | Number of bytes, length of string | |
f615 | TableName | Database table name |
f616 | Device Ready indicator | |
f617 | Network link ready indicator | |
f618 | Using EOV or offline fallback techniques | |
f619 | Sql | SQL string. This might be a pseudo SQL statement rather than actual SQL |
f620 | Filename | File name |
f621 | FieldName | Database field name |
f622 | ProcessorTime | Processor CPU time in mS |
f623 | SourceCode | Actual source code. |
f624 | DatabaseSize | Size of database in MB, where available |
f625 | DatabaseSizeWarn | Relative fullness threshold of when warning and action should be taken over database size |
f626 | DatabaseVersion | If the database file itself has a version, this holds the version. Version information is returned as an integer scaled by 100. So version 7.123 will return as 712 |
f627 | IPv4 | Hosts local TCP addresses. This field can be present multiple times if multiple addresses exist |
f700 | Sale Id (typically local sale id) | |
f701 | Sale Physkey | |
f702 | Total Value. Holds a monetary total. | |
f703 | Sale Phase | |
f704 | Screen name | |
f705 | Screen type 1-10 UI screens. 11=built in screen. 12=multi purpose build screen | |
f706 | Barcode | Barcode |
f707 | BarcodeType | Barcode type |
f708 | Customer Id | |
f709 | Customer Physkey | |
f710 | Account Id | |
f711 | Account Physkey | |
f712 | Account Balance (after) | |
f713 | External sale id (ie externalid for remote generated sales such as web sales) | |
f714 | Saleline sequence number | |
f715 | Database transaction type. 1=RW, 2=RO, 3=RO(2) | |
f716 | Product Id | |
f717 | Product Physkey | |
f718 | Keying reference | |
f719 | Setting Name | |
f720 | Transaction Reference | |
f721 | Cash Amount | |
f722 | Start date/time | |
f723 | Disabled value. List of items (whatever that means for an event) that are disabled | |
f724 | CAID | |
f725 | CATID | |
f726 | Eftpos response text | |
f727 | Eftpos transaction reference | |
f728 | Eftpos message type | |
f729 | Eftpos last known receipt | |
f730 | Eftpos STAN | |
f731 | EmailAccount | Email Account Name |
f732 | GenCodeId | A number allocated to different code functions that might generate the same event. This code allows developers to isolate exact source module. |
f2000 - f2099 | milliSecond timer values | |
f2100 - f2199 | GetLastError | System error codes, from GetLastError API. The field name GetLastError is only for f#2100. The other fields do not have explicit names as they are rarely used. |
f2200 | Process Dump. List of all processes active on machine | |
f2300 | Number of GDI Objects (Handle Count) | |
f2301 | Handle Count of process | |
f2302 | Free Disk space in MB | |
f3000 | Exception Code | |
f3001 | Exception Address | |
f3020 | CPU SegGs Register | |
f3021 | CPU SegFs Register | |
f3022 | CPU SegEs Register | |
f3023 | CPU SegDs Register | |
f3024 | CPU Esp Register | |
f3025 | CPU Edi Register | |
f3026 | CPU Esi Register | |
f3027 | CPU Ebx Register | |
f3028 | CPU Ecx Register | |
f3029 | CPU Eax Register | |
f3030 | CPU Edx Register | |
f3031 | CPU SegSs Register | |
f3032 | CPU SegCs Register | |
f3033 | CPU EFlags Register | |
f3034 | CPU Ebp Register | |
f3035 | CPU EIP Register | |
f3036 | Context Flags | |
f3037 | CPU Dr0 Register | |
f3038 | CPU Dr1 Register | |
f3039 | CPU Dr2 Register | |
f3042 | CPU Dr5 Register | |
f3043 | CPU Dr6 Register | |
f3044 | CPU Dr7 Register | |
f3045 | Probable remaining stack space. 0 and negatives mean unknown. | |
f3050 | Memory load | |
f3051 | Memory total physical | |
f3052 | Memory available physical | |
f3053 | Memory total page file | |
f3054 | Memory available page file | |
f3055 | Memory total virtual | |
f3056 | Memory available virtual | |
f5000 | PrimaryTrace | Primary tracing enabled flags |
f5001 | SubSystemTrace | Sub System tracing enabled flags |
f5002 | CounterName | Name of counter |
f5003 | ExpectedValue | A value that was "expected". |
f5004 | ActualValue | A value that was "seen". |
Optional EDLL Sub packet
Details about DLLs.
Field# | Description |
f110 | File name of DLL |
f111 | Internal id. A number allocated by the application for this particular DLL. Not all applications use internal DLL numbering. |
f112 | File version information |
Individual Event Contents
201 - System Startup
The application was started. This packet is typically sent from a secondary thread, so may lag actual startup by a few seconds.
Field# | Name | Description |
f301 | Code | 201 - Event Code |
f400 | Total number of files in folder | |
f401 | Total bytes of files in folder | |
f450, f455, f460, f465. f470 | Names of the largest files | |
f451, f456, f461, f466. f471 | Sizes of the largest files | |
+EDLL | EDLL subpackets are included listing all DLLs present in the folder. This may include DLLs that are not used by the application | |
f500 | System Type B indicator | |
f501 | System Location | |
f502 | System Lane Number | |
f503 | Country Code | |
f504 | ISO Country Code | |
+PRTR | PRTR subpackets are included listing all printers defined and present on the system, | |
+TUSH | TUSH subpacket providing details about current hardware and platform | |
f624 | DatabaseSize | Size of database in MB, where available |
f625 | DatabaseSizeWarn | Relative fullness threshold of when warning and action should be taken over database size |
f626 | DatabaseVersion | Version of database file |
f5000 | PrimaryTrace | Set if the application has tracing enabled. For PosGreen this means it is tracing to the disk |
f5001 | SubSystemTrace | For PosGreen, set if the disk interface dll is tracing to disk |
The setting Tuev.ExtendedInfo (default 7) is a bitmask controlling extended information fields. If the bit is set the fields are included.
bit 0 Include major POS configuration settings.
bit 1 Include PRTR subpackets for each printer
bit 2 Add a TUSH hardware identification packet
202 - Version Changed
The application detected the version has changed from last operating time
Field# | Description |
f301 | 202 - Event Code |
f362 | The current version of the application |
f365 | The previous version of the application |
203 - Quickcode executed
A quickcode was executed
Field# | Description |
f301 | 203 - Event Code |
f305 | Duration of quickcode execution. This time includes some minor levels of overhead but this should not affect timings greatly |
f311 | 1 if quickcode executed in some way. 0 if quickcode was not understood |
f363 | The quickcode that was executed |
208 - BIS Sync Operation
A BIS sync operation was completed.
Field# | Description |
f301 | 208 - Event Code |
f305 | Duration of quickcode execution. This time includes some minor levels of overhead but this should not affect timings greatly |
f352 | Errors encountered (caught) during the operation |
f719 | Global settings that are overriden using force in CTL files |
216 - Message Displayed to user
An interupting message was shown to a user
Field# | Field Name | Description |
f301 | Code | 216 - Event Code |
f305 | ElapsedSec | Duration message was shown to user before being dismissed/acknowledged |
f306 | ElapsedMS | Duration in milliseconds message was shown to user before being dismissed/acknowledged |
f350 | Text | Contents of message actually shown to user |
f351 | MessageDisplayType | Bitmask indicating style of message shown to user. Definitions are the same as ::MessageBox dwStyle fields |
f353 | MessageDisplaySelect | Button selected by user. The range of values matches
the API ::MessageBoxIndirect() even if this routine was not actually used. The numeric values are:
|
f360 | Flow point module, if present | |
f361 | Flow point routine, if present |
217 - Sale Completed
A sale was completed. This event is intentionally small and contains minimum information about the sale itself
Field# | Description |
f301 | 217 - Event Code |
f305 | Duration of sale from start to completed. This includes time it was on hold or parked. |
f700 | Sale id. This is the local sale id |
f703 | Phase of sale. 1=normal completed sale. |
f702 | Value of sale |
218 - Crash Detected
A crash was detected.
Field# | Description |
f301 | 218 - Event Code |
f352 | Recent trace lines. Generally the most recent 20 lines are supplied |
f362 | System version |
f360 | Flow point module, if present |
f361 | Flow point routine, if present |
f3000 | Exception Code |
f3001 | Exception Address |
f3020 | CPU SegGs Register |
f3021 | CPU SegFs Register |
f3022 | CPU SegEs Register |
f3023 | CPU SegDs Register |
f3024 | CPU Esp Register |
f3025 | CPU Edi Register |
f3026 | CPU Esi Register |
f3027 | CPU Ebx Register |
f3028 | CPU Ecx Register |
f3029 | CPU Eax Register |
f3030 | CPU Edx Register |
f3031 | CPU SegSs Register |
f3032 | CPU SegCs Register |
f3033 | CPU EFlags Register |
f3034 | CPU Ebp Register |
f3035 | CPU EIP Register |
f3050 | Memory load |
f3051 | Memory total physical |
f3052 | Memory available physical |
f3053 | Memory total page file |
f3054 | Memory available page file |
f3055 | Memory total virtual |
f3056 | Memory available virtual |
220 - Major System Issue
A major issue has been detected that is either currently affecting operation or will is likely to. Major issues are deemed customer affecting.
Field# | FieldName | Description |
f301 | 220 - Event Code | |
f316 | Mask. Reported for memory damage subtype. | |
f350 | Text describing the major error code given in f364 | |
f364 | Major Error subtype code. See below | |
f501 | LocationId | Location involved |
f506 | Drive letter if event is disk arrival or removal. Often sent when USB drives are added or removed from the system | |
f2100 | GetLastError() code, if provided. Not all errors send this code | |
f2200 | Windows Process List. Generally provided in subtype 7 Additional information packets | |
f2300 | Number of GDI objects currently held by POS. 0 is returned if unknown. | |
f2301 | Handle Count of process. 0 is returned if unknown. | |
f5002 | CounterName | Name of counter that has been exhausted |
The following major error subtypes may appear
221 - Hardware Change
A hardware change was detected while the system was operating.
Field# | Field Name | Description |
f301 | Code | 221 - Event Code |
f311 | YesNo | Used to Add/Remove. 0/missing is add, 1=Removal |
f506 | DriveLetter | Drive letter if event is disk arrival or removal. Often sent when USB drives are added or removed from the system |
f507 | DeviceName | Name of device added or removed from the system |
222 - Auto Recovery
A monitoring process has detected a problem and is undertaking automated recovery. This event is generated Gds/2 when it is monitoring itself
Field# | Description |
f106 | Generating system MAC |
f107 | RmSystem |
f113 | Device Fingerprint |
f300 | Generating System/Program Code (Gds/2=17) |
f301 | 222 - Event Code |
f303 | Event Date/Time (localtime) |
f304 | Current ProcessId |
f350 | String describing in broad terms what is wrong and what is being done about it |
f366 | Computer Name generating this event |
223 - Configuration Error
The system has self detected it has a configuration problem. A typical example would be printer queues that used to exist, but have now gone
Field# | Name | Description |
f364 | SubType | Subtype. Indicates exact type of error
|
224 - Compile Error
The internal compiler or code generator has detected a problem
Field# | Name | Description |
f350 | Text | Text of error message encountered |
f623 | SourceCode | Source code being compiled when error generated |
241 - Screen Opened
A user interface screen is about to be opened
Field# | Description |
f301 | 241 - Event Code |
f704 | Name of the screen about to be opened |
f705 | Type of screen opened indicator. See description above for definitions |
250 - Retail Device Performance
Details from a retail device such as scanner, EFT interface, scale, etc. Reports both status of an operation and timings. The exact contents of this packet vary by reporting device
Field# | Field Name | Description |
f301 | 250 - Event Code | |
f306 | Overall elapsed time (mS) | |
f364 | SubType | Subtype. Indicates exact device reporting
|
f365 | Version2 | Version associated DLL. |
f505 | Interface port in use | |
f613 | EFTPOS result code | |
f614 | Number of bytes received from device | |
f2000 | Time to write command to device. | |
f2100 | Write to device Error Code |
251 - Database Performance
Details from interaction with the database
Field# | Description |
f301 | 251 - Event Code |
f305 | Overall elapsed time |
f615 | Database table name, may be repeated if join involved |
f715 | Transaction type |
255 - Bad Barcode scan
A barcode was scanned that could not be processed.
Field# | Description |
f301 | 255 - Event Code |
f311 | Set yes if barcode is referencing a deleted product. |
f706 | Raw barcode scan data |
f707 | Barcode type |
259 - Environment Change
Something has changed with the Windows/Operating environment, but is considered lower importance than event #221 (Hardware change)
Field# | Description |
f301 | 259 - Event Code |
f364 | Type of change. 1=Screen saver activated |
261 - Flow Error
The code hit a point in the code that is classified as an error, and this entry is reporting the error details. 261 Flow Errors do not necessarily mean a real error is happening, only that something slightly abnormal has occurred. Flow Errors are intended to be used by developers
Field# | Description |
f350 | Descriptive text of the error message from GetLastError. |
f369 | Flow Number |
f370 | Windows error code from GetLastError() |
f371 | Error source |
286 - Saleline delete
An item being deleted from a sale
Field# | Description |
f301 | 286 - Event Code |
f305 | Overall elapsed time |
f700 | Sale Id# (relative to this lane) |
f701 | Sale unique Physkey |
f702 | Value of item(s) |
f714 | Saleline sequence number |
f716 | Product Id |
f717 | Product Physkey |
287 - End of Day Settelement
Fired after the end of day screen has completed. The Eod screen will also send a 241 screen open event if this is enabled.
Field# | Description |
f301 | 287 - Event Code |
f305 | Overall elapsed time that the settlement screen was displayed. |
f311 | Print was performed |
f312 | Database size information. |
f364 | Normal exit flag. Set to 1 if normal exit path was taken (ie they "closed"). |
f718 | Keying reference for the EOD |
288 - Startup Performance
Timing metrics for application startup. Slow startup can be annoying at customer facing systems. This event might help system administrators identify where or why the performance was sluggish. Not all timers and counters are enabled on all systems.
Field# | Description |
f301 | 288 - Event Code |
f610 | Number of times the startup knowingly displayed a message to the user and waited for their response. If this value is greater than 500 then the system was started in trace mode and displayed numerous status messages during startup |
f2000 | Time mS to open and read initial registry values. This is often the first task performed |
f2001 | Time mS used to read image files and DLLs. This is one of the first tasks to read the disk and directory. |
f2002 | Time mS to open and read the various CTL files for POS itself (not sub modules) |
f2003 | Time mS to sanity check EXE and DLL files. This involves self inspection of the Code stream to verify non tampering |
f2004 | to scan and load DBC*.dll files. Each DLL is asked in turn if it can process the database connection string |
f2005 | Speed test |
f2006 | Files Scan |
f2007 | Time to open and bring the database online |
f2008 | Time to read the versioncontrol table and load database identity information |
f2009 | Time to read the networklane table if present |
f2010 | Time to execute any POSCommand that has been set to run at startup |
f2011 | Time to load external plugin DLLs |
f2012 | Query the database looking for sales that are still open and if needed re activate payment systems that might have been in progress. |
f2013 | Time used to reset printers |