...
- Some properties are known in advance and will not change at run-time. Examples are
positionUnits
, orresolutionBest
. These properties are implemented as regular (non-Dependent) properties, and are given default values directly in the properties block. In some cases, it may make sense to allow these properties to be optionally constructor-initialized, eg if their value depends on a firmware version which can vary from device to device. For the MP285, thepositionUnits
falls into this "set-it-and-forget-it" category. - Some properties change at runtime, and involve read-only queries to the hardware. An example is
positionAbsoluteRaw
. These properties are implemented as Dependent properties, with get-methods that send the appropriate query commands to the hardware. - Some properties not only change at runtime, but can be set to new values, as well as queried. An example of such a property is
velocity
, implemented as a Dependent property with both a set-method and a get-method. The set-method sends the appropriate set-command (and value-to-be-set) to the hardware to set the value on the device.
Other notes:
- In some cases, a property "does not apply" to a device.
accelerationRaw
, for example, does not apply to the MP285. To make MP285 a concrete class, {{accelerationRaw]} must be defined somewhere in a properties block; however, for the MP285, the property doesn't do anything (its get-method always returns NaN, and there is no set-method).
...