diff --git a/selfdrive/camerad/cameras/camera_qcom2.cc b/selfdrive/camerad/cameras/camera_qcom2.cc index 155be6cda4..b94b624ad0 100644 --- a/selfdrive/camerad/cameras/camera_qcom2.cc +++ b/selfdrive/camerad/cameras/camera_qcom2.cc @@ -582,10 +582,12 @@ static void camera_open(CameraState *s) { LOGD("-- Probing sensor %d", s->camera_num); sensors_init(s->multi_cam_state->video0_fd, s->sensor_fd, s->camera_num); - memset(&s->req_mgr_session_info, 0, sizeof(s->req_mgr_session_info)); - ret = cam_control(s->multi_cam_state->video0_fd, CAM_REQ_MGR_CREATE_SESSION, &s->req_mgr_session_info, sizeof(s->req_mgr_session_info)); - LOGD("get session: %d 0x%X", ret, s->req_mgr_session_info.session_hdl); - s->session_handle = s->req_mgr_session_info.session_hdl; + // create session + struct cam_req_mgr_session_info session_info = {}; + ret = cam_control(s->multi_cam_state->video0_fd, CAM_REQ_MGR_CREATE_SESSION, &session_info, sizeof(session_info)); + LOGD("get session: %d 0x%X", ret, session_info.session_hdl); + s->session_handle = session_info.session_hdl; + // access the sensor LOGD("-- Accessing sensor"); static struct cam_acquire_dev_cmd acquire_dev_cmd = {0}; @@ -865,7 +867,9 @@ static void camera_close(CameraState *s) { ret = device_control(s->csiphy_fd, CAM_RELEASE_DEV, s->session_handle, s->csiphy_dev_handle); LOGD("release csiphy: %d", ret); - ret = cam_control(s->multi_cam_state->video0_fd, CAM_REQ_MGR_DESTROY_SESSION, &s->req_mgr_session_info, sizeof(s->req_mgr_session_info)); + // destroyed session + struct cam_req_mgr_session_info session_info = {.session_hdl = s->session_handle}; + ret = cam_control(s->multi_cam_state->video0_fd, CAM_REQ_MGR_DESTROY_SESSION, &session_info, sizeof(session_info)); LOGD("destroyed session: %d", ret); } @@ -1104,11 +1108,11 @@ void cameras_run(MultiCameraState *s) { // LOGD("v4l2 event: sess_hdl %d, link_hdl %d, frame_id %d, req_id %lld, timestamp 0x%llx, sof_status %d\n", event_data->session_hdl, event_data->u.frame_msg.link_hdl, event_data->u.frame_msg.frame_id, event_data->u.frame_msg.request_id, event_data->u.frame_msg.timestamp, event_data->u.frame_msg.sof_status); // printf("sess_hdl %d, link_hdl %d, frame_id %lu, req_id %lu, timestamp 0x%lx, sof_status %d\n", event_data->session_hdl, event_data->u.frame_msg.link_hdl, event_data->u.frame_msg.frame_id, event_data->u.frame_msg.request_id, event_data->u.frame_msg.timestamp, event_data->u.frame_msg.sof_status); - if (event_data->session_hdl == s->road_cam.req_mgr_session_info.session_hdl) { + if (event_data->session_hdl == s->road_cam.session_handle) { handle_camera_event(&s->road_cam, event_data); - } else if (event_data->session_hdl == s->wide_road_cam.req_mgr_session_info.session_hdl) { + } else if (event_data->session_hdl == s->wide_road_cam.session_handle) { handle_camera_event(&s->wide_road_cam, event_data); - } else if (event_data->session_hdl == s->driver_cam.req_mgr_session_info.session_hdl) { + } else if (event_data->session_hdl == s->driver_cam.session_handle) { handle_camera_event(&s->driver_cam, event_data); } else { printf("Unknown vidioc event source\n"); diff --git a/selfdrive/camerad/cameras/camera_qcom2.h b/selfdrive/camerad/cameras/camera_qcom2.h index b3e08144a8..da30861396 100644 --- a/selfdrive/camerad/cameras/camera_qcom2.h +++ b/selfdrive/camerad/cameras/camera_qcom2.h @@ -31,7 +31,7 @@ typedef struct CameraState { int camera_num; - uint32_t session_handle; + int32_t session_handle; uint32_t sensor_dev_handle; uint32_t isp_dev_handle; @@ -48,8 +48,6 @@ typedef struct CameraState { int idx_offset; bool skipped; - struct cam_req_mgr_session_info req_mgr_session_info; - CameraBuf buf; } CameraState;