Make all sensor drivers configurable.

This commit is contained in:
iabdalkader 2020-08-01 20:42:17 +02:00
parent ba7a3a5b50
commit 2e0275330a
12 changed files with 142 additions and 85 deletions

View File

@ -42,6 +42,16 @@
// RAW buffer size
#define OMV_RAW_BUF_SIZE (153600)
// Enable sensor drivers
#define OMV_ENABLE_OV2640 (0)
#define OMV_ENABLE_OV5640 (0)
#define OMV_ENABLE_OV7690 (0)
#define OMV_ENABLE_OV7725 (1)
#define OMV_ENABLE_OV9650 (0)
#define OMV_ENABLE_MT9V034 (0)
#define OMV_ENABLE_LEPTON (0)
#define OMV_ENABLE_HM01B0 (0)
// If buffer size is bigger than this threshold, the quality is reduced.
// This is only used for JPEG images sent to the IDE not normal compression.
#define JPEG_QUALITY_THRESH (160*120*2)

View File

@ -42,6 +42,16 @@
// RAW buffer size
#define OMV_RAW_BUF_SIZE (307200)
// Enable sensor drivers
#define OMV_ENABLE_OV2640 (0)
#define OMV_ENABLE_OV5640 (0)
#define OMV_ENABLE_OV7690 (0)
#define OMV_ENABLE_OV7725 (1)
#define OMV_ENABLE_OV9650 (0)
#define OMV_ENABLE_MT9V034 (0)
#define OMV_ENABLE_LEPTON (0)
#define OMV_ENABLE_HM01B0 (0)
// If buffer size is bigger than this threshold, the quality is reduced.
// This is only used for JPEG images sent to the IDE not normal compression.
#define JPEG_QUALITY_THRESH (160*120*2)

View File

@ -45,12 +45,15 @@
// Enable hardware JPEG
#define OMV_HARDWARE_JPEG (1)
// Enable MT9V034 and LEPTON sensors
// Enable sensor drivers
#define OMV_ENABLE_OV2640 (1)
#define OMV_ENABLE_OV5640 (1)
#define OMV_ENABLE_OV7690 (1)
#define OMV_ENABLE_OV7725 (1)
#define OMV_ENABLE_OV9650 (1)
#define OMV_ENABLE_MT9V034 (1)
#define OMV_ENABLE_LEPTON (1)
// Enable OV7690
#define OMV_ENABLE_OV7690 (1)
#define OMV_ENABLE_HM01B0 (0)
// Enable WiFi debug
#define OMV_ENABLE_WIFIDBG (1)

View File

@ -49,9 +49,15 @@
// Enable hardware JPEG
#define OMV_HARDWARE_JPEG (1)
// Enable MT9V034 and LEPTON sensors
// Enable sensor drivers
#define OMV_ENABLE_OV2640 (1)
#define OMV_ENABLE_OV5640 (1)
#define OMV_ENABLE_OV7690 (0)
#define OMV_ENABLE_OV7725 (1)
#define OMV_ENABLE_OV9650 (1)
#define OMV_ENABLE_MT9V034 (1)
#define OMV_ENABLE_LEPTON (1)
#define OMV_ENABLE_HM01B0 (0)
// Enable WiFi debug
#define OMV_ENABLE_WIFIDBG (1)

View File

@ -46,7 +46,14 @@
// Enable hardware JPEG
#define OMV_HARDWARE_JPEG (1)
// Enable HIMAX HM01B0 sensor
// Enable sensor drivers
#define OMV_ENABLE_OV2640 (0)
#define OMV_ENABLE_OV5640 (0)
#define OMV_ENABLE_OV7690 (0)
#define OMV_ENABLE_OV7725 (0)
#define OMV_ENABLE_OV9650 (0)
#define OMV_ENABLE_MT9V034 (0)
#define OMV_ENABLE_LEPTON (0)
#define OMV_ENABLE_HM01B0 (1)
// Enable WiFi debug

View File

