GEMS Dash Design
Digital Dash Display Module Configuration Software
Dash Design is used for configuring GEMS digital dash display modules.

Dash Design is used for configuring GEMS digital dash display modules.

This section takes you through installing and licensing Dash Design and getting started with the software.
Some common notation is used throughout this documentation:
Menu commands are signified in bold type with a pipe symbol | between each level of the menu.
For example, Ctrl + Z indicates that you should click on the Undo item in the Edit menu, or alternatively to use the associated keyboard shortcut, Ctrl + Z.
This Font is used to indicate text that should be typed in by the user.
Working on tractive systems (which includes but is not limited to engine(s), motor(s),
inverter(s), high voltage battery packs and high voltage cables) requires special
experience and training.
Incorrect installation or use of GEMS Electronic Control units (ECUs) or software
may lead to electrical / mechanical damage, injury or even death.
As such, installation must only be performed by users with experience with electronic
control systems and a competence of Windows based computer software.
All accompanying documentation must be read thoroughly before installation is attempted.
If you are in any doubts regarding the fitting and use of this product, please contact
your reseller or GEMS directly at tech.support@gems.co.uk
General Engine Management Systems (GEMS) Ltd shall not be held responsible for any
mechanical or electrical damage or personal injury occurring whilst using this product.
Neither shall GEMS be held responsible for damage, injury or death caused by the misuse,
misunderstanding or miscalibration of this product.
Download and run the installer from https://gems.co.uk/downloads/software/. For more details, see Installing GEMS Dash Design .
Channels may be configured to convert data acquired from CAN or A2D inputs into physical units.
Logic channels can be used to generate logic outputs based upon comparisons of other channels.
Channels may be chained together and have filtering applied.
More complex channel processing can be specified using Math channels.
Gauges generally are used to display the value(s) of input channel(s).
Gauges are configured on the design tab.
The Setup Check feature indicates warnings and errors in the setup file. It is best to resolve any warnings / errors before simulating or programming the display.
The setup can be tested on a simulated display via the Simulator tab.
The setup can be programmed into the display using the menu command F7.
The installer does not include drivers for USB products or the GEMS dongle. These files and must be downloaded separately if required from https://gems.co.uk/downloads/drivers/.
Dash Design will check for updates when started. If a new version is available, a notification will be displayed with a link to download and install the update from within Dash Design itself.
Updates can be checked for manually from Help | Check for Update.
Some anti-virus / security products will block connections to the internet from Dash Design. You will need to ensure that Dash Design is allowed through your firewall.
If using Windows 7, checking for updates may fail with WinHTTP error code 12175. If this occurs, you’ll need to enable TLS 1.2 support. See the Easy Fix section at microsoft.com.
If you would like to use the beta version of Dash Design, you can select the Help | Update: Use Beta Channel option. Beta versions of software are released much more frequently but may not be stable. Using the beta version helps us to detect unexpected problems with the software before making it a public release.
================================================================================
Version 2.3.15 - 24 October 2025
================================================================================
T#6192: Conversion of PCU8D setups to PCU700 will now convert colour maps to shared presets.
Made setup conversion asynchronous to avoid UI blocking on large setups.
Wait for setup programming to complete prior to sending original setup to display (if selected). The process could otherwise fail due to timeout.
Some bootloader versions do not support the original setup programming feature, further changes may be made in future revisions to detect incompatible versions.
================================================================================
Version 2.3.14 - 04 September 2025
================================================================================
T#5988: CAN Tx: Display 'Special Value' name in message layout view if not a regular channel.
T#1044: Added DBC Export for CAN Rx / Tx.
CAN DBC files are now interpreted in Latin1 encoding rather than UTF-8. For example, fixes display of exported degrees symbol in other applications.
Delayload vxlapi.dll / vxlapi64.dll.
T#6023: Added 'tolerance' column for logic channel conditions. Applies to = and <> comparators.
Tolerance values are currently always emulated by refactoring/inserting logic channels during export.
Future display firmware versions may add native support for logic tolerance values.
T#6025: Supplemental: To provide more natural logic expressions with operator precedence and grouping of terms with parentheses,
maths channels have been extended to add logic related functionality:
Added emulated maths functions for sgn, near, not_near, clamp.
Added emulated relational operators, <, <=, >, >=, ==, !=, logical operators &&, ||, !.
These functions/operators are emulated using floating point arithmetic / min / max / abs on existing firmware.
Future firmware versions may include support for these functions natively.
T#5898: Add additional Conditions for rule based LED setup.
T#6146: Add tolerance for Rule based LED setup conditions.
T#5618: Increased max number of segments for bar based gauges to 5000.
================================================================================
Version 2.3.13 - 23 June 2025
================================================================================
Updated PCU510 simulator to version 03x31.
B#5871: Updated PCU700 simulator to version 01x21.
Fixed MD5 Mode for auto-save locked setup feature.
B#5972: Fixed calculation of 'Increment' value on limiter gauge when setting 'End' property.
Fixed rendering of bar tacho with smooth edges + separators on Design tab.
T#5974: Add smooth (interpolated) position to Bar Tacho gauge (PCU-510)
T#5975: Add 'Hide above value' property to limiter gauge. PCU510 03x31 or later firmware is required for this feature.
================================================================================
Version 2.3.12 - 17 June 2025
================================================================================
Updated PCU510 simulator to version 03x30.
Updated PCU700 simulator to version 01x20.
Added additional label to default NO CAN Rx screen to remind users about monitored channels.
T#5899: Added "End" property to limiter gauge and moved 'light count' into the 'data' category, alongside the range values.
T#5839: Smooth position on Round Tacho, VTBar and HTBar gauges for CD5x.
B#5840: Fixed always filled appearance of square bar gauges when anti-aliased.
B#5928: User should not be able to edit predefined logic channel.
B#5929: Fixed crash if predefined logic channel selected in logic page.
B#5930: Fixed update logic for predefined logic channels (e.g. marshalling LED logic) which would break input channel.
B#5601: PCU8 Conversion to PCU-700 - Import channel with colour map used on warning gauge fails if directly using CAN source.
B#5959: XML Import/Export was missing Colour Map user-defined shared presets.
T#5927: Preference to auto-save locked setup name to MD5 named file (the default for Display Utility).
Display Utility: Changed default 'auto save locked setup' preference to "When Programming" as was the case with Display Utility v1.
B#5894: Fixed issue using shift + arrow keys to select multiple items in grids such as CAN receive signals list.
Grids that use 'edit on typing' mode would open grid editor when the shift key was pressed.
Added home/end key handling to grids.
T#5647: Implemented drag & drop for moving a screen pages to a new position in the list.
+ added Screen menu command for moving a single screen page to a new position in the list.
Screen pages tab now supports multi-select (can also be used for multiple clear / enable).
================================================================================
Version 2.3.11 - 16 April 2025
================================================================================
Updated compiler version / internal libraries.
T#5771: Update scaling of 3V8 in PCU510 setups.
Predefined scaled analogues will now always be updated if they do not match when loading.
Display info in setup check if scaling changed.
T#5796: Added predefined logic channels for marshalling LED statuses (PCU700 / PCU510).
These are in addition to the existing mask channels, the difference is
that they resolve to a more intuitive logic output (0 or 1) that on PCU510
can also be used in event processing.
T#5738: Setup check: delete VID_LIMITER_START on value gauges with RID_SECONDARY_SOURCE.
It appears to be possible for some setups to define both LIMIT and LOGIC colour modes on value gauges, which does not operate correctly on the display.
Added support for Vector XL CAN driver.
Updated release process to now put build artifacts into sharepoint document libraries.
B#5895: Obscured channel names in shared scaling list.
================================================================================
Version 2.3.10 - 10 February 2025
================================================================================
B#5591: "Save As" via OS file dialog does not work correctly if the file does not exist.
B#5589: Fix applied: report of application crashing when saving setup to network share.
Setup files and Locked Setup files are now written locally and then moved to the network using system functions.
B#5561: Fixed Rule-based LED setup compilation for the display when 2 conditions are combined with a logical operator.
Installer: fixed icon being placed on desktop twice.
B#5455: Reverted regression of latch option for logic channels for many display types excluding some older displays or those with CD4x core.
B#5409: Fixed failure to reprogram ethernet displays twice in a row in Dash Programmer app.
================================================================================
Version 2.3.9 - 20 January 2025
================================================================================
Updated to handle CAN-FD messages *from* simulator.
#5416: Include 'Monitored Channels' section to Setup for PCU700 now that No CAN
screen is based upon receiving monitored CAN channels.
Fixed backwards compatibility issue relating to export of setups with Needle Gauge in legacy versions of the application.
Removed restricted 'Notifications' (Error Text) channel types from PCU700 UI.
Monitored channels setup: Added multi-select to the picker dialog + to the list of monitored channels.
================================================================================
Version 2.3.8 - 03 December 2024
================================================================================
B#5319: Fixed Unicode issue with about box title / details in branded DashProg app.
T#5323: Images being exported to displays with 16bpp density (or cd3x based) are now dithered by default.
This can be switched off in the settings for individual graphics.
B#5320: Fixed crash if saving a new PCU700 setup due to attempting to write validation log to CWD, which is in Program Files for installed application.
Added additional defenses around save/upload actions that could perform FIA rules validation to show an error instead in case of exceptions.
T#5365: Branded build: Display type changes.
T#5366: PCU700 - Remove non-functional graph gauge.
Installer: added firewall exception for appropriate builds that support ethernet displays.
T#5381: Added configuration of marshalling LED brightness for PCU700 (requires firmware 01x11 or later).
Added PC700 simulator version 01x11.
Added Shell for PCU510 simulator (to show LEDs).
T#5302: Added mechanism for sharing sensors (channel conversions) between multiple channels.
B#5383: Error messages/crash when importing PCU700 CAN with channels that conflict with predefined CAN channels for LED control.
Channel conflicts are checked and errors added to import message log instead of pop-up dialogs.
Fixed possible undefined behaviour in XML reader when escaping empty strings.
Crash was due to B#5320.
T#5382: PCU700: Predefined CAN message for LED brightness control.
Pulse progress bar when waiting for device for all tasks. Fixes Firmware programming task where the progress bar would not pulse when waiting for firmware to be flased by the display.
B#5375: Reduced GIF gauge live preview rate as it was otherwise preventing the UI from updating correctly in some cases.
Disable live preview on animation gauge by default.
================================================================================
Version 2.3.7 - 31 October 2024
================================================================================
B#5218: Updated platform.iss to use latest VC Runtime DLLs (prevents crash since updating compiler).
T#5232: Corrected RAM size properties for CD6-43, PCU-700 and PCU-510, to avoid size warnings when programming setups.
Fixed required RAM size calculation during setup programming.
Optimize setup before building font table.
T#5231: USB: Wait for display to complete flash erase/write before saying that a programming operation is complete.
B#5234: Fixed multiple colour presets not working on the display due to bug in modifier chain optimizer not including sensor child nodes in comparisons.
T#5237: Colour Gradient Presets: Added checkbox option to use range from the preset rather than a local per-gauge override.
B#5238: Fixed missing "Events" tab for some display types.
B#5129: PCU-700: Fixed default new channel type (was previously unsupported function table type).
================================================================================
Version 2.3.6 - 18 October 2024
================================================================================
B#5104: Fixed sorted lists in numerous places due to bug in VS2022 compiler for 32-bit release builds affecting std::sort on std::deque.
T#5063: Options to set CAN ID for PCU700 status message on CAN.
T#5200: "Show Predefined" checkbox in CAN Rx signals table.
T#5149: Shared presets for colour map used on warning gauge / text gauges. This feature is not backwards compatible with older application versions.
T#5156: Moved SDB (DBC signal database) library to package manager.
Added methods to automation interface for binding PC CAN adaptors (PCAN or Kvaser) to the simulator.
================================================================================
Version 2.3.5 - 20 September 2024
================================================================================
Fixed issue with LED IDs in LED rules editor that would have affected PCU510.
R#5106: New LED handling for PCU700.
Update PCU700 Simulator to 01x09.
B#5142: Fixed A2D Channels Internal SD 3v3 and Internal SOM 3V3 were assigned to the wrong A2Ds
These have been reassigned + renamed to ensure automatic fixup for any existing setups.
Channel names are now "Internal 3V3 (SD)" and "Internal 3V3 (SOM)".
T#5072: Added 'Audit' feature to all builds. This generates 'mermaid' routing
diagram and displays it in web browser.
T#5109: Updated to emerald_id/1.2.53.
================================================================================
Version 2.3.4 - 27 August 2024
================================================================================
Fixed programming of setups and firmware over TCP connection (PCU510) - programming process would report failure and abort early.
B#5100: Fixed: PCU510: Channel 'Internal CD 3v3' should be 'Internal SD 3v3'.
================================================================================
Version 2.3.3 - 26 July 2024
================================================================================
T#4872: Auto-configure PCU510 built in [psuedo] A2D channels.
Update to PCU700 01x07 simulator.
Enable ethernet comms for PCU510.
Fixed invalid setup check warning about Group gauge.
Added feature to simulator channels list so that items may be checked and only those items will be shown in the simulator channel list.
T#5075: Added custom colour maps. Requires firmware update to support (e.g. PCU700 01x08).
Added conversion of function tables used as colour maps to custom colour maps for displays that do not allow function tables.
Refactored display setup export to avoid changes requiring emerald library updates.
T#4877: PCU510 Simulator.
================================================================================
Version 2.3.2 - 18 June 2024
================================================================================
For displays that use FIA checksum verification, output the firmware checksum when programming the display.
Tentative fix for possible issue when initializing USB connection to display.
Fixed issue with LED Rules builder where LEDs set to OFF could override other LEDs.
Branded display programming tool: Fixed installer system configuration settings for GEMS license system.
T4982: PCU700 Feature Restrictions.
Added PCU700 validator with validation report.
PCU700 Internal Temperature scaling changed to avoid use of function table type channels: Display firmware version 01x06 or later is required otherwise internal temperature readings will be incorrect.
B#4960: Fixed push buttons on GLW-43 simulator not visually updating when pressed.
Use notification popup system for fullscreen mode popup instead of legacy toaster popup.
Updated PCU700 simulator to 01x06.
Removed PCU700 simulator versions prior to 01x06 due to incompatible changes to internal temperature scaling.
Warn about unsupported gauge types.
Added properties form to CAN RX setup page to enable modifying multiple signals at once (e.g. setting CAN ID to be the same for a set of signals).
Updated to C++20 standard.
Updated to cryptopp 8.9.0.
================================================================================
Version 2.3.1 - 29 May 2024
================================================================================
Fixed bug when exporting setup leading to incorrect display unit conversions. Since the recent change to clone the setup prior to export, it was possible for additional unit conversion channels to be inserted.
Modified Ethernet Display Module discovery service to bind to network interfaces individually to avoid packet loss on some systems.
Fixed possible crash during application shutdown relating to the Ethernet Display Module discovery service.
T#4935: Added support for Network special format for value gauges.
T#2730: Moved PCAN dependency to package manager.
Add PCU510 type.
T#4871: PCU510 LCD properties.
T#4873: PCU510 LEDs.
T#4874: PCU510 Ethernet.
B#4946: Fixed crash when un-checking database node in DBC import dialog.
T#4876: Camera Gauge.
T#3941: Add support for Arc gauge.
Fixed issue with updating layout of gauge palette on design page when changing display type.
Added auto-size option to Needle & Arc gauges.
Added additional features to Unique Fonts dialog to list all items using a given font and additionally to delete.
Added additional text direction modes for flipped / rotated text when using vector fonts.
Fixed Menu Gauge: MENU CONTROL channel was not being added to the setup nor attached to Menu Gauges.
Added properties to menu gauge for configuring control events.
Fixed condition name for Bit Pattern LED rules.
Removed Text History gauge from all display types as no longer supported by any current firmware.
Added Animation (GIF) gauge to CD6x displays.
Fixed property editor for animation gauge file path.
B#4953: Fixed crash in setup browser when cancelling edit of sub-directory.
B#4944: Fixed incorrect fixup of downloaded track database file from Display Module.
T#4934: Dash Programming tool: Added additional commissioning features for users with appropriate licenses.
B#4943: Fixed binary format of track database for display (insert header padding).
Upload firmware: If restoring last selected firmware filename, set the directory of the picker to the parent of the restored filename.
T#4950: Added feature for auto-saving locked setup files when either saving the setup or programming the display.
Moved export raw setup menu options to a sub-menu in gems build and removed from other build variants where the locked setup feature should be used.
Fixed crash if setting speed input or odometer input to a circular reference.
================================================================================
Version 2.3.0 - 26 April 2024
================================================================================
Breaking change - XML setup export of led_rules no longer includes property categories.
B#4084: Fixed crash when adding a vector font.
Fixed update of aliases in CAN Rx signals grid following replacing the currently open setup.
Store/restore layout of CAN Rx signals grid when setup changed as column widths for consistency in help generation when switching CAN-FD enabled setups.
Fix issue with closing Setup Check view via automation interface.
Renamed columns in Case channel editor.
Added 'copy names' context menu command to channel lists.
Fixed minimum size of Filter picker on Channels tab when shown for some channel types.
ETA channels no longer have input/output units since they output time values.
Fixed connect to GDA function in simulator.
Fixed erroneous CANTXWAKEUP setup check warning.
Fixed crash if setup closed while unit preferences dialog is open.
Various modifications for help generator.
Improved sizing of tooltips.
Fixed @units special format for value gauges.
Branded build: Include Events tab.
PCU700: Fixed missing pre-defined channel Analogue 24.
Fixed undo scope setting name of LED rule.
T#4824: Updated wording in upgrade required dialog.
B#4820: Marshalling LED status - Marshall Blue R channel missing source channel.
T#4724: Make marshalling LEDs monochrome in rule-based LED setup.
T#4723: Added bit pattern mode for rule based LED setup.
B#4742: Fixed validation of floating point numbers with scientific notation. Fixes issue with linear scalar channels with e.g. scalar of 9.1555e-5 not updating editor and showing value from prior selected channel.
B#4676: Fixed apparent change in datatype when changing signal type to FD for channels imported from DD v1 that do not have the data type set.
B#4916: Disallow predefined or duplicate channel names for CAN Tx messages (which are actually channels under the hood).
B#4833: Fixed crash adding menu item to menu gauge.
B#4826: ECU Text channel type may only be used for channels with a direct raw CAN source. Added setup check for this + disable ECU Text option for inapplicable channels.
B#4823: Fixed file appearing to be modified following programming into display if the setup uses rule-based LED setup.
Added context menu to CAN Rx signals to show the channels tab for the selected signal and conversely from Channels tab to show the CAN Rx signals tab.
T#4817: Added 'Conversion' column to CAN Rx signals table. It is now clear if signal have a text conversion and the conversion can be edited from the table.
Fixed undo scoping issue when changing LED group name via the LED group editor dialog.
Added drag & drop to LED Rules tree.
LED Rules: added 'Duplicate' context menu command.
Fixed bug in Gauge tree drag & drop when validating ancestry.
Fixed crash in gauge tree when merging properties for some selections involving groups and their children.
COM interface screenshot function now uses a chroma key to remove the matte from the drop shadow for help generator.
Close any LED rule editor dialogs when closing the setup.
Fixed import XML message box text suggesting that it was an export.
Fixed serialization of CAN Response channels to XML.
Fixed issue with XML import of CAN Tx messages where the shared CAN tx sensor was being erased.
Implemented goto location for CAN Tx messages from setup checker.
T#4106, T#4592: Added HTML help system.
T#2872: Ethernet display comms support + display discovery protocol.
Disable export XML menu item for locked setups.
T#2869: Added features to Locked Setups:
Embed checksums / hashes for verification, some ECUs may include internal checksumming for scrutineering purposes.
Include Setup Name and Source Setup filename.
Option to embed password protected original setup (AES encrypted).
When adding a 'Special Type' signal to a CAN Tx message, an input channel is also selected - even though it is not used it is required for the signal to be generated by the display firmware.
T#4926: Add support for OEM serial numbers.
Support trackdb for 15x?? GLW-43.
================================================================================
Version 2.2.62 - 21 March 2024
================================================================================
T#998: Use multiple lines for gauge palette 'toolbar' on Design page if there are too many gauges to fit in a single row.
B#4546: PCU700 corrected Analogue channel for CPU Temperature.
T#4747: Add IMU channels to PCU700.
T#4748: Add PCU700 Marshalling LED status.
For displays that have firmware update checking enabled, fixed a regression that resulted in the firmware version being checked against the bootloader version.
Crash Report: Tentative fix for crash when merging properties for multi-selection of gauges on the design page.
Updated to emerald 5.5.7.
Adjusted COM automation interface to assist help system generation.
Added missing HelpIDs integration for Events tab.
Add any missing screens to existing setups when display properties have changed since the setup was created (e.g. No CAN RX screen).
Adjusted layout of channels tab to allow a smaller minimum size.
Added menu item / action to show the setup check view (makes this automatable).
Increased minimum column size for setup check view so that Severity column is not clipped on first view.
Simulator channel values can now be set via the COM automation interface.
CAN TX: Add Signal: Offer selection of 'special type' (e.g. Setup Name / Serial Number) instead of a channel to make it clearer how to add a special type signals.
CAN TX: fixed display of 'Setup Version' data type in type selection list.
Fixed: Do not display left/right LED columns in Logic channels list for non-applicable display types.
Fixed give unit selectors a minimum width, fixes performance timer config having unreadable units.
================================================================================
Version 2.2.61 - 05 February 2024
================================================================================
B4722: Prevent unhandled exception in Dash Programmer app if firmware file is missing.
B4657: Fixed issue with editing CAN Signal Bit Length in CAN setup editor after switching on CAN FD mode on the message.
Fixed crash when selecting setup file in Dash Programmer app.
================================================================================
Version 2.2.60 - 15 December 2023
================================================================================
Reworked project structure to improve release build duration & support building additional apps.
Added Dash Programmer app.
================================================================================
Version 2.2.59 - 12 December 2023
================================================================================
Fixed programming of locked setups to the display.
================================================================================
Version 2.2.58 - 12 December 2023
================================================================================
T4324: Branded Display: Added additional predefined channels + removed LSDs + Lap Timing setup.
T4649: CanTX: Grey out BRS if FD not enabled.
T4649: CanTX: Display setup check warning + highlight signal if it exceeds the message DLC.
T4668: Changed list of predefined CAN-FD Data Bit Rates.
If CAN-FD Data Bit Rate is not enabled then do not show CAN-FD columns in RX signals / TX messages grids.
T4667: Display error if CAN FD Data bit rate < CAN Bit rate (if not set to disabled).
Changed labels for CAN rates for consistency (Bit Rate + Data Bit Rate).
T4573: Locked Setup: Option to lock setup to a specific serial number on applicable display types.
Fixed UploadSetup via COM interface. Additionally added ways to program raw setup files that way.
Fixed progress bar when programming setups.
================================================================================
Version 2.2.57 - 01 December 2023
================================================================================
T4575: Add support for CAN-FD setups for CD6x generation displays.
Updated CAN message view to support CAN FD. Now includes a vertical zoom bar and some visual changes.
T4576: Add support for CAN-FD dbc import.
Updated DBC import to use v2 of sdb library (needed for CAN-FD).
T4597: Added menu options for exporting raw setups (packaged / unpackaged) and logger setup.
Updated to emerald_id 1.2.36.
Updated to C++17 standard.
================================================================================
Version 2.2.56 - 06 November 2023
================================================================================
T4513: Add support for error text filter channel (Error Text).
B4556: When exporting display setup binary, topologically order outputs so that
dependent outputs are calculated after their dependencies when the display
does an output channel processing pass.
================================================================================
Version 2.2.55 - 31 October 2023
================================================================================
T4478: Add support for 0-100% LED brightness control on applicable display types.
T4507: Added NO CAN Rx screen to branded display type that supports it.
Hide LED brightness control entirely on displays that do not support it.
When exporting setup binaries for displays, always convert images to PNG format.
New graphics are now inserted in setups in PNG format without storing dithered 16bpp versions.
Always clear halt on USB endpoint following a failed bulk write.
Fixed crash in LED setup page for displays that do not support rule based LED setups.
Reworked box sizers so that hiding items will also remove layout spacing.
B4471: Fixed flickering of tooltips.
T4442: Added option to rescale gauge layout / fonts / graphics when converting setups.
T4524: Remove CAN termination option from displays that do not support it.
T4525: Remove CAN Request tab from displays that do not support it.
B4485: Completed & tested implementation of XML setup import/export feature.
Changed behaviour when dealing with output channels that are using the same raw CAN
source to insert an intermediate channel instead of duplicating the source.
Optimized handling of unit IDs to drastically reduce copying and parsing.
SetupCheck: auto-rename Log Mem Total to Log Mem Free to add (kB) suffix as per v1 software.
Fixed range clamping in BoundedIntProperty.
Default shape corner radius to 0 instead of 10 to avoid modifying legacy setups that did not define it.
Modified auto sensor / channel naming for better consistency between rename operations vs creation.
Fixed error in parsing unit IDs that have a quantity but not a unit (e.g. "unitless:").
Fixed "Audio Volume Text" source.
Control screen: changed monitor channels to use channel name rather than 'CDG' to disambiguate during file comparison in unit tests.
Fixed handling of graphics with BMP format in some cases.
T4550: Added support for latchable logic channels (requires updated display firmware).
Update to Emerald 5.5.4.
Update to emerald_id 1.2.34.
================================================================================
Version 2.2.54 - 27 September 2023
================================================================================
Adjusted display type support.
================================================================================
Version 2.2.53 - 26 September 2023
================================================================================
Adjusted display type support.
Write libusb read/write errors to application log.
Increased timeouts for libusb read/write operations.
Fixed issue with interpolated LED patterns where if some LEDs were initially set to a colour and then turned off, they would be considered for interpolation.
================================================================================
Version 2.2.52 - 22 September 2023
================================================================================
Branded Build: Added rule-based LED setup for new product.
Added tooltips for LEDs on LED Mask and LED Colours row header in rule-based LED setup.
Improved behaviour of LED Mask selector strip when drag-selecting.
Updated SimHost to version 1.06. Tentative fix for access denied error when starting simulator seen by some users.
B4429: Fixed inverted button logic for R3 and R4 in GLW-43 simulator (fixed for version 15x24+).
Fixed sorting by priority in LED Rules tree.
Fixed update of priority column in LED Rules tree if edited in LED Rule dialog or updated by undo/redo.
================================================================================
Version 2.2.51 - 15 September 2023
================================================================================
Fixed invalid licensing error for newly added display types.
================================================================================
Version 2.2.50 - 14 September 2023
================================================================================
Fixed crash showing setup page for displays that do not support rule-based LED setup.
================================================================================
Version 2.2.49 - 13 September 2023
================================================================================
T4062: New Rules based setup for GLW-43 LED control.
T4318: Add support for CD6-43 + Branded build display.
Fixed buttons in GLW-43 simulator. Requires updated firmware plugin version.
Fixed bug in font selection dialog where vector font Y offset would not be populated correctly.
Fixed performance issue rendering icons with alpha channel on toolbars.
Fixed bug where general preferences would be blank of preferences dialog opened for a second time.
================================================================================
Version 2.2.48 - 29 August 2023
================================================================================
Fixed bounding rectangle for embedded vector fonts.
Fixed issue with font sizes for fonts that do not use legacy font mapping.
New tooltips will now automatically dismiss after a timeout and if mouse is moved away from the control.
Added preferences menu item + preferences to control tooltip behaviour.
================================================================================
Version 2.2.47 - 22 August 2023
================================================================================
T4093: Import/Export of setups as XML.
T0518: Added Track Database feature.
T3959: Add analogues to GLW-43 setups.
T3960: Add buttons to GLW-43 setups.
T3970: Add low side drivers to GLW-43 setups + setup page to configure them.
T4223: Add rotary switches to GLW-43 setups.
T4242: Updated property system infrastructure.
T4237: Support 8 analogues on LDS4 instead of 4.
T4251: Force specific DIP scaling on screen render + add workaround for automatic DPI scaling of fonts introduced by wxWidgets 3.2.2.1 update.
T2868: Rebrand application.
T4095: Branded Build: Display driver support flags.
T4104: Added Countdown timer adjustment delta configuration.
T4102: Enable configuration of events for predefined timers on the timers page for some display types.
T4100: Dynamic Channel type & Filter type restriction for some display types.
T4096: Branded Build: Resolve ambiguous display type in setups from prior application versions.
T4102: Added configuration of Fuel / Distance Trip outputs. Odomoeter/Speed page also offers configuration of these outputs.
T4098: Branded Build: Validation of setup with regulatory restrictions.
Adjusted splash screen layout / fixed tiny text size on HighDPI.
Fix icon sizes on some HighDPI settings.
Setup converter: copy VIDs for predefined outputs.
Use a slightly different colour for predefined channels in channel lists.
Fixed regression that prevented logic/notification/graphic selector channels being added.
Include event configuration link on Toggle channel type editor.
Fixed auto-naming of cross-hair gauge.
================================================================================
Version 2.2.46 - 08 June 2023
================================================================================
B#4195: Fixed screen thumbnails not showing up on 'screens' page any longer.
Updated to wxWidgets 3.2.2.1 from 3.1.4 to workaround compiler bug in wxImage resize algorithm when compiled for x64/release with MSVC2022 17.5.4, could have significant knock-on changes.
Updated MSVC2022 to 17.6.2.
Added setupcheck to ensure that audio volume control outputs are added to the monitor gauge.
B#4181: Fixed handling of rotary switch states for GLW-43.
Always init rotary switches to the first position when starting simulator.
Updated GLW-43 simulator shell to reverse A2D values for the rotary switches.
Updated simulator host to deal with reversed A2D values for rotary switches.
Custom tooltips: improved minimum width.
Fix for very rare crash during shutdown.
Added missing 'convert' icon.
T4148: Added regression testing for DisplayType setups.
================================================================================
Version 2.2.45 - 10 May 2023
================================================================================
Added explicit file flush following file write for displays that use mass storage devices for setup programming.
Updated to Visual Studio 2022
Updated to zlib 1.2.13
Updated to boost 1.81.0
================================================================================
Version 2.2.44 - 18 April 2023
================================================================================
Fixed installation of GEMS display drivers on Win7 x64.
Added GLW-43 15x21 Simulator.
B4058: Fixed issue where changing CAN TX message name would stop it being
transmitted.
Added setup check to ensure that CAN TX messages have a monitor gauge added
for them in case they were unknowingly broken in prior versions.
T1040: Added locked setup file type.
Locked setups are not editable but they fo include low-resolution
thumbnails of the screens in the setup, notes and screen tags.
Locked setups can be loaded into the editor but only the 'Screens' page
is available.
B3947: GEMS build: Fixed Export Screen feature.
+ changed screen package file extension to gddscreen.
Enabled screen packages to be dropped onto the application when either the
Screens or Design pages are shown to import the screen.
T515: (179) Move CAN channel timeout setting to the CAN tab.
Added Filter picker to the Channels tab for setting filter chain on
non-filtered channels (.e.g CAN).
Setup Checker: Added check for CAN channels that share the same underlying
source. If such channels are identified then the source is now duplicated
to prevent editing of one channel affecting the other.
T317: (188) Create a new Value Gauge special format for a selected
channels display units.
T267: (DD-130) CAN Request: disable editing of bytes that exceed the DLC.
T2503: (DD-308) Re-implemented Windows tooltips so that they do not obscure text
edit controls etc. This also opens up the possibility of html content in
future.
Tooltips prefixed with are interpreted as inline html.
T2666: Show warning if uploading a setup to a display of a different type.
T318: (224) - Add "Replace" Function to Import CAN.
================================================================================
Version 2.2.43 - 31 March 2023
================================================================================
T3193: LED setup for wheel display.
T3914/T3915: Simulator: Support rotary buttons + rework to make button / analogs
configuration more straightforward & flexible.
Simulator: Fixed position of button hover areas when scrolled.
Fixed potential crash if display driver information is updated before UI is
fully loaded.
B3818: Alpha-sort "New Setup" display type list.
T4040: Add support for 'setup name' display feature.
Updated to emerald_id/1.2.28.
================================================================================
Version 2.2.42 - 14 February 2023
================================================================================
Fixed display not licensed error for new Wheel display.
Added wheel drivers to installer.
Avoid popup message if application is started in automated mode and the last
setup cannot be found to avoid issues with automated release.
================================================================================
Version 2.2.41 - 13 February 2023
================================================================================
T3875: Add support for Wheel type displays.
================================================================================
Version 2.2.40 - 07 February 2023
================================================================================
B3896: Added missing column 'Wait for All' to CAN Transmit setup.
Various updates to internal libraries (bug fixes / performance).
Updated CAN Bus / Message icons.
================================================================================
Version 2.2.39 - 16 January 2023
================================================================================
Fixed regression on layout locked icon background colour.
B3852: Remove unreferenced modifier channels that were missed with bugfix B2241.
B3851: Fixed issue with some screen events (e.g. revert screen) being removed
under some circumstances (e.g. when creating a stopwatch timer).
B3850: Monitored channels list has an empty item that can be deleted multiple
times before disappearing.
Fixed add monitored channel button.
================================================================================
Version 2.2.38 - 14 December 2022
================================================================================
SDU2 - Direct colour mode option for value text gauge.
#3719: Add LDS4_DisplayLogger drivers to GEMS installer.
================================================================================
Version 2.2.37 - 07 December 2022
================================================================================
Include file size in raw setup export for raw setup uploader tool.
Include raw setup export for additional display types sdu1, smdu1.
Updated to emerald 5.5.2.
================================================================================
Version 2.2.36 - 03 November 2022
================================================================================
B3704: Fixed simulator frequently raising a CreateFile failure (timing related).
B3703: CD32 Displays not detected by DashDesign.
UT: New Setup: display screen resolution in tooltip.
================================================================================
Version 2.2.35 - 31 October 2022
================================================================================
T3523: GEMS version: remove help file menu item until the help system has been
completed.
================================================================================
Version 2.2.34 - 01 September 2022
================================================================================
T3327: Simulator for LDS35 Landscape (LDS35_L 15x18).
LDS35 Landscape is now called LDS35_L, in line with the firmware name.
The file extension has changed from lds35-ls to LDS35_L - any existing
setups will need to be manually changed in Windows file explorer.
================================================================================
Version 2.2.33 - 30 August 2022
================================================================================
B3328: Show brightness input setup for LDS4 setups.
UT : Added additional info to setup export about which gauges invalid output
references are removed from.
UT : Remove event gauges with dangling output references via setup check.
Avoids messages during setup export and unnecessary setup bloat.
B3330: Setup Check: Remove invalid user events from screens to avoid them
appearing to have active events on the events editor tab without
having any items in the 'Action' column.
================================================================================
Version 2.2.32 - 22 August 2022
================================================================================
B3288: Fixed title of upload firmware dialog box.
Include custom / predefined screen name in event effects, e.g. "Open Screen 10".
Fixed bug relating to naming of some event effects.
Events tab: select 'All Screens' by default / fix actions grid appearing to
correspond to All Screens when in fact there was no screen selection,
leading to the event effects list being empty.
Updated to Emerald 5.4.6 (improves performance).
Include screen number in caption for screens with a custom name.
================================================================================
Version 2.2.31 - 01 August 2022
================================================================================
T3280: Add LDS35 landscape display type.
================================================================================
Version 2.2.30 - 19 July 2022
================================================================================
T3151: Add support for flash mode to Warning bar.
T3127: Add rounded rectangle option for square bar gauges.
UT: CAN Receive: Added cut,copy,delete,select all, select none handling.
Paste not supported yet. Copy converts to tab separated format for paste
into MS Excel etc.
UT: CAN Receive: Highlight ID/start bit/size cells if signal is aliased and
provide tooltip indicating the aliased channels to help identify signals
that are unintentionally aliased.
UT: Corrected CD32 display size to 800x480.
UT: CAN Receive / Transmit grids: Show display units in units column.
Updated CD5x plugin to 03x06.
================================================================================
Version 2.2.28 - 15 June 2022
================================================================================
T3133: Export Raw Setup Package feature (for applicable display types).
Update simulator plugin 03x04
================================================================================
Version 2.2.27 - 13 June 2022
================================================================================
B3120: Stop simulator when setup file closed.
UT: Fixed issue with restoring self-test delay value on graphic selectors.
UT: Fixed disabled state for toolbar icons (use grey colour).
UT: (internal) Build speed optimizations (unity builds for some code libraries).
================================================================================
Version 2.2.26 - 09 June 2022
================================================================================
T3077: CD5x Simulator. Updated simulator host application and plugins.
T3071: Text destined for displays using vector fonts is now in utf-8 format
so that all unicode characters can be rendered. Latin-1 codepage for
vector fonts is no longer used. This will require the display firmware to
be updated for correct text rendering.
B3069: Render vector fonts using FreeType in the DashDesign UI. There are
inconsistencies in text placement when rendering using FreeType compared to
Windows GDI. Existing setups may require some positional adjustments of
text to account for this difference. This is easier now that the editor
is now more representative of how the setup will look on the physical
display / simulator.
T3073: Multi-face vector fonts are now supported by the display & simulator.
UT: Setup export: Fail if embedded font references are invalid rather than
exporting a potentially non-functional setup.
UT: Fixed page select source not showing up in editor even though present
in the setup for some display types.
UT: Modified decision on if display supports embedded fonts during setup
programming.
B0084: Fixed copy/paste of colour map and other input modifiers on gauges.
Fix also applied for copying of screens. Fixed source reference IDs
when copying input chains on screens.
UT: Fixed loading of colour map on Value gauges.
T2667: Added missing self test delay feature for Image Selectors.
================================================================================
Version 2.2.25 - 01 June 2022
================================================================================
T1021: Added setup conversion feature.
T3064: Add support for embedded fonts (resolved issues in development version).
T3072: Modified codepage behaviour. Prefer latin-1 codepage for bitmap fonts
as this is more compatible with vector fonts on displays that do not
support utf-8.
Added setup check for charset issues where text outputs are routed to a
mixture if bitmap/vector font gauges.
Setup export will now convert text depending upon the codepage used by
output gauges.
================================================================================
Version 2.2.24 - 17 May 2022
================================================================================
*** Development Release ***
T3064: Add support for embedded fonts.
T3061: Include background colour option for dynamic text gauge.
Fixed serialization of 'justify' property on dynamic text gauge.
Added options to offset / crop fonts to workaround issues where font bounding
boxes are oversized for the range of characters being used.
Added additional options for controlling font rendering.
Added display rendering emulation to font dialog.
Added Unique Fonts dialog to identify fonts that have separate font data within
the setup. Includes find feature.
Added display of font table to font dialog preview with zoom / scroll.
Show memory usage of fonts in the font dialog.
================================================================================
Version 2.2.23 - 24 May 2022
================================================================================
B3050: Fixed positioning of marching ants / resize handles on screen editor when
zoomed in + scrolled.
B2935: Fixed PDU Tab issues when switching CAN ports.
T2940: Branded build: Hide some functions from math editor.
T2938: Added min/max functions to math editor.
UT : Ensure that newly added Lap Timing outputs are marked predefined.
UT : Fixed issue with save setup dialog not adding file extension.
UT : Fixed serialization of corner radius on shape / warning gauges.
UT : Added corner radius option to bit gauge.
UT : Fixed keyboard handling on math script editor so that keyboard shortcuts
do not override keys used for editing (e.g. DEL).
UT : Improved responsiveness of math editor.
================================================================================
Version 2.2.22 - 20 May 2022
================================================================================
T3019: Added support for round bit gauge.
T3021: Added support for rounded rectangles on shape gauges and warning gauges.
B3029: Font mapping: Some fonts do not get correct sizes due to the way that
font mapping works to retain compatibility with existing DDv1 setups.
Some hardcoded exclusions have been added. Further exclusions can be added
by listing them in C:/ProgramData/GEMS/DashDesign/logfontbypass.txt.
B3028: Bit Gauge: ensure that item bitmasks are correctly populated.
B2947: Fixed: Dash Math Channels do not show up correctly in log analysis s/w.
B2928: Fixed some GPS signal names not showing up when added on CAN transmit tab
This issue also affected CAN transmit signals that have scaling / units.
T2855: Fixed window focus handling when changing between tabs - means that
Select All option is available when switching to the design tab.
UT : Fixed selection of latest simulator plugin when plugin list is filtered.
UT : Fixed: Clear on CAN transmit was removing read-only channels
(e.g. PDU control channels).
Updated to emerald 5.4.4 / emerald_id 1.2.4 (now via package manager).
Updated gems libraries.
================================================================================
Version 2.2.21 - 16 March 2022
================================================================================
UT : Use a different value ID for enable of PDU channels to avoid disabled
channels being removed during setup export.
Added unit tests.
================================================================================
Version 2.2.20 - 15 March 2022
================================================================================
UT : Fixed issues with PDU Control channel sources and singleton sensor.
================================================================================
Version 2.2.19 - 15 March 2022
================================================================================
R0101: (DD-278) - Add support for PDU-8 Configuraton (AEM only).
T2783: GEMS: Install libusb drivers for LDS4 (v1,v2,v3), CD32 and LDS35.
UT : GEMS: Include graphics files / LDS4 firmware / demo setup as in v1 editor.
B2782: Fixed enumeration of drive based displays if LibUsb driver not installed
or malfunctioning. Displays a warning in the device selection dialog.
T2668: Raise setup check error if setup uses a graphic that is larger than the
screen size.
T2691: (DD-275) Reworked behaviour of rate selection / selection movement on
Logger channel list.
B2839: (DD-313) Fixed: "Clear" Button on CAN Receive Tab was also deleting
CAN Transmit.
T2867: Create tabs on-demand to improve startup time.
UT : Fixed erase of CAN channels could leave some CAN source channels in the
setup.
UT : Fixed bug in update of dependent outputs list for channels if referers
had been erased.
UT : Fixed drag-value on floating point spin boxes dropping fractional value.
UT : Fixed crash on Images page if importing an image that can't be loaded.
UT : Performance enhancements.
UT : Close DBC / OBDII import dialogs if new setup created / loaded.
================================================================================
Version 2.2.18 - 04 March 2022
================================================================================
B2693: (DD-312) CAN Transmit Tab: changing signal source channels could result
in original channel being erased from the setup.
B2847(1): Fixed handling of legacy can setups that do not use DBC style bit
offsets where multi-byte big-endian values would have incorrect offsets.
B2847(2): Legacy setups with no outputs from a single CAN source
would result in a confused CAN setup in DDv2. Setup check at startup
will fix these channels by adding an output to the setup.
UT : Remove legacy '_string' channels that are not strings and also are not
used by any other outputs or gauges.
UT : Do not raise error about missing GPSi speed input on some display types.
UT : Odometer input issue a warning instead of an error if the standard
Speed Input does not itself have an input, rather than an error about
speed units.
================================================================================
Version 2.2.17 - 05 January 2022
================================================================================
T2691: (DD-275) Changed how rates are selected for channels in the Logger setup.
Streamlines keyboard & mouse editing of logging rates.
Clicking the rate column will now pop up a rate selection menu instead
of using a grid editor. The keyboard will pop up this menu if the
return / enter key is pressed.
B2665: Fixed update of lists of 'used' screens when screens are modified to
become 'used'.
B2690: Fixed display of 'Insert Function' button in Maths editor.
(T2487/DD307): 'No Warning Text Channels' => 'No Notification Channels'
DD-110: Added additional metrics: on change, alarm triggers + obdii pids.
================================================================================
Version 2.2.16 - 22 December 2021
================================================================================
B2685: GDD Maths editor - fixed issue where input controls were not cleaned up
correctly leading to 'corruption' of the UI.
B2688: Fixed: PI constant was not working in simulator for maths channels.
Constants are now added as literal values to display math equations.
UT: Fixed colour of text on file address bar drop down menus.
UT: Fixed scrolling of file address bar drop down menus.
UT: Added channels drop down menu in math channel editor.
UT: Added constants drop down menu in math channel editor.
UT: Fixed problem when converting channel types to 'toggle', 'if', 'on change' or 'case'.
UT: App update dialog - relayout window when showing 'install' button as
when hidden its position is not otherwise updated if the window is resized.
UT: Support dropping of files with .gdd extension in GEMS version.
================================================================================
Version 2.2.15 - 21 December 2021
================================================================================
T2624: Enable GIF support for SMDU4 (except in the simulator) + add VID_COUNT
option (SMDU4 only at present).
B2603: Fixed crash rendering GIF gauges.
B2652: (DD-280) Maths Channels: Add parenthesis around exponent of ** operator
when converting from text form to display setup format. Fixes incorrect
operation on the display.
B2638: Fixed display of simulator (regression since 2.2.14).
UT : Fixed positioning of FPS counter on simulator screen when scrolled.
T2511: Add support for CAN Initial Value in CAN setup editor.
T2510: Update multiplex + CAN message diagram when selecting a signal.
UT: Also update diagram if CAN signal is modified as this was not
always happening correctly (e.g. changing CAN ID).
B2669: Fixed crash ungrouping tacho + label group.
T0988: Maths Channels: Syntax highlighting.
T0990: Maths: Added function call tips (mouse hover).
T2496: Math Channels: Add buttons for inserting operators.
T0989: Math Channels: Added drop-down menu of functions for insertion.
T0991: Maths Channels: Allow channel names to be referenced in maths scripts
directly instead of only variable placeholders.
UT : Fixed size of units mode combobox to avoid clipping of text.
================================================================================
Version 2.2.14 - 26 November 2021
================================================================================
B2618: Fixed scrollbars on some views when not using Dark theme.
================================================================================
Version 2.2.13 - 24 November 2021
================================================================================
T2586: Added VIDEO_PLAYBACK_PLAYING display info output.
T2587: Added Video Seek Offset input to file_explorer_gauge.
B2497: Activating an expired license will now report an error instead of
succeeding (but silently failing).
T2585: Warn user if license expiring.
T2515: Refactoring: Use common UnitSystem implementation.
T2487: Rename Alarm Channels to Logic Channels and Warning Text to Notifications.
UT : Licensing: store original machine key with license activations. When
deactivating licenses, use the original machine key, where possible.
UT : Display expired licenses in License Manager view.
UT : Fixed some typos in COM interface documentation.
UT : Fixed COM interface InvokeAction which would always return an error when
invoking a non-toggle action.
UT : Fixed possible crash when using Javascipt property bags via COM interface.
UT : Extended COM interface in preparation for automated help system generator.
DD-250 related: Resolved flicker issue on grid scrollbars.
DD-269: Re-enable math channels.
================================================================================
Version 2.2.12 - 20 October 2021
================================================================================
UT : Fixed connection to Simulator - Updated Simulator host to use boost
1.77.1 due to IPC incompatibility.
DD-250: Defer header position update following column resize.
================================================================================
Version 2.2.11 - 19 October 2021
================================================================================
B2241: (DD-305) Fixed: Deleted CAN channels still show up in setup check.
These will now be removed and an info message will be shown in setup check.
For some of these that have a physical gauge, the correct gauge will be
identified instead of any hidden monitor gauges.
T0321: (DD-110) AEM: Anonymous user feedback usage metrics.
T0305: (DD-274) Set Log rate on multiple channels simultaneously via context menu.
B0103: (DD-288) Import Screen Dialog not working:
Reset cache database if for some reason the file was readonly.
Added button to clear the cache to the import dialog.
UT : For cdscreen files, use the file name as the screen name in the
'Import Screen' dialog, unless a user-defined name for the screen was
given.
UT : Fixed typo in default tooltip for Square Mode property.
B1989: (DD-302) Fixed: Square Mode for bar graphs was not being loaded from
saved setup correctly.
B2240: (DD-304) Fixed crash clearing OnChange page.
T0505: (DD-275) Logging Setup: Tab / Shift+Tab now moves rate editor down/up.
B0106: (DD-283 + DD-290) Convert Predefined 'Status' channels to 'Flags' type.
Some legacy setups used bit-string style outputs and would show up in
the editor as 'Error in Input'.
B0104: (DD-301) Fixed crash when exporting screens with alarm that has no input.
B0109: (DD-219) Constrain Limiter gauge count/height to avoid control being
larger than the screen.
UT : Updated to boost 1.77.0.
================================================================================
Version 2.2.10 - 13 October 2021
================================================================================
T2408: Added display info output for multimedia display for compatible display
types.
================================================================================
Version 2.2.9 - 08 October 2021
================================================================================
UT : FileExplorerGauge: fixed typo in video seek interval property name.
UT : FileExplorerGauge: Adjust line height per-item based upon font size.
================================================================================
Version 2.2.8 - 08 October 2021
================================================================================
T2381: FileExplorerGauge: Add Video Seek Interval.
B2383: FileExplorerGauge: Fixed some issues with handling of gauge properties,
changed default title to "File Explorer".
UT : FileExplorerGauge: changed default unsupported text colour to named
colour 'Dim Gray'.
================================================================================
Version 2.2.7 - 05 October 2021
================================================================================
T0321: Branded Build: app metrics can now use SSL.
UT : Display last setup file name in startup setup selection dialog.
T2261: Added SMDU4 15X13 simulator to simulate Audio Control output.
T0321: (DD-110) Resolved some HTTP issues in branded build data collector.
UT : Include full 24bit colours in setup export.
T2371: Add FileExplorer Gauge.
T2370: SMDU4: Add new DisplayInfoOutput outputs.
UT : Developer Mode: Added option to edit file structure in EFM tool.
UT : Developer Mode: Added option to view setup node graph in vscode
(requires graphviz).
T0079: GEMS: Allow predefined ScreenSel sensor to be edited. Note that loading
modified setups into prior versions of DashDesign will overwrite any
edits.
T2181: GEMS: Added option to check for updates via beta channel.
================================================================================
Version 2.2.6 - 17 September 2021
================================================================================
B2188: Fixed: Channels: Switching to a Maths channel could modify some of
the inputs to those in a previously selected maths channel.
B2239: (DD-303) Fixed default configuration not being added to the first CAN
Transmit signal in a message.
Added a setup check that runs at startup to fix setups that have this
problem.
T0047: Added Audio Control channel type for displays that support them.
Note: audio control channels will not work in the simulator yet.
T2259: If DashDesign did not shut down properly, user should be offered more
options for subsequent behaviour.
Added option to always select what to do at startup instead of loading
last setup.
UT : Clean up default setup of Lap Timing inputs. Split Time / Num should
now be added as predefined channels on LDS4.
================================================================================
Version 2.2.5 - 20 August 2021
================================================================================
B0080: Fixed 'Save' always behaving like 'Save As' for some display types.
B0089: Do not display LEDs sub-page in Setup tab if display does not support
LEDs and that page was previously selected.
T0035: Added internal temperature on new display type.
T0040: Added Status outputs for USB and SD card on applicable displays.
UT : Reworked handling of default Analogue channels. For new setups it was
possible that the internal temperature / battery voltage would fail to
be created properly if on an input channel < 10.
================================================================================
Version 2.2.4 - 29 June 2021
================================================================================
Fixed issue preventing connection to LDS35.
Added LDS35 15x12 simulator.
Added CD35 15x12 simulator.
AEM / Emtron: Added version 15x12 simulator.
#4699: Restrict list of simulator options based upon setup display type.
================================================================================
Version 2.2.3 - 22 June 2021
================================================================================
#4861: (DD-297) Fixed issue with enable/disable screen menu item when showing
Design tab and the editor window is focused.
#4885: (DD-298) Fixed export of screens when a screen is disabled (fixes alarm page
being shown when cycling pages).
#4894: (DD-299) Fixed bug where changing the filter type on a channel could modify the
wrong channel.
#4860: GEMS media based displays: only add display drivers if the display info
file is valid.
#4660: GEMS DD: Add support for LDS35.
================================================================================
Version 2.2.2 - 11 June 2021
================================================================================
Updated compiler to VS2019 16.10, fixes code generation bug seen in other apps.
#4808: (DD-293): Open Setup: Fixed 'file not found' when using OS file dialog.
#4856: (DD-296): Fixed crash when selecting "Page Select" channel.
#4651: (DD-268): Emtron: configured application update checking URL.
#4854: (DD-295): Screen "Enabled" property changed to "Screen Enabled" and
hidden for screens that do not allow being hidden.
#4855: (DD-294): Fixed triggers for On-Change and Alarm screens (since 2.1.20).
#4753: (DD-290): Auto-fix broken 'Log Status' channel from old display setup.
#4801: (DD-292): Added setup check error for invalid use of time channels on
bar gauges. Use of time channels on value gauges that do not have a
time format is now an error rather than a warning.
Lap timing channels & ETA are now identified as being 'time' channels so
that setup check can identify configuration issues.
Browse setup: altered styling of 'notes' control (dark theme).
================================================================================
Version 2.2.1 - 25 May 2021
================================================================================
#4761: (DD-291) Fixed setup upgrade to fix "x1 scalar" vs "x1 Scalar" problem.
#4819: GDD: Add provisional support for displays that use removable disks or
present as mass storage devices.
================================================================================
Version 2.2.0 - 11 May 2021
================================================================================
Branded Build: Release candidate.
================================================================================
Version 2.1.24 - 07 May 2021
================================================================================
Added additional information to application log.
#4403: Asynchronously launch update & close application following acceptance of
software update dialog. Tentative fix for crash report.
================================================================================
Version 2.1.23 - 06 May 2021
================================================================================
#4544: (DD-277) Simulator: Fixed Motec M800 channels on CAN2.
#4698: Fixed Page Select input on some display types.
#3196: (DD-217): Adjusted default CAN configuration for GPSi CAN Tx.
#4703: Improved initial column widths for various grid editors.
#4482: Menu option to toggle hexadecimal display of CAN IDs globally.
================================================================================
Version 2.1.22 - 30 April 2021
================================================================================
#4270: (DD-212) Added CAN transmit tab to CAN setup section.
CAN transmit channels can be individually enabled.
Added scaling & unit conversion feature for CAN transmit feature via
hidden proxy channels.
#3196: (DD-217) Add iGPS CAN output for displays that have internal GPS.
Added button the CAN transmit page to add the appropriate messages which
may be individually enabled and edited.
#4661: (DD-285) Occasional error opening setup from file dialog due to
concurrent file hasher opening the setup file with exclusive access.
Tentative fix for crash report for access violation during setup unloading.
Windows API errors - if text could not be formatted then print the error code.
================================================================================
Version 2.1.21 - 23 April 2021
================================================================================
#4641: (282) Fixed issue with channel logging rates in logger setup leading to
incorrect logs. The logging table builder has changed and there is now
also better time-coherence between samples that are logged at the same
rate.
#4403: (DD-268) Alert users if there is a software update.
#4544: (DD-277) Fixed Motec M800 channels in simulator - added CAN stream
simulators for data set formats & compute value range for motec raw
sources.
#3483: (DD-247) Lap Time Input Preview Value is now interpreted in
(floating point) seconds. Also corrected formatter.
Added additional application logging.
Updated to Emerald 5.0.5 which gives different error if file in use cause of
open failure.
================================================================================
Version 2.1.20 - 09 April 2021
================================================================================
#4422: (DD-273) - Setup check false positive for alarm always active if its
source is another alarm with an input with a lower limit greater than zero.
#4390: (DD-272) - Fixed hang - setup check shouldn't set Reset Button Hold
as the reset source for the Reset Button Hold channel.
#4328: (DD-271) - Changing CAN signal names where an override unit is specified
should rename its source channel.
#4394: GDD: Configure system for licensing in installer.
#3014: GDD: Add Freeze Channel.
#4629: Increase maximum gauge font size to 999.
#3215: (DD-228) - Allow Specific Pages in Setup to be Hidden.
#4586: Fixed: Updating Math equation should update inputs list.
#4591: BB: new simulator version 15x09 and 15x10.
Added additional error information if opening of setup file fails.
Alarm always active setup check message missing word 'will'.
BB: Remove maths channels for now until finessed.
SMDU4: show brightness input page.
Fixed signing process for installer.
================================================================================
Version 2.1.19 - 16 March 2021
================================================================================
Added some additional application logging.
Flush log when event loop idles.
================================================================================
Version 2.1.18 - 13 March 2021
================================================================================
Updated to wxWidgets 3.1.4 from 3.0.4.
#4394: License dialog: always display machine key in case there was a problem
that could lead to activation failure.
#4546: Fixed addition of 'Open Screen' event to an alarm input on an individual
screen.
#4398: Events Tab: highlight screens + actions that have effects in some way.
#4533: (DD-276) Fixed floating point text input validator regression.
#3486: (DD-249) Fixed scroll bar mouse drag on grid based combo box popups.
#3018: Added "On Change" channel type.
Internal feature: CAN port simulator binding now supports pcan and kvaser.
================================================================================
Version 2.1.17 - 29 January 2021
================================================================================
#3016: Add "If" channel type.
#3011: Add "Case" channel type.
#3020: Add "Toggle" channel type.
#3017: Add "Integrator" channel type.
#3019: Enhancements to timer event configuration to reflect additional
flexibility in GEMS displays.
Fixed layout of "Math" channel type selection button in branded build.
Adjust layout of timer channel editor slightly (added a small gap before the
timer type selector).
Restrict available key actions based upon display type (most displays do not have 'long hold').
#4510: Fixed: Event Tab: assignment of alarms to allocated keypad IDs.
#4272: (263) Not require inputting "0" before decimal values <1.
#3945: (261) Do not delete channels when pressing backspace key on simulator page.
#4509: Developer feature: export setup binary.
#4498: "Create LED Config" should not show up in undo history.
================================================================================
Version 2.1.16 - 20 January 2021
================================================================================
Milestone GDD-S3
#3007: Added Bitmask channels.
#2999: Added Bit Gauge.
#3009: Added Differential channels.
#3003: Hide items on CAN tab depending upon application level support.
#2187: GDD: Upgrade DDv1 setups on first opening a save as DDv2. File now
stores a compatibility version.
#2926: GDD: Setups append the .gdd file extension to differentiate DDv2
setups from DDv1.
#2668: GDD: Convert strings to UTF-8 in emerald setup files where appropriate.
#2730: (DD-94) Implement gradient fill feature for Shape Gauge.
#2869: Can now cycle through gauges in the screen editor with the keyboard
with Alt-left/Alt-right. Additionally the Enter key focuses the
properties grid, with ESC moving focus back to the screen editor.
#2870: Fixed issue with tab traversal stopping at colour picker controls on
properties form.
Channels tab: prevent position of sensor type selection moving when changing
sensor type.
GDD: Option to hide default pages in screens selector.
Fixed: use "ETA_SSR" instead of "ETA SSR" as per DDv1.
#4342: [Shift Lights Setup].
Fixed some property attributes (stored/editable/default).
#3000: Added support for short version label format strings.
Added support for boot version format strings.
Added support for setup version format strings.
GDD: Added gems licence management.
GDD: Rework of setup file extension handling. File filter lists are modified
depending upon installed licenses.
#4338: Serial locked license check.
#4340: Removed display type dropdown from toolbar. The attached display
is now indicated in the status bar. If the hardware does not support logging
then it will display a warning on the logging tab.
Implicity resolves #3203 (DD-223).
#3006: Added reset triggering mode for min/max/avg filters.
#4314: SDU2 support.
#3200: (DD-220) - increased simulator input channel frequency to 10Hz to fix
problem with limit flash rate on Bar tachometer gauge.
#2993: Added 'Square Mode' for H/V bar gauges.
#2986: Made grid column header clearer with a thick dividing line between the
header and the grid.
(DD-269): Enable maths channels in branded build.
#3201: (DD-221) - More accurately render cross-hair gauge in editor.
#3207: (DD-226) File dialog: Fixed drag/drop over empty row would remove file.
#3015: Added ETA channel type.
#3140: Animated GIF gauge for 4th Gen displays.
#3338: (DD-239) - Format string of "0." would result in application crash due to
division by zero.
#2554: Alarm / Warning Text pages: hide editor if no channel selected + added
text in grid background if list is empty.
#3008: Added ECU Text channel type.
#2952: Persist zoom state & snap state in screen editor. For manual zoom,
scaling is stored individually depending upon screen dimensions.
Auto-scale zoom setting now makes the view slightly smaller than the available
area to improve appearance.
#2847: CD4X: support colour map option for Direct colour drive secondary input
on text style gauges.
#4361: Load setup: Avoid setting a null setup if loading fails to avoid
leaving application in a dangerous state.
#3023: Add Setup for CAN Page select and CAN button source.
#4396: Events Tab: Add 'output' actions.
#4397: Events Tab: Effects model for selected action.
#4399: Events Tab: Dialog to add new effects to an action.
#4400: Events Tab: Remove effect items.
#4487: Events Tab: take into account item priority.
#4488: Events Tab: Up/Down buttons.
================================================================================
Version 2.1.15 - 30 September 2020
================================================================================
#4181, #4203: Fixed application of protected mode DBC setup to logger setup.
#3776: Fixed deletion of Warning messages from the middle of the list.
#3775: Fixed error running simulator / exporting setup with many warning
messages.
#4245: When removing a CAN channel the underlying source is also removed to
avoid having a hidden CAN source that causes various problems later on.
#3388: Setup check does not remove dangling source references in some cases now
to facilitate re-association. Instead it issues warnings that such issues
have been detected.
Fixed memory leak.
Tentative fix for crash report when saving setup - possibly due to windows
shell folder enumeration request succeeding but returning a null enumerator.
================================================================================
Version 2.1.14 - 23 April 2020
================================================================================
#3798: (258) Fixed MoTeC M800 dataset CAN IDs - IDs were being stored
incorrectly in setup files. Existing setups that were created with DDv2
will require having their CAN ID reset (0x5F0 for set 1 and 0x0E8 for set 3).
#3736: (254) Logged channels referencing the sensor library would not display
correctly in data analysis software.
#3811: (259) Made reset button for min/max/avg channel filters configurable.
Also added setup check to ensure that a reset button is set for some types
of display (otherwise warn that one has not been set).
#3882: (260) Fixed simulator when using protected CAN setups.
#3627: Fixed issue with hot-tracking on config page strip/sidebar.
#3628: Fixed highlight state not getting cleared on dark mode combobox in some
cases.
Increased speed of sidebar flyout animation.
Fixed a currenly benign build configuration issue, which could have lead to
future build problems (translation system).
Do not issue display type units mismatch setup check warning for channels that
do not have display units (e.g. performance timers).
Added simulator firmware version selector.
Fixed strange behaviour of dial editors for GPSi channels (e.g. speed) where
trying to set a negative value would set the value to maximum.
================================================================================
Version 2.1.13 - 11 February 2020
================================================================================
#3386: Upgrade to VS2019 toolchain.
Updates to internal libraries, includes some theming tweaks.
#3594: Update to emerald 5.01.04. Fixes crash following undo of graphic
selector removal, seen in crash reports from 2.1.11.
Changed update transaction scoping to avoid incorrect setup check errors in
some cases.
#3565: (253) - Customer setup file opens in DD1, crashes in DD2 due to invalid
alarm/sensor configuration.
Performance timers should not show any units in channel selectors.
Vectorized gems logo.
Display 'non-dbc' CAN in CAN Receive tab - removed the distinction between
dbc/legacy can channels, internally.
Save setup: generate filter based upon display type in setup file.
GEMS DD: Added LDS4v3 simulator.
Don't depend upon case of dropped setup file extensions.
================================================================================
Version 2.1.12 - 26 October 2019
================================================================================
Fixed possible crash relating to cache database.
Updated to Emerald 5.01.03 - tentative fix for crash seen in crash report.
Updates to gems libraries - includes some visual enhancements to dark mode
(e.g. sub-menu disclosure icon).
Use alternative toolbar implementation to avoid white box when opening
application.
Use loading page to avoid white boxes when opening application.
================================================================================
Version 2.1.11 - 25 October 2019
================================================================================
#3464: (245) Fix DBC import when bitstring channels are overwritten leading
to invalid setup structure.
+ Improved error message if setup is corrupted in this way.
#3305: (232) Can ID editor - retain shared editor on CAN RX/TX grids so that
switching standard/extended works as expected.
SpinBox: don't focus individual buttons on tab key.
Grid editors: when tracking base selection, do not close editor if it can be
moved instead.
Grid editors: If open and the position is moved due to e.g. sorting, alter the
scroll position so that the editor remains in the same place on the screen
if possible.
================================================================================
Version 2.1.10 - 24 October 2019
================================================================================
#3464: (245) Fixed duplicate name resolution in DBC import which could cause
the application to crash.
#3202: (222) Added setup check warnings when delay == retrigger time on alarms.
#3305: (232) S/E switch on Can ID editor in grid should retain extended value.
Fixed setting ID with value 0 to extended mode.
If pasting ID values that are higher than the max standard ID value then
set the ID to extended format.
If pasting ID values with the extended bit set (0x20000000) then set the
ID to extended format.
Do not include button status channels in logging list (they can't be logged
by the display).
Setup Check: If any channels are not loggable but are configured for logging,
reset their logging rate.
Update gems lib.
Fixed some code analysis warnings.
================================================================================
Version 2.1.9 - 4 October 2019
================================================================================
#3410/#3411: Fixed crash loading setup with invalid multilexor setup
(multiplexor channel missing).
#2838: Automatically remove orphaned CAN sources.
Avoid debug assert if setup contains an invalid image file.
Do not add CAN1_1 or CAN2_1 sources to new setups that are never connected to
outputs.
Avoid modified state on new setup files.
Channel lists: if view is sorted, do not track unsorted selection when removing
items.
================================================================================
Version 2.1.8 - 4 October 2019
================================================================================
#3408: Fix applied for crash when building screen library.
#3409: Fixed: Display Setup can fail to load if there is a modifier channel
that precedes any of its associated channels.
#3410: (not fixed): abort if setup change notification depth gets too high to
result in more useful crash report.
================================================================================
Version 2.1.7 - 2 October 2019
================================================================================
#3387: Fixed conflict between simulator analogues and AEM buttons, prevents long
press etc from working.
Also button state channels will now update in simulator channel list when
buttons are pressed.
#3383: (240) Fixed regression wrt. dark theme toggle.
#3335: (237) - Add support for Toggle event to countdown timer.
Updated to boost 1.71.
================================================================================
Version 2.1.6 - 25 September 2019
================================================================================
#3214: Allow OBDII scan on displays running legacy bootloader.
#3372: DBC import: correctly apply multiplex data to imported channels.
Added setup check to detect & fix CAN channels with a broken multiplex setup.
================================================================================
Version 2.1.5 - 13 September 2019
================================================================================
#3298: (231) Update size hints of tags editor so that selected tags are not
hidden.
Tags picker - show all auto-complete options when input match is empty.
Fixed disabled state images on toolbar for icons that have a mask instead of
an alpha channel (they would otherwise appear to be a grey square). Would
only occur on some systems.
#3313: Fixed missing Initial Value for countdown timer (regression since
Performance timer implementation).
#3314: Performance Timer option should not be enabled for predefined timers.
#3317: (235) Fixed branded splash screen text.
#3319: (233) Optionally display text for config page sidebar (with flyout).
#3316: (234) Adjust dark theme for Emtron.
#2711: AEM DD: usage statistics upload to server + opt-out (preview).
Default to dark theme.
================================================================================
Version 2.1.4 - 26 August 2019
================================================================================
#3162: (215) - Fixed invalid application of output units to performance timer
outputs.
No longer displaying timer channels on the Channels tab.
#3164: (216) - Honour minimum height of property form editors. Fixes
un-editable alarm page triggers box.
#2888: Added test to confirm that setup update events are not generated if
logging throughput is re-calculated but there were no changes to the
logging setup.
#2950: Setup check warnings/errors/info are now shown in a status bar area
instead of popping up the setup check window. Double clicking this area
will then show the setup checker frame.
Implemented auto-reset mode for most setup check items so that
once the warning/error has been resolved, the item will automatically
disappear.
#2787: MoTeC M800: Default ID to 0x5F0 for Set 1 and 0x0E8 for Set 3.
Hide MoTeC ID field if a data set is not in use.
Fixed update of MoTeC data set UI etc following undo/redo (and possibly some
other items).
#2787: Default Address Mask value to 0x1FFFF800 when masking is enabled.
#2787: Grey out the CAN Layout Multiplexor dropdown if the message displayed
is not a multiplexed message.
ComboBox/Dark Theme: use gray text when disabled.
CAN ID Editor: Standard/Extended state is now identified by S / E label instead
pf difficult to see highlight.
CAN ID Editor: Follow light/dark theme for extended toggle.
CAN ID Editor: Retain extended value so when toggling it will restore
extended bits unless otherwise changed.
CAN ID Editor: Moved extended toggle to right hand side so that ID text does
not move when used as a grid editor.
#2787: Grey out the Transmit Delay [ms] input box if there are no CAN requests
triggered on startup conditions.
Fixed undo transaction scoping of CAN request item value changes.
Added setup check warning for value gauges that have a timer input but do not
have a time format string.
CAN RX/TX setup grids: Retain scroll position following value change.
CAN RX/TX setup grids: Improved performance of model updates in come cases.
#3142: (214) DD1 Function table not being seen in DD2 for CAN channels
(stop-gap solution).
#3202: Setup check warning if alarm cannot trigger due to having a retrigger
time that is less than the delay before trigger value (unless zero).
#3214: Avoid GET_LOGGER_INFO command on displays that do not support it.
If OBDII scan is not possible then suggest that it is possible to upgrade
the bootloader by sending the display to the vendor.
Fixed possible crash when drag-adjusting property values.
#3198: (218) Fixed Warning Bar preview when a gradient is selected.
#3100: Remove alpha channel from bitmaps so they will look more like they will
on the display / in the simulator.
#2916: Autocomplete in GaugeFontSelector control.
Modified font grid renderer to display face name in both a consistent font and
in the font face for the given item.
Double click font in font selection dialog now accepts the dialog.
#2649: Simulator: option to only show 'used' channels in the channel list.
Display busy cursor when loading/setup files.
Changing units of a channel that is an alarm input will now update the alarm
limits instead of potentially leaving the alarm input incorrectly connected.
Alarm units are now tracked so changes in units will automatically adjust the
limit.
Setup check will now raise warnings if alarm conditions cannot be met or
will always be active (where possible).
Simulator channel list will no longer jump scroll position when changing
filtering settings.
Fixed tooltips on themed spinboxes.
#2812: Fixed tooltips on some controls.
#2812: Tooltips for filter types in filter selection dialog.
Changed Value Limit and Rate Limit filter types => Value Reject and Rate Reject
to make it clearer what they do from looking at the name alone
(Changes also applied to help ID database).
#2812: Added tooltips for grid header columns.
external lib: Fixed regression in file listing routine.
Fixed data folder name for Emtron build => DisplayEditor.
Emtron build: Fixed drag/drop of ed5cf files.
#3265: Fixed issue with grid editor size (header column sizing) in final column
of grids when there is a scrollbar. Could cause clipping of the editor.
Regression since v2.1.0 fix for scrollbar flicker when grid height
marginally bigger then the window height.
#3272 (230) Fixed stack overflow when loading some DBC files due to undo
transaction post processing.
Optimized insertion of channels into channel model.
Optimized updates to channel models following state changes in setup.
Optimized lookup of channels from their underlying setup nodes.
Optimized DBC + OBDII import (faster duplicates checking).
Optimization: Avoid notifications following undo transactions that did not
make any setup changes.
Added unit test for import of large DBC file.
Changed target windows version in build defines to avoid build warning.
Support drag/drop of *.dbc, *.aemcan, *.obdiiscan.
#3253: Add support for CAN multiplex indexes greater than 15.
Changed UI for CAN Multiplex selection in signals grid.
Can Frame view multiplex drop-down is now restricted to only show possible
index values.
#2902: (168) Add 'Export Graphic(s)...' button to allow export of selected image(s).
================================================================================
Version 2.1.3 - 08 August 2019
================================================================================
#3181: Emtron rebrand.
#2647: (64) Fixed filtering in screen library if either 'hide duplicates' or
'hide full setups' are not enabled.
Fixed All/Any selector for tags filter which should be mutually exclusive.
#2901: (167) Fixed regression regarding Odometer channel setup for new setup
files due to missing sensor.
Use invisible undo scope for logger setup validation (avoids getting an item in
the undo history for new setups).
Fixed AemPageButton ID value.
Don't add 'resource not found' warnings to log for 'missing' dark icon overrides.
Fixed undo scoping issue when adding a rescaled bitmap to an image gauge.
================================================================================
Version 2.1.2 - 20 June 2019
================================================================================
#2722: (80) New file type (*.cdscreen) that contains a single screen for sharing
purposes & library import.
Option to hide full setup files in screen import list.
Default to recursive mode (loses old preference value).
#3115: (206) Added Performance Timer type to display firmware.
Enables timers for distance and value ranges (e.g. 0-60mph).
Added quick setup 'wizards' for configuring such types of timer.
#2719,#2646,#2901:
Predefined ODOMETER channel needs to follow global units selection.
Added Unit preference for distance.
Allow Display Units to be configured on predefined channels e.g. Odometer).
Reworked channel update strategy to update when implicit units change.
Channel dependency graph improves update performance.
Added Input Units option.
Added 'Match Output' units mode.
Some channels now have implicit input/output units - the units track the
primary source if the channel is a unit scalar or is a sensor type that
does not change scaling.
Automatic upgrade of setup to use unit aware Odometer + Distance Trip.
Added Speed Input predefined channel to use as common input to channels
requiring a speed input.
Added configuration of Speed Input channel to "Speed / Odometer" setup page.
Default Lap Timing speed input to 'Speed Input' if not already configure.
Speed Input defaults to GPSi_Speed.
#2991: Reduced CPU usage when gauge selected (drawing of Marching Ants no
longer blits entire view).
#3112: (203) - Configurable Count Down timers now available for value gauges.
Note: countdown timers created with v2.1.1 are not fixed up so will remain
invisible unless the type is changed.
#3113: (204) Removed countdown timer setup page now that it can be configured
under the timers tab.
#3119,#3128: (210) Alarm limit values not displayed correctly on timers tab.
#3117: (208) Timers: When changing timer type, remove any inapplicable events.
#3118: (209) Changed icon used for Static Text (label) Gauge.
#3116: (207) Allow built-in keypad buttons to be used as Timer triggers.
#2524: (75) Option to hide visually identical pages in screen library view.
#2647: (64) Added predefined tags & globally defined user tags files
(see tags.xml in ProgramData/User AppData).
Changed the tags editor in the properties form from a list to a set of
tags that can be individually removed.
Fixed issue where empty tags could get added and lock up the application.
#2813: (137) Don't reset preview value on some gauges (e.g. Needle) when
updating from the setup model.
#2243: (74) Added gauge preview values to H/V S/T Bars.
#3111: Fixed rendering of square bar gauges where separators drew over the
border unlike the actual display.
#3105: (199) Enable shift light limits to be entered individually.
#2959: (181) Streamline filter selection.
#2896: (165) Added button to copy input units from primary source.
If input units are set and there are no output units set then
the output units now implicitly match the input units.
#2557: Added ability to click-place gauges.
#UT: Fixed erroneous thumbnail generation in screen library due to bug in
wxWidgets handling of alpha channels.
#UT: Added disk cache version number and invalidate entire cache if not
compatible (screen library). This will clear the cache generated with
DDv2 versions before 2.1.2.
#UT: Changed icon for Shape Gauge.
#3106: (200) Adjust min size of property form editors to avoid sidebar
changing width when properties change.
#UT: Reduced overly wide layout of setup tab pages.
#UT: Channels: Fixed enable state of Primary Input selector (it was enabled for
predefined channels in some cases).
#UT: Extend input range of function table graph so that the effect of
out of range input values is clearly visible.
#UT: Calculate function added to linear scalar setup page to calculate scalar
from 2 I/O values.
#UT: Linear scalar chart range now works when no primary input selected.
#UT: Chart view: Display [X,Y] values in status bar for mouse X position.
#UT: Channel picker - only hide units if text editor subcontrol has focus.
#UT: Avoid creation of no-op undo commands during log throughput calc.
#UT: Hidden modifier channels: Do not wrap with UnifiedChannel - they are
conceptually part of another channel.
#UT: Dark mode: Fixed text colour in filter config dialog when displaying
'No properties'.
#UT: Optimization: Cached fetch of unified channel display units.
#UT: Optimization: Cached lookup of channel sensor references.
#UT: Moved Brightness setup next to Night Mode.
#UT: AEM: hide increase/decrease trigger options for countdown timers.
#UT: Fixed issue with icon for 'all screens' tab.
#UT: Added Miles/Second speed unit.
#UT: Position locked layout warning at top left of screen editor view where
the gauge palette would normally be as this is a more obvious location.
This is now also no longer a floating frame so changing layout lock
does not affect the layout of the screen editor view.
The lock icon remains when unlocked and can be used to re-lock the layout.
Removed layout lock from the toolbar as it is now surplus to requirements.
#UT: Fixed channel selectors that allow both sources AND outputs (e.g.
monitor setup).
#UT: Increased buffer size for simulator file transfers to improve startup time.
#UT: Added 'None' option to unit selector dialog to clear the units selection.
In some cases this allows units inheritance.
Changed 'None' units name to 'Unitless'.
#UT: Display warning triangle for display units if 'Match Preferences' mode is
selected but auto units application is not selected in unit preferences.
#UT: Optimization applied to updates of sorted models.
#UT: All Screens View: Added clear/duplicate/import screen menu items.
#UT: All Screens View: Update tags when setup changes.
#UT: All Screens View: Do not draw overlays on gauges (e.g. selected needle
gauge) for preview.
#UT: Tags Selector: changed All/Any selector to new selector strip control
(looks better in dark mode).
#UT: Changed allowed character in tag names (removed space)
#UT: Screen import - do not copy in graphic items if an item with the same
original path already exists in the setup.
#UT: Screen Import - copy gauge input filter chains.
#UT: Screen Library dialog - use arrow-wait cursor instead of wait cursor
when background tasks busy.
#UT: Channels tab could show the linear sensor editor when no channel was
initially selected - this should now be hidden.
#UT: Adjusted copy/paste/cut/undo/redo icons.
#UT: Increased scroll rate on screen editor / simulator / graphic views.
#UT: Added Ctrl-Wheel behaviour to zoom screen editor view.
#UT: Improve spin box appearance in dark mode.
================================================================================
Version 2.1.1 - 29 May 2019
================================================================================
#2942: Performance Timer Channels
#2879: Add support for Mode22 ODBII PIDs, added parsing of attributes to sdbapi.
Sharpened up a few icons at 16x16 resolution.
#UT: Streamlining: Auto add a blank entry to new alarms and warning messages.
#UT: Fixed window flag for paged controls which could result in application hang
in Windows code when a modal dialog is displayed during window deactivation.
#UT: Use modelsss dialog for channel picker popup.
#UT: Added ability to create new alarms/warning messages from channel selection
dialog when target must be an alarm (e.g. performance timers).
#3109: (201) Show contents of desktop folder in file browser.
#2556: Change the default gauge colours.
#UT: Fixed missing undo scope selecting needle gauge background.
================================================================================
Version 2.1.0 - 22 May 2019
================================================================================
Dark Theme.
New UI layout design.
Redesigned some action icons.
Fixed undo scoping when setting CAN address mask.
Fixed possible crash ungrouping gauges.
Show name in tooltips on gauge stucture tree.
Fix layout of controls in bottom right of screen editor view (vertical stretch).
Fixed mousewheel in file addressbar dropdown items.
Fixed scrollbar visibility issue for grids in some cases.
File browser is now using a new implementation for the file list/tree so that
the dark theme could be applied - possible behavioural changes.
Improved layout of about box.
Added button to about box to browse OSS licenses.
#2562: Removed close button from layout locked window.
Got rid of status bar flicker.
================================================================================
Version 2.0.35 - 17 May 2019
================================================================================
Store OBDII scans in /OBDII
Do not persist last OBDII import folder; always default to /OBDII.
#3102: (197) Change AEM icon.
#3103: (198) Items from sensor library dont seem to work in the simulator.
#UT: Display channel units in alarm/warning setup.
#3094: (195) Fix alarms with malformed input references.
#3094: (195) Fixed alarm condition removal algorithm. Added unit test.
#3101: (196) Increased resolution of min/max values on crosshair gauge.
================================================================================
Version 2.0.34 - 09 May 2019
================================================================================
#3092: Fixed alarm page & on change page triggering.
#3072: Now handling negative center offset values on Needle Gauge correctly when
calculating/drawing bounds.
#2670: Add mouse handler for property labels to enable dragging of values
up/down. Makes adjusting values less cumbersome (esp. preview values).
#UT: Ensure event manager is created when opening setups (otherwise display can
fail).
#UT: Possible corruption when saving setup files has been reported. The save
operation will now save to a temporary file and verify the file before
overwriting existing files.
#UT: Fixed error in lap timing setup which would always result in 'automatic
fixes applied' to appear in undo history and set the file to the modified
state.
#UT: Reduce changes to setup when updating logging runtime.
#UT: Modified event processing deadline for simulator to avoid response lag.
================================================================================
Version 2.0.33 - 08 May 2019
================================================================================
#2941: (177) Added configuration of Count Down Timer to setup page.
#2906: (170) Added Loop Logging option.
#2915: (174) Display units in simulator channels list.
#2948: Default to ascending sort mode in channel selection dialog.
#2727: Option to sort sensor library list, defaults to ascending order.
#UT: Fixed missing header text on channels tab channel list.
================================================================================
Version 2.0.32 - 08 May 2019
================================================================================
#2796: Colour Picker: Single-clicking a swatch now selects colour in the list.
#2932: Improve error message if connection to data analysis telemetry fails.
GDA 4.01.89+ in admin mode will now allow connections from non-elevated
processes.
#2642: Simulator: Use momentary button for beacon input.
#2803: Firmware Upload: Filter file selector on *.bin.
#2645: Screen import confirmation: fixed handling of user choice.
#2780: (119) Screen Editor: Added Cut/Copy/Paste/Delete to context menu.
#2960: (182) Add filter channels to the monitor page. These will be hidden from
the monitor setup UI.
#2895: Value display off the screen area crashes the simulator.
#3073: (191) Lap timing setup: Default to GPSi channels.
#3071: (189) Tentative fix for buttons hidden on CAN tab.
#2884: (160) Simulator: Fixed setting A2D channels that are actually GPIO pins.
#3072: (190) Fixed bounds calculation for needle gauge to avoid setup check
error. Needle gauge now draws the bounds when selected and the path/limits
of the pointer.
#2643: (61) Paste of gauge when a group is selected now inserts after the group
instead of inside it.
#2914: (173) Value gauges now base their display value in the editor on their
format text unless a preview value is given.
#UT: Updated AEM codriver setup validation as it was based upon old
version of DDv1 and was not triggering timer start/reset from long
press/hold events.
#UT: Updated simulator shell image.
#UT: Fixed column sizes in alarms list.
================================================================================
Version 2.0.31 - 25 April 2019
================================================================================
#2985: Reorder channel types and names + default to Function type.
#3005: Corrected input timeout fallback filter - both parameters were called
fallback whereas one should be called timeout value.
#3069: Fixed crash setting lat/lon channels in lap timing setup in some cases.
Fixed more general issue relating to #3069 regarding filtered channel lists
which could result in setup validation errors and incorrect automatic
adjustments to the setup.
#3070: Fixed bug when normalizing alarm page trigger input reference indices -
which was leading to an unwarranted setup check error.
Setup export: fixed issue where incorrect bitmap selector image could be
displayed for selectors that do not have an input assigned.
Setup check: Added checking that graphic selectors are assigned an input.
Updated sensor library.
#3048: Allow program to run if unsupported help ids are specified.
Do not fail setup upload if get logger info request fails due to old bootloader.
================================================================================
Version 2.0.30 - 03/04/2019
================================================================================
#UT : Correctly demangle Simulator protected CAN IDs - previously extended
protected IDs did not work in the simulator.
================================================================================
Version 2.0.29 - 01/04/2019
================================================================================
#UT : Run simulator plugin with highest version number.
================================================================================
Version 2.0.28 - 01/04/2019
================================================================================
#UT : Prevented Long variable string types from being exported to raw file.
This maintains backwards compatibility with older firmware.
#2969: Fixed bug in simulator where protected CAN IDs were incorrectly mangled
which prevented setups imported from aemcan files from working in the
simulator.
================================================================================
Version 2.0.27 - 20/03/2019
================================================================================
#2779: Paste Gauge: Offset pasted position if it looks like it is a duplicate.
#2822: (141) Change default names of z-order operations.
Added icons for z-order operations.
Setup Check: Fixed formatting of invalid math channel inputs error.
Setup Check: Check Alarm Page Trigger & fix problems to avoid Display/Sim crash.
Alarm Page Trigger: Could not set any items if no items already checked.
Fixed crash relating to cleanup of alarm trigger model.
Fixed undo/redo of alarm trigger model - if undo removed all items then
redo would not update the trigger list.
================================================================================
Version 2.0.26 - 13/03/2019
================================================================================
Rework of UI to move gauge palette underneath gauge structure tree. The
screen preview tab has now been removed and the screen picker now displays
an overlay panel for the purposes of selecting the screen to edit. Also
accessible via ctrl-tab. The mouse wheel works on the button also.
#2933: (176) Disable bold/italic buttons in font selector if int {Multiple} mode
to avoid setting invalid fonts on gauges and resulting in failure.
Internal: SCM Index debug symbols + add to symbol store.
Changed save/discard dialog to a task dialog.
Fixed issue with scrollbar not showing on property form in some cases.
Fixed some issues setting up channel/gauge filters resulting in loss of items
from the filter list.
Support input filters on all gauges.
Changed input filter property to pop-up a dialog in order to take up less
property form real-estate.
Moved refresh button on setup check view.
Click-outside of autohide popup window will now immediately dismiss it -
setup check view in auto-hide mode would otherwise get in the way of the UI.
================================================================================
Version 2.0.25 - 08/03/2019
================================================================================
#2173: Screens Tab: Add data filters at point of use in the gauge.
Implemented filter chain optimizer to share identical filter chains when
exporting the setup for the display.
#2908: Channels Tab: Fixed update of sensor view when changing selection if
sensor type did not change.
Fixed missing undo scopes when modifying channel linear scaling options.
Fixed issue where setup checker would remove sensor template if channel
switched to a library sensor.
#2860: Setup Validator: Validate that Needle gauge can't result in out of
bounds rendering.
#1022: Add support for bold + italic fonts.
#2913: Added setup check algorithm to fix button events on screens.
#1035: Include more detailed error messages for invalid format strings. Added
checking of format strings to setup checker.
#2918: Right click on screen view should focus it to ensure the correct menu
items are enabled.
#2919: Fixed Paste Sensor feature.
#2912: Releaser: deal with multiple architectures better (x86+x64).
================================================================================
Version 2.0.24 - 04/03/2019
================================================================================
#2903: (169) Display base units for CAN channels in CAN Receive grid. Renamed
column to "Base Units" to make the intent clearer.
#2898: Fixed (166) Predefined GPS channels are not available for selection on
the GPS Setup tab.
#2907: Fixed crash loading some setup files that contain invalid references.
Modified help file path.
Use a docked window for the setup checker.
Load/save workspace config (now also remembers undo history docking config).
================================================================================
Version 2.0.23 - 22/02/2019
================================================================================
#2716: For all gauge properties sidebars, moved input channel/preview below
the gauge name.
#2671: Make it clearer if inputs to gauges are not hooked up.
#2889: Improved cleanup of invalid references. Affects lap timing setup,
on change triggers, alarms.
Invalid alarms result in errors being reported by the setup checker.
#2882: Enable lap timing mode when loading setup.
#2880: Validate text gauge alarm colour - insert if missing.
#2871: Tentative fix for unresponsive UI in upload setup dialog.
#2874: Fixed handling of alarm leds which could have resulted in them not
functioning on the display. Added unit tests.
#2868: Graphic Selector setup: fixed count adjustment which would add 2 items.
#2872: Fixed crash setting colour map property.
#2883: Fixed crash entering duplicate name in CAN grid.
#2890: Fixed max font size in font picker.
#2881: Setup check - remove unused font tables. These are always re-generated
when uploading to the display and do not need to be saved to disk.
#2214: Setup validation - largely complete, retargeted to 2.0.x.
#2723: Change order of gauges in gauge picker grid.
Fixed selection tracking when toggling predefined channels in channels tab.
Setup Check: remove unreferenced auto-defined sensors.
If removing Left/Right LED alarm, also remove its associated sensor.
Added option to associate *.aemcd7 files in the installer.
Enabled extended selection in CAN grids.
Added more stringent checks on undo scope use.
Fixed crash if item selected in logging list and a new setup is loaded.
Fixed crash in bitstring editor if redo causes item deletion whilst grid
editor has focus.
Fixed a number of issues in bitstring editor when tabbing through the grid to
edit/add items (editor would be destroyed).
Rewrite of bitstring data model.
Fixed incorrect event type for idle/updateui events.
Use default warning colour when setting Alarm colour mode on text gauges.
Only show colour mode properties that are applicable to the selected mode.
Validate warning colour for value gauges in limit mode.
Indicate if automatic fixes were applied in the undo history.
Categorise Auto_Shift_Light_* channels as predefined.
If input is removed from a gauge, do not rename it - it is handy to be able
to see what used to be hooked up to the gauge.
Improve defaults for filter parameters.
Update text of filter picker if changed.
Added refresh button to setup checker.
================================================================================
Version 2.0.22 - 20/02/2019
================================================================================
#2236: Filter selector.
#2237: Add data filters to outputs.
#2875: Remove Legacy DD1 Graphic Selectors from main channels list.
#2873: Remove alarm page trigger mux when it is empty to avoid problems.
Setup Checker: If empty event mux channels are detected at startup, remove
them and post a warning.
Refactored code dealing with event triggers (Alarm Page Trigger + On Change Page
Trigger).
Show tooltips in undo history view where text is often too long to fit.
Fixed bug in unique name generator + added additional unit test case.
================================================================================
Version 2.0.21 - 19/02/2019
================================================================================
#2724: Changed icons for bar gauges and needle.
#2849: Add unit preferences button to toolbar & menu.
#2861: CAN tab - changing channel units should change the base units instead
of setting an override.
#2848: Unit preferences: make global override optional. Existing setups
default to OFF, new setups default to ON.
#1063: Added check/fix when opening setup to prevent circular references in
outputs and dangling input references.
#2214: Setup Validation - main UI for listing errors with double-click
/ return key to goto location.
#2845: Prevent removal of predefined channels with error message if attempted.
#2807: Implmented "Download From Display" feature.
#2809: Enable text-based channel calibration for CAN channels (+ copy & paste).
#2789: If internal left/right LED alarms are blank, remove them to avoid the
physical LEDs on the display being forced to ON.
#2854: Fixed units name for volume:cm3/min.
#2831: The properties in the Needle item lacks boundary checking.
In general changed the way some integer based properties are dealt with to
also limit to the maximum range of the underlying storage. This
means that such properties now display as a spin box.
Draw needle gauge centre.
Only create one instance of the shift light setup manager - avoids the
possibility of its validation step appearing in undo history.
If loading an old setup that defines special LED alarm names then rename the
extant outputs rather than modifying them.
Prevent user setting invalid channel names - either because they are predefined,
empty or would result in a duplicate. Displays an error in such cases and
reverts the change.
Added back missing 'Limit' option for value gauge colour mode.
When preparing setup for the display, delete maths outputs with dangling sources
which are capable of crashing the display firmware.
Refactoring of setup preparation process.
Added help id: AppMainFrame/displayTypeSelector.
Reduce flicker when switching between channels on channels page.
Fixed 'advanced' mode for text channel editor (check box would be immediately
cleared when trying to set it).
Update unit preferences editor upon undo/redo.
Added option to select SI/US presets to unit preferences dialog.
Removed general preferences menu item for time being as there is nothing
to configure yet.
Changed unit preferences icon.
Removed extraneous separator from Configure menu.
Added confirmation dialog when enabling auto-units.
Improve colour consistency of gauge icons.
================================================================================
Version 2.0.20 - 13 February 2019
================================================================================
#2821: Fixed bug when copy/pasting groups which could lead to it looking like
screen import was broken.
#2842: Fixed strange characters appearing in Gauge tree. Also fixes a similar
issue in CAN DBC import. A related class of errors also found + fixed.
#2804: Closed: Removed 'Direct' option from text gauge colour mode as this
is only supported on CD4X cores.
#2846: Fixed broken grouped gauge inputs wheen running on display.
Fixed crash dealing with input modifier chain when no input is selected.
SetupChannel: fixed some possible issues in paste sensor function
(prevent merging, avoid modifying caller value).
Fixed bug when adding some types of channel with unicode names.
Resolved a number of issues with implicit string codepage conversions, will also
fix some as-yet unseen issues with filepaths.
Refactored code dealing with format strings.
================================================================================
Version 2.0.19 - 12 February 2019
================================================================================
#2725: Help IDs: Support
and ignore other formatting.
#2802: Simulator: handle GPIO pullups.
#2820: Only offer 'output' channels in input selectors.
#2733: Fixed size properties for limiter & round tacho gauges.
#2729: Fixed validation of bar tacho segment size + default label frequency.
#2786: Remove graphic selectors & warning text items from the Channels list.
#2734: Fixed typo in default splash screen text.
#2830: Install & pick up OBDII definitions in ProgramData instead of %AppData%.
#2810: Shift light legend column could have zero width.
#2832: Invisible Global Unit Preference Descriptions column.
#2804: Changed name of 'Direct' property in Warning gauge.
#2801: Channels tab: Exclude selected channel from primary input selector.
#2806: Fixed crash editing a graphics selector name.
#2811: Fixed issue assigning channels to Graph gauge lines.
#2715: Added editing of CAN channel display units from channels tab.
#2804: Colour Map setting on alarm bar (Warning Gauge). TODO: apply to other
applicable gauges.
Channel base units are now displayed below the display units where applicable
and have been removed from individual sensor editing forms.
Changed priority of unified channel collapsing to favour units override channel
over sensor output channel.
Display units in channel selectors & elide when editing text.
Prevent Ctrl-A accelerator key from overriding default text edit select all.
Fixed some issues relating to undo & Graph gauge state.
Apply minimum column size to grids and prevent dragging of grid headers
from setting column widths to zero.
Refactoring & simplification of Channel classification & filtering mechanisms.
Only show outputs in Channel:Primary Input.
Added internal flag to identify 'ordinary' channels.
Implemented much faster algorithm for generating unique names that only does a
single pass over the setup.
Modified filtering rules for outputs and sources.
Improved debug visualization of channel flags.
Title bar colour for undo history window.
Fixed button icons/appearance on undo history window.
Handle DPI in title bar of undo history window better.
Fixed crash when drag-docking undo history window.
New docking HUD icons / layout that works better on high DPI screens.
Do not include background property for value gauges.
Changed column resize mode for warning text setup grid.
Check for circular references when setting the primary source on a channel
to avoid later stack overflow.
Show tooltips on property form checkboxes and editors that do not already have
a tooltip.
================================================================================
Version 2.0.18 - 07 February 2019
================================================================================
#2726,#2736,#2737,#2738,#2752: Mitigate resizing bug as a result of KB2664641.
#2788: Removed duplicate 'Signed' checkbox from non-linear channel scaling setup.
#2728: Width property for Warning gauge.
#2733: Changes to width/height gauge properties were not being applied.
#2735: Do not display hidden / event gauges.
#2731: Changing name of channel should propagate to gauge names where
applicable.
#2747: Validate position of graphic gauge when the image is changed to avoid it
being placed off-screen.
#2790: Allow alarm inputs to be selected for value gauges,
Allow Warning Text inputs to be selected for text gauges.
Added option for loading of JPEG images.
When opening images that are larger than the screen, offer resize.
Show busy cursor when generating preview in graphic resize dialog.
Changed column title for Warning Text Channel list.
Installer - fix start menu / desktop links.
================================================================================
Version 2.0.17 - 06 February 2019
================================================================================
#2800, #2732: Fixed delayed crash when modifying line count on graph gauge.
Splitter views: Fixed broken minimum panel size since v2.0.16.
Adjusted the way page container panels are sized - based upon client size
rather than window size due to possible alternate path through
UI framework deferred resize handling.
Page container: avoid initial internal page sizing until a resize event has
occurred on the parent container.
Changed column resizing mode on CAN grids and Logger grid.
#2703: Installer: Visual studio runtime issues:
Installer now limited to Win7 SP1.
quiet + norestart options applied to installs.
Improved checks for whether or not runtime should be installed.
Updated CRT installer version.
================================================================================
Version 2.0.16 - 02 February 2019
================================================================================
#2718: Screen Import: Confirm overwrite of screen if not empty / default.
Reduce compute cost of loading setup when purely for screen preview purposes.
Views with many screen previews could lock up the UI. Updates are now
throttled back in a way that reduces load on the UI.
Screen preview lists: track the originally selected items when the list is
asynchronously updated.
Modified the way splitter windows size their panes to avoid negative sizes.
Added additional debug instrumentation to splitter class.
Build: run autover to insert correct build date etc in application resources.
Fixed some possible issues identified through static analysis.
================================================================================
Version 2.0.15 - 01 February 2019
================================================================================
Fixed bug copying function tables to clipboard (all sites would have the same
value).
Fixed bug pasting function tables from clipboard (paste sensor) where
existing function table elements were not removed first.
Include help ID for "hexadecimal ids" checkbox.
Fix help IDs on the CanPortPanel.
Installer: fixed source path for user app data files.
Fixed crash during OBDII import.
Pipe wx log messages to application log file.
Fixed seemingly benign error regarding bitmap handle during splash frame
creation.
Fixed winapi warning in PropertyForm constructor.
Added verbose logging to investigate resize issue.
================================================================================
Version 2.0.14 - 16 January 2019
================================================================================
#1050: Bitmap thumbnails when selecting bitmaps via properties.
#2201: Graphics Tab - Graphics Library (completed merge function).
#2203: Graphics Tab - Graphic Selector Setup.
#2549: CAN message view - tool-tips when hovering over signal.
#2548: CAN message view - deal with overlapping labels.
#2186: Add Display type selector.
#2394: Improve consistency of property editor appearance - now using windows
edit border theme in some places which now also changes colour if focused.
Internal: Modified the way grids update column header sizes.
Added ability to vertically center text in single-line text edit controls.
Rework of the way channels are selected via channel picker and represented in
properties.
Fixed issue relating to undo of creating text-based channels or graphic selectors.
================================================================================
Version 2.0.13 - 20 December 2018
================================================================================
Handle unicode better when exporting to the display. Export will attempt to
use an existing codepage if possible otherwise it will create a custom
codepage for the font table. Emoji now supported ;)
Run help-ids through translator so any defaults get translated.
#2653: Translate strings in enum based property editors.
#2636: Reworked the way channels are selected for gauge inputs. It was possible
for source channels with the same name as outputs to be selected. This would
not run correctly in the display following setup export.
e.g. Battery Volts (Internal).
#2226: Simulator: Input stimulus: completed.
Implemented UBLOX GPS simulation (Enables GPSi channels to work in simulator).
Filter out channels that cannot be simulated/displayed.
Multiplexed CAN outputs now work in simulator.
Text lookup channels now working in simulator. There was an issue in the
editor which would add multiple types of bitmask and would prevent the
display functioning correctly.
Fixed issue regarding import of OBDII standard can IDs from pidscan file.
Implemented single frame OBDII outputs in simulator.
Rounding of can dbc + analogue simulator values.
#2296: Fixed preview colour of warning gauge in direct mode.
Store editor version in setup.
#2644: Screen Editor: Fixed arrow keys when snap enabled. Ctrl-arrows now also
moves gauges by single pixels even when snap enabled.
#2650: AEM: do not auto add some sms/codriver associated outputs normally
associated with other display types.
Display error message when property errors occur.
Bar 'fill from center' property no longer in 'preview' category.
Fixed incorrect scaling of gauge border drag when zoomed in on screen editor.
#2641: Made rendering of bar tacho more like actual display.
#2655: Added properties to bars/tachos for smooth edges / separator bars as
appropriate.
Implemented preview value for bar tacho gauge.
#2638: Fixed exception adding key events (could happen importing screens).
#2639: Open setup dialog now displays file notes.
Implemented get/set of notes on setup files.
Added screen preview to open setup dialog.
Separated settings for open/save setup dialogs.
#2196: Setup Tab - Lap timing setup.
#2198: Setup Tab - page select source.
#2199: Setup Tab - Night mode.
#2200: Setup Tab - Monitor page setup.
#2197: Setup Tab - Odometer setup.
#2651: Fixed typo 'Unroup' => 'Ungroup'.
#2640: Fixed backspace key in setup file browser dialog. Generally affects all
menus which may have had a name that could be translated to an accelerator.
#2648: Add ability to hide predefined channels on simulator.
Added hover images for start/stop buttons in simulator.
Fixed issue in word-based translator with unicode characters.
#2240: Program Clock feature.
Added Tools>Firmware Upload.
#2239: Scan Vehicle OBDII procedure.
#2547: Fixed tabbing through grids with checkbox cells.
#2678: Escape key should close grid editors.
#2637: Import Screen: default value form Tag Filter should be None
Modified tag filter setup to include 'enable' checkbox. Persistence of tag
filters now works correctly.
Changed the way tag filter item count is displayed to avoid horizontal
scrollbar in tag filter list.
Added alternative syntax for sensor library attribute values (will make
embedded html more pleasant to write by hand).
#2654: Sensor library: support basic html formatting.
#2478: Added Interpolated + Signed options to function tables + setup export.
#2201: Graphics tab - graphics library. (incomplete - merge function requires
choosing which image to merge).
================================================================================
Version 2.0.12 - 03 December 2018
================================================================================
Simulator: Send all valid CAN data after starting firmware and every 500ms.
(Changed values are sent ASAP).
Modified layout of simulator tab to work better on smaller screens.
Implemented zoom/auto fit.
================================================================================
Version 2.0.11 - 29 November 2018
================================================================================
Simulator fixed abort when changing pages on some setups.
Implemented non-linear (function table) forward/inverse for simulator channel
values.
Fixed FunctionTable::rawFromReal (inverse lookup).
Editing/display of text based channels in simulator channels list.
Avoid duplicate names for auto-generated channels (e.g. hidden raw value outputs).
Fixed some issues relating to Text based channels not being unified with their
auto-generated raw channel correctly.
Reworked the way unified channel cross references are stored in setup files
to prevent circular output references being generated in DDv1 setup export.
Fixed some issues relating to replacement of channel references in gauges when
changing output sensor types / overriding units.
Update all rows of simulator channel list upon receiving telemetry.
Display warning text in simulator channel values list.
Fixed simulator handling of standard CAN IDs.
Simulator button presses can now handle long-press. Note - very short button
presses MAY get missed by the display.
================================================================================
Version 2.0.10 - 28 November 2018
================================================================================
Fixed a number of possible crashes relating to channel references.
When adding channels to channel list, create it with a linear scalar by default
which allows the channel type to be changed.
When tracking selection on sorted grids, ensure the selection remains visible if
already visible.
Stop the simulator if the setup is modified.
Fixed: Manually added CAN channels should not be editable on the channels tab.
Connect to data analysis cursor / log playback. Requires version 4.1.73+.
================================================================================
Version 2.0.9 - 27 November 2018
================================================================================
#2225: Simulator Tab.
#2230: Simulator: Ignition Switch => Start/Stop buttons.
#2220: Simulator: display presentation.
#2215: Simulator: build / install / load / release simulator components.
#2221: Simulator: buttons.
#2219: Simulator: programming of setup direct to NAND.
#2224: Simulator: Outputs list [partial implementation]
#2232: Simulator outputs: Display calculated alarm state.
#2223: Simulator: Alarm/shift lights.
#2185: Logger Tab.
#2194: Setup Tab - Shift lights including Auto setup.
#2195: Setup Tab - Brightness control.
#2351: Code simplifications.
#2558: Fixed slow scroll speed on the screen preview list.
#2575: Round tacho size is incorrect after loading setup.
Upgraded to Visual Studio 2017
Upgraded to wxWidgets 3.0.4
Upgraded to boost 1.68
================================================================================
Version 2.0.8 - 26 October 2018
================================================================================
#2188: CAN Tab - CAN Receive channels.
#2190: CAN Tab - Request message tab.
#2181: Alarms Tab - Initial creation.
#2182: Alarms Tab - Alarm setup inc warning light selection.
#2183: Alarms Tab - Warning Message Setup.
#2316: Imported outputs from DBCs should store comments and use them for
tooltips.
#2523: All/Any option for tags filter in screen library.
#2041: Implemented config file handling for fonts that require cleartype.
#2508: Add additional screen validation items.
#1023: Implement snap to grid.
#1079: Add ability to set grid size for snap to grid.
UT: 64bit version of application.
UT: Fixed stale images appearing from prior loaded setup in screen preview list.
UT: Fixed issue with gauge position properties not updating when moved.
UT: Fixed issue drag-resize of top-left corner of gauges.
================================================================================
Version 2.0.7 - 12 September 2018
================================================================================
#2158: Screen Library (Import Screen).
#2486: Move over to Emerald v5.
#2170: Added splash screen duration property.
#2171: Screens Tab - Alarm page customisation in right hand side bar.
#2167: Duplicate Screen feature.
#UT: option for minimum decimal places in property editor.
#UT: Fixed update of screen page properties after undo/redo.
#UT: Default name for Alarm / On Change screens.
#2235: Channel List Selector.
#2172: Screens Tab - On Change Page Config in Side bar.
#UT: Added unit km/s.
#UT: Persist size/layout of setup file browser window.
Fixed undo/redo when consecutively inserting same value ID into two different
setup nodes during an undo scope.
Fixed issue with selection state update following undo/redo.
Fixed issue with selection state following group/ungroup and undo/redo.
Fixed crash with property form update following gauge deletion in some cases.
Fixed issue with center justified text gauges following undo of delete.
Fixed crash during stack unwinding if exception is thrown opening a setup.
Fixed issue with creation of units channel incorrectly setting up references
for the sensor channel, leading to multiple ':Sensor' extensions on names
appearing in the unified channel list.
Fixed crash if channel with a linear scalar editor is selected followed by
opening another setup and selecting a channel of the same style.
Fixed formatting issue of some messages in application log.
================================================================================
Version 2.0.6 - 20 July 2018
================================================================================
#UT: Fixed a couple of issues in the installer.
#UT: Display pixel position of mouse cursor in status bar.
#UT: Fixed issue with position of static text labels when justified.
#UT: Don't store width/height in setup for text gauges.
================================================================================
Version 2.0.5 - 20 July 2018
================================================================================
#2080: Channels Tab.
#2174: Channels Tab - Basic Properties.
#2175: Channels Tab - Channel type selector.
#2176: Channels Tab - Add Linear channel configuration.
#2177: Channels Tab - Add 2D lookup channel configuration.
#2179: Channels Tab - Channel Based Text setup.
#2178: Channels Tab - Add Sensor Library.
#2161: Overridden per channel units & hidden automatic scaling chain.
#2159: Unit preferences.
#2247: Added COM automation interface.
#2142: Automated Release: Integration tests as precondition to actual release.
Added some integration tests, including testing that setup file opens.
#2392: Gauge groups should be re-namable.
#2393: Fixed regression in colour properties.
#2376: Screens should be renamable.
#2377: Grouping a large number of gauges should avoid updating UI until complete.
#1011: Add cut and paste support for function tables in editor.
#2442: Optimized slow startup time due to new changes - much faster lookup
all references to a particular setup item, amongst other optimizations.
#UT: Add justify property to text gauge.
#UT: Display {None} for NULL item in channel picker popup. Added custom
sorting policy so the null item is always at the head of the list.
#UT: Fixed bug in handling of cached location path following undo/redo of
item insertion/deletion.
#UT: text value gauge should have justify instead of direction property.
#UT: justify property was not being loaded correctly for some gauges.
#UT: Improved feedback when dragging gauges.
#UT: Added copy/paste of sensor values (precursor to #2178 sensor library).
#UT: Fixed some issues with property editors - in particular following
redefinition of properties was not working correctly.
#UT: Fixed enable state / disabled bitmaps on toolbar.
#UT: Fixed issue with update of resize handle geometry in some cases.
#UT: Fixed movement of gauges with arrow keys.
#UT: Fixed issue with positioning of selection handles when zoomed in on screen.
#UT: Major rework of setup model structure & change notifications.
================================================================================
Version 2.0.4 - 15 June 2018
================================================================================
Milestone: Dash Design Development Build 2
#2162: New help / string resource system generated from inline code comments.
#2082: Program display with setup.
Firmware upgrade checks + firmware upload,
RAM size warning,
Original setup upload,
Logger setup upload,
Device Selection UI
Upload UI,
Async driver back-end.
#2065: Gauge Groups: display properties from sub-objects where appropriate.
Edit properties for multiple gauge selections.
#2322: Gauge Toolbox: Use icons instead of renderings of actual gauges.
#2321: Gauge Toolbox: if text does not fit then reduce column count.
#2320: Horizontal resize of PropertyForm does not resize the contained controls.
#2242: Lock Layout function (menu + toolbutton). Also added warning overlay to
screen editor.
#2314: Update gauge names for all screens following load of setup to avoid
later updates appearing in the undo stack.
#2166: Clear Screen (added as menu & context menu option).
#2068: Drag/Drop of groups in GaugeTree should not collapse the group.
================================================================================
Version 2.0.3 - 08 May 2018
================================================================================
Milestone: Dash Design Development Build 1
#2035: Implement missing gauges.
#2076: Auto-generate Gauge names from main value + type.
#2077: Gauge inputs should use a picker control instead of text edit.
#2234: Channel Selector Property.
#2072: Fix high-dpi issues & icons in file dialog.
#2302: Fixed issue with gauge size reducing by 1 when starting a drag resize.
#2042: Escape key should cancel drag/resize.
#2093: Fixed scrollbars on dash editor window.
#2312: Handle bitmap gauges that use a bitmap selector output correctly.
Added preview value to bitmap selector.
Fixed issue with 'corrupted' repaint during scrolling of dash editor.
#2078: Fixed scrollbar on property form - sometimes it was not being set up when
adding/changing view to one with many properties.
Scrollbar set to always visible to avoid controls changing width (avoids
issues editing spinbox values that could change the number of properies
displayed).
#2310: File filter for browse setup dialog not defined. Also does not set
extension of save file if not specified.
Fixed: Reversed logic for save action operating as save-as without existing
filename.
Fixed: Expire gauge properties when gauges are destroyed in case of retained
shared references.
Use null padding in alignment offset for font tables in display binary export.
#2039: Graphic::convertTo16bpp().
================================================================================
Version 2.0.2 - 16 March 2018
================================================================================
#2090: Raise/Lower functions for Gauge z-order management.
#2100: Add an 'UnknownGauge' type for gauges that DashDesign doesn't know how
to deal with.
Fixed issues when undoing a gauge deletion due to a bug in Emerald4.dll.
Reworked internal notifications of structural/value changes arising from
undo/redo.
Implemented selection change undo.
Stability & performance fixes.
Bootstrap/build/release automation.
================================================================================
Version 2.0.1 - 21 February 2018
================================================================================
#2074: Undo (incomplete).
#2089: Cut/Copy/Paste Gauges and Groups.
#2066: Fix resize behaviour following addition of a gauge (e.g. HS Bar Tacho).
#2067: Fixed resizing of multi-level gauge groups.
#2075: Fixed problem selecting gauges when zoomed and translated.
#2070: Moving gauges and groups in the GaugeTree should update their ordering
in the emerald file.
#2069: Groups are now placed in the correct place fllowing load of setup.
The way groups are implemented has changed slightly & empty groups are now
potentially allowed.
Unit testing / fuzzing of GaugeModel + optimizations.
FontMetrics: added caching of metrics implementation to improve performance
(including unit test performance).
Gauge: removed name generator as this will not be required an was causing
performance issues in unit tests.
================================================================================
Version 0.0.0 - 09 February 2018
================================================================================
Initial Early Alpha Preview.
================================================================================
End of File
================================================================================
The display setup file contains all the information needed to configure a colour display including connection definition, channel calibration and screen layout.
The Display Module can be connected to other ECUs via CAN bus.
Display Modules also have a range of analogue and speed inputs for interfacing directly to sensors.
Dash Design supports multiple display types and setup files have file names of the form
To create a new display setup, select from the File Menu and then select a display type from the list.
When creating a new setup it is generally best to start with the data model.
Most display setups will require acquiring data from the outside world via physical inputs such as Analogue Inputs or via CAN messages. Once data acquisition is configured then it will naturally drive the screen design process.
It can be useful to create some test screens while configuring inputs to check that data is being acquired as expected by the display.
Analogue Inputs (Analogue to Digital Converters, ADCs) are predefined Channels and will generally be scaled in Volts. Check your display pin-out to identify the analogue channels that are connected to sensors.
Create new Channels on the Channels Tab that use these Analogue Input channels as their Primary Input and apply any required scaling based upon the data-sheets for your sensors. There may be existing preconfigured sensors in the Sensor Library Channel that match.
Configure the CAN bus to ensure that it is running at the correct bit rate: CAN Bus Configuration .
Define CAN channels on the CAN Receive . This process can be simplified if a Signal Database (DBC) files are available (or can be created) for the modules you are connecting to - see CAN Signal Database (DBC) Import .
For an overview of CAN in general, see CAN Message Overview .
So that you can switch screens / pages on the display, decide how page switching will work; Is this from an analogue input (e.g. a rotary switch) or from a CAN message? Some displays may have predefined inputs like rotary switches. Configure the page select input here: Page Select .
It may make sense at this point to define any logic channels or notifications for things like warnings for out of range conditions.
If vehicle speed related functions are required, set up the predefined Speed Input. Setting up the Speed Input will also enable the non-resettable Odometer function. See Speed / Odometer / Trip
You may also want to configure the beacon input at this stage to enable lap/stage timing. See Lap Timing / GPS . Before configuring Lap Timing, configure the Speed Input (Speed / Odometer / Trip ).
If the Display Module supports on-board logging, logging can be configured on the Logger Tab . This may be useful whilst configuring the data model; data logs may be analysed to check that inputs are behaving as expected and have correct scaling.
If using a heavily image based setup, you may want to import image assets for use in screen designs at this point. See the Images Tab .
Some images may be configured to switch between various visual states based upon the value of a channel (e.g. for a battery warning light). See Image Selectors Tab for information on how to configure this.
Once input channels and image assets are prepared, screens can be designed to display data with gauges on the Design Tab .
If a simulator is available for your display, then it may be simulated on the Simulator Tab so that screen layouts can be tested before the more time-consuming process of testing on the real Display Module.
A Dash Design setup primarily consists of Channels and Gauges.
Channels are comprised of Sources, Outputs and Sensors, though much of this structure is not separated in the user interface. A CAN signal for example will have a raw ‘source’ that is used for acquiring the channel data and an ‘output’ which is associated with a sensor for scaling the raw data. Logically, the ’type’ of a channel is the associated ‘sensor’ type and the raw source is an implicit input to the ‘output’.
Non-visual objects that define how data is obtained from an external source such as CAN bus, a digital input or an A/D converter. Sources can be internal to to the display such as CPU temperature.
Non-visual objects that obtain information from one or more sources or other outputs. An output manipulates the obtained data according to the sensor associated with the output. The result can then be used in a Gauge or another Channel.
Non-visual objects that define how the data is manipulated by an output. Examples of sensors are linear scalars, function tables or text tables. Sensors are selected and configured by changing the ’type’ of a Channel.
Visual objects that are placed on a screen page. There are two types of gauge; static and dynamic.
Static Gauges do not change their appearance on the screen and include gauges such as Label Gauge , Shape Gauge or Image Gauge .
Dynamic (Variable) Gauges change their appearance to reflect data obtained from channels. Examples of variable gauges are Bar Gauges , Tacho Gauges and Value Gauge .
The following diagram shows the relationship between sources, outputs, sensors and gauges:
In this example, the raw RPM value is passed to the scaled RPM output which uses a scalar sensor to provide its’ output. This is passed to both a bar tacho gauge (which displays the RPM) and the oil pressure alarm output. The oil pressure is obtained in a similar manner and passes its’ output to a bar gauge (which displays the oil pressure) and the oil pressure alarm output. The oil pressure alarm output uses the alarm sensor and its’ two inputs to generate an output used by the warning gauge to signal low oil pressure, eg Oil Pressure is less than 2 and engine RPM is greater than 500.
To Open an existing colour display setup:
Recently opened or saved files can be accessed from the sub-menu File | Recent Files.
If the editor is in Locked Layout mode, only certain gauge properties can be edited and the gauge positions are fixed to prevent accidental editing.
Layout Locked mode can be toggled by selecting or by clicking the Edit Layout icon at the top left of the screen design area.
To save a setup under a new filename, select Ctrl + Shift + S, enter a file name in the file save dialog and click the Save button.
To save a setup with the current name, select Ctrl + S.
If a setup or Dash Design is closed and the setup has changed since the last save, a prompt will appear asking if the changes to the setup are to be saved. Select Save As to save the changes (possibly with a new file name), Discard to abandon the changes or Cancel to return to editing the current setup.
Uploading a setup programs the current setup into the Display Module.
View the Setup Checker to ensure there are no setup errors or warnings prior to programming the setup.
See Setup Checker
Ensure that the Display Module is attached to the PC. Ethernet based Display Modules may be attached directly to the PC with an ethernet cable or to a Local Area Network (LAN).
Display Modules that connect using USB should show a special screen once attached to the PC.
Select F7. A dialog will be shown to allow selection of the Display Module that should be programmed:

