- From: Tobie Langel via GitHub <sysbot+gh@w3.org>
- Date: Wed, 07 Dec 2016 08:37:23 +0000
- To: public-device-apis-log@w3.org
Thanks for your input @alexshalamov. Getting back to our requirements,
I think we want to try and fulfill the following, somewhat
contradictory use-cases:
1. high-frequency low-latency use-cases (e.g. head-tracking for VR),
2. operating over multiple, sequential sensor readings in (near-)
realtime (e.g. Kalman filters),
3. storing sensor reading for further processing at a later stage,
either locally or remotely.
Requirement 1) is extremely perf sensitive, and if our ability to
deliver on it is hindered because we're triggering too much GC, we
should definitely fix that. Requirements 2) and 3) on the other hand
require that we have distinct objects representing each readings
(additionally, timestamps for 3) need to have an epoch-based component
and not be DOMHighResolution only).
The design I'm suggesting here (which, btw, is *just* a suggestion),
delivers on 1), but require an extra bit of work for 2) and 3);
basically a way to snapshot the state of the sensor at t<sub>n</sub>.
I added a serializer in the above example as a placeholder. But that
could also be a method, e.g.:
```webidl
[SecureContext]
interface Sensor : EventTarget {
readonly attribute SensorState state;
void start();
void stop();
SensorReading snapshot();
attribute EventHandler onchange;
attribute EventHandler onactivate;
attribute EventHandler onerror;
};
interface SensorReading {
readonly attribute DOMHighResTimeStamp timeStamp;
readonly attribute DOMHighResTimeStamp timeOrigin;
};
dictionary SensorOptions {
double? frequency;
};
// E.g. for Gyroscope
interface GyroscopeValues {
readonly attribute unrestricted double? x;
readonly attribute unrestricted double? y;
readonly attribute unrestricted double? z;
};
[Constructor(SensorOptions options)]
interface Gyroscope : Sensor {};
Gyroscope implements GyroscopeValues;
interface GyroscopeReading : SensorReading {};
GyroscopeReading implements GyroscopeValues;
```
We could even imagine building on top of this a buffer for all
snapshots in between to event turns or some such.
--
GitHub Notification of comment by tobie
Please view or discuss this issue at
https://github.com/w3c/sensors/issues/153#issuecomment-265387978 using
your GitHub account
Received on Wednesday, 7 December 2016 08:37:29 UTC