@ -18,7 +18,8 @@
#include "omv_boardconfig.h"
#include "common.h"
#if defined(OMV_ENABLE_LEPTON)
#if (OMV_ENABLE_LEPTON == 1)
#include "crc16.h"
#include "LEPTON_SDK.h"
#include "LEPTON_AGC.h"
@ -734,9 +735,4 @@ int lepton_init(sensor_t *sensor)
return 0;
}
#else
int lepton_init(sensor_t *sensor)
{
return -1;
}
#endif //defined(OMV_ENABLE_LEPTON)
#endif // (OMV_ENABLE_LEPTON == 1)

View File

@ -16,7 +16,7 @@
#include "sensor.h"
#include "omv_boardconfig.h"
#if defined(OMV_ENABLE_MT9V034)
#if (OMV_ENABLE_MT9V034 == 1)
#define MT9V034_MAX_HEIGHT (480)
#define MT9V034_MAX_WIDTH (752)
#define MT9V034_CHIP_VERSION (0x00)
@ -400,9 +400,4 @@ int mt9v034_init(sensor_t *sensor)
return 0;
}
#else
int mt9v034_init(sensor_t *sensor)
{
return -1;
}
#endif //defined(OMV_ENABLE_MT9V034)
#endif // (OMV_ENABLE_MT9V034 == 1)

View File

@ -18,6 +18,8 @@
#include "systick.h"
#include "omv_boardconfig.h"
#if (OMV_ENABLE_OV2640 == 1)
#define CIF_WIDTH (400)
#define CIF_HEIGHT (296)
@ -855,3 +857,4 @@ int ov2640_init(sensor_t *sensor)
return 0;
}
#endif // (OMV_ENABLE_OV2640 == 1)

View File

@ -18,6 +18,8 @@
#include "systick.h"
#include "omv_boardconfig.h"
#if (OMV_ENABLE_OV5640 == 1)
#define BLANK_LINES 8
#define DUMMY_LINES 6
@ -1031,3 +1033,4 @@ int ov5640_init(sensor_t *sensor)
return 0;
}
#endif // (OMV_ENABLE_OV5640 == 1)

View File

@ -18,6 +18,8 @@
#include "systick.h"
#include "omv_boardconfig.h"
#if (OMV_ENABLE_OV7725 == 1)
static const uint8_t default_regs[][2] = {
// From App Note.
@ -623,3 +625,4 @@ int ov7725_init(sensor_t *sensor)
return 0;
}
#endif // (OMV_ENABLE_OV7725 == 1)

View File

@ -18,6 +18,8 @@
#include "ov9650_regs.h"
#include "omv_boardconfig.h"
#if (OMV_ENABLE_OV9650 == 1)
#define NUM_BR_LEVELS 7
static const uint8_t default_regs[][2] = {
@ -539,3 +541,4 @@ int ov9650_init(sensor_t *sensor)
return 0;
}
#endif // (OMV_ENABLE_OV9650 == 1)

View File