Upload Setup Dialog
Select the Display Module to be programmed from the list. Typically there will only be one so the first item is selected by default.
Depending upon the type of Display Module, there may be the option Upload Original Setup. When programming displays, the setup file is compiled into a more compact format that is understood by the display. If Upload Original Setup is checked, then the original setup file will also be programmed into the display to allow later recovery of the original setup used to program the display from the Display Module itself using the command .
Click the Upload Setup button to begin programming the setup into the display.
The progress of the procedure will be shown, along with a log of messages:

Upload Setup Progress
If the process fails, refer to the message log as it may identify the cause.
Once the programming is complete, the Display Module may be disconnected from the PC. For USB connections, detaching the USB cable should cause the setup to run on the display.
Over time, updates to the Display Module firmware may become available that resolve bugs and add new features.
Dash Design may be used to re-flash the Display Module with new firmware.
Ensure that the Display Module is attached to the PC. Ethernet based Display Modules may be attached directly to the PC with an ethernet cable or to a Local Area Network (LAN).
Display Modules that connect using USB should show a special screen once attached to the PC.
Select . A dialog will be shown to allow selection of the Display Module that should be programmed.
Select the Display Module to be programmed from the list. Typically there will only be one so the first item is selected by default.
Select a firmware file using the Firmware Filename picker. File paths can be pasted here or browsed using the … button.
Click the Upload button to begin programming the firmware into the display.
The progress of the procedure will be shown, along with a log of messages.
Do not switch off the Display Module during the programming procedure as this may corrupt the firmware.
If the process fails, refer to the message log as it may identify the cause.
Once the programming is complete, the Display Module may be disconnected from the PC to reboot it.
During the course of editing a setup, graphic images may be added to the setup and as images are replaced or no longer required, the unused image files may be left stored in the setup, increasing both the size of the setup and the uploaded setup.
To remove unused images from the setup, see Images Tab (Delete All Unused).
Removing unused images does not remove them from their original location on disk.
When an image (e.g. a bmp, png or jpeg file) is added to the setup, a copy of the original file is embedded in the setup together with the path to the original file location. This allows for the original bitmap to be updated and the bitmap in the setup to be updated by clicking the reload button.
When setups are shared with other users, the original bitmaps may not be present on the new users computer. The export function allows images to be exported to the new users computer. In addition, the path can be updated to point to the new location.
To export images, see Images Tab .
Setups may be saved to files that are locked from editing and may only be programmed to displays. Locked setups include thumbnails of screens for preview purposes.
To export a locked setup, use the command.
Locked setups may be loaded into Dash Design and programmed with F7.
Locked setups have the file extension .gddp.
Some Display Modules support serial number locked setups. If supported by the display, check the Lock to Serial Number? box and enter in the display serial number.
Locked setups may have the original source setup file name included in the file. If desired, check the Embed Setup File Name box. The file name may be edited to remove any user information or it could be changed to a URL.
The original setup file may also be embedded in the locked setup file. If desired, check the Embed Source Setup File box. A password must be specified. The original setup will be LZMA compressed and AES encrypted with a key cryptographically derived from the password and a ‘salt’ value.
If the original setup file is embedded in a locked setup. The original setup file may be extracted from the locked setup file using the File Info tab which is available when the locked setup file is loaded into Dash Design.
The File Info tab provides information about the locked setup file. The File Info tab is only available when a locked setup file is loaded into Dash Design.
The File Info tab provides the following information:
| Field | Description |
|---|---|
| Setup Binary Checksum | Checksum of the setup binary data, this should match the checksum calculated by the display module when the setup is loaded. |
| Setup Binary SHA-1 | SHA-1 hash of the setup binary data. |
| Source Setup Name | The setup name set on the Setup Name |
| Source Setup File Name | The file name of the source setup (if any) embedded in the locked setup. |
| Source Setup File MD5 | MD5 sum of the setup file that the locked setup was generated from. |
| Source Setup File SHA-1 | SHA-1 hash of the setup file that the locked setup was generated from. |
Setup Binary Checksum may be used for scrutineering purposes to ensure that the setup file loaded into the display module has not been tampered with.
Setups may be saved to ‘raw’ setup files for programming with external tools. Raw setups can’t be opened or programmed from Dash Design.
If you want to make a non-editable setup that can be programmed with Dash Design, see Locked Setups .
To export a raw setup, use either the or command.
Use for tools that expect packaged raw setups (e.g. commissioning / programming tools). Packaged setup files include some additional information about the setup (e.g. Display Module type) that the tool can use for file validation.
Packaged raw setups have the file extension .rawsetup.
Use for tools that do not expect any setup packaging (e.g. an Display Module external simulator).
For external editing of setup files in a text editor or comparison using a merge tool, setups can be converted to an XML based format.
Use the and menu actions to export / import XML based setups.
The best way to get a feel for the XML format is to export a setup and look at the generated XML in a text editor such as VS Code.
Use a tool such as WinMerge to compare the XML files to see what has changed between versions of the file.
| Type | Name | Description |
|---|---|---|
| EventManager | Event Manager | Special channel type used by the display event system. Should not be used by any user-defined channels. |
| Scalar | Linear | A simple numeric value with linear scaling of the form Y = mX + b. |
| FunctionTable | Function | A table of values used to map input values to output values. |
| Bitmask | Bitmask | A channel that extracts a bitfield from a numeric value. |
| Logic | Logic | A channel that performs logical operations on input values to produce a boolean result. See Logic Channels Tab . |
| BitString | Text | A channel that maps input values to strings based on bitmasks and priorities. See Text Channel . |
| Text | Text | A channel that formats input values as text. Similar to BitString but matches exact values instead of prioritized bitmasks. |
| ComString | ECU Text | A channel that reads text from external input (e.g. CAN message). See ECU Text Channel . |
| Notification | Notification | Formats input value(s) as text. See Notifications Tab . |
| BitmapSelector | Bitmap Selector | A channel that selects a bitmap based on input values. See Image Selectors Tab . |
| ColourGradient | Colour Gradient | A channel that maps input values to colours, used as a filter for some gauge types that use a colour map. |
| Minimum | Minimum Since Reset | A filter that outputs the minimum value of the input since it was reset by an external event. See Filter Channel |
| Maximum | Maximum Since Reset | A filter that outputs the maximum value of the input since it was reset by an external event. See Filter Channel |
| Limit | Value Reject | A filter that rejects out-of limits values. See Filter Channel |
| RateFilter | Rate Reject | A filter that rejects values that change too quickly. See Filter Channel |
| TimeFilter | Rolling Minimum / Maximum / Average | A filter that calculates a statistic over a rolling time period. See Filter Channel |
| Average | Average Since Reset | A filter that outputs the average of its input values since the last reset event. See Filter Channel |
| ETA | Estimated Time of Arrival | Channel that calculates the time remaining to reach destination. See ETA Channel |
| Freeze | Freeze | A filter that holds the last value when in the frozen state (controlled by events). See Freeze Channel |
| Timeout | Input Timeout Fallback | A filter that provides a fallback value when its input times-out. See Filter Channel |
| ErrorText | Error Text | A filter that outputs a text message when its input is out of range. See Filter Channel |
| CalibrationFactor | Calibration Factor | A channel that applies a factor to its input value. See Calibration Factor Channel |
| DistanceCountdown | Distance Countdown | A channel that counts down from a distance value. See Distance Countdown Channel |
| Distance | Distance Trip | A channel that accumulates distance travelled. See Distance Trip Channel |
| Time | Time of Day | A channel that outputs the current time of day. |
| Fuel | Fuel Level | A channel that outputs the current fuel level. See Fuel Channel |
| Integrator | Integrator | A channel that integrates its input value over time. See Integrator Channel |
| Differentiator | Differentiator | A channel that differentiates its input value over time. See Differentiator Channel |
| Maths | Maths | A channel that performs mathematical operations on its input values. See Maths Channel |
| CDTimer | Countdown Timer | A channel that counts down from a time value. See Timers Tab |
| Stopwatch | Stopwatch | A channel that counts up from a time value. See Timers Tab |
| PerformanceTimer | Performance Timer | A channel that measures the time between two events. See Timers Tab |
| CanOutput | CAN Output | A channel that outputs its input value to a CAN message. See CAN Transmit |
| AudioControl | Audio Control | A channel that controls audio output. See |
| LapTime | Lap Time | A channel that outputs a lap timing related quantity. See Lap Timing Channels |
| Toggle | Toggle | A channel that toggles between two states, based upon an event. See |
| Case | Case | A channel that outputs a value depending on which input value is ’true’. See Case Channel |
| If | If | A channel that outputs a value depending on the value of its input. See If Channel |
| OnChange | On Change | A channel that outputs a value when its input changes. See On Change Channel |
This example covers most of the node types that can be exported. The structure differs considerably from version 1 of Dash Design.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<display_setup type="CD6-43" OriginalFilename="{path}/CD6-43 Setup.cd6-43.gdd" XMLFilename="{path}/CD6-43 Setup.xml" screen_width="800" screen_height="480">
<notes>Added air temperature sensing.</notes>
<can_ports>
<can_port>
<index>0</index>
<bitrate>1M</bitrate>
<termination_resistor>0</termination_resistor>
<can_channels>
<can_channel>
<name>RPM CAN</name>
<id>#4A9</id>
<bit>8</bit>
<length>16</length>
<dbc_type>unsigned</dbc_type>
<endian>msb_first</endian>
<canmask>3</canmask>
<comcodex>0</comcodex>
<output type="Scalar" output_type="1">
<name>RPM</name>
<sensor shared="x1 scalar" type="Scalar"/>
</output>
</can_channel>
<can_channel>
<name>AIR TEMP CAN</name>
<id>#4A9</id>
<bit>24</bit>
<length>8</length>
<dbc_type>unsigned</dbc_type>
<canmask>8</canmask>
<output type="Scalar" output_type="1">
<name>AIR TEMP CAN</name>
<sensor type="Scalar" name="AIR TEMP CAN_scalar">
<factor>1.0</factor>
<offset>0.0</offset>
</sensor>
</output>
</can_channel>
</can_channels>
</can_port>
<can_port>
<index>1</index>
<bitrate>1M</bitrate>
<termination_resistor>0</termination_resistor>
<can_channels/>
</can_port>
</can_ports>
<channels>
<channel type="EventManager" output_type="1" predefined="1">
<name>EVENT MGR</name>
<inputs>
<input id="1">Page Select</input>
<input id="3">Brightness</input>
<input id="4">Page Select</input>
</inputs>
<sensor shared="EVENT MGR" type="EventManager"/>
</channel>
<channel type="Scalar" output_type="1" predefined="1">
<name>A00 Raw</name>
<inputs>
<input id="1">A00 A/D</input>
</inputs>
</channel>
<channel type="Scalar" output_type="1">
<name>Internal status</name>
<sensor type="Scalar" name="Internal status:Value_scalar">
<factor>1.0</factor>
<offset>0.0</offset>
</sensor>
</channel>
<channel type="Logic" output_type="1">
<name>FuelAlarm</name>
<inputs>
<input id="1">Fuel</input>
</inputs>
<sensor type="Logic" name="FuelAlarm_Alarm_">
<pre_delay>0</pre_delay>
<retrigger_time>0</retrigger_time>
<conditions>
<condition>
<comparator>Less</comparator>
<limit>0.25</limit>
<logic>None</logic>
</condition>
</conditions>
</sensor>
</channel>
<channel type="BitmapSelector" output_type="2">
<name>FuelBitmaps</name>
<inputs>
<input id="1">FuelAlarm</input>
</inputs>
<items>
<item>
<value>0.0</value>
<on_time>0.0</on_time>
<off_time>0.0</off_time>
<max_duration>0.0</max_duration>
<graphic>C:/Graphics/FuelIconGrey.bmp</graphic>
</item>
<item>
<value>1.0</value>
<on_time>0.0</on_time>
<off_time>0.0</off_time>
<max_duration>0.0</max_duration>
<graphic>C:/Graphics/FuelIconRed.bmp</graphic>
</item>
</items>
<sensor shared="Bitmap Sel" type="BitmapSelector"/>
</channel>
<channel type="Notification" output_type="2">
<name>Warning Message</name>
<items>
<item>
<message>Low Battery @</message>
<format>##.#</format>
<input>Bat Alarm</input>
<label_input>Batt Volts</label_input>
</item>
<item>
<message>Coolant High @</message>
<format>###</format>
<input>Coolant Alarm</input>
<label_input>Coolant T</label_input>
</item>
</items>
<sensor shared="Warning Message" type="Notification"/>
</channel>
<pages>
<page id="0">
<properties>
<screenId value="All Screens"/>
<name value=""/>
<colour>#000000</colour>
<tags/>
<favourite value="0"/>
<defaultBgColour>#161D1F</defaultBgColour>
<defaultLineColour>#C0C0C0</defaultLineColour>
<defaultFillColour>#FDB813</defaultFillColour>
<defaultTextColour>#C0C0C0</defaultTextColour>
<defaultWarningColour>#FF0000</defaultWarningColour>
<defaultFont>
<name></name>
<size>18</size>
</defaultFont>
</properties>
<keypad_events>
<keypad_event>
<key_id>1</key_id>
<event_type>2</event_type>
<key_type>0</key_type>
<priority>1</priority>
<output>Distance Trip</output>
</keypad_event>
<keypad_event>
<key_id>1</key_id>
<event_type>2</event_type>
<key_type>1</key_type>
<priority>1</priority>
<output>Distance Trip</output>
</keypad_event>
<keypad_event>
<key_id>1</key_id>
<event_type>2</event_type>
<key_type>2</key_type>
<priority>1</priority>
<output>Distance Trip</output>
</keypad_event>
</keypad_events>
<events/>
<gauges/>
</page>
<page id="1">
<properties>
<screenId value="1"/>
<name value=""/>
<colour>#000000</colour>
<enabled value="1"/>
<tags/>
<favourite value="0"/>
<defaultBgColour>#008001</defaultBgColour>
<defaultLineColour>#000001</defaultLineColour>
<defaultFillColour>#00FF01</defaultFillColour>
<defaultTextColour>#00FF01</defaultTextColour>
<defaultWarningColour>#FF0001</defaultWarningColour>
<defaultFont>
<name>Arial</name>
<size>18</size>
</defaultFont>
</properties>
<events/>
<gauges>
<gauge type="TEXT_INPUT">
<properties>
<name value="Value Text: Gear Posn"/>
<input value="Gear Posn"/>
<left value="337"/>
<top value="180"/>
<textColour>#00FFFF</textColour>
<backgroundColour>#000001</backgroundColour>
<font>
<name>Open 24 Display St</name>
<size>300</size>
</font>
<textJustify value="Left"/>
<colourMode value="Normal"/>
</properties>
</gauge>
<gauge type="BAR_TACHO">
<properties>
<name value="Bar Tacho: RPM"/>
<input value="RPM"/>
<left value="6"/>
<top value="3"/>
<width value="785"/>
<height value="289"/>
<lineColour>#1A1A1A</lineColour>
<backgroundColour>#252525</backgroundColour>
<fillColour>#FFA500</fillColour>
<startValue value="0"/>
<endValue value="9000"/>
<segmentSize value="500"/>
<labelColour>#A9A9A9</labelColour>
<labelFont>
<name>Open 24 Display St</name>
<size>30</size>
</labelFont>
<barTachoRectangular value="0"/>
<separatorsBetweenBars value="1"/>
<smoothEdges value="0"/>
<formatString value="#"/>
<labelFrequency value="2"/>
<labelDivisor value="1000"/>
<lowerLimitEnabled value="0"/>
<lowerLimitEnd value="0"/>
<lowerLimitColour>#008000</lowerLimitColour>
<upperLimitEnabled value="1"/>
<upperLimitStart value="8500"/>
<upperLimitColour>#FF0000</upperLimitColour>
<lowerLimitFlash value="0"/>
<upperLimitFlash value="1"/>
<flashAllEnabled value="1"/>
<flashAllStart value="8500"/>
<flashRate value="100"/>
</properties>
</gauge>
<gauge type="VALUE">
<properties>
<name value="Value: Road Speed"/>
<input value="Road Speed"/>
<left value="163"/>
<top value="0"/>
<textColour>#FFA500</textColour>
<font>
<name>Open 24 Display St</name>
<size>100</size>
</font>
<textJustify value="Right"/>
<backgroundColour>#008001</backgroundColour>
<formatString value="#"/>
<specialFormat value="None"/>
<colourMode value="Normal"/>
</properties>
</gauge>
<gauge type="TEXT">
<properties>
<name value="Text: KPH"/>
<caption value="KPH"/>
<left value="171"/>
<top value="19"/>
<textColour>#6E6E6E</textColour>
<font>
<name>Open 24 Display St</name>
<size>30</size>
</font>
<textDirection value="Right"/>
<textJustify value="Left"/>
<colourMode value="Normal"/>
</properties>
</gauge>
<gauge type="VALUE">
<properties>
<name value="Value: Fastest Lap Time Delta"/>
<input value=""/>
<left value="600"/>
<top value="240"/>
<textColour>#FF1493</textColour>
<font>
<name>Open 24 Display St</name>
<size>56</size>
</font>
<textJustify value="Left"/>
<backgroundColour>#008001</backgroundColour>
<formatString value="msff"/>
<specialFormat value=""/>
<colourMode value="Normal"/>
</properties>
</gauge>
<gauge type="TEXT">
<properties>
<name value="Text: Δ"/>
<caption value="Δ"/>
<left value="520"/>
<top value="260"/>
<textColour>#FF1493</textColour>
<font>
<name>Open 24 Display St</name>
<size>30</size>
</font>
<textDirection value="Right"/>
<textJustify value="Left"/>
<colourMode value="Normal"/>
</properties>
</gauge>
<gauge type="VALUE">
<properties>
<name value="Value: Last Lap Time"/>
<input value=""/>
<left value="600"/>
<top value="360"/>
<textColour>#C0C0C0</textColour>
<font>
<name>Open 24 Display St</name>
<size>56</size>
</font>
<textJustify value="Left"/>
<backgroundColour>#008001</backgroundColour>
<formatString value="msff"/>
<specialFormat value=""/>
<colourMode value="Normal"/>
</properties>
</gauge>
<gauge type="TEXT">
<properties>
<name value="Text: Last"/>
<caption value="Last"/>
<left value="520"/>
<top value="380"/>
<textColour>#C0C0C0</textColour>
<font>
<name>Open 24 Display St</name>
<size>30</size>
</font>
<textDirection value="Right"/>
<textJustify value="Left"/>
<colourMode value="Normal"/>
</properties>
</gauge>
<gauge type="VALUE">
<properties>
<name value="Value: Fastest Lap Time"/>
<input value=""/>
<left value="600"/>
<top value="420"/>
<textColour>#00FF00</textColour>
<font>
<name>Open 24 Display St</name>
<size>56</size>
</font>
<textJustify value="Left"/>
<backgroundColour>#008001</backgroundColour>
<formatString value="msff"/>
<specialFormat value=""/>
<colourMode value="Normal"/>
</properties>
</gauge>
<gauge type="TEXT">
<properties>
<name value="Text: Best"/>
<caption value="Best"/>
<left value="520"/>
<top value="440"/>
<textColour>#00FF00</textColour>
<font>
<name>Open 24 Display St</name>
<size>30</size>
</font>
<textDirection value="Right"/>
<textJustify value="Left"/>
<colourMode value="Normal"/>
</properties>
</gauge>
<gauge type="HS_BAR">
<properties>
<name value="HS Bar: Fuel"/>
<input value="Fuel"/>
<left value="10"/>
<top value="315"/>
<width value="250"/>
<height value="49"/>
<lineColour>#121212</lineColour>
<backgroundColour>#1F1F1F</backgroundColour>
<fillColour>#FF8C00</fillColour>
<startValue value="0"/>
<endValue value="1"/>
<segmentSize value="0.1"/>
<fillBarFromCenterHorizontal value="0"/>
<singleLineMode value="0"/>
<separatorsBetweenBars value="1"/>
<squareMode value="0"/>
<cornerRadius value="0"/>
</properties>
</gauge>
<gauge type="HS_BAR">
<properties>
<name value="HS Bar: Coolant T"/>
<input value="Coolant T"/>
<left value="10"/>
<top value="370"/>
<width value="250"/>
<height value="49"/>
<lineColour>#121212</lineColour>
<backgroundColour>#1F1F1F</backgroundColour>
<fillColour>#FF8C00</fillColour>
<startValue value="0"/>
<endValue value="150"/>
<segmentSize value="15"/>
<fillBarFromCenterHorizontal value="0"/>
<singleLineMode value="0"/>
<separatorsBetweenBars value="1"/>
<squareMode value="0"/>
<cornerRadius value="0"/>
</properties>
</gauge>
<gauge type="HS_BAR">
<properties>
<name value="HS Bar: Batt Volts"/>
<input value="Batt Volts"/>
<left value="10"/>
<top value="425"/>
<width value="250"/>
<height value="49"/>
<lineColour>#121212</lineColour>
<backgroundColour>#1F1F1F</backgroundColour>
<fillColour>#FF8C00</fillColour>
<startValue value="0"/>
<endValue value="15"/>
<segmentSize value="1.5"/>
<fillBarFromCenterHorizontal value="0"/>
<singleLineMode value="0"/>
<separatorsBetweenBars value="1"/>
<squareMode value="0"/>
<cornerRadius value="0"/>
</properties>
</gauge>
<gauge type="BITMAP">
<properties>
<name value="Image: charging_malf.bmp"/>
<graphicInput value="{path}/charging_malf.bmp"/>
<left value="265"/>
<top value="428"/>
</properties>
</gauge>
<gauge type="VALUE">
<properties>
<name value="Value: Current Lap Time"/>
<input value=""/>
<left value="600"/>
<top value="300"/>
<textColour>#FFFFFF</textColour>
<font>
<name>Open 24 Display St</name>
<size>56</size>
</font>
<textJustify value="Left"/>
<backgroundColour>#008001</backgroundColour>
<formatString value="msff"/>
<specialFormat value=""/>
<colourMode value="Normal"/>
</properties>
</gauge>
<gauge type="TEXT">
<properties>
<name value="Text: Lap"/>
<caption value="Lap"/>
<left value="520"/>
<top value="320"/>
<textColour>#FFFFFF</textColour>
<font>
<name>Open 24 Display St</name>
<size>30</size>
</font>
<textDirection value="Right"/>
<textJustify value="Left"/>
<colourMode value="Normal"/>
</properties>
</gauge>
<gauge type="BITMAP">
<properties>
<name value="Image: fuel_level.bmp"/>
<graphicInput value="{path}/fuel_level.bmp"/>
<left value="265"/>
<top value="318"/>
</properties>
</gauge>
<gauge type="BITMAP">
<properties>
<name value="Image: oil_pressure.bmp"/>
<graphicInput value="{path}/oil_pressure.bmp"/>
<left value="265"/>
<top value="373"/>
</properties>
</gauge>
<gauge type="HS_BAR">
<properties>
<name value="HS Bar: FakeLatG"/>
<input value="FakeLatG"/>
<left value="518"/>
<top value="191"/>
<width value="280"/>
<height value="49"/>
<lineColour>#282828</lineColour>
<backgroundColour>#000000</backgroundColour>
<fillColour>#FF0000</fillColour>
<startValue value="-1"/>
<endValue value="1"/>
<segmentSize value="0.1"/>
<fillBarFromCenterHorizontal value="1"/>
<singleLineMode value="0"/>
<separatorsBetweenBars value="1"/>
<squareMode value="0"/>
<cornerRadius value="0"/>
</properties>
</gauge>
</gauges>
</page>
<page id="2">
<properties>
<screenId value="2"/>
<name value=""/>
<colour>#000001</colour>
<enabled value="1"/>
<tags length="1">
<item>tacho</item>
</tags>
<favourite value="0"/>
<defaultBgColour>#008001</defaultBgColour>
<defaultLineColour>#000001</defaultLineColour>
<defaultFillColour>#00FF01</defaultFillColour>
<defaultTextColour>#00FF01</defaultTextColour>
<defaultWarningColour>#FF0001</defaultWarningColour>
<defaultFont>
<name>Arial</name>
<size>18</size>
</defaultFont>
</properties>
<events/>
<gauges>
<gauge type="RTACHO_BMP">
<properties>
<name value="Needle: Road Speed"/>
<input value="Road Speed"/>
<left value="175"/>
<top value="29"/>
<width value="451"/>
<height value="451"/>
<lineColour>#1E90FF</lineColour>
<backgroundImage value="{path}/speed-tacho-270.png"/>
<transparentColour>#000000</transparentColour>
<transparent value="0"/>
<Needle_centreX value="225"/>
<Needle_centreY value="225"/>
<Needle_centreOffset value="56"/>
<Needle_needleLength value="183"/>
<Needle_startAngle value="30"/>
<Needle_endAngle value="330"/>
<Needle_baseWidth value="3"/>
<Needle_drawCentre value="0"/>
<startValue value="0"/>
<endValue value="200"/>
</properties>
</gauge>
</gauges>
</page>
</pages>
<shared_sensors>
<sensor type="Scalar" name="x1 scalar">
<factor>1.0</factor>
<signed>0</signed>
</sensor>
<sensor type="BitString" name="Gear String">
<bitstrings match_on_value="0" mask="0">
<items length="9">
<item priority="1" mask="8" string="7"/>
<item priority="2" mask="7" string="6"/>
<item priority="3" mask="6" string="5"/>
<item priority="4" mask="5" string="4"/>
<item priority="5" mask="4" string="3"/>
<item priority="6" mask="3" string="2"/>
<item priority="7" mask="2" string="1"/>
<item priority="8" mask="1" string="N"/>
<item priority="9" mask="0" string="R"/>
</items>
</bitstrings>
</sensor>
<sensor type="Logic" name="Warning Trigger">
<conditions>
<condition>
<comparator>Greater</comparator>
<limit>0.0</limit>
<logic>Or</logic>
</condition>
<condition>
<comparator>Greater</comparator>
<limit>0.0</limit>
<logic>None</logic>
</condition>
</conditions>
</sensor>
<sensor type="Notification" name="Warning Message"/>
<sensor type="BitmapSelector" name="Bitmap Sel"/>
<sensor type="FunctionTable" name="Contrast">
<table lowreal_t="2" lowreal="0" highreal_t="2" highreal="2500" lowraw_t="72" lowraw="0.0" highraw_t="72" highraw="63.0" interpolate="1" signed="0">
<map raw_t="2" raw="0" real_t="72" real="0.0"/>
<map raw_t="2" raw="300" real_t="72" real="10.0"/>
<map raw_t="2" raw="2500" real_t="72" real="63.0"/>
</table>
</sensor>
</shared_sensors>
<graphics>
<graphic>
<filename>{path}/Small Warning Black.bmp</filename>
<width>83</width>
<height>73</height>
<size_bytes>113</size_bytes>
<data>{base-64 data}</data>
</graphic>
<graphic>
<filename>{path}/Small Warning Triangle.bmp</filename>
<width>83</width>
<height>73</height>
<size_bytes>4416</size_bytes>
<data>{base-64 data}</data>
</graphic>
</graphics>
<led_rules>
<group name="All Screens" predefined="1">
<pages>{pages:[0]}</pages>
<rule name="marshal" priority="1" bitmask="229376">
<conditions>
<condition>
<channel_a value="A08 Raw"/>
<comparator_a value="="/>
<value_a value="1"/>
<channel_b value=""/>
<value_b value="0"/>
<leds>
<led id="15">
<colour value="ON"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
</leds>
<right_to_left value="0"/>
<interpolation_channel value=""/>
<from value="0"/>
<to value="0"/>
</condition>
<condition>
<channel_a value="A08 Raw"/>
<comparator_a value="="/>
<value_a value="2"/>
<channel_b value=""/>
<value_b value="0"/>
<leds>
<led id="15">
<colour value="OFF"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="16">
<colour value="ON"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
</leds>
<right_to_left value="0"/>
<interpolation_channel value=""/>
<from value="0"/>
<to value="0"/>
</condition>
<condition>
<channel_a value="A08 Raw"/>
<comparator_a value="="/>
<value_a value="3"/>
<channel_b value=""/>
<value_b value="0"/>
<leds>
<led id="15">
<colour value="OFF"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="16">
<colour value="OFF"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="17">
<colour value="ON"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
</leds>
<right_to_left value="0"/>
<interpolation_channel value=""/>
<from value="0"/>
<to value="0"/>
</condition>
</conditions>
</rule>
</group>
<group name="Driver">
<pages>{pages: [1,2,3,4,5,7]}</pages>
<rule name="Shift Lights" priority="0" bitmask="32767">
<conditions>
<condition>
<channel_a value=""/>
<comparator_a value="<>"/>
<value_a value="0"/>
<channel_b value=""/>
<value_b value="0"/>
<leds>
<led id="0">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="1">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="2">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="3">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="4">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="5">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="6">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="7">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="8">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="9">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="10">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="11">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="12">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="13">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
<led id="14">
<colour value="Green"/>
<channel value=""/>
<flash_colour value="OFF"/>
<flash_rate value="0"/>
</led>
</leds>
<pattern_mode value="Interpolate"/>
<right_to_left value="0"/>
<interpolation_channel value="RPM"/>
<from value="0"/>
<to value="10000"/>
</condition>
</conditions>
</rule>
</group>
</led_rules>
</display_setup>Commands can be invoked from menus or by shortcut keys.
Shortcut keys may be customized in the software using .

