.. _traceables: Traceables =========== A :py:class:`vspyx.Runtime.Traceable` is the generic term for a static object which describes a Signal, Signal Group, PDU, etc. They are often no more than a named object with some information about the data it describes. For a Signal, this may only be the size in bits and the initial value of the Signal. A Traceable tells you about an existing object, but in a fairly abstract way. For instance, you may have a Traceable for a Signal, but the actual instance of a signal decoded from a PDU happening at a point in time is called a :py:class:`vspyx.Runtime.SignalPoint`, which references back to the static Signal object. Generically :py:class:`vspyx.Runtime.Point` is the instance type of all Traceables, which we'll talk more about in the ECU Simulation. A Traceable also says nothing of the "viewpoint." This will be covered by the :py:class:`vspyx.Runtime.Trace` later in the ECU simulation. In short, you can have multiple Traces of a single Traceable, which would then represent multiple viewpoints of the Traceable in regards to statistics, the last Point received, etc. Lastly, a Traceable says nothing of where the data which creates instances of it will come from. For instance, a PDU Traceable will describe how long the PDU is, but not which CAN ID creates a Point of this PDU, nor the bit position at which the PDU would start within that CAN frame. These are handled by objects of type :py:class:`vspyx.Communication.Triggering` and :py:class:`vspyx.Communication.ISignalToIPDUMapping`.