|
|
|
@@ -127,7 +127,7 @@ static int imx298_apply_exposure(CameraState *s, int gain, int integ_lines, uint
|
|
|
|
|
// REG_HOLD
|
|
|
|
|
{0x104,0x0,0},
|
|
|
|
|
};
|
|
|
|
|
return sensor_write_regs(s, reg_array, ARRAYSIZE(reg_array), MSM_CAMERA_I2C_BYTE_DATA);
|
|
|
|
|
return sensor_write_regs(s, reg_array, std::size(reg_array), MSM_CAMERA_I2C_BYTE_DATA);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int ov8865_apply_exposure(CameraState *s, int gain, int integ_lines, uint32_t frame_length) {
|
|
|
|
@@ -137,7 +137,7 @@ static int ov8865_apply_exposure(CameraState *s, int gain, int integ_lines, uint
|
|
|
|
|
// get bitmaps from iso
|
|
|
|
|
static const int gains[] = {0, 100, 200, 400, 800};
|
|
|
|
|
int i;
|
|
|
|
|
for (i = 1; i < ARRAYSIZE(gains); i++) {
|
|
|
|
|
for (i = 1; i < std::size(gains); i++) {
|
|
|
|
|
if (gain >= gains[i - 1] && gain < gains[i])
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
@@ -162,7 +162,7 @@ static int ov8865_apply_exposure(CameraState *s, int gain, int integ_lines, uint
|
|
|
|
|
|
|
|
|
|
//{0x104,0x0,0},
|
|
|
|
|
};
|
|
|
|
|
return sensor_write_regs(s, reg_array, ARRAYSIZE(reg_array), MSM_CAMERA_I2C_BYTE_DATA);
|
|
|
|
|
return sensor_write_regs(s, reg_array, std::size(reg_array), MSM_CAMERA_I2C_BYTE_DATA);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void camera_init(VisionIpcServer *v, CameraState *s, int camera_id, int camera_num,
|
|
|
|
@@ -172,7 +172,7 @@ static void camera_init(VisionIpcServer *v, CameraState *s, int camera_id, int c
|
|
|
|
|
s->camera_num = camera_num;
|
|
|
|
|
s->camera_id = camera_id;
|
|
|
|
|
|
|
|
|
|
assert(camera_id < ARRAYSIZE(cameras_supported));
|
|
|
|
|
assert(camera_id < std::size(cameras_supported));
|
|
|
|
|
s->ci = cameras_supported[camera_id];
|
|
|
|
|
assert(s->ci.frame_width != 0);
|
|
|
|
|
|
|
|
|
@@ -501,7 +501,7 @@ static void camera_open(CameraState *s, bool is_road_cam) {
|
|
|
|
|
// SENSOR: stop stream
|
|
|
|
|
struct msm_camera_i2c_reg_setting stop_settings = {
|
|
|
|
|
.reg_setting = stop_reg_array,
|
|
|
|
|
.size = ARRAYSIZE(stop_reg_array),
|
|
|
|
|
.size = std::size(stop_reg_array),
|
|
|
|
|
.addr_type = MSM_CAMERA_I2C_WORD_ADDR,
|
|
|
|
|
.data_type = MSM_CAMERA_I2C_BYTE_DATA,
|
|
|
|
|
.delay = 0
|
|
|
|
@@ -518,9 +518,9 @@ static void camera_open(CameraState *s, bool is_road_cam) {
|
|
|
|
|
|
|
|
|
|
// SENSOR: send i2c configuration
|
|
|
|
|
if (s->camera_id == CAMERA_ID_IMX298) {
|
|
|
|
|
err = sensor_write_regs(s, init_array_imx298, ARRAYSIZE(init_array_imx298), MSM_CAMERA_I2C_BYTE_DATA);
|
|
|
|
|
err = sensor_write_regs(s, init_array_imx298, std::size(init_array_imx298), MSM_CAMERA_I2C_BYTE_DATA);
|
|
|
|
|
} else if (s->camera_id == CAMERA_ID_OV8865) {
|
|
|
|
|
err = sensor_write_regs(s, init_array_ov8865, ARRAYSIZE(init_array_ov8865), MSM_CAMERA_I2C_BYTE_DATA);
|
|
|
|
|
err = sensor_write_regs(s, init_array_ov8865, std::size(init_array_ov8865), MSM_CAMERA_I2C_BYTE_DATA);
|
|
|
|
|
} else {
|
|
|
|
|
assert(false);
|
|
|
|
|
}
|
|
|
|
@@ -587,7 +587,7 @@ static void camera_open(CameraState *s, bool is_road_cam) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (s->camera_id == CAMERA_ID_IMX298) {
|
|
|
|
|
err = sensor_write_regs(s, mode_setting_array_imx298, ARRAYSIZE(mode_setting_array_imx298), MSM_CAMERA_I2C_BYTE_DATA);
|
|
|
|
|
err = sensor_write_regs(s, mode_setting_array_imx298, std::size(mode_setting_array_imx298), MSM_CAMERA_I2C_BYTE_DATA);
|
|
|
|
|
LOG("sensor setup: %d", err);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -728,7 +728,7 @@ static void camera_open(CameraState *s, bool is_road_cam) {
|
|
|
|
|
static void road_camera_start(CameraState *s) {
|
|
|
|
|
set_exposure(s, 1.0, 1.0);
|
|
|
|
|
|
|
|
|
|
int err = sensor_write_regs(s, start_reg_array, ARRAYSIZE(start_reg_array), MSM_CAMERA_I2C_BYTE_DATA);
|
|
|
|
|
int err = sensor_write_regs(s, start_reg_array, std::size(start_reg_array), MSM_CAMERA_I2C_BYTE_DATA);
|
|
|
|
|
LOG("sensor start regs: %d", err);
|
|
|
|
|
|
|
|
|
|
int inf_step = 512 - INFINITY_DAC;
|
|
|
|
@@ -905,7 +905,7 @@ void camera_autoexposure(CameraState *s, float grey_frac) {
|
|
|
|
|
|
|
|
|
|
static void driver_camera_start(CameraState *s) {
|
|
|
|
|
set_exposure(s, 1.0, 1.0);
|
|
|
|
|
int err = sensor_write_regs(s, start_reg_array, ARRAYSIZE(start_reg_array), MSM_CAMERA_I2C_BYTE_DATA);
|
|
|
|
|
int err = sensor_write_regs(s, start_reg_array, std::size(start_reg_array), MSM_CAMERA_I2C_BYTE_DATA);
|
|
|
|
|
LOG("sensor start regs: %d", err);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -1124,7 +1124,7 @@ void cameras_run(MultiCameraState *s) {
|
|
|
|
|
while (!do_exit) {
|
|
|
|
|
struct pollfd fds[2] = {{.fd = cameras[0]->isp_fd, .events = POLLPRI},
|
|
|
|
|
{.fd = cameras[1]->isp_fd, .events = POLLPRI}};
|
|
|
|
|
int ret = poll(fds, ARRAYSIZE(fds), 1000);
|
|
|
|
|
int ret = poll(fds, std::size(fds), 1000);
|
|
|
|
|
if (ret < 0) {
|
|
|
|
|
if (errno == EINTR || errno == EAGAIN) continue;
|
|
|
|
|
LOGE("poll failed (%d - %d)", ret, errno);
|
|
|
|
|