Select a category on the left side of the dialog to see the available actions.
Select the action from the Action list.
Click on the Setup… button to assign a new shortcut. The button will pop up a dialog to capture the new shortcut key combination; while the dialog is shown, press the desired key combination on the keyboard.
Select the action from the list and click on the Clear button.
The software supports multiple schemes for shortcuts. The scheme can be selected from the dropdown at the top of the dialog.
To add or remove a scheme, click the Configure Schemes… button.
| Shortcut | Action |
|---|---|
| Alt + Ctrl + S | Save New Version |
| Alt + F7 | Preferences… |
| Alt + Left | Select Previous |
| Alt + Right | Select Next |
| Ctrl + A | Select All |
| Ctrl + C | Copy |
| Ctrl + G | Group |
| Ctrl + H | History |
| Ctrl + S | Save Setup |
| Ctrl + Shift + G | Ungroup |
| Ctrl + Shift + S | Save Setup As… |
| Ctrl + Tab | Select Screen |
| Ctrl + V | Paste |
| Ctrl + X | Cut |
| Ctrl + Y | Redo |
| Ctrl + Z | Undo |
| Delete | Delete |
| Esc | Select None |
| F1 | Help… |
| F11 | Toggle Fullscreen Mode |
| F7 | Upload To Display |
| Shift + F1 | About… |
Various tools and functions are provided that function alongside the editing features on the main tabs:
The font editor is used to select fonts for gauges from either gauge properties Standard Gauge Properties or the Unique Fonts Dialog.

