Modules

Structs

  • Stores incoming raw samples
  • Calculations: d = linearized(adc sample) –> distance v = (d - d_prev) / 1 –> velocity a = (v - v_prev) / 2 –> acceleration j = (a - a_prev) / 3 –> jerk
  • Sense data is store per ADC source element (e.g. per key) The analysis is stored in a queue, where old values expire out min/max is used to handle offsets from the distance lookups Higher order calculations assume a constant unit of time between measurements Any division is left to compile-time comparisions as it’s not necessary to actually compute the final higher order values in order to make a decision. This diagram can give a sense of how the incoming data is used. The number represents the last ADC sample required to calculate the value.

Enums

  • Calibration status indicates if a sensor position is ready to send analysis for a particular key.
  • Records momentary push button events
  • Indicates mode of the sensor Used to specify a different lookup table and data processing behaviour