Replace sensor flags with bit fields.

* Much easier to manipulate and saves some memory.
This commit is contained in:
iabdalkader 2021-09-04 15:37:02 +02:00
parent 7fa4712504
commit c28958e04e
17 changed files with 122 additions and 113 deletions

View File

@ -173,15 +173,11 @@ typedef enum {
SENSOR_ERROR_JPEG_OVERFLOW = -20,
} sensor_error_t;
#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_JPEGE (4) // hardware JPEG encoder.
#define SENSOR_HW_FLAGS_RGB565_REV (5) // byte reverse rgb565.
#define SENSOR_HW_FLAGS_GET(s, x) ((s)->hw_flags & (1<<x))
#define SENSOR_HW_FLAGS_SET(s, x, v) ((s)->hw_flags |= (v<<x))
#define SENSOR_HW_FLAGS_CLR(s, x) ((s)->hw_flags &= ~(1<<x))
// Bayer patterns.
#define SENSOR_HW_FLAGS_BAYER_BGGR (1) // Default Bayer pattern.
#define SENSOR_HW_FLAGS_BAYER_GBRG (2)
#define SENSOR_HW_FLAGS_BAYER_GRBG (3)
#define SENSOR_HW_FLAGS_BAYER_RGGB (4)
typedef void (*vsync_cb_t)(uint32_t vsync);
typedef void (*frame_cb_t)();
@ -193,8 +189,21 @@ typedef struct _sensor {
uint16_t chip_id_w; // Sensor ID 16 bits.
};
uint8_t slv_addr; // Sensor I2C slave address.
uint16_t gs_bpp; // Grayscale bytes per pixel.
uint32_t hw_flags; // Hardware flags (clock polarities/hw capabilities)
// Hardware flags (clock polarities, hw capabilities etc..)
struct {
uint32_t vsync:1; // Vertical sync polarity.
uint32_t hsync:1; // Horizontal sync polarity.
uint32_t pixck:1; // Pixel clock edge.
uint32_t fsync:1; // Hardware frame sync.
uint32_t jpege:1; // Hardware jpeg encoder.
uint32_t jpeg_mode:3; // JPEG mode.
uint32_t gs_bpp:2; // Grayscale bytes per pixel output.
uint32_t rgb_swap:1; // Byte-swap 2BPP RGB formats after capture.
uint32_t yuv_swap:1; // Byte-swap 2BPP YUV formats after capture.
uint32_t bayer:2; // Bayer/CFA pattern.
} hw_flags;
const uint16_t *color_palette; // Color palette used for color lookup.
bool disable_full_flush; // Turn off default frame buffer flush policy when full.

View File