Font Editor
If the display supports vector fonts then the font type will be available. See Font Types .
If selected, the font will be converted to a monochrome bitmap (rasterized) for use by the display.
If selected, the font file (outlines) will be sent to the display without rasterization. This allows the display to render different sizes from the same font data and antialias (smooth) the outlines.
Available fonts are listed. Select an item from the list to change the font face and adjust the size.
Use the Italic and
buttons to change the font style.
For bitmap fonts, the character cropping rectangle may be adjusted using the cropping options. It can be useful to display the font table when adjusting the cropping options.
Cropping the font can be useful to reduce the memory usage for bitmap fonts and also when fonts do not report accurate bounding rectangles.
Click the optimize button to optimize the cropping rectangle based upon used pixels used by all characters in the font table.
The set of characters included in the font can change if text within the setup is changed, which could result in unintended clipping of some characters.
This can be useful for checking that all characters will be fully rendered, particularly if adjusting cropping:

Font Table
Vector fonts may be added to the setup by adding TTF (TrueType) files to the setup. The TTF files are stored directly in the setup file.
Select an item from the list to apply that font to the gauge.

Vector Font Dialog
Use the Add button to select a TTF file from disk.
Adding fonts will not change the set of fonts installed on your PC for use by other applications.
Different fonts have different licensing restrictions. You must confirm the license for each font added to the setup and ensure that you are complying with the license by using the font in your setup.
Use the Delete button to remove any fonts that are no longer required.
Adjust Size to select a font size for the gauge. With vector fonts, multiple sizes can be used at once for the same font data on different gauges.
Adjust Offset to offset the rendering position of the font. This is rarely required but can be useful in cases where the rendering origin for the font is not in the correct position.
Depending upon the display type, there may be the option to use either Bitmap fonts or Vector fonts.
All display module types support bitmap fonts. When the setup is programmed into the display, fonts are converted to monochrome bitmap images with a sub-image for each character.
If multiple sizes of the same font are used then each size will require a separate bitmap generated for it. It is therefore worth limiting the set of font sizes used, where possible to reduce memory usage.
By default, the Windows-1252 code page will be used for mapping characters, sometimes referred to as a charset. Some display setups may use characters that are not representable by the default code page. In these instances Dash Design will generate a custom code page so that these characters may be rendered by the display.
Use the Unique Fonts tool to combine similar bitmap fonts to reduce resource usage.
Some display types support ‘vector’ fonts (e.g. TTF).
Vector fonts have the following advantages:
Since vector fonts allow the display to support unicode, gauges like Label Gauge or Text Input Gauge that are using vector fonts will be encoded with a unicode representation (UTF-8).
When using unicode characters in Notifications (see Notifications Tab ), it is best to ensure that gauges that use them are either exclusively vector fonts or bitmap fonts to avoid potential rendering issues since different charsets are expected.
Some application settings are available via the Alt + F7 command.

