Motion Master 6.0.0-alpha.86
Next-generation motion control software
Loading...
Searching...
No Matches
mm::etg::EsiEntryOptions Struct Reference

Knobs for buildDeviceEntries. More...

#include <esi_entry.h>

Collaboration diagram for mm::etg::EsiEntryOptions:
[legend]

Public Attributes

uint32_t lcId = kDefaultLcId
 Preferred locale for names and descriptions.
 
std::vector< uint32_t > moduleIdents
 Restricts the merge to these module idents, in the order the slots declare them.
 
bool applySlotOffsets = true
 Apply SlotIndexIncrement / SlotPdoIncrement.
 
bool requireDependOnSlot = true
 Only relocate objects whose <Index> carries DependOnSlot="1".
 
EsiCollisionPolicy collisionPolicy = EsiCollisionPolicy::LastWins
 
bool padShortValues = true
 Zero-pad or sign-extend a hexBinary value shorter than its declared width.
 
bool sortByAddress = true
 Sort by (index, subindex); false keeps document order.
 
std::size_t maxWarnings = 1000
 Cap before warnings are summarised.
 

Detailed Description

Knobs for buildDeviceEntries.

Member Data Documentation

◆ applySlotOffsets

bool mm::etg::EsiEntryOptions::applySlotOffsets = true

Apply SlotIndexIncrement / SlotPdoIncrement.

◆ collisionPolicy

EsiCollisionPolicy mm::etg::EsiEntryOptions::collisionPolicy = EsiCollisionPolicy::LastWins

◆ lcId

uint32_t mm::etg::EsiEntryOptions::lcId = kDefaultLcId

Preferred locale for names and descriptions.

◆ maxWarnings

std::size_t mm::etg::EsiEntryOptions::maxWarnings = 1000

Cap before warnings are summarised.

◆ moduleIdents

std::vector<uint32_t> mm::etg::EsiEntryOptions::moduleIdents

Restricts the merge to these module idents, in the order the slots declare them.

Empty — the default — merges every ident any slot references. That is the right default for offline inspection, where which module is physically fitted is unknowable: the result is the union of everything the device could expose. Where a slot offers mutually exclusive alternatives this necessarily produces collisions, resolved by collisionPolicy. Naming idents here models one concrete configuration instead.

◆ padShortValues

bool mm::etg::EsiEntryOptions::padShortValues = true

Zero-pad or sign-extend a hexBinary value shorter than its declared width.

Real files disagree with themselves here, so padding is on by default and always warns, naming the address. false leaves the bytes exactly as written.

◆ requireDependOnSlot

bool mm::etg::EsiEntryOptions::requireDependOnSlot = true

Only relocate objects whose <Index> carries DependOnSlot="1".

true — the default — is the literal ETG.2000 reading, and is a no-op on a file that sets the attribute nowhere, which matches what such a device's firmware actually answers to. Set false to relocate every module object unconditionally. Getting this wrong invents indices the drive will reject, which is worse than omitting them, hence the conservative default.

◆ sortByAddress

bool mm::etg::EsiEntryOptions::sortByAddress = true

Sort by (index, subindex); false keeps document order.


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