I'm using events to sync threads to "new data" events, but when I register to the event sources I get an unhandeled exception after a few iterations.
I register like this:
Code: Select all
/* Event registration for new sensor data */
event_listener_t el;
event_source_t *es;
eventmask_t acc_gyro_mask, mag_mask;
/* Register to new data from accelerometer and gyroscope */
es = ptrGetAccelerometerAndGyroscopeEventSource(&acc_gyro_mask);
chEvtRegisterMask(es, &el, acc_gyro_mask);
/* Register to new data from magnetometer */
es = ptrGetMagnetometerEventSource(&mag_mask);
chEvtRegisterMask(es, &el, mag_mask);
...
while (1) {
...
/* Wait for new measurement data */
chEvtWaitOne(acc_gyro_mask);
...
}Where ptrGetAccelerometerAndGyroscopeEventSource and ptrGetMagnetometerEventSource return the pointers to the event sources and the corresponding event masks.
Have I misunderstood how events work or can I not register to two different events?
Because if I comment out one of the registrations it works as expected.