Preferences Dialog
Adjust the relevant preferences using the property grid, descriptions for the properties are shown at the bottom of the dialog.
The setup checker identifies and in some cases automatically fixes common setup errors and warnings.

Setup Checker
The setup checker may be shown by using the menu action or by double clicking on the setup check status indicator on the application status bar at the right-hand side:

Status Bar
Messages are listed with a severity:
| Severity | Description |
|---|---|
| Indicates a major issue in the setup that must be resolved prior to programming. | |
| Indicates a minor issue that ought to be addressed otherwise the display may not behave as expected. | |
| Typically indicates something minor that has been fixed automatically. |
Messages may be associated with an item in the setup. Double clicking on messages will attempt to locate the item in Dash Design and show it. For example, if the message relates to a Channel then Dash Design will display the Channels Tab and select the Channel.
Some setup check messages are ‘sticky’ and will remain in the list until acknowledged (typically these are automatic fix notifications). Other messages are removed automatically when the offending condition has been resolved.
Click the Refresh button to clear all Setup check messages and re-run the setup check; this will clear any ‘sticky’ messages.
Some Display Module types support a programmable track database. The track database allows the display to automatically select a nearby GPS start/finish line based upon the GPS position.

Track Database
A track database can be maintained on the PC. It is a folder containing kml or kmz files called “Tracks” under the Dash Design documents folder.
Click the Explore button on the Track Database dialog to open the folder in Windows® file explorer.
Select the tracks that you want to program by checking them in the list then click the Program Display button.
Avoid programming the display with multiple versions of the same track since the Display may not choose the correct version of the track.
Use the Read Display button to read the tracks that are currently loaded in the display and update the checked tracks in the track database dialog.
Any tracks that exist in the display that do not exist on disk shall be added to the list (but not added to the Tracks folder).
Tracks can be defined either by editing KML files (an XML type format) by hand, or by using an editor such as Google Earth. A zipped KML format is also supported (KMZ).
The KML file should contain a folder with the name of the track. Within this should be a line string with the name “Start/Finish” and may also contain numbered split lines (e.g. Split1 or Split2). At present, only the Start/Finish line is programmed into the display.
The “Start/Finish” and any “Split” lines must have 2 points only. These lines should cross the track perpendicular to the line that the car would take. The direction of the line is 90° clockwise from the first point. So, given a track that is oval and the car is running clockwise around the track, the line would start inside the oval and end outside. If the car was running anti-clockwise then the line would start outside the oval and end inside it.
The track definition may also contain a line string for the track itself called “Track”. This is rendered in the Track Database dialog as a thumbnail and is currently purely for visualization purposes.
For example:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
<name>Silverstone.kmz</name>
<Folder>
<name>Silverstone</name>
<Placemark>
<name>Start/Finish</name>
<LineString>
<tessellate>1</tessellate>
<coordinates>
-1.023222302590363,52.06815679907218,0 -1.023762259441994,52.06840339462266,0
</coordinates>
</LineString>
</Placemark>
<Placemark>
<name>Track</name>
<LineString>
<tessellate>1</tessellate>
<coordinates>
-1.023457440705252,52.06826330469951,0 -1.022211981150893,52.06926392138978,0 -1.020120716246536,52.07094945894832,0 -1.019798435446819,52.07119895390668,0 -1.019601119519132,52.07126226540072,0 -1.01937873321533,52.07130387583826,0 -1.019151596800913,52.07132015409328,0 -1.018864704792763,52.07132699524943,0 -1.018571326775504,52.07130765223916,0 -1.018287746835613,52.07128456546694,0 -1.017245837241402,52.07119202674222,0 -1.016972301678272,52.07118239377338,0 -1.016710355235815,52.07119694839953,0 -1.016431744521955,52.07122766516974,0 -1.016139377047914,52.07129194838007,0 -1.015890779969542,52.07137482110704,0 -1.015660378114936,52.07146988771898,0 -1.015329365246891,52.07163540796481,0 -1.014912384781105,52.07184482607399,0 -1.014278792857228,52.07215527769836,0 -1.013875376200518,52.07235236448024,0 -1.013618131981842,52.07247620811879,0 -1.013447409552678,52.07251877034994,0 -1.013319975021001,52.07252522993891,0 -1.013184409430378,52.07250628693589,0 -1.01310077472047,52.07246933328934,0 -1.013033850291631,52.07241324861703,0 -1.012978908879991,52.07235209663881,0 -1.012860470987238,52.07212659337567,0 -1.012577418468494,52.07155200071375,0 -1.012521435811164,52.0714882955801,0 -1.01241641133345,52.07143118406936,0 -1.012296608528234,52.07139858475865,0 -1.012165632134893,52.0713992211664,0 -1.012040161907365,52.07143360936539,0 -1.011947625906483,52.07150255189591,0 -1.011843568280048,52.07161602819282,0 -1.011690025087647,52.07186487421092,0 -1.011546321340735,52.0721562329888,0 -1.011430985337407,52.07252893286008,0 -1.011401929202499,52.07290108966808,0 -1.011419609454781,52.07302600696883,0 -1.011458558599511,52.07307834034388,0 -1.011508853351684,52.07311677085882,0 -1.011745977479267,52.07324596402563,0 -1.012380629940351,52.0736254031531,0 -1.013196080280964,52.07408080117892,0 -1.01447343285189,52.07480129681431,0 -1.015659863767252,52.07545649600331,0 -1.018450323972536,52.07699568325367,0 -1.018628666371085,52.07707198799071,0 -1.018852364896329,52.0771302583529,0 -1.019139998237194,52.07715507260878,0 -1.019425637860738,52.07713550285217,0 -1.019717685896793,52.07707442375945,0 -1.019717838927831,52.07707159871079,0 -1.019875432474793,52.07700612118002,0 -1.019974638263597,52.0768873138033,0 -1.020021797462273,52.0767578285128,0 -1.020048264359766,52.07651102214933,0 -1.020115356756105,52.07616091012261,0 -1.020218197163085,52.07602511655598,0 -1.02037330652471,52.07591751384516,0 -1.020577851231113,52.07584315361245,0 -1.020827875515469,52.07580418109799,0 -1.021072945038164,52.07581683210579,0 -1.021301749328888,52.07587772966747,0 -1.021505454046772,52.07598109362632,0 -1.02161258467528,52.07610917315833,0 -1.021652404108211,52.07627270721889,0 -1.021590593993534,52.07647689871101,0 -1.021286511375399,52.07685291248266,0 -1.020652373384661,52.0776370848383,0 -1.02041866101886,52.07781871987165,0 -1.020092038113648,52.07803677596841,0 -1.019717807773661,52.07824558471947,0 -1.019305157925989,52.07842379851116,0 -1.018942220901495,52.07852426096748,0 -1.018474214581038,52.07859650614207,0 -1.018218625788347,52.07861972841747,0 -1.016822932764364,52.07871116772316,0 -1.015215962508181,52.07880785609512,0 -1.012305414454012,52.07894242003761,0 -1.012069324934228,52.07892135838949,0 -1.011812287263301,52.07886274393292,0 -1.011544712985256,52.07876463011411,0 -1.011325781872238,52.07862751294066,0 -1.011189887559795,52.07849677966099,0 -1.011072443810749,52.07833352502246,0 -1.010878355938465,52.0779797545011,0 -1.010579382179875,52.07732122547742,0 -1.010420235949071,52.07681709510778,0 -1.01035845420526,52.07654002030849,0 -1.010306317114715,52.07626143166188,0 -1.010247579099783,52.07547762183768,0 -1.010200584898043,52.07487666001721,0 -1.010162668030518,52.07448340195425,0 -1.010126731347698,52.07432607886552,0 -1.010033011909288,52.07414893753801,0 -1.009922028249696,52.07398318913559,0 -1.009795759633373,52.07383671627831,0 -1.009619975065831,52.07367883801017,0 -1.009530466507066,52.07356252451558,0 -1.009493134815458,52.07345076484788,0 -1.009497819412188,52.07331725306135,0 -1.009600570681212,52.07308949360063,0 -1.009956518897663,52.07250080776188,0 -1.010017906032059,52.07234566981564,0 -1.01005532854137,52.07215915683623,0 -1.010046873519478,52.07202014893785,0 -1.009999523437812,52.07188024257708,0 -1.009907535127204,52.07176183639039,0 -1.009761495978749,52.07162751386204,0 -1.009358756794367,52.07128628849334,0 -1.00927500235878,52.07114744259604,0 -1.009246400994753,52.0709824561481,0 -1.009275912175003,52.07082781736657,0 -1.009352308809192,52.07069700058285,0 -1.009499838955851,52.07057072481957,0 -1.009668846635452,52.07047544926077,0 -1.009968824890688,52.07034941323089,0 -1.010703847512975,52.07007364808247,0 -1.010954790396897,52.06995193270534,0 -1.011134893382093,52.06982333480508,0 -1.0112802301664,52.06968308883275,0 -1.011487348312824,52.06945911629902,0 -1.011875581776741,52.06903082544272,0 -1.012435485276765,52.06839581531909,0 -1.013189644512745,52.06750948640506,0 -1.013190034239836,52.06750682049438,0 -1.013924670314729,52.06665196188685,0 -1.01518018343172,52.0652240028476,0 -1.015697144843778,52.06470434768345,0 -1.016297065716387,52.06416946728359,0 -1.016714998499388,52.0638115998371,0 -1.016916639133029,52.06369105032819,0 -1.01714504851143,52.06360779571828,0 -1.017463999886501,52.06354588523977,0 -1.017741099362506,52.06352117067455,0 -1.018047136012797,52.06354825699662,0 -1.018357949625235,52.06362366830372,0 -1.018585977361718,52.06372282489181,0 -1.018757838580764,52.06383139030437,0 -1.018919530710179,52.06401319695608,0 -1.019193793181883,52.06437476749688,0 -1.019342576765286,52.06454665058445,0 -1.019560414927535,52.0647570737635,0 -1.019851113106613,52.06500979059036,0 -1.020118485426937,52.06522933960495,0 -1.020319327321483,52.06536183072669,0 -1.021904687305164,52.06646707823193,0 -1.022006167024642,52.06652923634018,0 -1.022116718992182,52.06655390448029,0 -1.022226148969702,52.0665544164719,0 -1.022344063359594,52.06651762944266,0 -1.022467285354731,52.0664455046743,0 -1.022688100572002,52.06631291707106,0 -1.02282674096245,52.06625648403141,0 -1.022978555415159,52.06622992489552,0 -1.023122296152442,52.06623924680579,0 -1.023275486178706,52.06628604660686,0 -1.023422360881027,52.06636991413968,0 -1.023712831963494,52.06657146267329,0 -1.023954639926107,52.0667937231116,0 -1.024130329955542,52.06704852450726,0 -1.024270181387696,52.06738531174683,0 -1.024289040661949,52.06750594128725,0 -1.024261330339462,52.06759304219368,0 -1.024189871725516,52.067666168009,0 -1.024025725032678,52.06779026751038,0 -1.023457440705252,52.06826330469951,0
</coordinates>
</LineString>
</Placemark>
</Folder>
</Document>
</kml>Dash Design provides undo/redo functionality for reverting / re-applying changes to the setup.
If an unintentional/unwanted change is made then Ctrl + Z will revert the change.
To re-apply the un-done changes, use Ctrl + Y.
If the setup is edited following an undo operation then this will clear any of the items available for ‘redo’.
A history of changes made to the setup during the current session is available using Ctrl + H
Selecting items in the history list will revert the setup to that point in time.
provides a way to view a list of all fonts used by gauges in the setup.

Unique Fonts Dialog
The Unique Fonts dialog presents a list of fonts that are used by gauges in the current setup. There may be more than one gauge using the same font.
Selecting a font in the list will enable the edit / copy / paste / find functions.
The font list indicates the size and style of the font.
Additionally the list will identify fonts that are ‘vector’ fonts - see Font Types .
Fonts may be copied and
pasted into another ‘font’. Pasting a font will replace all instances of the font being ‘pasted into’, resulting in the list of gauges for each font being combined to use the same font.
The Find button will search through screens for gauges that use the selected font and select the first usage in the Design Tab
.
A list of all gauges / screens that use the selected font may be displayed by selecting “List associated gauges” from the context menu (right-click). Double clicking on an item in the subsequent list will select the gauge in the Design Tab .
The gauges associated with the selected font may be deleted by selecting “Delete associated gauges” from the context menu (right-click). This action may be un-done using Ctrl + Z.
Select a font and click the Edit button.
The Font Editor will be displayed. If accepted then all gauges using the selected font shall be updated.
The physical units of some Channels can be changed globally via

Unit Preferences Dialog
Select an item in the Unit column and click on the … button. This will pop up a dialog for selecting the units for that quantity:

Unit Preference Selection
Select an item from the list and click OK.
If the ‘Auto Apply to Channels’ checkbox is checked in the Unit Preferences dialog then any channels that produce physical values in that quantity shall be updated to display values in the selected unit.
Dash Design will insert hidden channels to re-scale values for presentation in gauges.
Clicking the Presets button will allow selection from some preset unit preferences for SI units or US units:

Unit Preferences Presets
The Screens Tab shows an overview of all the screens in the display setup.
Double click on a screen to enter Design Tab for that screen.

Screens can be sorted by page number (the default) or alphabetically by name.
Screens may be given a name by setting the ‘Name’ property on the Design Tab .
If screens have been assigned tags, then they may be filtered based upon tag.
Screens may be assigned tags via th ‘Tags’ property on the Design Tab .
If checked, ‘Hide default pages’ will hide any screens that have not been configured yet.
The context menu (Right-Click) for each screen offers the option to import / export the screen from / to a file.
This facilitates building a library of screens for sharing between display setups.
Screen library files have the file extension .gddscreen.
Screens may be duplicated onto another screen to facilitate designing similar screens.
Resets the screen back to a blank page.
Screens may be disabled so that they do not show when running on the Display Module. Disabled screens are shown with a grey effect.
The Design Tab is used to configure a Screen (commonly referred to as a Page).

Displays a tree that describes the layout of the screen.
Gauges may be grouped together and appear as an item in the gauge structure list with child gauges within the next level of the tree. Grouped gauges may be collectively positioned and their properties may be collectively edited.
Items may be selected by clicking. Hold the Shift key to select a range of items and the Ctrl key to add/remove single items from the selection.
The Gauge Structure Tree indicates the Z-order, with items at the top of the list being rendered ‘below’ items further down the list.
The Z-order may be modified by dragging items in the Gauge Structure Tree to the desired position.
In the center of the Design Tab is the Design Area. This shows an interactive visual representation of the screen layout.
At the top of the design area is the Gauge Palette from which new gauges may be added to the screen design.
To the right of the Design Area are the Properties. The list of properties changes in depending upon the selection in the Design Area.
The properties may be edited to adjust the visual appearance, input channel(s) and behaviour of screens and gauges.
If no gauges are selected then the properties of the screen itself are displayed.
Multiple gauges may be selected by click & drag in the Design Area or by selecting items in the Gauge Structure tree.
When multiple gauges are selected, their Properties are merged and can be collectively edited to apply the same changes to all gauges in the selection.
At the bottom of the Design Area are several controls:
Click the Screen button to pop up a list of screens similar to the Screens Tab to allow quick switching between screens. On the left and right are arrow buttons to move to the next/prior screen.
The Snap To Grid toggle button enables grid snapping so that gauges can be more easily positioned on a regularly spaced grid. To the right of the Snap button, the grid spacing may be selected.
To the right of the View Controls is a zoom slider which can be used to zoom-in on the screen for more precise positioning of gauges.
The zoom level is displayed as a percentage and may be entered in as a number using the keyboard.
The Fit Screen To Window button may be checked to automatically set the zoom level so that the screen fills the Design Area.
Most gauges share a standard set of gauge properties described below. In addition to these standard properties, many gauges have additional properties that are described in their relevant section.
The standard gauge properties are as follows:
| Property | Description |
|---|---|
| Name | The name is used to identify the gauge. Dash Design assigns a name to a new gauge automatically. The gauge is also automatically renamed when changing the gauge text for Text Label gauges or changing the Input for all other gauges. This makes it easy to identify the purpose of a gauge in any lists or editors. |
| Input | The output used by the gauge. |
| Minimum | The value at which a gauge starts, for example the start value of a bar gauge. |
| Maximum | The value at which a gauge finishes, for example the end value of a bar gauge. |
| Resolution | The resolution of the bar or tacho gauge. This is the value change that will move the bar or tacho to the next segment. |
| Label Frequency | Labels are drawn at every Label Frequency multiplied by the resolution. |
| Font | The font used by the gauge. See Font Editor . The Font property also allows changing the size and style of the font in-place. |
| Format | Determines how numbers are formatted in the gauge. See the Value Formatting section for more information. |
| Special Format | Displays internal system values. See the Value Formatting section for more information. |
| Left | The left most (x) position of the gauge. |
| Top | The top most (y) position of the gauge. |
| Width | The width of the gauge. Some gauges are sized implicitly on their contents in which case the Width property will not be available. |
| Height | The height of the gauge. Some gauges are sized implicitly on their contents in which case the Height property will not be available. |
| Background | Colour of the gauge background. |
| Line | Colour of the graticules and/or outline of the gauge. |
| Fill | Colour in which to draw a filled part of the gauge, for example the part of a bar graph that has data. |
| Text | Colour of all text in the gauge. |
Many gauges can use a Format property in order to control how values are displayed.
The following table shows the standard formatting characters that can be used:
| Character | Description | Notes |
|---|---|---|
| X or x | Display in hexadecimal | Must be first character in format |
| B or b | Display in binary | Must be first character in format |
| - | Force leading sign character | e.g. +5.3 is displayed instead of 5.3 |
| # | Indicates an optional digit | e.g. ### gives 93 |
| 9 | Indicates a required digit | e.g. 999 gives 093 |
| 5 | Indicates rounding to the nearest 5 | e.g. ##5# gives 2450 instead of 2448 |
| 0 | Indicates rounding to the nearest 10 | e.g. ##0# gives 2400 instead of 2448 |
| . | Indicates position of decimal place |
Gauges using time outputs use a different set of format strings:
| Character | Description |
|---|---|
| H | Displays the hours in 24 hour format. |
| h | Displays the hours in 12 hour format. |
| m | Displays the minutes. |
| M | Displays the total minutes (including hours) if there is no preceding h or H in the format string. |
| s | Displays the seconds. |
| S | Displays the total seconds (including hours and minutes) if there is no preceding m or M in the format string. |
| f | Displays tenths of seconds. |
| ff | Displays hundredths of seconds. |
| fff | Displays thousandths of seconds (only works for lap time via CAN). |
| y | Displays the date in dd-mm-yy format |
| z | Displays the date with text for the month, eg 01 Jan 09 |
| Format | Output Example |
|---|---|
| Hms | 24:00:00 |
| hmsf | 12:00:00.0 |
| hmsff | 12:00:00.00 |
| y | 01-01-09 |
| hmsz | 12:00:00 01 Jan 09 |
For an example of the total minutes or total seconds formatting (typically used with stopwatches or lap times) consider a stopwatch at 1h02m03s.45. The following results can be obtained:
| Format | Output Example |
|---|---|
| hmsf | 01:02:03.45 |
| msf | 02:03.45 |
| Msf | 62:03.45 |
| sf | 03.45 |
| Sf | 3723.45 |
System information can be shown by adding a value gauge to the screen and setting the Format property as follows:
| Special Format | Format | Description |
|---|---|---|
| Serial Number | vs | Shows the serial number of the display. |
| Version Number | vv | Shows the version of the colour display firmware. |
| Setup Name | vz | Shows the setup name, if set. See Setup Name . |
| Log Support | vl | Shows the logger status (see below). |
| Usage Hours | vu | Shows the usage (on time) of the display in hours. |
| Reset Count | vr | Shows the reset counter - the number of power on events since the last setup upload. |
| File Name | vc | Shows the filename of the setup file used to program the display (up to 24 characters). |
| Frame Rate | va | Shows the number of times the screen is being refreshed per second (frames per second), in the form “fps:xx”. |
| Processor Speed | vp | Shows the CPU clock speed / Memory Bus Speed. Not available on all displays." |
| FRAM Size | vf | Shows the size of the Ferromagnetic RAM as “FRAM xxxKb”. |
| PCB Serial | vg | Shows the serial number of the PCB, which may differ from Serial Number. Not supported by all display types. |
| Network Status | vn | For ethernet enabled displays, shows the network status. IP address (e.g. NET 192.168.0.99), if connected. Other possible values:
|
| Client Network Status | vnc | For ethernet enabled displays, indicates if a client is connected over the network. e.g. NET NO CLIENT when no client connection, NET CLIENT 192.168.0.30 when there is an active client TCP connection. |
| Channel Name | @channel | Shows the name of the selected input channel. When used on a Value Gauge , Dash Design will replace the gauge with a static label. This can be useful in gauge groups where a label should show the channel name used by a value. |
| Channel Units | @units | Shows the units of the selected input channel. When used on a Value Gauge , Dash Design will replace the gauge with a static label. This can be useful in gauge groups where a label should show the channel units used by a value. |
| Logging Status | Description |
|---|---|
| Logging not Supported | This firmware does not support logging. |
| Logging Stopped | The device is not currently logging. |
| Logging Running | The device is currently logging. |
| Log Looped | The log has looped. |
| Log Memory Space Low | There is less than 5 % of the memory remaining. |
| Log Memory Full | The logging memory is full and logging has stopped. |
| Log Initializing | The logger is currently processing the setup. |
| Log Setup Error | There is a problem with the logger setup. |
| Log Overrun | Reduce the # of channels or the screen complexity. |
| Log Memory Worn | Flash worn, Log will continue at reduced capacity. |
The gauges on a screen are drawn (rendered) in a specific order. If gauges overlap then the gauge that was drawn first will be overdrawn by the next one. This ordering is referred to as the Z-order.
If the horizontal position of gauges is considered to be the X-axis and the vertical position the Y-axis, then the Z-axis is the depth (i.e. drawing order).
The Z order can be changed using menu commands and by using the Gauge Structure Tree.
| Command | Description |
|---|---|
| Moves the selected gauge(s) forward (drawn later) by 1 step | |
| Moves the selected gauge(s) backward (drawn earlier) by 1 step | |
| Moves the selected gauge(s) forward as far as possible (drawn last) | |
| Moves the selected gauge(s) backward as far as possible (drawn first) |
If frequently using these commands, custom keyboard shortcuts may be assigned to them.
The Gauge Structure Tree indicates the Z-order, with items at the top of the list being rendered ‘below’ items further down the list.
The Z-order may be modified by dragging items in the Gauge Structure Tree to the desired position.
Gauges may be grouped together so that they are collectively edited as a group.
Select gauges in the Design Area or in the Gauge Structure Tree, either use the right-click context menu or the command Ctrl + G.
Groups may be ungrouped using the command Ctrl + Shift + G.
The properties of groups are merged from the gauges within the group and edited collectively.
Use Value Gauge with special formats to display the input Channel Name / Channel Units specified on the group.
Gauges are the visual elements of a screen page. The various different gauge types available in Dash Design are described in this section.
| Gauge | CD34 | LDS4 | CD32 | LDS35 | LDS35_L | CD6-43 | GLW-43 |
|---|---|---|---|---|---|---|---|
| Tacho Gauges | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Value Gauge | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Label Gauge | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Needle Gauge | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Image Gauge | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Animation Gauge | Yes | No | Yes | No | No | Yes | No |
| Warning Gauge | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Text Input Gauge | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Bar Gauges | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Shape Gauge | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Limiter Gauge | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Cross-Hair Gauge | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Graph Gauge | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Gauge Groups | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Bit Gauge | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Menu Gauge | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Text Message Gauge | Yes | Yes | Yes | No | No | Yes | Yes |
| Arc Gauge | No | Yes | No | No | No | Yes | Yes |
| Camera Gauge | No | No | Yes | No | No | No | No |
Animation Gauges may be configured to display an animated gif image.
Animation gauges might be used to display a short animated splash screen when the display is switched on.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | No |
| CD32 | Yes |
| LDS35 | No |
| LDS35_L | No |
| CD6-43 | Yes |
| GLW-43 | No |
The Arc Gauge renders an swept arc (annulus). As with Needle Gauge
, the arc gauge can specify a background image.
The arc gauge may require a firmware update to be supported on your display.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Type | The type of gauge to be drawn, may be switched between Needle Gauge or Arc Gauge . |
| Background bitmap | The background gauge image. Clicking the Clear button clears the background bitmap. |
| Auto Size | Automatically calculate the radii and centre of the arc from the gauge width / height. |
| X Centre, Y Centre | The centre of the gauge from which the logical centre of the pointer will be drawn. |
| Outer Radius | Outer radius of the arc. |
| Inner Radius | Inner radius of the arc. |
| Thickness | Thickness of the arc (Outer Radius - Innter Radius). |
| Start Degrees | The number of degrees from 6 o’clock (the zero degree position) that the starting value of the gauge should be drawn. |
| End Degrees | The number of degrees from 6 o’clock (the zero degree position) that the end value of the gauge should be drawn. |
| Transparent box | If checked, then any colour in the background bitmap that matches the colour specified in Transparent Colour will not be drawn. This is useful when overlaying a round tacho bitmap gauge over another bitmap. |
| Display | Supported? |
|---|---|
| CD34 | No |
| LDS4 | Yes |
| CD32 | No |
| LDS35 | No |
| LDS35_L | No |
| CD6-43 | Yes |
| GLW-43 | Yes |
There are 4 types of bar gauge - rectangle and triangle shaped bars in either horizontal or vertical orientation:
A bar contains a number of segments that divide the bar up between the minimum and maximum limits.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Separators Between Bars | If checked, a separator line is drawn between each bar in the line colour. Otherwise, the bars run contiguously. |
| Fill Bar From Centre | (Rectangular Bars) If checked, the bar is drawn from the centre. For example, consider a bar gauge with the minimum set to -2 and the maximum set to +2, with Fill From Centre checked. If the value of the input is -2, the bar will be filled from the midpoint (0) to the left hand side. If the input is 0, the bar will be unfilled. If the input is 2, the bar will be filled from the midpoint to the right hand side. |
| Display Value As Single Line | (Rectangular Bars) If checked, then the bar will not be filled. instead a single line will move across the bar indicating the current value. |
| Square Mode | (Rectangular Bars) If checked, then the bar will not have a chamfer at one end. |
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
The Bit Gauge displays the value of individual bits in the integer representation of the input channel value.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| On | The colour of bit elements for bits that are set in the input value. |
| Off | The colour of bit elements for bits that are not set in the input value. |
| Spacing | Spacing, in pixels, between bit elements in the gauge. |
| Box Width | Width, in pixels, of bit elements in the gauge. |
| Box Height | Height, in pixels, of bit elements in the gauge. |
| Corner Radius | If non-zero, draws bit elements as rounded rectangles with the given corner radius, in pixels |
| Circle Style | Render bit elements as circles. |
| Direction | Controls the direction in which bit elements are drawn. |
| Bit Count | The number of bit elements to render. |
| Items | Lists the bit elements and allows arbitrary bits from the input value to be assigned to specific bit elements. |
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
Camera Gauges are used to show the video feed from an attached camera on the display.
If no camera is connected, a standard colour bar test card is shown.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Mirror Image from Camera | If checked, the feed from the camera will be reversed as if seen in a mirror. This is useful when a non-mirrored camera is used as a rear view camera. |
| Display Mode | Sets the display mode of the image. This can be one of three modes:
|
| Left Crop | Number of pixels to crop from left. |
| Top Crop | Number of pixels to crop from top. |
| Right Crop | Number of pixels to crop from right. |
| Bottom Crop | Number of pixels to crop from bottom. |
| Display | Supported? |
|---|---|
| CD34 | No |
| LDS4 | No |
| CD32 | Yes |
| LDS35 | No |
| LDS35_L | No |
| CD6-43 | No |
| GLW-43 | No |
The Cross Hair Gauge uses two inputs to move a cross hair around a box.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| XInput, YInput | Specify the inputs for the X and Y axes of the gauge. |
| X Minimum, Y Minimum | Specify the starting values for the X and Y axes. |
| X Maximum, Y Maximum | Specify the end values for the X and Y axes. |
| Cursor Size | Is the size of the cross hair cursor. |
| Cursor Shape | Different shapes may be selected for the cursor. |
| Cursor Thickness | Controls the thickness of lines used to draw the cursor. |
| Background Bitmap | Can be used to specify a bitmap that will be shown behind the cross hairs. This can be used to clarify the meaning of a particular position for the cross hair. Clicking the Clear button clears the background bitmap. |
| Transparent box | If checked, then any colour in the background bitmap that matches the colour specified in Transparent Colour will not be drawn. This is useful when overlaying a cross hair gauge with a bitmap over another bitmap. |
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
The File Explorer Gauge provides access to files on the Display Module if supported. Some display types allow video playback and display of images from files via the file explorer.
In addition to Standard Gauge Properties , the following properties may be configured:
| Title | Tip |
|---|---|
| Up Button | Input for Up button (scrolls file explorer selection). |
| Down Button | Input for Down button (scrolls file explorer selection). |
| OK Button | Input for OK button (accept selection). |
| Context Button | Input for Context ‘menu’ / file management button. |
| Video Seek Offset | Input for video seek offset. |
| Repeat Interval [ms] | Auto-repeat interval for button inputs, set to zero for no auto-repeat. |
| Video Seek Interval [s] | Jump length when seeking during video playback |
| Caption | Title of the file explorer. |
| Line Spacing | Spacing between lines in the menu. |
| Selected Fill | Background colour of selected items |
| Font | Font for normal items in the file explorer. |
| Text Colour | Colour of normal items in the file explorer. |
| Selected Font | Font for selected items in the file explorer. |
| Selected Text Colour | Text colour of selected items in the file explorer. |
| Unsupported Text Colour | Text colour of unsupported items in the file explorer. |
| Display | Supported? |
|---|---|
| CD34 | No |
| LDS4 | No |
| CD32 | No |
| LDS35 | No |
| LDS35_L | No |
| CD6-43 | No |
| GLW-43 | No |
The Graph Gauge plots values from its input channel(s) with respect to time.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Time Base | This is the width of the x axis in seconds. When a page with a historical graph gauge is first selected, the data is drawn from the left hand side of the graph (t=0). As the time progresses, the lines progress towards the right hand side of the graph. Once t = time base, the graph scrolls to the left to make more space available for drawing the lines. |
| Input Count | The number of lines (outputs) drawn in this graph. Changing the input count will add multiple sets of properties for each line. |
| Input | The output for which the line is drawn. |
| Colour | The colour of the line. |
| Minimum | Specifies the lower range of the y axis of the graph for this line. If the value of the output for this line falls below this value, the line will be drawn at the minimum value. |
| Maximum | Specifies the upper range of the y axis of the graph for this line. If the value of the output for this line exceeds this value, the line will be drawn at the maximum value. |
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
Image Gauges are used to show an image from a file or the output of a image selector output (See Image Selectors Tab
).
The Graphic/Input property allows a file to be selected from disk using the button.
Use the … button to select from all Image and Image Selector assets in the setup.
Use the Reload button to update / reload the selected image asset from disk.
Use the Clear button to un-set the selected image. This will not remove the associated image asset from the setup. To remove image assets, see Images Tab
When loading an image, if it is too large to fit on the screen, the option to resize it will be offered.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
The Label Gauge is a static gauge (it has no input and does not change) that is normally used to label other gauges or provide fixed information.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Text | Sets the text shown by the label gauge. |
| Direction | Specifies the direction in which the text is drawn in.
|
| Justification | Specifies whether the text is aligned to the left, right or centre of the bounding rectangle. |
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
The Limiter Gauge is typically used to signal an approaching rev limit by means of several boxes that change colour as the rev limit approaches.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Box Count | The number of boxes in the gauge. |
| Box Size | The width and height of the box in pixels. |
| Limiter Start | The value at which the first box will change colour from Background Colour to Fill Colour. |
| Limiter Offset | The value added to the Limiter Start to determine when the next box changes colour. |
| Draw Circular Limit Lights | If checked, round LED style boxes will be drawn instead of boxes. |
For example, if Box Count is 3, Limiter Start is 8000 and Limiter Offset is 200, the first box will change colour at 8000, the second at 8200 and the third at 8400.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
The Menu Gauge allows a simple text menu to be drawn on the screen which allows navigation to various pages in the setup.
This is useful for seldom used configuration options such as Setting the time, setting the calibration factor or displaying the screen properties.
The menu events Menu Up and Menu Down are used to navigate up and down the menu and Menu Select jumps to the page associated with the current menu item.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Flat Mode | If selected, the menu will render in an arc. If not selected, the menu will render in the number of columns specified by the column property. |
| Columns | The number of columns to use in flat mode. |
| Selected Colour | The colour of the currently selected menu item. Only active in Flat mode. |
| Deselected Colour | The colour of all non-selected menu items. Only active in Flat mode. |
| Activation Input | If specified, the menu will be visible and respond to events if the specified output value matches the Activation value. Otherwise it will be hidden. |
| Activation Value | The value to make this menu visible if an Activation Input is specified. |
| Initial Position | The initial item selected when the menu is shown. |
| Revert Timeout/s | If non-zero, the menu will revert to the Revert Screen when the timeout has passed with no menu events being triggered. |
| Menu Items | A list of the menu items. The following columns are available: Menu Item, Page, Output to Set, Selectable, Value, Format. |
| Set Immediately | If this is checked, then, if an item is selectable, when it is scrolled to, the Output to Set value will be actioned immediately. In addition, the last menu item will not be rendered; this is a place holder for the click action when in set immediate mode. This could be, for example, another Output to Set function to change the currently active menu or it could be a page jump. If neither of these functions are to be used, a dummy last menu item should still be added. |
| Property | Description |
|---|---|
| Menu Item | Contains the text shown for the menu item. This can be formatted in a similar manner to Notifications (See Notifications Tab ). |
| Page | Column contains the page jumped to when the Menu Select event is triggered. If this value is negative and an output to set has been specified, then the unsigned version of this number will be set in the output. Eg if the value is -1, the output specified will be set to 1 when the menu item is selected. |
| Output to Set | If an output is specified here, then the absolute value specified in the Page/Value column will be set in this output when the menu item is selected (the value must be listed as negative). Currently, only calibration outputs support this feature. |
| Selectable | If set to yes, then selecting this item will put a tick next to it. Any other item in the menu that currently has a tick will have the tick cleared. |
| Value | Menu items can display a value if the @ symbol is present in the menu name. The source for the value is specified in this column. |
| Format | The format string used to format the value specified in the value column. |
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
The Needle Gauge allows a scaled pointer or needle to be drawn over a graphic image. This allows much more eye catching graphics to be used for round gauges than could otherwise be drawn dynamically by the display hardware.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Type | The type of gauge to be drawn, may be switched between Needle Gauge or Arc Gauge . |
| Background bitmap | The background gauge image. Clicking the Clear button clears the background bitmap. |
| Auto Size | Automatically calculate the length and centre of the needle from the gauge width / height. |
| X Centre, Y Centre | The centre of the gauge from which the logical centre of the pointer will be drawn. |
| Centre Offset | The number of pixels from the logical pointer centre at which the pointer will be drawn. |
| Draw Centre | If checked, a solid circle is drawn at the needle centre. |
| Length | The length of the pointer. |
| Start Degrees | The number of degrees from 6 o’clock (the zero degree position) that the starting value of the gauge should be drawn. |
| End Degrees | The number of degrees from 6 o’clock (the zero degree position) that the end value of the gauge should be drawn. |
| Transparent box | If checked, then any colour in the background bitmap that matches the colour specified in Transparent Colour will not be drawn. This is useful when overlaying a round tacho bitmap gauge over another bitmap. |
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
The Shape Gauge is a static gauge (i.e. has no input and does not change) that is used to draw shapes on the screen.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Shape | Specifies the basic shape as either a Rectangle or an Ellipse. |
| Thickness | Specifies the thickness of the border drawn around the shape. |
When the shape type is set to Rectangle, a gradient fill can be set instead of a solid fill colour:
| Property | Description |
|---|---|
| Enabled | Check to enable the gradient fill. |
| Direction | Horizontal draws the gradient from left to right, Vertical draws the gradient from top to bottom. |
| Gradient Start Colour | The colour on the left or top. |
| Gradient End Colour | The colour on the right or bottom. |
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
Bar Tacho and
Round Tacho gauges are typically used with engine speed or road speed and are available as either a curved bar gauge or a round gauge. They use minimum, maximum and resolution in the same manner as bars but also have labeled segments, the frequency of which is specified by the label frequency property. The label values are divided by the label divisor property and then formatted.
See also Needle Gauge which can be used to draw a pointer over an image background.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Square Tacho | If checked, the tacho will be rectangular instead of having an arc. |
| Smooth | Instead of the tacho being drawn with blocks, it is instead drawn with a smooth arc. |
| Separators Between Bars | If checked, a separator line is drawn between each bar in the line colour. Otherwise, the bars run contiguously. |
| Enable Lower Tacho Limit | Turns on the lower tacho limit. When enabled, the first part of the tacho (up to Limit End) is drawn in Limit Colour as it is filled. If Enable Flash Below Limit is checked, the lower part of the tacho will flash if the input value is below Limit End. |
| Enable Upper Tacho Limit | Turns on the upper tacho limit. When enabled, the last part of the tacho (after to Limit Start) is drawn in Limit Colour as it is filled. If Enable Flash Above Limit is checked, the upper part of the tacho will flash if the input value is above Limit Start. |
| Flash Entire Tacho When Flash Mode Active | If the upper limit is flashing because Enable Flash Above Limit is checked, all the filled tacho blocks will flash if this option is checked. |
| Flash Rate | The rate at which to flash the tacho when in any of the flash modes. |
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
The Text History Gauge displays a list or recent text input values.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Justify | Specifies whether the text is aligned to the left, right or centre of the bounding rectangle. |
| Line Count | Specifies the number of items to display in the list. |
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
The Text Input Gauge is used to display text from a channel that produces a text output such as a Text channel.
The Justification property specifies whether the text is aligned to the left, right or centre of the bounding rectangle.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Justification | Specifies whether the text is aligned to the left, right or centre of the bounding rectangle. |
Note: It is important to select the background colour of the value gauge to be the same as the colour of the background the gauge is over. Failure to do so may result in corruption of the value displayed.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
The Text Message Gauge is used to display messages received from a GEMS radio messaging system or GEMS SMS1 text messaging system.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Show Urgent Messages Only | In this mode, the gauge is normally hidden but will display over all other gauges when an urgent message is received. The gauge will be hidden again in response to a TEXT HIDE URGENT PANEL event. |
| Show Newest Message On Top | If checked, new messages will be shown at the top of the list and the list will scroll down as necessary. If not checked, then new messages will be added to the bottom of the list and the list will scroll up as necessary. |
| Show Newest Message in Large Font | If Checked, the newest message will be shown in the large font and all older messages will be shown in the small font. Font size selected in GEMS RMS will be ignored. If not checked, then the messages will be shown in the size specified by GEMS RMS. |
| Small Font / Large Font | Set the font used to display small and large text messages. Note that the SMS1 only transmits small messages - in this case, the Large Font properties are irrelevant. |
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | No |
| LDS35_L | No |
| CD6-43 | Yes |
| GLW-43 | Yes |
The Value Gauge shows the value of the output specified in the Input property according to the format specified in the Format property. The Justification property specifies whether the text is aligned to the left, right or centre of the bounding rectangle.
It is important to select the background colour of the value gauge to be the same as the colour of the background the gauge is over. Failure to do so may result in corruption of the value displayed.
The value gauge has an optional warning mode that changes the colour of the gauge when a warning limit for the input is exceeded or if a secondary channel is logically ’true'.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Colour Mode | Enables changing the colour of the gauge based upon the value of a channel. |
| Alarm Limit | In Limit Mode, specifies an upper limit for the input value, above which the Alarm Colour shall be used. |
| Alarm Colour | Colour to use when in the alarm state. |
| Alarm Flash | The gauge will alternate between the warning colour and the background colour whilst the warning is active. |
| Colour Input | In Logic Mode, Allows selection of a channel, which when non-zero places the gauge in the alarm state |
The Special Format property can be used to display internal system values. See Value Formatting .
The Channel Name and Channel Units Special Format values will cause Dash Design to replace the value gauge with a Text Input Gauge when programming the display containing the input channel name or units. This can be useful if creating Gauge Groups where the channel name, value and units should be shown; setting the Input channel property on the group will assign the value and also update the channel name and units.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
The Warning Gauge, aka Alarm Bar is a block that changes colour depending on its input. Typically this is used to indicate out-of-range parameters.
For example, an Warning Gauge may be placed next to a gauge showing coolant temperature. The input to the Warning Gauge is configured to give an error signal if the coolant temperature rises above a pre-determined level. The bar colour changes from the specified background colour to the Fill Colour to give an easily seen warning indication.
It is possible to display a Warning Gauge underneath a value or text input gauge. For this to work correctly, the Warning Gauge must be bigger than the maximum likely size of the value gauge. When setting this up in the editor, it is easier to add the Warning Gauge to the page first then the value gauge; this ensures that the value gauge is visible and makes sizing the Warning Gauge correctly easier.
In addition to Standard Gauge Properties , the following properties may be configured:
| Property | Description |
|---|---|
| Borderless | The display will automatically set the line colour to the current fill colour such that a rectangle of uniform colour with no border will be drawn. |
| Colour from input value | If checked, the input channel is a colour value (see below). |
| Colour Map | Allows a gradient to be specified to look up a colour based upon the magnitude of the input value given a start and end value. |
| Flash | The gauge will alternate between the warning colour and the background colour whilst the warning is active. |
Most Display Modules expect the colour value to be a 24 bit RGB value. The hexadecimal (and decimal) values of some common colours are shown below:
| Colour | Hexadecimal | Decimal |
|---|---|---|
| Black | 0x000000 | 0 |
| White | 0xFFFFFF | 16777215 |
| Red | 0xFF0000 | 16711680 |
| Green | 0x00FF00 | 65280 |
| Blue | 0x0000FF | 255 |
Some older firmware versions only support 16 bit RGB565 values as follows:
The 16 RGB colour value treats the top 5 bits as red intensity, the next 6 bits as green intensity and the lower 5 bits as blue intensity. Thus, it is possible to display any one of 65535 colours. The hexadecimal (and decimal) values of some common colours are shown below:
| Colour | Hexadecimal | Decimal |
|---|---|---|
| Black | 0x0000 | 0 |
| White | 0xFFFF | 65535 |
| Red | 0xF800 | 63488 |
| Green | 0x07E0 | 2016 |
| Blue | 0x001F | 31 |
| Cyan | 0x07FF | 2047 |
| Yellow | 0xFFE0 | 65504 |
Typically, a function table would be used to map a given value to a specific colour. To avoid interpolation between the colour values, the function table should be set up such that a range of values defines one colour. For example, the following function table would map brake temperatures of 0 to 250 to blue, 251 to 500 to green, 501 to 700 to yellow and 701 to 1000 to red:
| Input | Output |
|---|---|
| 0 | 31 |
| 250 | 31 |
| 251 | 2016 |
| 500 | 2016 |
| 501 | 65504 |
| 700 | 65504 |
| 701 | 63488 |
| 1000 | 63488 |
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
The Simulator Tab is used to test the setup being edited on a simulated dash.

