Related to #282: we need these algorithms to be properly defined in order to
be able to support WebDriver and fake pressure states.
This somewhat big change intends to clarify what "activate" and "deactivate"
data delivery actually mean, as there used to be just a "data delivery"
algorithm and no accompanying definitions for those two verbs. Furthermore,
the data delivery algorithm itself was confusing:
It referenced a data variable in its declaration that was never passed
by any callers.
data was of an implementation-defined type and format, but the steps
assumed it had some associated information like source type that was not
set anywhere.
Fixing the above has required changes in different layers:
The "platform collector" concept, which used to be an abstract entity
with which all globals interacted to retrieve telemetry data for all
source types, is now a per-global and per-source type concept.
The lower-level concept that represents a cross-global interface for the
hardware or OS is now a "pressure source", which contains a snapshot of
the latest reading it has retrieved along with a timestamp.
"Data delivery" is now called "data collection". It uses a platform
collector and its associated pressure source to retrieve a telemetry
sample that is transformed into a pressure state.
There are algorithms for activating and deactivating data collection. Both
ensure they data collection cannot be started/stopped if they have already
been.
PressureObserver.observe()'s had a "is not a valid source type" check
that was too vague, as this step determined whether a given source type
is supported by the platform or not, but the definition of "valid source
type" was something else entirely.
This step has been replaced by a sequence of steps that attempts to
retrieve an existing platform collector for a source type and, if one does
not exist, tries to connect to a corresponding pressure source. This
change makes the same platform collector be used for all observers of a
given source type and lays out in more detail what it means to check
whether a source type is valid or not in this context.
Co-authored with @kenchris in #265. It was split off as a separate pull
request to make it easier to review and understand.
Related to #282: we need these algorithms to be properly defined in order to be able to support WebDriver and fake pressure states.
This somewhat big change intends to clarify what "activate" and "deactivate" data delivery actually mean, as there used to be just a "data delivery" algorithm and no accompanying definitions for those two verbs. Furthermore, the data delivery algorithm itself was confusing:
data
variable in its declaration that was never passed by any callers.data
was of an implementation-defined type and format, but the steps assumed it had some associated information like source type that was not set anywhere.Fixing the above has required changes in different layers:
PressureObserver.observe()
's had a "is not a valid source type" check that was too vague, as this step determined whether a given source type is supported by the platform or not, but the definition of "valid source type" was something else entirely. This step has been replaced by a sequence of steps that attempts to retrieve an existing platform collector for a source type and, if one does not exist, tries to connect to a corresponding pressure source. This change makes the same platform collector be used for all observers of a given source type and lays out in more detail what it means to check whether a source type is valid or not in this context.Co-authored with @kenchris in #265. It was split off as a separate pull request to make it easier to review and understand.
Preview | Diff