mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Replace sensor flags with bit fields.
* Much easier to manipulate and saves some memory.
This commit is contained in:
parent
7fa4712504
commit
c28958e04e
@ -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.
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user