The simulator can only run if there is suitable simulator firmware for running the current setup.
A simulator firmware version may be selected from the drop-down box below the Play Icon.
If there are no options in the firmware list, it will display “No Firmware” and it will not be possible to start the simulator.
Clicking the Play Icon will start the simulated display using the current setup.
Changes to the setup will cause the simulator to stop.
Display simulators are built from the same code as used by the real display. There may be some differences in behaviour due to differences in the running platform (i.e. the desktop operating system as opposed to an embedded environment).
Clicking the Beacon Icon will simulate a beacon input event, which can be useful for testing lap timing.
Values in the Channels list may be modified to simulate their value changing in the display. For CAN channels, this will simulate the sending of CAN frames to the display firmware.
Filter out any predefined channels from the channels list.
Shows channels that are used by the current screen only.
GDA must be running before checking the “Connect to GDA” checkbox.
A data log file may be loaded in GDA and then played back, which channel values being sent to the simulator.
The channel list should update in response.
The data log must have channels that exactly match the names of channels in the display setup.
Other applications could integrate with the simulator to send their own values to it.
The application must implement a named pipe server, with the pipe name “GemsDAChannelDataServer”.
Data is sent over the pipe using JSON documents, separated by NULL characters, of the form:
{
"cd":[
{ "n": "Channel1", "v": 0.2 },
{ "n": "Channel2", "v": 3.14159 }
]
}The Channels Tab provides configuration of channels in the display.
The Channels Tab lists a subset of all channels.
Channels typically convert values coming from sources into scaled values and can be routed to other channels, gauges, and in some cases externally (e.g. using CAN Transmit).
Some channel types have dedicated tabs such as CAN Channels , Logic Channels or Timer Channels .

The channel type may be changed and each type has a different editor.
Select a channel from the list on the left hand side to view / edit the channel configuration.
The channel may be renamed in the Channel Name field. If a channel is renamed, any references to it (e.g. from Gauges) shall be updated. Channel names must be unique; if the rename would result in a duplicate name then an error will be posted and the Channel Name field will revert to the original name.
Predefined channels can’t be renamed.
Most channels have a single input. This may be a ‘Source’ or another channel.
CAN channels are created using the CAN Receive tab. These have an implicitly created ‘Source’ that can’t be changed.
An ‘in-place’ filter chain may be specified on most channel types. Filter chains insert hidden channels in the setup that modify the channel value in various ways, such as averaging (box filtering) or presenting error text when the input has timed out.
Alternatively, a filter channel may be created to provide an alternative filtered version of the channel with a different name.
See Filter Channel for more details.
If not set, the input units will be implicitly set to the output units of the Primary Input channel.
Otherwise, the Input Units specify the expected units of physical values coming into this channel. If the primary input produces values with a different physical unit then values will be pre-converted to the expected input units, if possible.
To the right of the Input Units selector is a copy button to clone the input units from the Primary Input.
Indicates the physical units of values following any scaling specified by the channel configuration. For example the channel may be a Function (Lookup Table) Channel that has input units of Volts and converts this to a temperature in Celsius. The input and output units make this conversion clear.
These are the physical units that the channel should be displayed in. The channel configuration may produce a specific set of units but the user preferentially would prefer another unit. For example, a Function (Lookup Table) Channel may output celsius but it is preferred to display temperatures in Fahrenheit.
Next to the Display Units selector is a dropdown box to select the Display Units policy. By default, this will be set to ‘Match Preferences’:
Automatically set the display units for this channel when the global unit preferences are changed. For example, if the Output Units are a temperature unit and the unit preferences selects ‘Fahrenheit’ for temperature units then the display units shall automatically be changed to ‘Fahrenheit’ and the physical value of the channel shall be rescaled from the selected Output Units.
If there is not a global unit preference for the Output Units type then this is equivalent to the ‘Match Output’ policy.
When ‘Match Preferences’ is selected a Unit Preferences button is show to the right of the drop-down box to open the Unit Preferences. The preferences are also available from the menu action , see Unit Preferences
for more details.
Match Preferences will not automatically track Unit Preferences if ‘Auto Apply to Channels’ is not checked in the Unit Preferences dialog. Legacy display setups will default this setting to ‘Off’ to avoid a change in behaviour when coming from a legacy version of the software.
Track the selected Output Units for the display units - if the Output Units are changed then the Display Units shall be automatically updated to match.
Always convert the output units to the selected Display Unit, if a conversion exists.
Towards the bottom right of the Channels List, use the button to add a new channel, and the
button to remove the selected channel(s).
Removing CAN channels from this list shall also remove the channel from the signals table on the CAN Receive Tab.
Depending upon the display type, there will be some pre-defined channels in the setup. New setups will have these channels added automatically.
When loading existing setups, if any predefined channels are missing, they shall be automatically added when the setup is loaded.
Check the “Show Predefined” checkbox to the lower left of the Channels List to include predefined channels in the Channels list. Predefined channels are shown in a different colour and usually can’t be edited or removed from the setup.
Using the context menu (right click) on the channel list provides an option to show the channel in the CAN Receive .
| Channel | CD34 | LDS4 | CD32 | LDS35 | LDS35_L | CD6-43 | GLW-43 |
|---|---|---|---|---|---|---|---|
| Linear (Y=mX+b) | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Function | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Filter | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Text | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| ECU Text | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Bitmask | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Maths | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Fuel | Yes | Yes | Yes | No | No | Yes | Yes |
| Distance Countdown | Yes | Yes | Yes | No | No | Yes | Yes |
| Calibration Factor | Yes | Yes | Yes | No | No | Yes | Yes |
| Distance Trip | Yes | Yes | Yes | No | No | Yes | Yes |
| Freeze | Yes | Yes | Yes | No | No | Yes | Yes |
| Differentiator | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Integrator | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| If | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| History String | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Case | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| ETA | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Toggle | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Countdown Timer | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| On Change | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
There are a number of channels that are automatically added to the display setup. These cannot be deleted as they can be critical to the display operation.
By default, the pre-defined outputs are hidden from view in the Channels Tab and are only visible as appropriate inputs when configuring other channels or gauges. They can be made visible in the Channels Tab by checking the Show Predefined Outputs box.
Most Display Module types have multiple analogue inputs named A1 Raw, A2 Raw etc.
Analogue inputs typically have 12 bit resolution with a range of 0 to 4095.
CAN status channels such as CAN 1 Status channel can be used to display the state of the current CAN port by setting it as the input to a Text Input Gauge gauge.
More than one status channel may be available if the Display Module supports multiple CAN ports.
| Status | Description |
|---|---|
| CAN 1 OK | The CAN bus is working correctly. |
| CAN 1 DISABLED | The CAN bus has not been setup or is not present. |
| CAN 1 BUS OFF | A serious error has occurred on the CAN bus - this may be due to the wrong baud rate being set or the CAN wires shorted together. |
| CAN 1 Disconnected | No messages have been received by the display in the last three seconds. |
| CAN 1 Warning | Errors are present on the bus; this may be due to incorrect baud rate or noise. |
| CAN 1 Tx not acknowledged | A message sent by the Display Module has not been acknowledged by any nodes on the network. |
| CAN 1 TOO MANY MESSAGES | The total number of messages that the display is being asked to receive and transmit exceeds the capability of the CAN hardware. This can be overcome by using CAN message masks. |
| CAN 1 Rx Timeout | Traffic is present on the bus but none of the channels that the Display Module has been set up to monitor on the current screen (and monitor screen) are present. |
The Display Module can perform lap timing when connected to a suitable beacon. To configure lap timing see Lap Timing / GPS .
Most lap timing channels are ’time’ types; Gauges should use time based formatting to display them (see Value Formatting ).
If lap timing channels are used as inputs to other channels, they are first converted to milliseconds and sent as a floating point number instead of as a time value.
To display lap time deltas on Bar Gauges , create a Linear (Scalar) Channel with the pre-defined delta channel as an input. This will convert the time to a floating point number, making it possible to use it in a bar type gauge.
| Channel Name | Description |
|---|---|
| Current Lap Num | The current lap number. This is zero until the first beacon has been passed then increments by 1 each time a beacon is passed. |
| Current Lap Time | The elapsed time of the current lap. When a beacon is passed, the lap time will freeze for 3 seconds to show the time of the lap just completed before resuming to show the new current lap time. |
| Last Lap Num | The number of the last lap just completed. |
| Last Lap Time | The lap time of the lap just completed. |
| Fastest Lap Num | The number of the fastest lap in the current session. |
| Fastest Lap Time | The time of the fastest lap. |
| Fastest Lap Delta | The time difference between the last completed lap and the previous fastest lap. |
| Last Lap Delta | The time difference between the last completed lap and the previously completed lap. |
| Fastest Lap Average Speed | The average speed of the fastest lap. |
| Last Lap Average Speed | The average speed of the last lap. |
| Predicted Lap Time | The predicted lap time of the current lap based on the fastest lap. |
| Predicted Fastest Delta | The predicted difference between the current lap and the fastest lap. |
| Predicted Last Delta | The predicted difference between the current lap and the last lap. |
The Screen Selector channel is derived from an analogue input (depending on the type of module).
It uses a lookup table that is pre-calibrated for a 12 position switch using 1k resistors.
If you have used a different page select switch, the lookup table may need to be recalibrated.
If page select is being done via CAN or a button press, the page select input can be used as an analogue input (shown as A00 Raw).
To prevent the input also changing pages, edit the Screen Selector lookup table; set the first row to have an input of 0 and an output of 0 and the seconds row to have an input of 4096 and an output of 0.
Most Display Module types have multiple speed inputs and these are shown in the setup as channels called Speed 1 Raw, Speed 2 Raw etc.
The raw speed outputs are scaled in Hz.
Bitmask Channels are used to mask off bits from a raw (32 bit) input.
This is useful when data is received from the ECU that contains information for two different outputs.
For example, the lower 4 bits of a value may be used to determine gear position while the upper 4 bits determine diff mode.

The mask, in hexadecimal format.
Any bits in the input value that are also set in the mask are allowed through, otherwise the bits shall be set to zero.
If used as a derived output, internal values in the display are represented as double precision floating point numbers. Floating point numbers are converted to integer prior to masking.
Hexadecimal format is used here since it lines up nicely with bits. A single hexadecimal character represents 4 bits:
| Hex | Binary |
|---|---|
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
| A | 1010 |
| B | 1011 |
| C | 1100 |
| D | 1101 |
| E | 1110 |
| F | 1111 |
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
Calibration Factor channels allow a programmable value to be created that can be linked into the events system to allow end users to set a new value on the display itself.
This can be used as a calibration factor or for storing initial fuel values for example.

The display will use this value whenever a new setup has been programmed.
If the output has not been added to the monitor page, then the output will be reset to this value whenever it is not shown.
If “Always use initial value at startup” is checked then the calibration factor will not be saved in non-volatile memory during power-off of the display.
If the value should be persistent when the display is switched off, then the output MUST be added to the Monitored Channels .
This is the amount the value is changed by in response to the Increase and Decrease events.
If ticked then the display prevents the value from exceeding the Min Value or Max Value limits.
If limits are specified then the Wraparound option is available. Check Wraparound to make the calibration value go back to Min Value after increasing the value beyond Max Value (and also in the opposite direction).
See also: Events Tab
Configures the event for increasing the calibration factor by the Resolution value.
Configures the event for decreasing the calibration factor by the Resolution value.
Configures the event for resetting the calibration factor value to Initial Value.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | No |
| LDS35_L | No |
| CD6-43 | Yes |
| GLW-43 | Yes |
Checks through a list of input channels until a non-zero (true) input is found and outputs a value corresponding to that input.

The condition list is in priority order - highest priority first; the case channel checks each Condition in list order in turn until a true condition (i.e. the value of the output is greater than 0) is found. This then results in the corresponding Output Value from the channel.
The case sensor is useful for making an output for use as the selector input in a bitmap selector.
Use the and
buttons to the bottom right of the list to add or remove rows from the list.
The priority of items may be adjusted with the and
buttons.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
Differentiator channels are used to create an output that is the differential of an input with respect to time; i.e. the gradient or rate of change of the input value.
Differentiation is the inverse of integration (see Integrator Channel ). Given an input like Distance Travelled, the rate of change may be computed to give an approximation of the Speed.

Computing differentials using the first difference alone can result in a very noisy looking signal.
The average slope over the last Window seconds is therefore computed.
Acceptable values are between 0.1 and 2.0 seconds.
Higher numbers will produce a smoother, more filtered output but with a slower response time.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
Distance Countdown Factor channels allow a programmable distance count-down value to be created that can be linked into the events system to allow end users to set a new value on the display itself and reset the countdown value with an event.

When a Reset event is received, the output shall be reset to Initial Value.
If Reset Value is checked then the display will use this value whenever a new setup has been programmed.
If the output has not been added to the monitor page, then the output will be reset to this value whenever it is not shown.
This is the amount the value is changed by in response to the Increase and Decrease events.
See also: Events Tab
Configures the event for increasing the Initial Value by the Resolution value.
Configures the event for decreasing the Initial Value by the Resolution value.
Configures the event for resetting the output value to Initial Value.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | No |
| LDS35_L | No |
| CD6-43 | Yes |
| GLW-43 | Yes |
Distance Countdown Factor channels allow a programmable distance count-down value to be created that can be linked into the events system to allow end users to set a new value on the display itself and reset the countdown value with an event.

If Reset Value is checked then the display will use this value whenever a new setup has been programmed.
This is the amount the value is changed by in response to the Increase and Decrease events.
See also: Events Tab
Configures the event for increasing the Output Value by the Resolution value.
Configures the event for decreasing the Output Value by the Resolution value.
Configures the event for resetting the output value to zero.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | No |
| LDS35_L | No |
| CD6-43 | Yes |
| GLW-43 | Yes |
ECU Text channels are used to obtain a text string (such as a calibration name) from a connected ECU.
The ECU Text channel type may only be selected on channels that come directly from a raw CAN source.

The length of the string to read. Characters are read one-by-one from input value updates, typically this would be a single byte in a CAN message.
Typically strings would come from an ECU in response to a CAN Request .
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
ETA channels are used to compute an estimated time of arrival.
ETA channels output a time value and any gauges must have an appropriate time format specified.

Select a channel with the distance remaining to the destination. The channel should have appropriate units, see Conversion below.
Select a channel with the vehicle speed. The channel should have appropriate units, see Conversion below.
The ETA channel computes the time, in seconds using the equation:
('Distance' * 3600) / 'Speed'This is then converted to a time value.
Since there are 3600 seconds in an hour, it is expected that the speed is in distance/hour.
So the following options are viable for the input units of the Distance and Speed channels:
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
Filter channels can be configured to apply a chain of filters to the Primary Input channel.

Use the and
buttons to the bottom right of the Filter/Modifier list to add or remove filters from the list. The first item is the Filter Channel itself and can’t be removed.
When there are multiple filters in a chain, Dash Design will insert hidden ‘modifier’ channels into the setup.
If the channel is used as the input to another output or a gauge then references shall be updated so that value at the end of the filter chain is routed to the output or gauge.
Outputs the minimum value of valid input values since the display was started / the filter was reset.
See Reset Triggers for details on the Reset Trigger and Reset Source options.
Outputs the maximum value of valid input values since the display was started / the filter was reset.
See Reset Triggers for details on the Reset Trigger and Reset Source options.
Outputs the average value of valid input values since the display was started / the filter was reset.
See Reset Triggers for details on the Reset Trigger and Reset Source options.
Rejects any input values that are below Minimum or above Maximum.
If out of range inputs are received then the value is not passed on to derived outputs or gauges.
A filter that limits the rate of change of the input channel.
Data that changes faster than the rate limit is discarded. Called ‘Rate Filter’ in prior versions.
Outputs the minimum/maximum/average value of the input value over a time window.
Frequency at which the filter is calculated and will produce a value.
Increasing the update period will reduce memory requirements since the display must store less samples in the given time window.
Range over which the rolling function is calculated (the window size).
Avoid excessively large windows with short update periods as these will require large amounts of memory in the display.
If the memory required for the window exceeds available resources, then the display setup may not function correctly.
A filter that takes a single channel value sample and outputs that value for a predetermined time, before another sample is taken and output.
Frequency at which the input value is resampled.
A filter that watches to see if an input channel is still being updated and if not, then a default value is sent in it’s place.
Typically used to define a replacement channel value when a CAN channel ceases to arrive as expected rather than just showing the last CAN value received.
Value to output if the input times-out.
Timeout, in milliseconds. If no value received after this period, the fallback value will be shown.
Checks if a value is out of range to produce error text when in the out of range condition.
Value for logic comparison with the input value (NOT Error Input).
Logical comparison operator for comparing input value with the input value, as in:
'input value' <comparator> <comparison value>e.g.
'input value' < 5Text that should be output to gauges if the error condition is active.
Input channel that if non-zero, shall be used to put the channel into the error condition.
If an Error Input and a condition are specified then the result is the logical OR of the two conditions.
Many filters offer a Reset Trigger. This is specified in conjunction with a Reset Source.
Input Channel to reset the filter. The Reset Trigger option specifies how the Reset Source value is interpreted.
Select the condition under which the Reset Source should trigger a reset of the filter.
Any change in value of Reset Source shall reset the filer.
Reset the filter when Reset Source reduces in value.
Reset the filter when Reset Source increases in value.
Reset the filter when Reset Source is zero.
Reset the filter when Reset Source is not zero.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
Outputs the Primary Input value as-is. In response to start/stop events, the output is be held at the input value when the freeze state was entered.
This is useful for example when freezing values at stage end in rallying.

Click the link to select an event that should put the channel into the freeze state.
Click the link to select an event that should take the channel out of the freeze state.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | No |
| LDS35_L | No |
| CD6-43 | Yes |
| GLW-43 | Yes |
Fuel used trip meter - outputs the amount of a resource (e.g. fuel) used / remaining.
The Primary Input value is an absolute value of the used resource.
Effectively the Fuel Channel outputs the change in value since the first value is received or since a reset event.

Count down from the initial value to zero.
Count up from the initial value.
If not checked then the reset value will be the initial input value.
Configurable event to reset to the initial value or, if specified, the reset value.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | No |
| LDS35_L | No |
| CD6-43 | Yes |
| GLW-43 | Yes |
Function tables are used for non-linear scaling; they ’look up’ the value of the ‘Primary Input’ in the table and result in the corresponding output value.

If the input falls between two values, linear interpolation is used to derive the output value.
Otherwise, the output will be stepped. This can be useful for resistive ladder type switches for e.g. page selector inputs.
If ‘signed’ is checked then raw input values are treated as twos-complement numbers.
Enter values into the table by typing. There is an empty row at the end of the table for adding new values.
Rows may be inserted between other rows by selecting ‘Insert’ from the context menu (right-click on the grid).
The and
buttons to the bottom right of the table may be used to add or remove rows.
Use the TAB key and Shift-TAB to navigate between the table editor cells using the keyboard.
Table values may be copied to / pasted from the clipboard in a spreadsheet compatible format. Right-click on the grid to show the context menu and select copy/paste.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
The If Channel uses two inputs. It passes the specified input through to the output if the conditional input is true non-zero.

The Primary Input, the value to pass through if the Condition input is non-zero.
An input channel that if non-zero allows the primary input value to be passed on to any derived outputs or gauges.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
Integrator channels perform integration of the Primary Input, with respect to time (in seconds) to produce an output.
For example, it can be used to produce a distance output from a speed input.
Integration is effectively the area under a graph of the Primary Input on the y-axis plotted against time, in seconds, on the x-axis.

Integrator Channels require the Primary Input to be a rate per second (e.g. [m/s] or [m/s/s]).
Input units may be specified on the channel to ensure that an appropriate units conversion is made if the Primary Input is not with respect to seconds.
For example, if Primary Input is in units of [rpm], the input units could be set to [rps] to convert to revolutions per second for correct integration, producing a value of ‘revolutions’.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
This is one of the most commonly used channel types. The channel is scaled using a linear scaling equation y = mx + c - i.e a multiplier and offset.

The multiplier value (m in y = mx + c).
Added to the value after applying the multiplier (c in y = mx + c).
If ‘signed’ is checked then raw input values are treated as twos-complement numbers.
If ‘reciprocal’ is checked then the scaling equation takes the form y = (1 / x) * scalar + offset. If the input value is zero then the result will be the special floating point value NaN (Not a Number).
The graph shows the scaling relationship.
Sets the minimum value to show on the X-axis of the graph. This has no effect on the setup when running on the display.
Sets the maximum value to show on the X-axis of the graph. This has no effect on the setup when running on the display.
If a pair of reference values for input vs output are available (e.g. from a sensor data-sheet), click the Calculate button () and enter in the values. Clicking OK will compute the scalar and offset required to fit the pair of points.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
Maths channels can be used to calculate values from one or more inputs using arithmetic and functions.
The equation entered for a maths channel is referred to as a ‘script’.

