From ec1de1c2eb079eb01dc230eca45714798bc7694f Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Fri, 5 Feb 2016 02:38:07 +0200 Subject: [PATCH] Replace sensor struct clock polarities with flags. --- src/omv/ov2640.c | 9 +++++---- src/omv/ov7725.c | 11 ++++++----- src/omv/ov9650.c | 11 ++++++----- src/omv/sensor.c | 17 ++++++++++------- src/omv/sensor.h | 11 ++++++++--- 5 files changed, 35 insertions(+), 24 deletions(-) diff --git a/src/omv/ov2640.c b/src/omv/ov2640.c index db8230401..6f2ad03b6 100644 --- a/src/omv/ov2640.c +++ b/src/omv/ov2640.c @@ -620,10 +620,11 @@ int ov2640_init(struct sensor_dev *sensor) sensor->set_quality = set_quality; sensor->set_colorbar = set_colorbar; - /* set HSYNC/VSYNC/PCLK polarity */ - sensor->vsync_pol = DCMI_VSPOLARITY_LOW; - sensor->hsync_pol = DCMI_HSPOLARITY_LOW; - sensor->pixck_pol = DCMI_PCKPOLARITY_RISING; + // Set sensor flags + SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_VSYNC, 0); + SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_HSYNC, 0); + SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_PIXCK, 1); + SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_FSYNC, 0); return 0; } diff --git a/src/omv/ov7725.c b/src/omv/ov7725.c index 85ce72eb6..6a3eb53a7 100644 --- a/src/omv/ov7725.c +++ b/src/omv/ov7725.c @@ -280,7 +280,7 @@ static int set_colorbar(struct sensor_dev *sensor, int enable) int ov7725_init(struct sensor_dev *sensor) { - /* set function pointers */ + // Set function pointers sensor->reset = reset; sensor->set_pixformat = set_pixformat; sensor->set_framesize = set_framesize; @@ -292,10 +292,11 @@ int ov7725_init(struct sensor_dev *sensor) sensor->set_gainceiling = set_gainceiling; sensor->set_colorbar = set_colorbar; - /* set HSYNC/VSYNC/PCLK polarity */ - sensor->vsync_pol = DCMI_VSPOLARITY_HIGH; - sensor->hsync_pol = DCMI_HSPOLARITY_LOW; - sensor->pixck_pol = DCMI_PCKPOLARITY_RISING; + // Set sensor flags + SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_VSYNC, 1); + SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_HSYNC, 0); + SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_PIXCK, 1); + SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_FSYNC, 1); return 0; } diff --git a/src/omv/ov9650.c b/src/omv/ov9650.c index b60fa56cd..8ee9e2bb3 100644 --- a/src/omv/ov9650.c +++ b/src/omv/ov9650.c @@ -345,7 +345,7 @@ static int set_gainceiling(struct sensor_dev *sensor, enum sensor_gainceiling ga int ov9650_init(struct sensor_dev *sensor) { - /* set function pointers */ + // Set function pointers sensor->reset = reset; sensor->set_pixformat = set_pixformat; sensor->set_framesize = set_framesize; @@ -354,10 +354,11 @@ int ov9650_init(struct sensor_dev *sensor) sensor->set_exposure = set_exposure; sensor->set_gainceiling = set_gainceiling; - /* set HSYNC/VSYNC/PCLK polarity */ - sensor->vsync_pol = DCMI_VSPOLARITY_HIGH; - sensor->hsync_pol = DCMI_HSPOLARITY_LOW; - sensor->pixck_pol = DCMI_PCKPOLARITY_RISING; + // Set sensor flags + SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_VSYNC, 1); + SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_HSYNC, 0); + SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_PIXCK, 1); + SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_FSYNC, 0); return 0; } diff --git a/src/omv/sensor.c b/src/omv/sensor.c index 66da1f9a3..979357cd3 100644 --- a/src/omv/sensor.c +++ b/src/omv/sensor.c @@ -115,13 +115,16 @@ static int dcmi_config(uint32_t jpeg_mode) { /* DCMI configuration */ DCMIHandle.Instance = DCMI; - DCMIHandle.Init.VSPolarity = sensor.vsync_pol; /* VSYNC clock polarity */ - DCMIHandle.Init.HSPolarity = sensor.hsync_pol; /* HSYNC clock polarity */ - DCMIHandle.Init.PCKPolarity = sensor.pixck_pol; /* PXCLK clock polarity */ - DCMIHandle.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE; /* Enable Hardware synchronization */ - DCMIHandle.Init.CaptureRate = DCMI_CR_ALL_FRAME; /* Capture rate all frames */ - DCMIHandle.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B; /* Capture 8 bits on every pixel clock */ - DCMIHandle.Init.JPEGMode = jpeg_mode; /* Set JPEG Mode */ + DCMIHandle.Init.VSPolarity = SENSOR_HW_FLAGS_GET(&sensor, SENSOR_HW_FLAGS_VSYNC) ? /* VSYNC clock polarity */ + DCMI_VSPOLARITY_HIGH : DCMI_VSPOLARITY_LOW; + DCMIHandle.Init.HSPolarity = SENSOR_HW_FLAGS_GET(&sensor, SENSOR_HW_FLAGS_HSYNC) ? /* HSYNC clock polarity */ + DCMI_HSPOLARITY_HIGH : DCMI_HSPOLARITY_LOW; + DCMIHandle.Init.PCKPolarity = SENSOR_HW_FLAGS_GET(&sensor, SENSOR_HW_FLAGS_PIXCK) ? /* PXCLK clock polarity */ + DCMI_PCKPOLARITY_RISING : DCMI_PCKPOLARITY_FALLING; + DCMIHandle.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE; /* Enable Hardware synchronization */ + DCMIHandle.Init.CaptureRate = DCMI_CR_ALL_FRAME; /* Capture rate all frames */ + DCMIHandle.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B; /* Capture 8 bits on every pixel clock */ + DCMIHandle.Init.JPEGMode = jpeg_mode; /* Set JPEG Mode */ /* Associate the DMA handle to the DCMI handle */ __HAL_LINKDMA(&DCMIHandle, DMA_Handle, DMAHandle); diff --git a/src/omv/sensor.h b/src/omv/sensor.h index 21ee004ce..76e066f0b 100644 --- a/src/omv/sensor.h +++ b/src/omv/sensor.h @@ -70,12 +70,17 @@ enum reset_polarity { extern const int res_width[]; extern const int res_height[]; +#define SENSOR_HW_FLAGS_VSYNC (0) // vertical sync polarity. +#define SENSOR_HW_FLAGS_HSYNC (1) // horizontal sync polarity. +#define SENSOR_HW_FLAGS_PIXCK (2) // pixel clock edge. +#define SENSOR_HW_FLAGS_FSYNC (3) // hardware frame sync. +#define SENSOR_HW_FLAGS_GET(s, x) ((s)->hw_flags & (1<hw_flags |= (v<