Sensor events splitup (#25714)
* PoC of reading sensors via interrupts instead of polling * add Gyro and draft for magn * add more functionality to gpio.cc * change LSM gyro to interrupt * resolve rebase conflict * update BMX accel interrupt impl * add interrupt collector thread to fetch in parallel * change get_event interface to return true on successful read * update BMX gyro interrupt impl * update gpio.h/.cc according to comments * address comments, rename Edgetype enum * Edgetype to EdgeType * update sensor interrupt interface * add error handling, and read fd on trigger * avoid sending empty messages * fix build * use gpiochip * less diff * gpiochip on both edges, but skip falling edge if rising edge is detected * init last_ts with 0 * update sensord testcases * update sensord testsweet * test for pipeline * readd with_process * add null check * move tests update to seperate PR * sensord: improve test coverage (#25683) * update sensord-interrupt testsweet * address review comments * inc stddev threshold * fix format string * add version 0 check again * relax strictness after c3 with bmx tests * relax strictness after tests Co-authored-by: Kurt Nistelberger <kurt.nistelberger@gmail.com> * address PR comments * fix typo * remove 4ms limit, and skip first 0.5sec of data * revert disable_interuppt change to destructor * fix and remove timing skip * make gpiochip generic * sensord port * change from sensorEvents to separated events * fix gyro usage * add splitted sensor tests * modify debug script sensor_data_to_hist.py * refactor get_event interface to remove sensorEvent message type * update locationd to non sensorEvent usage * tmp commit * fix replay * fix accelerometer type * fix sensor to hist debug script * update sensord tests to split events * remove rebase artifacts * port test_sensord.py * small clean up * change cereal to sensorEvents-splitup branch * upate sensorEvents in regen * fix route generation for splitted sensor events * regen cleanUp from sensorEvents change * . * remove light and temp from locationd * add generic init delay per sensor * . * update routes * move bmx gyro/accel to its own channel * adopt sensor tests to bmx channel * remove rebase artifacts * fix sensord test * handle bmx not present * add bmx sockets to regen * . * . * code cleanUp * . * address PR comments * address PR comments * address PR comments * lsm clean up * readd sensorEvents * rever regen.py * . * update replay refs * move channels * fix artifact * bump cereal * update refs * fix timing issue Co-authored-by: Bruce Wayne <batman@workstation-eu-intern2.eu.local> Co-authored-by: gast04 <kurt.nistelberger@gmail.com> Co-authored-by: Willem Melching <willem.melching@gmail.com> Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>pull/25932/head
parent
784246cf54
commit
29d3ed2ce6
36 changed files with 264 additions and 289 deletions
@ -1 +1 @@ |
||||
Subproject commit 5aa49864bce38f520705b6ed0b98e7cf9560ed0a |
||||
Subproject commit d4cf8728e2fa2d87d90098efa7ddeaf8f98a03db |
@ -1,13 +1,18 @@ |
||||
#pragma once |
||||
|
||||
#include "cereal/gen/cpp/log.capnp.h" |
||||
#include "cereal/messaging/messaging.h" |
||||
|
||||
class Sensor { |
||||
public: |
||||
int gpio_fd = -1; |
||||
uint64_t init_delay = 500e6; // default dealy 500ms
|
||||
virtual ~Sensor() {}; |
||||
virtual int init() = 0; |
||||
virtual bool get_event(cereal::SensorEventData::Builder &event) = 0; |
||||
virtual bool get_event(MessageBuilder &msg, uint64_t ts = 0) = 0; |
||||
virtual bool has_interrupt_enabled() = 0; |
||||
virtual int shutdown() = 0; |
||||
|
||||
virtual bool is_data_valid(uint64_t st, uint64_t ct) { |
||||
return (ct - st) > init_delay; |
||||
} |
||||
}; |
||||
|
@ -1 +1 @@ |
||||
9098c1cf6993598071c3e27448356eef86660d02 |
||||
761eada809a0eaa67989e6e435042633f965d1fe |
Loading…
Reference in new issue