- From: Tobie Langel via GitHub <sysbot+gh@w3.org>
- Date: Thu, 23 Feb 2017 14:56:44 +0000
- To: public-device-apis-log@w3.org
Thanks for getting us started on this key conversation. > ```js > let gyro = Gyroscope({frequency: 240}); > > const readingSize = 4; // tymestamp, x, y, z > let buffer = Float64Array(readingSize * 4); > gyro.start(); > gyro.collectLatestReadings(buffer); > > function step(timestamp) { > // Now 'buffer' contains recorded readings. > gyro.collectLatestReadings(buffer); // Collect further. > window.requestAnimationFrame(step); > } > > window.requestAnimationFrame(step); > ``` We want to make sure the API design doesn't force the implementation to preemptively store all intermediary samples in case `collectLatestReadings` gets called in the following animation frame. I think that's what you're suggesting here, but that's unclear from the API name alone. It's something we need to express clearly through the API names. Worth checking other BYOB APIs on the Web for ideas here. What the use cases point towards so far is an API where the consumer can: 1. Provide a buffer of the right size. Note it might be interesting to have a way to programmatically know the buffer size you need for a given number of readings, e.g.: `let buffer = Float64Array(readingSize * gyro.getReadingSize());` 2. Know when the buffer has been updated. 3. Maybe know when the buffer is full (promise or event-based? During `rAF` or as soon as it's full?). 4. Possibly decide on a policy to handle what happens once the buffer is full (FIFO, FILO, throw, swap buffers, other?). 5. Read from the buffer. > Also I would drop 'onchnage' event for motion sensors as it does not bring much benefits there and on the other hand it is called too often draining CPU and battery. That requires removing them from `Sensor` too and thus creating an extra `NonMotionSensor` class inheriting from `Sensor`. Not necessarily a bad thing, but worth considering. An other option would be to clearly distinguish between `polling` and `reporting` frequencies and throttle the latter to animation frame. We really need to understand what the use cases are for this, though. -- GitHub Notification of comment by tobie Please view or discuss this issue at https://github.com/w3c/sensors/issues/171#issuecomment-282013205 using your GitHub account
Received on Thursday, 23 February 2017 14:56:56 UTC