Type in the Maths Function area to enter in your script.
Press Ctrl-Space in the script editor to show function / constant autocomplete.
Below the script entry area, any errors in the script will be shown.
Above the script area are buttons for inserting channels, functions, operators and constants.
Whilst it is generally quicker to type scripts in by hand, the buttons offer a reminder of what’s available.
Input variables may be specified in maths scripts in the form $N where N is a number, e.g. $1 or $5. Up to 64 input variables may be specified.
If input variables are used then the inputs may be selected underneath the script entry area.
For example, to multiply two input variables together, you could write:
$1 * $2As an alternative to Input variables, channels can be specified directly in maths scripts using the channel name in single quotation marks.
e.g.
'Analog 01'When typing a single quote character in the script editor, a list of channels will be shown for auto-completion.
Comments can be inserted in scripts and start with a # character. They continue to the end of the line. Scripts may span over multiple lines.
# This is a comment| Operator | Precedence | Description |
|---|---|---|
| () | 1 | Parenthesis for grouping expressions, e.g. ('x' + 'y') * 4 |
| ** | 2 | Exponentiation (x ** y => xy) |
| * | 3 | Multiplication |
| / | 3 | Division |
| % | 3 | Modulo (remainder of integer division) |
| + | 4 | Addition |
| - | 4 | Subtraction |
As with normal algebra, multiplication of terms takes precedence over addition and will be applied first. If the precedence is not clear, it is recommended to group expressions using parenthesis.
e.g. in the expression:
1 + 2 * 3 # Multiplication takes precedence over addition so 2 is multiplied by 3 before adding 1.Operators at the same level of precedence are evaluated left-to-right.
| Function | Description |
|---|---|
| E | Eulers number e, 2.718281… |
| PI | Pi (Ď€), 3.141592… |
| PHI | Golden Ratio, Phi (φ), 1.618033… |
| true | Boolean 1. |
| false | Boolean 0. |
| Function | Description |
|---|---|
| abs(x) | Returns the absolute value of ‘x’, |
| exp(x) | Returns the natural exponential of ‘x’, ex. |
| log10(x) | Returns the base 10 logarithm of ‘x’. |
| ln(x) | Returns the natural (base e) logarithm of ‘x’. |
| min(x1, x2 …xN) | Returns the minimum value of x1…xN. |
| max(x1, x2 …xN) | Returns the maximum value of x1…xN. |
| pow(x, y) | Returns x raised to the power of y; xy. |
| sgn(x) | Returns the 1 if ‘x’ is positive, -1 if ‘x’ is negative and 0 if ‘x’ is zero. |
| sqr(x) | Returns the square of ‘x’. |
| sqrt(x) | Returns the square root of ‘x’. |
| Function | Description |
|---|---|
| acos(x) | Returns the arc-cosine (inverse cosine) of ‘x’, in radians. |
| asin(x) | Returns the arc-sine (inverse sine) of ‘x’, in radians. |
| atan(x) | Returns the arc-tangent (inverse tangent) of ‘x’, in radians. |
| cos(x) | Returns the cosine of ‘x’ (in radians). |
| sin(x) | Returns the sine of ‘x’ (in radians). |
| tan(x) | Returns the tangent of ‘x’ (in radians). |
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
On Change Channels are used to monitor multiple input channels for changes.
If any of the input channels change, the value of the On Change output changes from 0 to 1.
This is useful for example, for monitoring mode switches; when one of the modes changes, the On Change output can be used as an event to trigger a jump to a page showing more information about the changing mode.

Once triggered, the On Change Revert shall be triggered after the Revert timeout has elapsed.
Following a power-up or system reset, the Initial Delay prevents the On Change channel from producing a value.
When an On Change output is created, a hidden On Change Revert channel is created using the name of the On Change output with a _Revert suffix. This output is a logical not of the On Change channel and can be used to revert back to the original screen once the output has stopped changing.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
Sensor Library Channels provide a library of sensor types that may be selected from.
The sensor library channel will only be available if a sensors.library file is installed in the application’s program files directory.

Select a category from the drop-down box and the list of sensors will be filtered according to type (e.g. Pressure or RPM).
Select a sensor in the Sensor List to apply the scaling.
To the right of the sensor list, a description of the sensor will be shown, if available in the library.
The sensors.library file can be provided in XML format:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<sensor_library>
<scalar category="Pressure" name="Type 1" multipler="3.5" offset="-1" input_units="voltage:V" units="pressure:psi">
<notes><v:long_varstr>
<!-- HTML description -->
</v:long_varstr></notes>
</scalar>
<scalar category="Pressure" name="Type 2" multipler="2.5" offset="-0.5" input_units="voltage:V" units="pressure:psi">
<notes><v:long_varstr>
<!-- HTML description -->
</v:long_varstr></notes>
</scalar>
<function category="AFR" name="AFR Gauge Type 1" input_units="voltage:V" units="afr:LA">
<notes><v:long_varstr>
<!-- HTML description -->
</v:long_varstr></notes>
<ft_iopair fti_double="0.00" fto_double="0.6"/>
<ft_iopair fti_double="2.00" fto_double="1.0"/>
<ft_iopair fti_double="3.00" fto_double="1.1"/>
<ft_iopair fti_double="4.00" fto_double="1.2"/>
<ft_iopair fti_double="5.00" fto_double="1.4"/>
</function>
</sensor_library>Text Channels look-up a textual representation for a given input value.
If the input has distinct values for each possible text value (i.e. an enumeration) then a list of value => text may be specified.
If the input has multiple bits to indicate active states then a set of masks with priority may be specified (Advanced Mode).

Use the and
buttons to the bottom right of the list to add or remove rows.
There is also a blank row at the end of the list - entering values in the blank row will append a new entry.
The order of items may be adjusted with the and
buttons.

In advanced mode, the list has 3 columns:
Value to mask (logical AND) with the input and if all the bits are set then the item is active.
If any items are active then the one with the ‘highest’ priority shall be shown. Lower numbers have a higher priority (e.g. Priority 0 overrides Priority 1).
The text to display if the item is active.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
Toggle Channels switch between 0 and 1 when a toggle event is received.
For example, it can be used to toggle the display between operating in MPH and KPH in response to a button push.

The initial output value of the channel before any toggle events have been received.
Click on the link to select an event that should cause the Toggle Channel to change state.
| Display | Supported? |
|---|---|
| CD34 | Yes |
| LDS4 | Yes |
| CD32 | Yes |
| LDS35 | Yes |
| LDS35_L | Yes |
| CD6-43 | Yes |
| GLW-43 | Yes |
The Logic Channels Tab provides configuration of logic (conditional) channels in the display.
The output from a Logic Channel is either zero or one.
Logic Channels may be used to implement alarms. An output of one indicates that the alarm has been triggered (the condition is true), zero indicates no alarm has been triggered (the condition is false).

Each row of the grid defines a logical operation that will return true (1) or false (0). When evaluating the alarm output, the display combines the result of the current line and carries it forward to the next line. Lines can be added or removed with the Add or Delete buttons.
In the above example, the logic channel will output 1 if “Bat Alarm > 0” OR ‘Coolant Alarm > 0’.
The channel can be renamed using the Channel Name box.
The Delay Before Trigger value adds a delay after display power on before the alarm is processed. This is useful when using logic channels for triggering page changes as it can be used to prevent erroneous page triggers when ECUs broadcast default values whilst initialising.
The Retrigger After value specifies a timeout in seconds after which the alarm (if still triggered) will toggle to un-triggered and back to triggered. This is useful for when an logic channel has been used to trigger a page change, usually showing a warning to the driver, for example, low oil pressure. The driver can select the standard page again to cancel the alarm. If the oil pressure is still low after the specified period, then the warning page will be shown again.
If the Retrigger value is set to zero, then the alarm will only retrigger if the input conditions change to false and back to true again.
The Notifications Tab provides configuration of text-based notifications in response to conditions such as alarms.

The Notification Channel name can be changed in the Channel Name box.
The Messages table lists the individual messages that make up this Notification Channel. There must be at least one entry. To add or delete entries, use the Add/Delete buttons.
The table has the following columns:
| Column Name | Description |
|---|---|
| Warning Input | Specifies the input used to trigger this warning. If the value of the output is non-zero, the associated warning message will be displayed. Typically it is an output defined with an alarm sensor. |
| Warning Label | Is the text to display when the warning is active. When an ‘@’ symbol is inserted into the warning label a formatted input value from the Label Input replaces it in the display. |
| Label Input | Specifies the output to be used for the value in the ‘@’ position if required. |
| Label Input Format | Specifies the format of the value from the Label Input if required. For full details on value formatting, see Value Formatting in the gauge reference section. |
If all the inputs are zero, the output text is empty. If only one input is non-zero, the appropriate warning is displayed. If multiple inputs are non-zero, the active messages are displayed in turn, with each one being displayed for around a second.
The On Time, Off Time and Min On Time can be used to affect how the warning is displayed when only one warning is active and are scaled in milliseconds. For example, to have a single message flash at 2Hz, set the On Time to 1.0 and the Off Time to 1.0. Setting the Off Time to 0 disables flashing.
The Min On Time can be used to ensure a warning is visible even if it is only briefly triggered.
For example, a low oil pressure alarm triggered during cornering may only occur for a fraction of a second but by setting the Min On Time to 2.0 ensures that the message is displayed for 2 seconds and so is more likely to be seen.
The Timers Tab provides configuration of various types of timers.

Performance Timers provide a convenient way to configure timers that measure the time elapsed over a range, typically distances or speeds. For example, time over 1km or 0…60mph or 60…100mph etc.
Use the Quick Setup button to easily configure distance or speed range timers.
Distance based Performance Timers will typically use a speed input and numerically integrate the speed to give distance for the stop condition limit. Integration is performed with respect to time; speed channels should have units of d/s, where d is a distance unit (e.g. km/s or mi/s) - integration will then result in a value with units d.
Integration uses the trapezoidal rule and the stop time is interpolated between the samples between which the stop condition became true.
| Event | Description |
|---|---|
| Reset | Resets the performance timer to 0, any integrated values will also be reset to 0. |
A timer that may be started / stopped / reset by the event system. Stopwatch timers are reset to 0 and count up from there.
| Event | Description |
|---|---|
| Start | Starts the stopwatch timer. The timer shall continue counting from its current internal value. |
| Stop | Stops the stopwatch timer. The value shall be held until reset. |
| Reset | Resets the stopwatch to 0 |
| Stop Until Reset | Stops the stopwatch. If this event is received then the stopwatch must receive a Reset event before it may be restarted. |
| Toggle | Starts the timer if currently stopped, otherwise stops the timer. Can be useful for manual start/stop buttons. |
Count Down timers start at a editable starting time, Initial Value, and count down from there until 0 is reached.
As with Stopwatch timers, Count Down timers are controlled by the events system.
The starting time may be adjusted by increase / decrease events. This can be useful for implementing a count down timer configuration page on the display. If hardware buttons are available then when on the timer configuration page, the buttons can be routed to the timer using the events system. See also Events Tab .
| Event | Description |
|---|---|
| Start | Starts the stopwatch timer. The timer shall continue counting from its current internal value. |
| Stop | Stops the stopwatch timer. The value shall be held until reset. |
| Reset | Resets the stopwatch to 0 |
| Toggle | Starts the timer if currently stopped, otherwise stops the timer. Can be useful for manual start/stop buttons. |
| Increase | Increases the Initial Value by Adjust Delta [s] |
| Decrease | Decreases the Initial Value by Adjust Delta [s] |
The CAN Tab provides configuration of CAN channels and, if supported by the display, CAN message transmission (CAN Tx).
There are further sub-tabs within the CAN Tab:

Many ECUs and modules are provided with a Signal Database (DBC) file which defines the CAN IDs and scaling factors that are output by nodes (e.g. ECUs) on the CAN network.
GEMS GWv4 software can generate a dbc file for the CAN telemetry output for any GEMS CAN enabled ECU.
Dash Design supports importing DBC files and this greatly simplifies the initial setup of the display. As well as importing the CAN ID, start bit, length etc for each channel, it also imports scaling factors and creates the outputs required for use by any of the display gauges.
To import a DBC file into the current setup, click the Import… button in the CAN Receive editor.
Select “Import CAN/DBC…” to add to the current list of signals.
Select the DBC file to open from the file dialog. The DBC Import dialog will then be shown:

The dialog shows a tree view with the network name as the parent.
Below this is a list of nodes on the network - in the above example, there is only one node, “GDI80”.
Below this is a list of messages with their IDs (eg “CTele1_M1 (0x4A9)”). If the message list is expanded, a list of the signals or channels on this message is shown (eg “Engine_Speed”, “Coolant” etc).
Any item with a tick next to it will be imported.
By default, everything is selected to be imported. If there are some signals, messages or nodes that are not needed, unchecking these items will prevent them from being imported.
Clicking the Import button imports the data. If there are any conflicts (i.e. duplicates between the DBC file and the current setup), the DBC conflict window will be shown:

This shows the data for which there is a conflict and presents options to Replace, Keep (Rename), Skip or Cancel. By ticking the “Apply to all” box, any further duplicates will be treated in the same way without additional user interaction.
One the import has completed, the setup will include the new CAN channels with the signal name from the DBC file.
If the signal defines a text table for the various values of the signal, the signal table will display ‘Text’ in the Conversion column.
If the signal has a comment in the DBC file then this will be imported and the signal will have an information icon. Hovering over the signal will reveal the comment in a tool-tip.
To avoid conflict resolution when re-importing a DBC file, select “Replace CAN/DBC…” to replace signals by default.
The CAN (Controller Area Network) bus is a bus standard designed to allow devices to communicate with each other on a vehicle network. ECUs typically send data on specific CAN messages. Each CAN message has an ID (either 11 bits long or 29 bits long for extended identifiers) and consists of up to 8 bytes (64 bits) of data. By monitoring the CAN bus for specific message IDs, the display can receive and display data from the other ECUs.
For displays that support it, CAN-FD offers higher data rates and larger message sizes.
Configure the CAN port on the CAN Receive Tab , CAN Request Tab or CAN Transmit Tab .
The CAN port configuration options can vary depending upon whether the display supports CAN-FD.

CAN Port Configuration

CAN-FD Port Configuration
When CAN-FD is enabled, the data bitrate may also be specified.
A CAN network can run at various bit rates; however, all ECUs on a network must run at the same bit rate.
The display CAN bus speed must match that of the connected device for the CAN to work. To set the bus speed, select the required speed from the drop down list on the CAN Receive Tab , CAN Request Tab or CAN Transmit Tab .
For CAN-FD, an additional data bitrate may be specified. If set to ‘Disable CAN-FD’ then sending or receiving CAN-FD frames is disabled on the CAN Transceiver.
CAN-FD frames typically send the data payload with a higher bitrate to achieve higher bandwidth. While in theory this could be set as high as 8 Mbit/s, in practice this is rarely achievable and a lower speed such as 4 Mbit/s is recommended.
The CAN bus network must be terminated with 120 ohm load resistors at each end of the network. It is common for Engine Management Systems to have a load resistor fitted internally. Most displays have a software selectable load resistor that can be enabled in the setup if required; check the ‘Termination Resistor’ checkbox to enable it.
There are many forms of notation for defining the position of data in a message.
Dash Design considers each data byte in a message to have the most significant bit on the left and the least significant bit on the right.
The bit layout of a CAN frame is as follows:

CAN Message Bit Numbering
The CAN Message Layout view shows a visual representation of the layout of signals within a CAN message, which greatly simplifies the process of positioning signals.
Signals are extracted into data channels from CAN messages by specifying the start bit and bit-length of the data. The Start bit is specified as the least significant bit (lsb) of the least significant byte (LSB). For example, Byte 0 has a start bit of 0 and a length of 8. Byte 1 has a start bit of 8 and a length of 8 and so on. The least significant bit of a signal becomes the least significant bit in the extracted data channel.
Signal bit offsets need not be aligned to byte boundaries and can consist of less than 8 bits.
When dealing with multi-byte data, there are two common ways of representing numbers:
Because the start bit is specified as the least significant bit of the least significant byte, the byte order (endian) of the data affects the start bit. Consider a 16 bit number occupying the first two bytes of a message. In both cases, the length is 16 bits.
In Little Endian mode, the start bit is 0:

Little Endian Signal Layout
In Big Endian mode, the start bit is 8:

Big Endian Signal Layout
Note that lsb signifies Least Significant Bit and msb signifies Most Significant Bit. The arrow shows the direction from least significant data to most significant data.
Some ECUs send data in a multiplexed format. In this format, part of the message (often the first byte) is defined as the multiplexor. The other bytes in the message have different meanings depending on the value of the multiplexor.
For example, if the multiplexor is 0, Byte 1 could contain the current state of output 0 on a power management unit. If the multiplexor is 1, Byte 1 could contain the current state of output 1 and so on. In this way, ECUs that require transferring many parameters at a slow rate can do so with fewer message IDs, making it easier to manage the message IDs in the system as a whole.
The following table lists the start bit and length values for many common, byte aligned, data types and can be used a quick reference to simplify creating CAN setups.
The number following the value type indicates the position of the data within the 8 byte payload aligned to the size of the value type. For example, Byte 0 is on byte 0, Byte 1 on byte 1, Int16 0 is on bytes 0 & 1, Int16 1 is on bytes 2 & 3 etc.
The Byte order specifies LE for little endian and BE for big endian for multi-byte types.
| Value Type | Byte Order | Start Bit | Length | Description |
|---|---|---|---|---|
| Byte 0 | - | 0 | 8 | Byte 1 |
| Byte 1 | - | 8 | 8 | Byte 2 |
| Byte 2 | - | 16 | 8 | Byte 3 |
| Byte 3 | - | 24 | 8 | Byte 4 |
| Byte 4 | - | 32 | 8 | Byte 5 |
| Byte 5 | - | 40 | 8 | Byte 6 |
| Byte 6 | - | 48 | 8 | Byte 7 |
| Byte 7 | - | 56 | 8 | Byte 8 |
| Int16 0 | BE | 8 | 16 | Word 1 Big Endian |
| Int16 1 | BE | 24 | 16 | Word 2 Big Endian |
| Int16 2 | BE | 40 | 16 | Word 3 Big Endian |
| Int16 3 | BE | 56 | 16 | Word 4 Big Endian |
| Int16 0 | LE | 0 | 16 | Word 1 Little Endian |
| Int16 1 | LE | 16 | 16 | Word 2 Little Endian |
| Int16 2 | LE | 32 | 16 | Word 3 Little Endian |
| Int16 3 | LE | 48 | 16 | Word 4 Little Endian |
| Int32 0 | BE | 24 | 32 | Int 32, Byte 1 Big Endian |
| Int32 1 | BE | 56 | 32 | Int 32, Byte 5 Big Endian |
| Int32 0 | LE | 0 | 32 | Int 32, Byte 1 Little Endian |
| Int32 1 | LE | 32 | 32 | Int 32, Byte 5 Little Endian |
| Int64 | BE | 56 | 64 | Int 64 Big Endian |
| Int64 | LE | 0 | 64 | Int 64 Little Endian |
| Float 0 | BE | 24 | 32 | Float, Byte 1 Big Endian |
| Float 1 | BE | 56 | 32 | Float, Byte 5 Big Endian |
| Float 0 | LE | 0 | 32 | Float, Byte 1 Little Endian |
| Float 1 | LE | 32 | 32 | Float, Byte 5 Little Endian |
| Double | BE | 56 | 64 | Double Big Endian |
| Double | LE | 0 | 64 | Double Little Endian |
The CAN Receive Tab provides configuration of channels received via CAN messages.
At the bottom of the tab are the CAN frames and signals, represented as a unified list.
To the right of the tab is a CAN message layout view.

For displays with multiple CAN ports, the port may be selected via a drop-down box at the top-left of the tab. The signals table will only show signals configured for the selected port.
CAN Receive setup differs from prior versions of the software and will automatically add a scaled ‘output’ channel for the CAN source, effectively combining the signal decoder and the scaling.
CAN channels will also be viible on the Channels Tab .
Channels may be imported from Signal Database (.dbc) files using the Import… button. See CAN Signal Database (DBC) Import for further details on the import process.
It is not recommended to modify scaling after importing from a DBC file here - additional derived channels with different units / scaling may be added on the Channels Tab .
Towards the bottom right of the Signals Table, use the button to add a new signal, and the
button to remove the selected signal(s).
New signals will copy some fields from the currently selected signal, such as the CAN ID.
Press the ‘Clear’ button to remove all CAN signals / messages from the selected CAN port.
The signals table lists all the CAN signals configured to be received on the selected CAN port.
The context menu (right click) provides a command to show the selected signal in the Channels Tab .
The name of the CAN source. Clicking on the header at the top of this column will sort the table by name.
If the signal was imported from a DBC file and a comment was specified then signal will have an information icon. Hovering over the signal will reveal the comment in a tool-tip.
Multiple signals may be selected by holding down the Ctrl or Shift key while clicking on the signals.
Multiple selection allows editing of the selected signals collectively using the signals properties form to the right hand side of the view.
Some properties are not be available for editing in the properties form, for example channel scaling and filtering.
The CAN ID. This is specified as the right most 11 bits of a 16 bit value or the right most 29 bits of a 32 bit value for extended IDs.
If the Show CAN IDs as Hexadecimal box is checked, the IDs are shown and entered as hexadecimal numbers with an 0x prefix. Otherwise, they are shown and edited as a decimal number.
Clicking on the header at the top of this column will sort the table by CAN ID.
If the number has 3 hexadecimal digits then it is a standard ID, if it has 8 hexadecimal digits then it is an extended ID.
When entering CAN IDs into this column, use the ‘S’/‘E’ button to switch between standard or extended.
Note that an extended ID with the same value as a standard ID is NOT the same message and will not receive messages of the other ID type.
Makes this a CAN-FD message. In FD mode, higher start bit values are possible. CAN-FD enabled CAN ports only.
The start bit of the data. This is defined as the least significant bit of the least significant byte of the data. See CAN Message Overview for more information.
The length of the data in bits.
The type of the data. This can be one of the following values:
The byte order for multi-byte data. This can be either BE/Motorola (Big Endian) or LE/Intel (Little Endian). See CAN Message Overview for more information.
For non multiplexed data, this should be set to Off. Otherwise it can be set to Multiplexor if this value controls the multiplexing or a number (m=0, m=1, m=2 etc) which is the value of the Multiplexor at which this value is valid. See CAN Message Overview for more information.
The conversion (scaling) type from the raw CAN data to a value or textual representation. Click the ‘…’ button to open a scaling editor.
If the signal was imported from a DBC file, and you want to change the scaling to a different unit then it is best to set the input units of the signal and a display unit or create a derived channel to rescale from the imported DBC values.
Multiplier to convert from a raw signal value to a physical value.
Phys = (Raw * Scalar) + Offset.
Offset to convert from a raw signal value to a physical value (added to the value after multiplying).
Phys = (Raw * Scalar) + Offset.
Not commonly used but changes the scaling equation to Phys = (Raw / Scalar) + Offset.
Units of the scaled physical value of this signal. To convert to other units, add a channel on the Channels Tab and select a unit conversion after setting the input to this CAN channel.
Sets the initial value of the CAN output. This is the raw value. For example, for a CAN output of RPM_Raw used in an output to create RPM with a x2 scalar, the raw value for 2000 RPM would be 1000. To clear the initial value, set this to ‘-’. When importing from a dbc file, the “GenSigStartValue” attribute will be used to set the initial value.
Filters may be applied to the CAN channel here such as controlling the behaviour when messages stop being received or providing an ‘Error Text’ value.
Signals that share the same bits and are not multiplexed will show a different background colour in the ID, Start Bit and Length fields. This is allowed but normally a configuration error; the colouring is intended to assist in spotting such errors easily. See the Gear Posn signal in the above screenshot for an example.
Selecting a signal in the signals table will display all signals in the same CAN frame (signals with the same CAN ID) in this view.
The Multiplexor drop-down box will be enabled if it is a multiplexed frame and will allow selection of one of the configured multiplexor values. When selected, this will only display signals in the view that are present when the multiplexor signal has this value.
For CAN-FD frames, the zoom-bar to the right of the CAN message layout view allows zooming and scrolling of the message view.
The CAN Request Tab provides a way to send out fixed CAN messages at regular intervals or in response to another CAN message.

Towards the bottom right of the Messages Table, use the button to add a new message, and the
button to remove the selected messages(s).
The CAN Transmit Tab provides a way to send out CAN messages that contain values from channels or special values such as firmware version or setup name.

Towards the bottom right of the Messages Table, use the button to add a new message, and the
button to remove the selected messages(s).
Enables the message. IF unchecked then the message will not be sent by the display.
Name of the message.
Rate at which the message is repeatedly sent.
The CAN ID. This is specified as the right most 11 bits of a 16 bit value or the right most 29 bits of a 32 bit value for extended IDs.
If the Show CAN IDs as Hexadecimal box is checked, the IDs are shown and entered as hexadecimal numbers with an 0x prefix. Otherwise, they are shown and edited as a decimal number.
Clicking on the header at the top of this column will sort the table by CAN ID.
If the number has 3 hexadecimal digits then it is a standard ID, if it has 8 hexadecimal digits then it is an extended ID.
When entering CAN IDs into this column, use the ‘S’/‘E’ button to switch between standard or extended.
Note that an extended ID with the same value as a standard ID is NOT the same message and will not receive messages of the other ID type.
Makes this a CAN-FD message. In FD mode, higher start bit values are possible. CAN-FD enabled CAN ports only.
For CAN-FD messages, sets the Bit Rate Select flag. CAN-FD enabled CAN ports only.
Specifies the Data Length Code of the channel, i.e. the size of the data packet of this ID in bytes. This can be anywhere between 0 and 8 bytes; by default it is set to the maximum size of 8 bytes. For CAN-FD messages this can go up to 64 bytes.
If the Wait For All column is ticked, then the CAN message will only be transmitted once all the inputs to the message (see below) are valid. Inputs such as analogue channels are valid immediately but for data coming via CAN or serial, the outputs are not valid until they have been received at least once.
If the Wait For All column is not ticked, then the message will be transmitted immediately; any sections of the message where the inputs are not valid will be zero.
Towards the bottom right of the Signals Table, use the button to add a new signal, and the
button to remove the selected signal(s).
A message must be selected in the Messages Table to be able to add signals.
Channel that will be packed into the CAN signal.
Data type and byte order for the raw signal value. The data type affects the size of the signal.
Some data types are special and do not require a channel (e.g. Display Serial Number).
When using a special data type such as Serial Number, some display firmware versions still require a Channel to be selected or the transmitted signal value will be zero.
Byte position of the first byte in the CAN frame that the signal occupies
Scalar used to convert the Physical Channel value to a raw value. This is specified as if converting from raw => physical.
Phys = (Raw * Scalar) + Offset
i.e.
Raw = (Phys - Offset) / Scalar
Offset used to convert the Physical Channel value to a raw value. This is specified as if converting from raw => physical.
Units of the Physical value. If the input channel uses different units then Dash Design will insert additional scaling to convert from the Channel units to the Physical units prior to applying the Scalar and Offset.
By specifying the expected physical units here, if the source channel units are subsequently changed then the scaling change will automatically be accounted for, so the transmitted data should still be of the correct magnitude.
The Logger Tab provides configuration of internal data logging (if supported by the display).

The logging can be started or stopped dependent on channel conditions. Every time a new log is started, a new Log Run is created in the logger. Log runs can be downloaded individually with GEMS Data Analysis, which reduces the time taken to download the data.
The log can be started in one of three ways:
If the Display Module supports logging, the following special channels are available:
The Log Status has the following meaning:
| Log Status | Description |
|---|---|
| Logging not Supported | This firmware does not support logging. |
| Logging stopped | The device is not currently logging. |
| Logging running | The device is currently logging. |
| Log looped | The log has looped. |
| Log memory space low | There is less than 5% of the log memory remaining. |
| Log memory full | The logging memory is full and logging has stopped. |
| Log initialising | The logger is currently processing the setup. |
| LOG SETUP ERROR | There is a problem with the logger setup. |
| LOG OVERRUN | The logger has been unable to write the log data to the memory. Either reduce the number of logged channels or reduce the complexity of the display screen. |
| Log memory worn | There are a significant number of bad blocks in the flash memory. Logging will continue to work but capacity will be reduced. |
The Display Module inserts markers in the data to indicate various states and these are displayed in downloaded log files.
The following markers may be inserted:
| Marker | Description |
|---|---|
| Lap | This is inserted when the beacon input is triggered and is typically used for lap timing. |
| Power | This is inserted when the display is configured to start logging immediately on power up. |
| Log Start | This is inserted when the log start condition is met after power up |
| Overrun | The display has been unable to write the log data to the memory in the time available. Either reduce the number of logged channels or reduce the complexity of the display screen. |
The Images Tab provides management of image assets used by page designs (see Design Tab ).

Selecting an image in the list on the left hand side will show the image full-size on the right, along with some additional information:
The Image Selectors Tab provides configuration of images that can change in response to an input value channel.

The Input Channel is used to select images from the table; its value is looked up against the Channel Value column in the table.
When the display starts, the Self Test Icon will be displayed for the specified duration, in seconds, unless set to zero.
The Number of Graphics selection count is the number of images used in the image selector and is at least two. The first image is shown by default. Subsequent images are shown according to the settings in the table.
The number of the selection bitmap for which the following settings are made. For example, if the selection count is set to 3, 1 will specify the first selectable bitmap and 2 will specify the second selectable bitmap.
When the Input Channel is equal to this value, this image is shown instead of the default image.
If checked, this image will blink according to the On Time and Off Time in seconds. The image swaps between the indexed image and the default image.
If checked, the image is only be shown for the specified duration no matter how long the input is equal to the value.
The Setup Tab provides configuration of various display functions:

The Setup Name allows a name for the setup file to be defined.
This name may be displayed in Gauges using the Setup Name special format, vz.
Additionally the setup name may be transmitted over CAN. See CAN Transmit .

LED setup varies between display types. Some displays only support rule-based configuration: LEDs (Rule Based) .
Other displays support a simpler channel-per-LED configuration.

If available for the current display type, checking the Use Rule Based Setup allows complex LED patterns and rules to be specified.
See LEDs (Rule Based) for more details.
The LED List displays a fixed list of the LEDs available on the display.
Channels may be used to drive the LED, optionally with a limit and a colour.
For some displays, a flash channel may also be specified per LED (on/off). If activated, the LED will flash at the rate configured for the gauge as a whole.
Channels may be used to select the colour of an LED. The colour selected by the channel value depends on the display type, but for current displays the following table is used:
| Value | Colour |
|---|---|
| 0 | Off |
| 1 | Red |
| 2 | Green |
| 3 | Blue |
| 4 | Orange |
| 5 | Magenta |
| 6 | Yellow |
| 7 | Cyan |
| 8 | White |
| 9 | Channel (Direct Drive) |
| 10 | Channel RGB111 (Direct Drive) |
The RGB111 colour space is a 3-bit colour space with 1 bit per colour channel (Red, Green, Blue), meaning that input channels have a different colour mapping and should be in the range 0-7.
Depending upon the display type, a shift light pattern may be generated.
To generate a typical shift light pattern, set a Channel, a Start value and an Increment value and then click the Calculate button to generate the pattern.
Rule based LED setups enable different LED configurations on different pages and complex LED patterns based upon a collection of rules.
Groups of rules may be defined that are active on a selection of pages.
Rules consist of an arbitrary list of conditions that each produce a pattern.
If multiple rules are active at the same time then they can be prioritised.
Active rules at the same priority level can be cycled through at an adjustable rate.

The main view shows a tree of groups and conditions; groups and rules are added and removed here.
Use the Add Group to add a group.
Use the Add Rule to add a rule to the selected Group.
Use the Delete button to remove selected groups / rules. The All Screens Group may not be deleted.
Use the Edit button to edit the selected group or rule.
Rules and groups may be moved using drag & drop.
Use the context menu (right-click) to duplicate existing rules.
The Priority Group Cycle Time sets the time period at which multiple active rules of the same priority level are switched between.
Active rules at a lower priority level than another active rule may still have some effect if the active rule has not masked LEDs used in the lower priority rule. See LED Mask.
Rules within a group are only processed when the screen(s) it is assigned to are shown.
There is a default pre-defined group ‘All Screens’ which is active on every screen.
Named groups may be added and assigned to a selection of screens.
For example, you may add ‘Driver’ and ‘Diagnostic’ groups and only activate these on screens used by drivers or mechanics, respectively.
Use the Edit button to edit the selected group:

LED Group Editor
Sets the name of the group to express its intent or the set of screens it is associated with (e.g. “Driver” or “Diagnostic”).
A list of screens is presented for which the group will be enabled.
Screens may be selected using the Edit button on the LED Group Editor.
Rules may be added to Groups and can be given names to express their intent (e.g. Shift Lights / Critical Fault).
Use the Edit button to edit the selected rule:

LED Rule Editor
Rules have an LED Mask. When a rule is active, the LED mask prevents any lower-priority rules from modifying the state of the LEDs that are set in the mask. In general it is best to set the mask to cover all the LEDs used by the various patterns in the rule. The mask may also cover unused LEDs that should not be lit by lower priority rules.
Higher priority numbers indicate a higher processing priority and are processed first by the display.
If multiple rules are active at a given priority level then the display will cycle through those rules at the rate specified by the Priority Group Cycle Time setting on the Main View.
Rules may contain multiple logical conditions that can each activate a different LED pattern (LED states). The conditions are processed in order, with subsequent conditions (if active) overwriting any LED states from the prior condition.
If any conditions are active within a rule, then the rule is considered ‘active’.
To the right of the conditions list are the condition properties.
If multiple conditions are selected then the properties will act upon all of them.
Conditions may specify up to 2 channel comparisons, linked by a logical operator. If no comparators are selected then the condition is always active.
If a logical operator is not specified then only ‘Comparator A’ (if any) is evaluated.
Defines an LED pattern to display when a condition is active.
Click the … button on the LED Pattern Picker to open the pattern editor:

LED Pattern Picker

LED Pattern Editor
The LED Pattern Editor lists all LEDs available for configuration.
A fixed colour may be selected for each LED. Alternatively if a ‘Colour Channel’ is selected then the colour may be controlled by the channel value.
If a flash rate is configured then the LED will alternate between ‘Colour’ (or Channel based colour) and ‘Flash Colour’ at the given rate.
Selecting multiple LEDs allows their properties to be set collectively.
If the Pattern Mode property is set to Interpolate for a LED condition, then a channel may be selected to interpolate the state of LEDs in the selected pattern. This can be used to create shift light patterns without manually entering multiple conditions, which would otherwise be a time consuming process for a common use-case.
Interpolation only occurs over LEDs that are not configured in the pattern (i.e. have their colour set to ‘OFF’ and do not have a Colour Channel).
‘Right to Left’ will cause interpolated patterns to start from the right hand side as the starting point.
‘From’ and ‘To’ define the input channel value that signifies the beginning and ending of the interpolation range for the input channel. When the input channel is equal to the lower limit then no LEDs in the pattern will be shown. When the input channel reaches the ‘To’ value then all LEDs will be shown in the pattern.
‘From’ and ‘To’ may be reversed where To > From, in which case more LEDs will be shown as the input value decreases.
Interpolation may be used in conjunction with conditions.
If the Pattern Mode property is set to Bit Pattern for a LED condition, then a channel may be selected who’s individual bits correspond to LEDs.
Each bit in the input channel will correspond to LEDs that have been assigned a colour in the LEDs property. The first LED with a colour (i.e. not set to OFF) will be bit 0 and the next enabled LED will be bit 1 etc.
‘Right to Left’ will cause bit patterns to start from the right hand side; thr right-most LED that has a colour defined will correspond to (bit 0) in the input channel.
Dash Design will create hidden Bitmask Channel s to drive each LED individually.
The input channel will be converted to an integer representation prior to masking; the display uses 64bit floating point for channel values internally, giving exact conversions for up to 52 bits.
Channels may be used to select the colour of an LED. The colour selected by the channel value depends on the display type, but for current displays the following table is used:
| Value | Colour |
|---|---|
| 0 | Off |
| 1 | Red |
| 2 | Green |
| 3 | Blue |
| 4 | Orange |
| 5 | Magenta |
| 6 | Yellow |
| 7 | Cyan |
| 8 | White |
| 9 | Channel (Direct Drive) |
| 10 | Channel RGB111 (Direct Drive) |
The RGB111 colour space is a 3-bit colour space with 1 bit per colour channel (Red, Green, Blue), meaning that input channels have a different colour mapping and should be in the range 0-7.
The Speed / Odometer Tab provides configuration of a common Speed Input channel and the built-in Odometer function, along with trip setup features.

Select an input for the Speed Input channel. The Speed Input channel will output the same units of its input channel.
The vehicle speed is typically used in a number of places in display setups and Speed Input offers a single place to define the speed channel.
The channel being input to Speed Input is required to specify a speed unit so that correct physical unit conversions can be applied where needed.
If there is a misconfiguration here then the Setup Checker will issue a warning.
e.g.
Error: Speed Input source ‘Road Speed’ does not have units of speed.
The Odometer is an internal counter backed up to non-volatile memory that cannot be reset. It is set to zero when the unit is built.
Select an output that is road speed and has units of speed. Typically the predefined “Speed Input” channel will be used here and will be set by default.
The software will arrange to convert units to [km/s] for correct functioning of the odometer.
An predefined Odometer channel will be available which is scaled in km and can be displayed on the screen.
Predefined trip related settings may be configured here.
Fuel Input defines the input used to calculate total fuel, trip fuel and fuel used. The fuel input can either be a Fuel Level input (which decrements as fuel is used) or a Fuel Used input (which increments as the fuel is used).
Distance Input defines the input used to calculate trip distance and countdown distance. This should be in either km or miles.
Select a trip counter to configure from the drop-down box. The trip counters are all configured to use the common Fuel Input and Distance Input channels, where appropriate.
Distance Calibration Factor defines the initial value of the distance calibration factor. All ‘co-driver’ distances are multiplied by the calibration before being displayed.
See also Calibration Factor Channel .
Countdown Distance Trip defines the initial and reset values of the countdown trip. See also Distance Countdown Channel .
Resolution defines the display resolution of these trip meters. See also Distance Trip Channel .
Configure the fuel trip meters as-per Fuel Channel
Specify the initial (and reset) values for the countdown timer.
Also specify the amount the timer is incremented and decremented by during increment/ decrement events by setting the Delta value in seconds.
The events for controlling the Countdown Timer may be specified here.
See also Timers Tab .
The Lap Timing / GPS Tab provides configuration of lap timing.

