resolveEncoderProductId(value?: null | string | number | HardwareDescription): number | undefined
Resolves the product id to use for encoder-recognition helpers
(isEncoderPortInternal, isEncoderPortUsable, getEncoderPortName,
getCirculoEncoderBatteryModeOptions, getEncoderConfigurationExceptionCase, ...).
ACTILINK-JD / ACTILINK-JD Duo are Circulo drives wrapped in an assembly, so their assembly id
(6400–6599) is not recognized by the encoder helpers; the underlying Circulo device.id
(e.g. 8604) is. For those, resolve to the device id so all the Circulo encoder logic applies.
Every other product uses the normal (assembly-preferring) resolution. In particular ACTILINK-S
keeps its assembly id (6000) — remapping it to its underlying Integro device would mis-detect
it as an Integro (see getEncoderConfigurationExceptionCase case3).
The remap only happens for a HardwareDescription, because only it carries the underlying
device.id; a bare assembly id/number cannot be remapped and is returned unchanged.
Resolves the product id to use for encoder-recognition helpers (
isEncoderPortInternal,isEncoderPortUsable,getEncoderPortName,getCirculoEncoderBatteryModeOptions,getEncoderConfigurationExceptionCase, ...).ACTILINK-JD / ACTILINK-JD Duo are Circulo drives wrapped in an assembly, so their assembly id (6400–6599) is not recognized by the encoder helpers; the underlying Circulo
device.id(e.g.8604) is. For those, resolve to the device id so all the Circulo encoder logic applies.Every other product uses the normal (assembly-preferring) resolution. In particular ACTILINK-S keeps its assembly id (
6000) — remapping it to its underlying Integro device would mis-detect it as an Integro (seegetEncoderConfigurationExceptionCasecase3).The remap only happens for a
HardwareDescription, because only it carries the underlyingdevice.id; a bare assembly id/number cannot be remapped and is returned unchanged.