@ -347,75 +347,93 @@ int sensor_init()
sensor.snapshot = sensor_snapshot;
switch (sensor.slv_addr) {
case OV2640_SLV_ADDR:
cambus_readb(&sensor.i2c, sensor.slv_addr, OV_CHIP_ID, &sensor.chip_id);
break;
case OV5640_SLV_ADDR:
cambus_readb2(&sensor.i2c, sensor.slv_addr, OV5640_CHIP_ID, &sensor.chip_id);
break;
case OV7725_SLV_ADDR: // Same for OV7690.
cambus_readb(&sensor.i2c, sensor.slv_addr, OV_CHIP_ID, &sensor.chip_id);
break;
case MT9V034_SLV_ADDR:
cambus_readb(&sensor.i2c, sensor.slv_addr, ON_CHIP_ID, &sensor.chip_id);
break;
case LEPTON_SLV_ADDR:
sensor.chip_id = LEPTON_ID;
break;
#if (OMV_ENABLE_HM01B0 == 1)
case HM01B0_SLV_ADDR:
cambus_readb2(&sensor.i2c, sensor.slv_addr, HIMAX_CHIP_ID, &sensor.chip_id);
break;
#endif //(OMV_ENABLE_HM01B0 == 1)
default:
return -3;
break;
case OV2640_SLV_ADDR: // Or OV9650.
cambus_readb(&sensor.i2c, sensor.slv_addr, OV_CHIP_ID, &sensor.chip_id);
break;
case OV5640_SLV_ADDR:
cambus_readb2(&sensor.i2c, sensor.slv_addr, OV5640_CHIP_ID, &sensor.chip_id);
break;
case OV7725_SLV_ADDR: // Or OV7690.
cambus_readb(&sensor.i2c, sensor.slv_addr, OV_CHIP_ID, &sensor.chip_id);
break;
case MT9V034_SLV_ADDR:
cambus_readb(&sensor.i2c, sensor.slv_addr, ON_CHIP_ID, &sensor.chip_id);
break;
case LEPTON_SLV_ADDR:
sensor.chip_id = LEPTON_ID;
break;
case HM01B0_SLV_ADDR:
cambus_readb2(&sensor.i2c, sensor.slv_addr, HIMAX_CHIP_ID, &sensor.chip_id);
break;
default:
return -3;
break;
}
switch (sensor.chip_id) {
case OV2640_ID:
init_ret = ov2640_init(&sensor);
break;
case OV5640_ID:
if (extclk_config(OV5640_XCLK_FREQ) != 0) {
#if (OMV_ENABLE_OV2640 == 1)
case OV2640_ID:
init_ret = ov2640_init(&sensor);
break;
#endif // (OMV_ENABLE_OV2640 == 1)
#if (OMV_ENABLE_OV5640 == 1)
case OV5640_ID:
if (extclk_config(OV5640_XCLK_FREQ) != 0) {
return -3;
}
init_ret = ov5640_init(&sensor);
break;
#endif // (OMV_ENABLE_OV5640 == 1)
#if (OMV_ENABLE_OV7690 == 1)
case OV7690_ID:
if (extclk_config(OV7690_XCLK_FREQ) != 0) {
return -3;
}
init_ret = ov7690_init(&sensor);
break;
#endif // (OMV_ENABLE_OV7690 == 1)
#if (OMV_ENABLE_OV7725 == 1)
case OV7725_ID:
init_ret = ov7725_init(&sensor);
break;
#endif // (OMV_ENABLE_OV7725 == 1)
#if (OMV_ENABLE_OV9650 == 1)
case OV9650_ID:
init_ret = ov9650_init(&sensor);
break;
#endif // (OMV_ENABLE_OV9650 == 1)
#if (OMV_ENABLE_MT9V034 == 1)
case MT9V034_ID:
if (extclk_config(MT9V034_XCLK_FREQ) != 0) {
return -3;
}
init_ret = mt9v034_init(&sensor);
break;
#endif //(OMV_ENABLE_MT9V034 == 1)
#if (OMV_ENABLE_LEPTON == 1)
case LEPTON_ID:
if (extclk_config(LEPTON_XCLK_FREQ) != 0) {
return -3;
}
init_ret = lepton_init(&sensor);
break;
#endif // (OMV_ENABLE_LEPTON == 1)
#if (OMV_ENABLE_HM01B0 == 1)
case HM01B0_ID:
init_ret = hm01b0_init(&sensor);
break;
#endif //(OMV_ENABLE_HM01B0 == 1)
default:
return -3;
}
init_ret = ov5640_init(&sensor);
break;
case OV7725_ID:
init_ret = ov7725_init(&sensor);
break;
#if (OMV_ENABLE_OV7690 == 1)
case OV7690_ID:
if (extclk_config(OV7690_XCLK_FREQ) != 0) {
return -3;
}
init_ret = ov7690_init(&sensor);
break;
#endif //(OMV_ENABLE_OV7690 == 1)
case OV9650_ID:
init_ret = ov9650_init(&sensor);
break;
case MT9V034_ID:
if (extclk_config(MT9V034_XCLK_FREQ) != 0) {
return -3;
}
init_ret = mt9v034_init(&sensor);
break;
case LEPTON_ID:
if (extclk_config(LEPTON_XCLK_FREQ) != 0) {
return -3;
}
init_ret = lepton_init(&sensor);
break;
#if (OMV_ENABLE_HM01B0 == 1)
case HM01B0_ID:
init_ret = hm01b0_init(&sensor);
break;
#endif //(OMV_ENABLE_HM01B0 == 1)
default:
return -3;
break;
break;
}
if (init_ret != 0 ) {