use different SubMasters for driverState/sensorEvents (#2522)

* use different sms

* rename
pull/2518/head^2
ZwX1616 2020-11-11 13:53:11 -08:00 committed by GitHub
parent 9529764549
commit 4954db0381
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 7 deletions

View File

@ -333,7 +333,8 @@ void cameras_init(MultiCameraState *s, cl_device_id device_id, cl_context ctx) {
s->rear.device = s->device;
s->front.device = s->device;
s->sm = new SubMaster({"driverState", "sensorEvents"});
s->sm_front = new SubMaster({"driverState"});
s->sm_rear = new SubMaster({"sensorEvents"});
s->pm = new PubMaster({"frame", "frontFrame", "thumbnail"});
int err;
@ -2046,7 +2047,7 @@ static void* ops_thread(void* arg) {
}
void camera_process_front(MultiCameraState *s, CameraState *c, int cnt) {
common_camera_process_front(s->sm, s->pm, c, cnt);
common_camera_process_front(s->sm_front, s->pm, c, cnt);
}
// called by processing_thread
@ -2055,11 +2056,11 @@ void camera_process_frame(MultiCameraState *s, CameraState *c, int cnt) {
// cache rgb roi and write to cl
// gz compensation
s->sm->update(0);
if (s->sm->updated("sensorEvents")) {
s->sm_rear->update(0);
if (s->sm_rear->updated("sensorEvents")) {
float vals[3] = {0.0};
bool got_accel = false;
auto sensor_events = (*(s->sm))["sensorEvents"].getSensorEvents();
auto sensor_events = (*(s->sm_rear))["sensorEvents"].getSensorEvents();
for (auto sensor_event : sensor_events) {
if (sensor_event.which() == cereal::SensorEventData::ACCELERATION) {
auto v = sensor_event.getAcceleration().getV();
@ -2291,6 +2292,7 @@ void cameras_close(MultiCameraState *s) {
clReleaseProgram(s->prg_rgb_laplacian);
clReleaseKernel(s->krnl_rgb_laplacian);
delete s->sm;
delete s->sm_front;
delete s->sm_rear;
delete s->pm;
}

View File

@ -142,7 +142,8 @@ typedef struct MultiCameraState {
CameraState rear;
CameraState front;
SubMaster *sm;
SubMaster *sm_front;
SubMaster *sm_rear;
PubMaster *pm;
} MultiCameraState;