@ -647,7 +647,7 @@ __weak uint32_t sensor_get_src_bpp()
{
switch (sensor.pixformat) {
case PIXFORMAT_GRAYSCALE:
return sensor.gs_bpp;
return sensor.hw_flags.gs_bpp;
case PIXFORMAT_RGB565:
case PIXFORMAT_YUV422:
return 2;

View File

@ -241,8 +241,8 @@ int sensor_snapshot(sensor_t *sensor, image_t *image, uint32_t flags)
case PIXFORMAT_YUV422:
case PIXFORMAT_RGB565: {
MAIN_FB()->bpp = 2;
if (SENSOR_HW_FLAGS_GET(sensor, SENSOR_HW_FLAGS_RGB565_REV)) {
unaligned_memcpy_rev16(buffer->data, buffer->data, _width*_height);
if (sensor->hw_flags.rgb_swap || sensor->hw_flags.yuv_swap) {
unaligned_memcpy_rev16(buffer->data, buffer->data, _width * _height);
}
break;
}

View File

@ -244,8 +244,8 @@ int sensor_snapshot(sensor_t *sensor, image_t *image, uint32_t flags)
}
// Configure the DMA on the first frame, for later frames only the write is changed.
sensor_dma_config(MAIN_FB()->u, MAIN_FB()->v, MAIN_FB()->bpp, (void *) buffer->data,
(SENSOR_HW_FLAGS_GET(sensor, SENSOR_HW_FLAGS_RGB565_REV) && MAIN_FB()->bpp == 2));
sensor_dma_config(MAIN_FB()->u, MAIN_FB()->v, MAIN_FB()->bpp,
(void *) buffer->data, (sensor->hw_flags.rgb_swap && MAIN_FB()->bpp == 2));
// Re-enable the state machine.

View File

@ -188,14 +188,12 @@ int sensor_init()
int sensor_dcmi_config(uint32_t pixformat)
{
// VSYNC clock polarity
DCMIHandle.Init.VSPolarity = SENSOR_HW_FLAGS_GET(&sensor, SENSOR_HW_FLAGS_VSYNC) ?
DCMI_VSPOLARITY_HIGH : DCMI_VSPOLARITY_LOW;
DCMIHandle.Init.VSPolarity = sensor.hw_flags.vsync ? DCMI_VSPOLARITY_HIGH : DCMI_VSPOLARITY_LOW;
// HSYNC clock polarity
DCMIHandle.Init.HSPolarity = SENSOR_HW_FLAGS_GET(&sensor, SENSOR_HW_FLAGS_HSYNC) ?
DCMI_HSPOLARITY_HIGH : DCMI_HSPOLARITY_LOW;
DCMIHandle.Init.HSPolarity = sensor.hw_flags.hsync ? DCMI_HSPOLARITY_HIGH : DCMI_HSPOLARITY_LOW;
// PXCLK clock polarity
DCMIHandle.Init.PCKPolarity = SENSOR_HW_FLAGS_GET(&sensor, SENSOR_HW_FLAGS_PIXCK) ?
DCMI_PCKPOLARITY_RISING : DCMI_PCKPOLARITY_FALLING;
DCMIHandle.Init.PCKPolarity = sensor.hw_flags.pixck ? DCMI_PCKPOLARITY_RISING : DCMI_PCKPOLARITY_FALLING;
// Setup capture parameters.
DCMIHandle.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE; // Enable Hardware synchronization
DCMIHandle.Init.CaptureRate = DCMI_CR_ALL_FRAME; // Capture rate all frames
@ -490,7 +488,7 @@ void DCMI_DMAConvCpltUser(uint32_t addr)
// depth on the DCMI hardware and DMA hardware is not enough to prevent data loss.
if (sensor.pixformat == PIXFORMAT_JPEG) {
if (sensor.chip_id == OV5640_ID) {
if (sensor.hw_flags.jpeg_mode == 4) {
// JPEG MODE 4:
//
// The width and height are fixed in each frame. The first two bytes are valid data
@ -511,7 +509,7 @@ void DCMI_DMAConvCpltUser(uint32_t addr)
}
unaligned_memcpy(buffer->data + buffer->offset, ((uint16_t *) addr) + 1, size);
buffer->offset += size;
} else if (sensor.chip_id == OV2640_ID) {
} else if (sensor.hw_flags.jpeg_mode == 3) {
// JPEG MODE 3:
//
// Compression data is transmitted with programmable width. The last line width maybe
@ -601,7 +599,7 @@ void DCMI_DMAConvCpltUser(uint32_t addr)
#if (OMV_ENABLE_SENSOR_MDMA == 1)
mdma_memcpy(buffer, dst, src, sizeof(uint8_t), sensor.transpose);
#else
if (sensor.gs_bpp == sizeof(uint8_t)) {
if (sensor.hw_flags.gs_bpp == 1) {
// 1BPP GRAYSCALE.
if (!sensor.transpose) {
unaligned_memcpy(dst, src, MAIN_FB()->u);
@ -629,7 +627,7 @@ void DCMI_DMAConvCpltUser(uint32_t addr)
#if (OMV_ENABLE_SENSOR_MDMA == 1)
mdma_memcpy(buffer, dst16, src16, sizeof(uint16_t), sensor.transpose);
#else
if (SENSOR_HW_FLAGS_GET(&sensor, SENSOR_HW_FLAGS_RGB565_REV)) {
if (sensor.hw_flags.rgb_swap) {
if (!sensor.transpose) {
unaligned_memcpy_rev16(dst16, src16, MAIN_FB()->u);
} else {
@ -670,7 +668,7 @@ static void mdma_config(MDMA_InitTypeDef *init, sensor_t *sensor, uint32_t bytes
init->SourceBlockAddressOffset = 0;
init->DestBlockAddressOffset = 0;
if ((sensor->pixformat == PIXFORMAT_RGB565) && SENSOR_HW_FLAGS_GET(sensor, SENSOR_HW_FLAGS_RGB565_REV)) {
if ((sensor->pixformat == PIXFORMAT_RGB565) && sensor->hw_flags.rgb_swap) {
init->Endianness = MDMA_LITTLE_BYTE_ENDIANNESS_EXCHANGE;
} else {
init->Endianness = MDMA_LITTLE_ENDIANNESS_PRESERVE;
@ -685,7 +683,7 @@ static void mdma_config(MDMA_InitTypeDef *init, sensor_t *sensor, uint32_t bytes
}
// YUV422 Source -> Y Destination
if ((sensor->pixformat == PIXFORMAT_GRAYSCALE) && (sensor->gs_bpp == sizeof(uint16_t))) {
if ((sensor->pixformat == PIXFORMAT_GRAYSCALE) && (sensor->hw_flags.gs_bpp == 2)) {
line_width_bytes /= 2;
if (sensor->transpose) {
init->DestBlockAddressOffset /= 2;
@ -722,7 +720,7 @@ static void mdma_config(MDMA_InitTypeDef *init, sensor_t *sensor, uint32_t bytes
}
// YUV422 Source -> Y Destination
if ((sensor->pixformat == PIXFORMAT_GRAYSCALE) && (sensor->gs_bpp == sizeof(uint16_t))) {
if ((sensor->pixformat == PIXFORMAT_GRAYSCALE) && (sensor->hw_flags.gs_bpp == 2)) {
init->SourceInc = MDMA_SRC_INC_HALFWORD;
init->SourceDataSize = MDMA_SRC_DATASIZE_BYTE;
}
@ -891,7 +889,7 @@ int sensor_snapshot(sensor_t *sensor, image_t *image, uint32_t flags)
// Let the camera know we want to trigger it now.
#if defined(DCMI_FSYNC_PIN)
if (SENSOR_HW_FLAGS_GET(sensor, SENSOR_HW_FLAGS_FSYNC)) {
if (sensor->hw_flags.fsync) {
DCMI_FSYNC_HIGH();
}
#endif
@ -917,7 +915,7 @@ int sensor_snapshot(sensor_t *sensor, image_t *image, uint32_t flags)
sensor_abort();
#if defined(DCMI_FSYNC_PIN)
if (SENSOR_HW_FLAGS_GET(sensor, SENSOR_HW_FLAGS_FSYNC)) {
if (sensor->hw_flags.fsync) {
DCMI_FSYNC_LOW();
}
#endif
@ -935,7 +933,7 @@ int sensor_snapshot(sensor_t *sensor, image_t *image, uint32_t flags)
// We're done receiving data.
#if defined(DCMI_FSYNC_PIN)
if (SENSOR_HW_FLAGS_GET(sensor, SENSOR_HW_FLAGS_FSYNC)) {
if (sensor->hw_flags.fsync) {
DCMI_FSYNC_LOW();
}
#endif

View File

@ -865,7 +865,6 @@ static int set_vflip(sensor_t *sensor, int enable)
int gc2145_init(sensor_t *sensor)
{
// Initialize sensor structure.
sensor->gs_bpp = 2;
sensor->reset = reset;
sensor->read_reg = read_reg;
sensor->write_reg = write_reg;
@ -875,12 +874,13 @@ int gc2145_init(sensor_t *sensor)
sensor->set_vflip = set_vflip;
// 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);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_JPEGE, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_RGB565_REV, 1);
sensor->hw_flags.vsync = 0;
sensor->hw_flags.hsync = 0;
sensor->hw_flags.pixck = 1;
sensor->hw_flags.fsync = 0;
sensor->hw_flags.jpege = 0;
sensor->hw_flags.gs_bpp = 2;
sensor->hw_flags.rgb_swap = 1;
return 0;
}

View File

@ -532,7 +532,6 @@ static int ioctl(sensor_t *sensor, int request, va_list ap)
int hm01b0_init(sensor_t *sensor)
{
// Initialize sensor structure.
sensor->gs_bpp = 1;
sensor->reset = reset;
sensor->read_reg = read_reg;
sensor->write_reg = write_reg;
@ -551,11 +550,12 @@ int hm01b0_init(sensor_t *sensor)
sensor->ioctl = ioctl;
// 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, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_FSYNC, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_JPEGE, 0);
sensor->hw_flags.vsync = 0;
sensor->hw_flags.hsync = 0;
sensor->hw_flags.pixck = 0;
sensor->hw_flags.fsync = 0;
sensor->hw_flags.jpege = 0;
sensor->hw_flags.gs_bpp = 1;
return 0;
}

View File

@ -632,7 +632,6 @@ static int snapshot(sensor_t *sensor, image_t *image, uint32_t flags)
int lepton_init(sensor_t *sensor)
{
sensor->gs_bpp = sizeof(uint8_t);
sensor->reset = reset;
sensor->sleep = sleep;
sensor->snapshot = snapshot;
@ -658,11 +657,12 @@ int lepton_init(sensor_t *sensor)
sensor->set_lens_correction = set_lens_correction;
sensor->ioctl = ioctl;
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, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_FSYNC, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_JPEGE, 0);
sensor->hw_flags.vsync = 1;
sensor->hw_flags.hsync = 0;
sensor->hw_flags.pixck = 0;
sensor->hw_flags.fsync = 0;
sensor->hw_flags.jpege = 0;
sensor->hw_flags.gs_bpp = 1;
// Configure the DMA handler for Transmission process
DMAHandle.Instance = ISC_SPI_DMA_STREAM;

View File

@ -981,7 +981,6 @@ static int ioctl(sensor_t *sensor, int request, va_list ap)
int mt9m114_init(sensor_t *sensor)
{
// Initialize sensor structure.
sensor->gs_bpp = 2;
sensor->reset = reset;
sensor->sleep = sleep;
sensor->read_reg = read_reg;
@ -1006,12 +1005,14 @@ int mt9m114_init(sensor_t *sensor)
sensor->ioctl = ioctl;
// 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, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_FSYNC, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_JPEGE, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_RGB565_REV, 0);
sensor->hw_flags.vsync = 0;
sensor->hw_flags.hsync = 0;
sensor->hw_flags.pixck = 0;
sensor->hw_flags.fsync = 0;
sensor->hw_flags.jpege = 0;
sensor->hw_flags.gs_bpp = 2;
sensor->hw_flags.rgb_swap = 0;
sensor->hw_flags.bayer = SENSOR_HW_FLAGS_BAYER_GBRG;
return 0;
}

View File

@ -426,7 +426,6 @@ static int ioctl(sensor_t *sensor, int request, va_list ap)
int mt9v034_init(sensor_t *sensor)
{
// Initialize sensor structure.
sensor->gs_bpp = sizeof(uint8_t);
sensor->reset = reset;
sensor->read_reg = read_reg;
sensor->write_reg = write_reg;
@ -442,12 +441,12 @@ int mt9v034_init(sensor_t *sensor)
sensor->ioctl = ioctl;
// 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, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_FSYNC, 1);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_JPEGE, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_RGB565_REV, 0);
sensor->hw_flags.vsync = 0;
sensor->hw_flags.hsync = 0;
sensor->hw_flags.pixck = 0;
sensor->hw_flags.fsync = 1;
sensor->hw_flags.jpege = 0;
sensor->hw_flags.gs_bpp = 1;
return 0;
}

View File

@ -826,7 +826,6 @@ static int set_special_effect(sensor_t *sensor, sde_t sde)
int ov2640_init(sensor_t *sensor)
{
// Initialize sensor structure.
sensor->gs_bpp = 2;
sensor->reset = reset;
sensor->sleep = sleep;
sensor->read_reg = read_reg;
@ -850,12 +849,14 @@ int ov2640_init(sensor_t *sensor)
sensor->set_special_effect = set_special_effect;
// 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);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_JPEGE, 1);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_RGB565_REV, 0);
sensor->hw_flags.vsync = 0;
sensor->hw_flags.hsync = 0;
sensor->hw_flags.pixck = 1;
sensor->hw_flags.fsync = 0;
sensor->hw_flags.jpege = 1;
sensor->hw_flags.jpeg_mode = 3;
sensor->hw_flags.gs_bpp = 2;
sensor->hw_flags.rgb_swap = 0;
return 0;
}

View File

@ -1350,7 +1350,6 @@ static int ioctl(sensor_t *sensor, int request, va_list ap)
int ov5640_init(sensor_t *sensor)
{
// Initialize sensor structure.
sensor->gs_bpp = 1;
sensor->reset = reset;
sensor->sleep = sleep;
sensor->read_reg = read_reg;
@ -1376,12 +1375,14 @@ int ov5640_init(sensor_t *sensor)
sensor->ioctl = ioctl;
// 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);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_JPEGE, 1);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_RGB565_REV, 0);
sensor->hw_flags.vsync = 1;
sensor->hw_flags.hsync = 0;
sensor->hw_flags.pixck = 1;
sensor->hw_flags.fsync = 0;
sensor->hw_flags.jpege = 1;
sensor->hw_flags.jpeg_mode = 4;
sensor->hw_flags.gs_bpp = 1;
sensor->hw_flags.rgb_swap = 0;
return 0;
}

View File

@ -423,7 +423,6 @@ static int set_framesize(sensor_t *sensor, framesize_t framesize)
int ov7670_init(sensor_t *sensor)
{
// Initialize sensor structure.
sensor->gs_bpp = 2;
sensor->reset = reset;
sensor->sleep = sleep;
sensor->read_reg = read_reg;
@ -448,12 +447,13 @@ int ov7670_init(sensor_t *sensor)
sensor->set_lens_correction = set_lens_correction;
#endif
// 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);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_JPEGE, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_RGB565_REV, 1);
sensor->hw_flags.vsync = 1;
sensor->hw_flags.hsync = 0;
sensor->hw_flags.pixck = 1;
sensor->hw_flags.fsync = 0;
sensor->hw_flags.jpege = 0;
sensor->hw_flags.gs_bpp = 2;
sensor->hw_flags.rgb_swap = 1;
return 0;
}

View File

@ -594,7 +594,6 @@ static int set_lens_correction(sensor_t *sensor, int enable, int radi, int coef)
int ov7690_init(sensor_t *sensor)
{
// Initialize sensor structure.
sensor->gs_bpp = 2;
sensor->reset = reset;
sensor->sleep = sleep;
sensor->read_reg = read_reg;
@ -619,12 +618,13 @@ int ov7690_init(sensor_t *sensor)
sensor->set_lens_correction = set_lens_correction;
// 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);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_JPEGE, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_RGB565_REV, 1);
sensor->hw_flags.vsync = 1;
sensor->hw_flags.hsync = 0;
sensor->hw_flags.pixck = 1;
sensor->hw_flags.fsync = 0;
sensor->hw_flags.jpege = 0;
sensor->hw_flags.gs_bpp = 2;
sensor->hw_flags.rgb_swap = 1;
return 0;
}

View File

@ -594,7 +594,6 @@ static int set_lens_correction(sensor_t *sensor, int enable, int radi, int coef)
int ov7725_init(sensor_t *sensor)
{
// Initialize sensor structure.
sensor->gs_bpp = 2;
sensor->reset = reset;
sensor->sleep = sleep;
sensor->read_reg = read_reg;
@ -618,12 +617,13 @@ int ov7725_init(sensor_t *sensor)
sensor->set_lens_correction = set_lens_correction;
// 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);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_JPEGE, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_RGB565_REV, 1);
sensor->hw_flags.vsync = 1;
sensor->hw_flags.hsync = 0;
sensor->hw_flags.pixck = 1;
sensor->hw_flags.fsync = 0;
sensor->hw_flags.jpege = 0;
sensor->hw_flags.gs_bpp = 2;
sensor->hw_flags.rgb_swap = 1;
return 0;
}

View File

@ -518,7 +518,6 @@ static int set_vflip(sensor_t *sensor, int enable)
int ov9650_init(sensor_t *sensor)
{
// Initialize sensor structure.
sensor->gs_bpp = 2;
sensor->reset = reset;
sensor->set_pixformat = set_pixformat;
sensor->set_framesize = set_framesize;
@ -534,12 +533,13 @@ int ov9650_init(sensor_t *sensor)
sensor->set_vflip = set_vflip;
// 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);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_JPEGE, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_RGB565_REV, 1);
sensor->hw_flags.vsync = 1;
sensor->hw_flags.hsync = 0;
sensor->hw_flags.pixck = 1;
sensor->hw_flags.fsync = 0;
sensor->hw_flags.jpege = 0;
sensor->hw_flags.gs_bpp = 2;
sensor->hw_flags.rgb_swap = 1;
return 0;
}

View File

@ -722,7 +722,6 @@ static int paj6100_snapshot(sensor_t *sensor, image_t *image, uint32_t flags)
int paj6100_init(sensor_t *sensor)
{
// Initialize sensor structure.
sensor->gs_bpp = 1;
sensor->reset = reset;
sensor->sleep = sleep;
sensor->read_reg = read_reg;
@ -748,11 +747,12 @@ int paj6100_init(sensor_t *sensor)
sensor->snapshot = paj6100_snapshot;
// Set sensor flags
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_VSYNC, 1);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_HSYNC, 1);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_PIXCK, 1);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_FSYNC, 0);
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_JPEGE, 0);
sensor->hw_flags.vsync = 1;
sensor->hw_flags.hsync = 1;
sensor->hw_flags.pixck = 1;
sensor->hw_flags.fsync = 0;
sensor->hw_flags.jpege = 0;
sensor->hw_flags.gs_bpp = 1;
init_sensor(sensor);