Several pre-defined channels are automatically created if the Display Module supports lap timing. See Lap Timing Channels .
In this mode, the beacon input is connected to a lap timing beacon receiver.
The lap timing outputs are updated as appropriate every time the beacon input is driven low.
If using an AIM beacon receiver, select AIM under Beacon Type.
AIM beacons have a slightly different output to other beacons; 3 pulses within 10ms must be received by the Display Module to register a beacon event.
Select a vehicle speed here. This will be set to the predefined Speed Input channel by default. Speed Input offers a single place to identify the speed channel and may be configured on the Speed / Odometer / Trip Setup page.
Use Speed Input here and set a common speed channel on the Speed / Odometer / Trip Setup page.
In this mode, a button (to ground) is connected to the beacon input.
Pressing the button (i.e. grounding the beacon input) for at least 500ms sets the location of the GPS Start/Finish line at the point the button was initially pressed, provided valid GPS data is being received by the display.
When the finish line is crossed again with the GPS Course within 90 degrees of the start finish line, a new lap is triggered.
For GPS mode to work, the outputs for GPS Longitude, GPS Latitude and GPS Course (all in degrees) must be specified together with the width of the track in metres. This should normally be a couple of metres wider than the actual track.
If using the serial input for GPS, these entries will be automatically populated.
The GPS Start/Finish position is stored between sessions and only changed when setting a new start/finish line.
Uploading a setup or uploading new firmware will reset the start/finish line.
If a speed input is specified, the average lap speed and predictive lap timing outputs will function.
The Page Select Tab allows a channel to be selected to change the current screen (page).
Pages are numbered starting at 1 for the first page.

The Brightness Tab allows selection of a channel for controlling the screen brightness.

The display brightness can either be set coarsely or finely.
In either mode, the channel could be connected to one of the analogue inputs for example to use a rotary pot to control the brightness or it could be controlled from an ECU via the CAN bus.
The coarse control has eight brightness levels which can be selected by configuring a channel to produce a value in the range 0…7, with 7 being brightest. This mode is adequate for single seater/ steering wheel use where the display will be used in daylight conditions.
Brightness levels 6 and 7 of the coarse mode brightness are over-driven for extra brightness but this results in a loss of image contrast.
The fine control has 63 brightness levels which can be selected by configuring a channel to produce a value in the range 129…191 with 129 being the darkest, 191 the brightest and 160 the default brightness value.
If a fixed brightness is required, create a maths output whose equation is the brightness number required and use this as the brightness output.
The Monitored Channels lists channels that should be processed even when not being used by any gauges on the current page.
Some special channels such as Calibration Factor Channel can be added to the monitor channels list to ensure that it is persisted during power-off of the display.
Normally a given output is only monitored if used by a gauge on the currently displayed screen. In certain circumstances however, it is necessary to monitor some outputs irrespective of whether or not they are used by the currently displayed screen page.
For example, if the maximum coolant temperature is used only by gauges (or derived outputs), switching screens deletes the output as the screen changes and recreates it if necessary. The maximum output is then be reset and its’ information is lost. By adding this output to the Monitored Channels it is created when the display module is switched on. Changing screens has no effect on the output and the data is not reset unless a reset signal is received.
Furthermore, outputs added to the Monitored Channels are automatically stored in non-volatile memory. The values of a min, max or average output added to the Monitored Channels are preserved even when the screen is powered off. Consequently, it is important to make sure a reset method is set for such channels added to the Monitored Channels.

Use the and
buttons to the bottom right of the channel list to add or remove. Predefined channels may not be removed.
The Low Side Drivers Tab allows configuration of electrical outputs from the display module.
Low side drivers (switched to ground) can be used to drive relays or other items that are connected to a positive supply.
Select an output to drive each low side driver available on the display - when the output is greater than zero, the output will be on.

The Events Tab provides a single place to view and configure internal events.
Many events are configurable elsewhere at point of use, such as timer start/stop/reset events.
Events can be used to trigger an effect such as a screen change or trip reset.

The Events Tab is divided into 3 columns:
Each screen may have a different set of events defined.
At the top of the list is the All Screens item for events that should be active on all screens.
If a screen has any events defined then it will display a lightning bolt icon.
At the bottom of the Screen List, the Show Unused Screens checkbox may be used to show / filter out any screens that are not configured with any Gauges.
The Action column lists available on the selected screen.
The following types of event actions are available:
The Effect column lists any effects that should happen in response to an event.
On the right of the Effect list, use the button to add a new effect, and the
button to remove the selected effect(s).
If the button is clicked, a list of available effects may be selected from to add to the list of effects for the selected action on the selected screen.
Dash Design may be externally automated.
A COM (ActiveX) automation interface is available, documentation on request.
Dash Design has been created using some excellent Open Source libraries - many thanks to their developers for creating and maintaining them.
The open source library licenses are included here and also in the installation folder for the application, accessible from Help | About | View Licenses.
Boost Software License - Version 1.0 - August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-------------------------------------------------------------------------- This program, "bzip2", the associated library "libbzip2", and all documentation, are copyright (C) 1996-2019 Julian R Seward. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 3. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 4. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Julian Seward, jseward@acm.org bzip2/libbzip2 version 1.0.8 of 13 July 2019 --------------------------------------------------------------------------
Copyright (c) 2003, Michael Carruth
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the author nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Compilation Copyright (c) 1995-2019 by Wei Dai. All rights reserved. This copyright applies only to this software distribution package as a compilation, and does not imply a copyright on any particular file in the package. All individual files in this compilation are placed in the public domain by Wei Dai and other contributors. I would like to thank the following authors for placing their works into the public domain: Joan Daemen - 3way.cpp Leonard Janke - cast.cpp, seal.cpp Steve Reid - cast.cpp Phil Karn - des.cpp Andrew M. Kuchling - md2.cpp, md4.cpp Colin Plumb - md5.cpp Seal Woods - rc6.cpp Chris Morgan - rijndael.cpp Paulo Baretto - rijndael.cpp, skipjack.cpp, square.cpp Richard De Moliner - safer.cpp Matthew Skala - twofish.cpp Kevin Springle - camellia.cpp, shacal2.cpp, ttmac.cpp, whrlpool.cpp, ripemd.cpp Ronny Van Keer - sha3.cpp Aumasson, Neves, Wilcox-O'Hearn and Winnerlein - blake2.cpp, blake2b_simd.cpp, blake2s_simd.cpp Aaram Yun - aria.cpp, aria_simd.cpp Han Lulu, Markku-Juhani O. Saarinen - sm4.cpp sm4_simd.cpp Daniel J. Bernstein, Jack Lloyd - chacha.cpp, chacha_simd.cpp, chacha_avx.cpp Andrew Moon - ed25519, x25519, donna_32.cpp, donna_64.cpp, donna_sse.cpp The Crypto++ Library uses portions of Andy Polyakov's CRYPTOGAMS for Poly1305 scalar multiplication and aes_armv4.S. CRYPTOGAMS is dual licensed with a permissive BSD-style license. The CRYPTOGAMS license is reproduced below. The Crypto++ Library uses portions of Jack Lloyd's Botan for ChaCha SSE2 and AVX. Botan placed the code in public domain for Crypto++ to use. The Crypto++ Library (as a compilation) is currently licensed under the Boost Software License 1.0 (http://www.boost.org/users/license.html). Boost Software License - Version 1.0 - August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. CRYPTOGAMS License Copyright (c) 2006-2017, CRYPTOGAMS byAll rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain copyright notices, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the CRYPTOGAMS nor the names of its copyright holder and contributors may be used to endorse or promote products derived from this software without specific prior written permission.
Font Name Library 1.0.0
Copyright (c) 2009 Wong Shao Voon
The Code Project Open License (CPOL)
http://www.codeproject.com/info/cpol10.aspx
Preamble
This License governs Your use of the Work. This License is intended to allow developers to use the Source Code and Executable Files provided as part of the Work in any application in any form.
The main points subject to the terms of the License are:
Source Code and Executable Files can be used in commercial applications;
Source Code and Executable Files can be redistributed; and
Source Code can be modified to create derivative works.
No claim of suitability, guarantee, or any warranty whatsoever is provided. The software is provided "as-is".
The Article(s) accompanying the Work may not be distributed or republished without the Author's consent
This License is entered between You, the individual or other entity reading or otherwise making use of the Work licensed pursuant to this License and the individual or other entity which offers the Work under the terms of this License ("Author").
License
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CODE PROJECT OPEN LICENSE ("LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HEREIN, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE AUTHOR GRANTS YOU THE RIGHTS CONTAINED HEREIN IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. IF YOU DO NOT AGREE TO ACCEPT AND BE BOUND BY THE TERMS OF THIS LICENSE, YOU CANNOT MAKE ANY USE OF THE WORK.
Definitions.
"Articles" means, collectively, all articles written by Author which describes how the Source Code and Executable Files for the Work may be used by a user.
"Author" means the individual or entity that offers the Work under the terms of this License.
"Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works.
"Executable Files" refer to the executables, binary files, configuration and any required data files included in the Work.
"Publisher" means the provider of the website, magazine, CD-ROM, DVD or other medium from or by which the Work is obtained by You.
"Source Code" refers to the collection of source code and configuration files used to create the Executable Files.
"Standard Version" refers to such a Work if it has not been modified, or has been modified in accordance with the consent of the Author, such consent being in the full discretion of the Author.
"Work" refers to the collection of files distributed by the Publisher, including the Source Code, Executable Files, binaries, data files, documentation, whitepapers and the Articles.
"You" is you, an individual or entity wishing to use the Work and exercise your rights under this License.
Fair Use/Fair Use Rights. Nothing in this License is intended to reduce, limit, or restrict any rights arising from fair use, fair dealing, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.
License Grant. Subject to the terms and conditions of this License, the Author hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
You may use the standard version of the Source Code or Executable Files in Your own applications.
You may apply bug fixes, portability fixes and other modifications obtained from the Public Domain or from the Author. A Work modified in such a way shall still be considered the standard version and will be subject to this License.
You may otherwise modify Your copy of this Work (excluding the Articles) in any way to create a Derivative Work, provided that You insert a prominent notice in each changed file stating how, when and where You changed that file.
You may distribute the standard version of the Executable Files and Source Code or Derivative Work in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution.
The Articles discussing the Work published in any form by the author may not be distributed or republished without the Author's consent. The author retains copyright to any such Articles. You may use the Executable Files and Source Code pursuant to this License but you may not repost or republish or otherwise distribute or make available the Articles, without the prior written consent of the Author.
Any subroutines or modules supplied by You and linked into the Source Code or Executable Files of this Work shall not be considered part of this Work and will not be subject to the terms of this License.
Patent License. Subject to the terms and conditions of this License, each Author hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, import, and otherwise transfer the Work.
Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
You agree not to remove any of the original copyright, patent, trademark, and attribution notices and associated disclaimers that may appear in the Source Code or Executable Files.
You agree not to advertise or in any way imply that this Work is a product of Your own.
The name of the Author may not be used to endorse or promote products derived from the Work without the prior written consent of the Author.
You agree not to sell, lease, or rent any part of the Work. This does not restrict you from including the Work or any part of the Work inside a larger software distribution that itself is being sold. The Work by itself, though, cannot be sold, leased or rented.
You may distribute the Executable Files and Source Code only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy of the Executable Files or Source Code You distribute and ensure that anyone receiving such Executable Files and Source Code agrees that the terms of this License apply to such Executable Files and/or Source Code. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute the Executable Files or Source Code with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License.
You agree not to use the Work for illegal, immoral or improper purposes, or on pages containing illegal, immoral or improper material. The Work is subject to applicable export laws. You agree to comply with all such laws and regulations that may apply to the Work after Your receipt of the Work.
Representations, Warranties and Disclaimer. THIS WORK IS PROVIDED "AS IS", "WHERE IS" AND "AS AVAILABLE", WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES OR CONDITIONS OR GUARANTEES. YOU, THE USER, ASSUME ALL RISK IN ITS USE, INCLUDING COPYRIGHT INFRINGEMENT, PATENT INFRINGEMENT, SUITABILITY, ETC. AUTHOR EXPRESSLY DISCLAIMS ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES OR CONDITIONS, INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF MERCHANTABILITY, MERCHANTABLE QUALITY OR FITNESS FOR A PARTICULAR PURPOSE, OR ANY WARRANTY OF TITLE OR NON-INFRINGEMENT, OR THAT THE WORK (OR ANY PORTION THEREOF) IS CORRECT, USEFUL, BUG-FREE OR FREE OF VIRUSES. YOU MUST PASS THIS DISCLAIMER ON WHENEVER YOU DISTRIBUTE THE WORK OR DERIVATIVE WORKS.
Indemnity. You agree to defend, indemnify and hold harmless the Author and the Publisher from and against any claims, suits, losses, damages, liabilities, costs, and expenses (including reasonable legal or attorneys’ fees) resulting from or relating to any use of the Work by You.
Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL THE AUTHOR OR THE PUBLISHER BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK OR OTHERWISE, EVEN IF THE AUTHOR OR THE PUBLISHER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
Termination.
This License and the rights granted hereunder will terminate automatically upon any breach by You of any term of this License. Individuals or entities who have received Derivative Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 6, 7, 8, 9, 10 and 11 will survive any termination of this License.
If You bring a copyright, trademark, patent or any other infringement claim against any contributor over infringements You claim are made by the Work, your License from such contributor to the Work ends automatically.
Subject to the above terms and conditions, this License is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, the Author reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
Publisher. The parties hereby confirm that the Publisher shall not, under any circumstances, be responsible for and shall not have any liability in respect of the subject matter of this License. The Publisher makes no warranty whatsoever in connection with the Work and shall not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. The Publisher reserves the right to cease making the Work available to You at any time without notice
Miscellaneous
This License shall be governed by the laws of the location of the head office of the Author or if the Author is an individual, the laws of location of the principal place of residence of the Author.
If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this License, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
This License constitutes the entire agreement between the parties with respect to the Work licensed herein. There are no understandings, agreements or representations with respect to the Work not specified herein. The Author shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Author and You.
The FreeType Project LICENSE
----------------------------
2006-Jan-27
Copyright 1996-2002, 2006 by
David Turner, Robert Wilhelm, and Werner Lemberg
Introduction
============
The FreeType Project is distributed in several archive packages;
some of them may contain, in addition to the FreeType font engine,
various tools and contributions which rely on, or relate to, the
FreeType Project.
This license applies to all files found in such packages, and
which do not fall under their own explicit license. The license
affects thus the FreeType font engine, the test programs,
documentation and makefiles, at the very least.
This license was inspired by the BSD, Artistic, and IJG
(Independent JPEG Group) licenses, which all encourage inclusion
and use of free software in commercial and freeware products
alike. As a consequence, its main points are that:
o We don't promise that this software works. However, we will be
interested in any kind of bug reports. (`as is' distribution)
o You can use this software for whatever you want, in parts or
full form, without having to pay us. (`royalty-free' usage)
o You may not pretend that you wrote this software. If you use
it, or only parts of it, in a program, you must acknowledge
somewhere in your documentation that you have used the
FreeType code. (`credits')
We specifically permit and encourage the inclusion of this
software, with or without modifications, in commercial products.
We disclaim all warranties covering The FreeType Project and
assume no liability related to The FreeType Project.
Finally, many people asked us for a preferred form for a
credit/disclaimer to use in compliance with this license. We thus
encourage you to use the following text:
"""
Portions of this software are copyright © The FreeType
Project (www.freetype.org). All rights reserved.
"""
Please replace with the value from the FreeType version you
actually use.
Legal Terms
===========
0. Definitions
--------------
Throughout this license, the terms `package', `FreeType Project',
and `FreeType archive' refer to the set of files originally
distributed by the authors (David Turner, Robert Wilhelm, and
Werner Lemberg) as the `FreeType Project', be they named as alpha,
beta or final release.
`You' refers to the licensee, or person using the project, where
`using' is a generic term including compiling the project's source
code as well as linking it to form a `program' or `executable'.
This program is referred to as `a program using the FreeType
engine'.
This license applies to all files distributed in the original
FreeType Project, including all source code, binaries and
documentation, unless otherwise stated in the file in its
original, unmodified form as distributed in the original archive.
If you are unsure whether or not a particular file is covered by
this license, you must contact us to verify this.
The FreeType Project is copyright (C) 1996-2000 by David Turner,
Robert Wilhelm, and Werner Lemberg. All rights reserved except as
specified below.
1. No Warranty
--------------
THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO
USE, OF THE FREETYPE PROJECT.
2. Redistribution
-----------------
This license grants a worldwide, royalty-free, perpetual and
irrevocable right and license to use, execute, perform, compile,
display, copy, create derivative works of, distribute and
sublicense the FreeType Project (in both source and object code
forms) and derivative works thereof for any purpose; and to
authorize others to exercise some or all of the rights granted
herein, subject to the following conditions:
o Redistribution of source code must retain this license file
(`FTL.TXT') unaltered; any additions, deletions or changes to
the original files must be clearly indicated in accompanying
documentation. The copyright notices of the unaltered,
original files must be preserved in all copies of source
files.
o Redistribution in binary form must provide a disclaimer that
states that the software is based in part of the work of the
FreeType Team, in the distribution documentation. We also
encourage you to put an URL to the FreeType web page in your
documentation, though this isn't mandatory.
These conditions apply to any software derived from or based on
the FreeType Project, not just the unmodified files. If you use
our work, you must acknowledge us. However, no fee need be paid
to us.
3. Advertising
--------------
Neither the FreeType authors and contributors nor you shall use
the name of the other for commercial, advertising, or promotional
purposes without specific prior written permission.
We suggest, but do not require, that you use one or more of the
following phrases to refer to this software in your documentation
or advertising materials: `FreeType Project', `FreeType Engine',
`FreeType library', or `FreeType Distribution'.
As you have not signed this license, you are not required to
accept it. However, as the FreeType Project is copyrighted
material, only this license, or another one contracted with the
authors, grants you the right to use, distribute, and modify it.
Therefore, by using, distributing, or modifying the FreeType
Project, you indicate that you understand and accept all the terms
of this license.
4. Contacts
-----------
There are two mailing lists related to FreeType:
o freetype@nongnu.org
Discusses general use and applications of FreeType, as well as
future and wanted additions to the library and distribution.
If you are looking for support, start in this list if you
haven't found anything to help you in the documentation.
o freetype-devel@nongnu.org
Discusses bugs, as well as engine internals, design issues,
specific licenses, porting, etc.
Our home page can be found at
https://www.freetype.org
--- end of FTL.TXT ---
Using STL port of diff-match-patch: https://github.com/leutloff/diff-match-patch-cpp-stl STL Port was done by Sergey Nozhenko (snhere@gmail.com) and posted on https://code.google.com/p/google-diff-match-patch/issues/detail?id=25
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
Copyright 2008, Google Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2022 The Hugo Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Copyright (c) 2003-2006 Mark Borgerding
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Library, Test Programs: Stephan Meyer,Johannes Erdfelt, Thomas Sailer, Drivers, Installer: Stephan Meyer, Travis Robinson, Testing, Technical support: Xiaofan Chen,
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
LibUsb-Win32 Change Log
V1.2.6.0 (01/17/2012)
==============================================
* Official release.
* Removed ISO maximum transfer size restrictions/transfer spltting.
* Fixed inf-wizard device notification issue.
V1.2.5.0 (07/23/2011)
==============================================
* Official release.
V1.2.4.9 (07/13/2011) - SNAPSHOT RELEASE
==============================================
* Updated GCC lib file 'libusb.a'
V1.2.4.8 (07/12/2011) - SNAPSHOT RELEASE
==============================================
* Added new public api function 'usb_reset_ex'. This is an extended
device reset function which allows developers to specify a port reset, a
port cycle, or both.
* Added new public defines 'USB_RESET_TYPE_XXX' for 'usb_reset_ex'
function.
V1.2.4.7 (07/02/2011) - SNAPSHOT RELEASE
==============================================
* Sync transfers which specify a zero (0) timeout are now considered to be
INFINITE.
V1.2.4.6 (05/12/2011) - SNAPSHOT RELEASE
==============================================
* Added device interface registration. This provides identical
functionality to the "DeviceInterfaceGUIDs" supported by WinUSB and
libusbK. A device interface guid can be specified in the .inf file. They
can be used to quickly locate a usb device or set of USB devices using
the setup api as well as device notification registration.
* New IOCTL codes added to for native libusbK/WinUSB compatibility.
NOTE: These IOCTLs are currently used only by libusbK.dll.
o LIBUSB_IOCTL_QUERY_DEVICE_INFORMATION
o LIBUSB_IOCTL_SET_PIPE_POLICY
o LIBUSB_IOCTL_GET_PIPE_POLICY
o LIBUSB_IOCTL_SET_POWER_POLICY
o LIBUSB_IOCTL_GET_POWER_POLICY
o LIBUSB_IOCTL_CONTROL_WRITE
o LIBUSB_IOCTL_CONTROL_READ
o LIBUSB_IOCTL_FLUSH_PIPE
o LIBUSBK_IOCTL_CLAIM_INTERFACE
o LIBUSBK_IOCTL_RELEASE_INTERFACE
o LIBUSBK_IOCTL_RELEASE_ALL_INTERFACES
o LIBUSBK_IOCTL_SET_INTERFACE
o LIBUSBK_IOCTL_GET_INTERFACE
* Renamed main header file (usb.h) to lusb0_usb.h. This eliminates
conflicts with the main WDK usb include as well as making the
libusb-win32 header more distinguishable from other usb library header
files.
* Added device descriptor caching and active/first config descriptor
caching. Descriptor caching prevents unnecessary control requests from
interrupting devices that could potentially be in-use. It also makes
libusb0.sys more compliant with usb libraries targeting platform where
descriptor caching is done automatically. (linux/mac)
* Upgraded to libwdi v1.1.1
o Zadig UI improvements
o wdi-simple now handles certificate related operations
o New NSIS (Nullsoft Scriptable Install System) script sample
o improved INNO Setup script sample
o libusbK support
o autogeneration and self-signing of a .cat file, to prevent further security
prompts during driver installation on Vista and later.
for more information, see http://libwdi-cps.akeo.ie
o disable restore point creation during installation
o Visual Studio 2010 support and overall MS file cleanup
o use of the Kerberos/e2fsprogs parser in Zadig instead of libconfig
V1.2.4.0 (04/11/2011)
=======================
* Removed get configuration request from the core driver
set_configuration function. This caused problems with
some non-compliant usb devices.
* Added device descriptor dump to test applications.
V1.2.3.0 (03/16/2011)
=======================
* Fixed bug-id 3117686 reported by Tim Schuerewegen.
* Added LIBUSB_IOCTL_GET_OBJECT_NAME. This new IOCTL code retrieves object
from the driver. The only valid object name index is 0. Index 0 is
returns the devices plug and play registry key pathname.
* Removed maximum timeout restriction for vendor class requests.
V1.2.2.0 (10/02/2010)
=======================
* Added install-filter-win.exe. A gui installer for device filters.
* Added new libusb0.dll function usb_install_np_rundll(). This function
is designed for rundll32.exe and takes the same parameters as
install-filter.exe.
* Updated install-filter.exe. This application has several new features.
Type "install-filter --help" for more details.
* Updated libusb-win32-devel-filter package. This package is once again
available for download as a setup.exe.
* Updated libusb-win32 "bin" package format. inf-wizard.exe has been moved
up one directory.
* Updated driver_installer_template.iss example. This is an Inno Setup
Script showing how to create your own setup.exe for installing your
application and driver.
* Fixed missing byte order marker in inf-wizard.exe .inf files. (libwdi)
* Fixed auto-configuration issue when there is more than one driver in the
stack.
* Fixed BSOD when using the filter driver with devices that are auto
suspended by other drivers in the stack.
* Fixed BSOD for devices with endpoints that have '0' for wMaxPacketSize.
* Fixed BSOD when cancelling large transfers on high speed devices.
V1.2.1.0 (07/28/2010)
=======================
* Updated bulk.c to include async i/o example code.
* Fixed usb_install_driver_np() issue with inf-wizard generated infs.
* Fixed inf2cat.exe issue with inf-wizard generated infs.
* Added 'Install Now' feature to inf-wizard. (libwdi)
* Added embedded libusb-win32 binaries to inf-wizard. (libwdi)
* Added libwdi (http://www.libusb.org/wiki/libwdi) to inf-wizard.
* Added get cached configuration request to usb_open(). This is a new
control code that involves no device i/o and allows
usb_set_configuration() to be omitted if the driver has already
configured it.
* Fixed set_configuration() failure for devices that do not properly
support get_configuration().
V1.2.0.0 (07/07/2010)
=======================
* First signed driver release! The libusb-win32 kernel driver (libusb0.sys)
can now be used on x64 Windows machines that require signed drivers.
* Fixed 2128187 reported by Tim Green. usb_get_descriptor() can fail
because the given buffer of 8 bytes is too small.
* Fixed 2928293 reported by Tim Green. Sometimes the call to
usb_fetch_and_parse_descriptors() in usb_find_devices() can fail. This
patch moves the LIST_ADD to after a successful read of the device's
configuration descriptors.
* Fixed issue causing libusb-win32 to not act as power policy owner
when it should.
* Fixed issue in which on rare occasion, a libusb-win32 filter device could
run as a "normal" device.
* Fixed filter driver issue for device using wudfr.sys.
* Added large transfer splitting to driver (bulk, int, iso). NOTE:
The dll continues to break transfers in the same manner it always has.
V1.1.14.3 (06/12/2010)
=======================
* Remove get_configuration() request from usb_open(). This caused claim
interface to fail when used as a filter driver.
V1.1.14.0 (06/01/2010)
=======================
* Updated logging functions and standardized log message display format.
* Updated inf-wizard to use the new directory format for the libusb-win32
binaries.
* Updated package directories to reflect the winddk BUILDARCH env variable.
(i64 := ia64, x64 := amd64)
* Added request to get the current configuration in usb_open().
* Fixed 2960644 (reported by farthen) crash on shutdown with x64 based
systems while using inf files for each libusb device.
* Added additional log message only included in debug/chk builds.
* Updated default log levels to highest verbose level for debug builds.
* Added test signing support to the libusb-win32 make.cmd. This allows
libusb0.sys and libusb0.dll to be signed with a digital signature.
(see make.cmd for mmore details)
* Added MSVC 2008 project files
* Moved version defines to an include file (libusb_version.h)
This file is generated from libusb_version_h.in with "make.cmd makever"
* Removed all "dist" commands from cyg/mingw makefile. Instead use "make.cmd"
in the "ddk_make" directory.
* Fixed filter setup not running in 64bit mode
* Fixed 64bit inf-wizard, testlibusb-win builds
* Added set initial config value #1 when the driver is not a filter.
optionally, the initial configuration value can be specified in the inf
file: HKR,,"InitialConfigValue",0x00010001,
* Added support for querying device registry keys
(LIBUSB_IOCTL_GET_CUSTOM_REG_PROPERTY)
* Added support for querying device properties
(LIBUSB_IOCTL_GET_DEVICE_PROPERTY)
* Fixed possible race condition in kernel add_device()
* Updated default ddk build version number to 1.1.14.0 to facilitate
Microsoft WHQL submission.
* Added DDK build distribution system. Official libusb-win32 releases
(after 0.1.12.2) are built using Microsoft's WinDDK. (see make.cmd)
* Fixed 2658937 (reported by Tim Roberts) The libusb-win32 driver always
acts as a power policy owner.
This is libusb-win32 (http://libusb-win32.sourceforge.net) version 1.2.6.0. Libusb-win32 is a library that allows userspace application to access USB devices on Windows operation systems (Win2k, WinXP, Vista, Win7). It is derived from and fully API compatible to libusb available at http://libusb.sourceforge.net. For more information visit the project's web site at: http://libusb-win32.sourceforge.net http://sourceforge.net/projects/libusb-win32
Copyright (c) 2010, Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Additional IP Rights Grant (Patents) "This implementation" means the copyrightable works distributed by Google as part of the WebM Project. Google hereby grants to you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, transfer, and otherwise run, modify and propagate the contents of this implementation of VP8, where such license applies only to those patent claims, both currently owned by Google and acquired in the future, licensable by Google that are necessarily infringed by this implementation of VP8. This grant does not include claims that would be infringed only as a consequence of further modification of this implementation. If you or your agent or exclusive licensee institute or order or agree to the institution of patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that this implementation of VP8 or any code incorporated within this implementation of VP8 constitutes direct or contributory patent infringement, or inducement of patent infringement, then any patent rights granted to you under this License for this implementation of VP8 shall terminate as of the date such litigation is filed.
LICENSE
Copyright 2011 The LibYuv Project Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Google nor the names of its contributors may
be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PATENTS
Additional IP Rights Grant (Patents)
"This implementation" means the copyrightable works distributed by
Google as part of the LibYuv code package.
Google hereby grants to you a perpetual, worldwide, non-exclusive,
no-charge, irrevocable (except as stated in this section) patent
license to make, have made, use, offer to sell, sell, import,
transfer, and otherwise run, modify and propagate the contents of this
implementation of the LibYuv code package, where such license applies
only to those patent claims, both currently owned by Google and
acquired in the future, licensable by Google that are necessarily
infringed by this implementation of the LibYuv code package. This
grant does not include claims that would be infringed only as a
consequence of further modification of this implementation. If you or
your agent or exclusive licensee institute or order or agree to the
institution of patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that this
implementation of the LibYuv code package or any code incorporated
within this implementation of the LibYuv code package constitutes
direct or contributory patent infringement, or inducement of patent
infringement, then any patent rights granted to you under this License
for this implementation of the LibYuv code package shall terminate as
of the date such litigation is filed.
MIT License Copyright (c) 2017 SSE4 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Many icons are from: https://material.io/tools/icons/?style=baseline Under the Apache license 2.0.
Portable header file to contain: >>>>> /* * PortAudio Portable Real-Time Audio Library * PortAudio API Header File * Latest version available at: http://www.portaudio.com * * Copyright (c) 1999-2006 Ross Bencina and Phil Burk * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files * (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, * publish, distribute, sublicense, and/or sell copies of the Software, * and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* * The text above constitutes the entire PortAudio license; however, * the PortAudio community also makes the following non-binding requests: * * Any person wishing to distribute modifications to the Software is * requested to send the modifications to the original developer so that * they can be incorporated into the canonical version. It is also * requested that these non-binding requests be included along with the * license above. */ <<<<< Implementation files to contain: >>>>> /* * PortAudio Portable Real-Time Audio Library * Latest version at: http://www.portaudio.com *Implementation * Copyright (c) 1999-2000 * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files * (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, * publish, distribute, sublicense, and/or sell copies of the Software, * and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* * The text above constitutes the entire PortAudio license; however, * the PortAudio community also makes the following non-binding requests: * * Any person wishing to distribute modifications to the Software is * requested to send the modifications to the original developer so that * they can be incorporated into the canonical version. It is also * requested that these non-binding requests be included along with the * license above. */ <<<<<
/* * PortMidi Portable Real-Time MIDI Library * * license.txt -- a copy of the PortMidi copyright notice and license information * * Latest version available at: http://sourceforge.net/projects/portmedia * * Copyright (c) 1999-2000 Ross Bencina and Phil Burk * Copyright (c) 2001-2009 Roger B. Dannenberg * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files * (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, * publish, distribute, sublicense, and/or sell copies of the Software, * and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* * The text above constitutes the entire PortMidi license; however, * the PortMusic community also makes the following non-binding requests: * * Any person wishing to distribute modifications to the Software is * requested to send the modifications to the original developer so that * they can be incorporated into the canonical version. It is also * requested that these non-binding requests be included along with the * license above. */
The MIT License (MIT) Copyright (c) 2021 Sören Weber Copyright (c) 2017 Valere JEANTET Copyright (c) 2016 MATHIEU CORNIC Copyright (c) 2014 Grav Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
This license applies to all parts of V8 that are not externally
maintained libraries. The externally maintained libraries used by V8
are:
- PCRE test suite, located in
test/mjsunit/third_party/regexp-pcre/regexp-pcre.js. This is based on the
test suite from PCRE-7.3, which is copyrighted by the University
of Cambridge and Google, Inc. The copyright notice and license
are embedded in regexp-pcre.js.
- Layout tests, located in test/mjsunit/third_party/object-keys. These are
based on layout tests from webkit.org which are copyrighted by
Apple Computer, Inc. and released under a 3-clause BSD license.
- Strongtalk assembler, the basis of the files assembler-arm-inl.h,
assembler-arm.cc, assembler-arm.h, assembler-ia32-inl.h,
assembler-ia32.cc, assembler-ia32.h, assembler-x64-inl.h,
assembler-x64.cc, assembler-x64.h, assembler-mips-inl.h,
assembler-mips.cc, assembler-mips.h, assembler.cc and assembler.h.
This code is copyrighted by Sun Microsystems Inc. and released
under a 3-clause BSD license.
- Valgrind client API header, located at src/third_party/valgrind/valgrind.h
This is released under the BSD license.
- The Wasm C/C++ API headers, located at third_party/wasm-api/wasm.{h,hh}
This is released under the Apache license. The API's upstream prototype
implementation also formed the basis of V8's implementation in
src/wasm/c-api.cc.
These libraries have their own licenses; we recommend you read them,
as their terms may differ from the terms below.
Further license information can be found in LICENSE files located in
sub-directories.
Copyright 2014, the V8 project authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Copyright (C) 1993-2004 by Sun Microsystems, Inc. All rights reserved. Developed at SunSoft, a Sun Microsystems, Inc. business. Permission to use, copy, modify, and distribute this software is freely granted, provided that this notice is preserved.
Copyright (c) 1994-2006 Sun Microsystems Inc. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistribution in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of Sun Microsystems or the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Copyright 2006-2011, the V8 project authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
wxWindows Library Licence, Version 3.1
======================================
Copyright (c) 1998-2005 Julian Smart, Robert Roebling et al
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
WXWINDOWS LIBRARY LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public Licence as published by
the Free Software Foundation; either version 2 of the Licence, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
General Public Licence for more details.
You should have received a copy of the GNU Library General Public Licence
along with this software, usually in a file named COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
EXCEPTION NOTICE
1. As a special exception, the copyright holders of this library give
permission for additional uses of the text contained in this release of
the library as licenced under the wxWindows Library Licence, applying
either version 3.1 of the Licence, or (at your option) any later version of
the Licence as published by the copyright holders of version
3.1 of the Licence document.
2. The exception is that you may use, copy, link, modify and distribute
under your own terms, binary object code versions of works based
on the Library.
3. If you copy code from files distributed under the terms of the GNU
General Public Licence or the GNU Library General Public Licence into a
copy of this library, as this licence permits, the exception does not
apply to the code that you add in this way. To avoid misleading anyone as
to the status of such modified files, you must delete this exception
notice from such code and/or adjust the licensing conditions notice
accordingly.
4. If you write modifications of your own for this library, it is your
choice whether to permit this exception to apply to your modifications.
If you do not wish that, you must delete the exception notice from such
code and/or adjust the licensing conditions notice accordingly.
xxHash - Fast Hash algorithm Copyright (C) 2012-2016, Yann Collet BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. You can contact the author at : - xxHash homepage: http://www.xxhash.com - xxHash source repository : https://github.com/Cyan4973/xxHash
/* zlib.h -- interface of the 'zlib' general purpose compression library
version 1.2.11, January 15th, 2017
Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
*/