| 4 | === Data input === |
| 5 | Data input consists of raw sensor data: |
| 6 | * Accelerometer |
| 7 | * Orientation |
| 8 | * GPS |
| 9 | The data update frequency is also the highest for the accelerometer data. |
| 10 | |
| 11 | The raw sensor data does not have to be real-time sensor data from the device running the application. It may be a re-play of a recorded rowing session or - when such code will be written - a sensor data feed from a remote device. |
| 12 | === High frequency sensor data flow === |
| 13 | The red lines show linear or multiplexed flow of high-frequency data from sensor input sources to consumers via various filters/processors. Sensor raw data maybe either be processed in order to calculate higher-level rowing information - such as stroke rate - or displayed in its near-raw form in graphs. |
| 14 | === Message Bus === |
| 15 | A message bus is used for low frequency asynchronous message communication between the various components. The various data processors (scanners, detectors) may send various events on the bus - such as the STROKE_START, STROKE_END event produced by the Rowing Detector component. |
| 16 | |
| 17 | |