Use typdef's for sensor enum and structs.

This commit is contained in:
iabdalkader 2016-02-17 19:46:45 +02:00
parent d639df0bfe
commit d3d7e5dc39
10 changed files with 96 additions and 94 deletions

View File

@ -384,7 +384,7 @@ static const uint8_t saturation_regs[NUM_SATURATION_LEVELS + 1][5] = {
{ 0x00, 0x02, 0x03, 0x58, 0x58 }, /* +2 */
};
static int reset(struct sensor_dev *sensor)
static int reset(sensor_t *sensor)
{
int i=0;
const uint8_t (*regs)[2];
@ -415,7 +415,7 @@ static int reset(struct sensor_dev *sensor)
return 0;
}
static int set_pixformat(struct sensor_dev *sensor, enum sensor_pixformat pixformat)
static int set_pixformat(sensor_t *sensor, pixformat_t pixformat)
{
int i=0;
const uint8_t (*regs)[2]=NULL;
@ -444,7 +444,7 @@ static int set_pixformat(struct sensor_dev *sensor, enum sensor_pixformat pixfor
return 0;
}
static int set_framesize(struct sensor_dev *sensor, enum sensor_framesize framesize)
static int set_framesize(sensor_t *sensor, framesize_t framesize)
{
int ret=0;
uint8_t clkrc;
@ -488,12 +488,12 @@ static int set_framesize(struct sensor_dev *sensor, enum sensor_framesize frames
return ret;
}
static int set_framerate(struct sensor_dev *sensor, enum sensor_framerate framerate)
static int set_framerate(sensor_t *sensor, framerate_t framerate)
{
return 0;
}
static int set_contrast(struct sensor_dev *sensor, int level)
static int set_contrast(sensor_t *sensor, int level)
{
int ret=0;
@ -513,7 +513,7 @@ static int set_contrast(struct sensor_dev *sensor, int level)
return ret;
}
static int set_brightness(struct sensor_dev *sensor, int level)
static int set_brightness(sensor_t *sensor, int level)
{
int ret=0;
@ -533,7 +533,7 @@ static int set_brightness(struct sensor_dev *sensor, int level)
return ret;
}
static int set_saturation(struct sensor_dev *sensor, int level)
static int set_saturation(sensor_t *sensor, int level)
{
int ret=0;
@ -553,12 +553,12 @@ static int set_saturation(struct sensor_dev *sensor, int level)
return ret;
}
static int set_exposure(struct sensor_dev *sensor, int exposure)
static int set_exposure(sensor_t *sensor, int exposure)
{
return 0;
}
static int set_gainceiling(struct sensor_dev *sensor, enum sensor_gainceiling gainceiling)
static int set_gainceiling(sensor_t *sensor, gainceiling_t gainceiling)
{
int ret =0;
@ -571,7 +571,7 @@ static int set_gainceiling(struct sensor_dev *sensor, enum sensor_gainceiling ga
return ret;
}
static int set_quality(struct sensor_dev *sensor, int qs)
static int set_quality(sensor_t *sensor, int qs)
{
int ret=0;
@ -584,7 +584,7 @@ static int set_quality(struct sensor_dev *sensor, int qs)
return ret;
}
static int set_colorbar(struct sensor_dev *sensor, int enable)
static int set_colorbar(sensor_t *sensor, int enable)
{
int ret=0;
uint8_t reg;
@ -605,7 +605,7 @@ static int set_colorbar(struct sensor_dev *sensor, int enable)
return ret;
}
int ov2640_init(struct sensor_dev *sensor)
int ov2640_init(sensor_t *sensor)
{
/* set function pointers */
sensor->reset = reset;

View File

@ -9,5 +9,5 @@
#ifndef __OV2640_H__
#define __OV2640_H__
#include "sensor.h"
int ov2640_init(struct sensor_dev *sensor);
int ov2640_init(sensor_t *sensor);
#endif // __OV2640_H__

View File

@ -148,7 +148,7 @@ static const uint8_t saturation_regs[NUM_SATURATION_LEVELS][2] = {
{0x80, 0x80}, /* +4 */
};
static int reset(struct sensor_dev *sensor)
static int reset(sensor_t *sensor)
{
int i=0;
const uint8_t (*regs)[2];
@ -167,7 +167,7 @@ static int reset(struct sensor_dev *sensor)
return 0;
}
static int set_pixformat(struct sensor_dev *sensor, enum sensor_pixformat pixformat)
static int set_pixformat(sensor_t *sensor, pixformat_t pixformat)
{
// Read register COM7
uint8_t reg = SCCB_Read(sensor->slv_addr, COM7);
@ -188,7 +188,7 @@ static int set_pixformat(struct sensor_dev *sensor, enum sensor_pixformat pixfor
return SCCB_Write(sensor->slv_addr, COM7, reg);
}
static int set_framesize(struct sensor_dev *sensor, enum sensor_framesize framesize)
static int set_framesize(sensor_t *sensor, framesize_t framesize)
{
int ret=0;
uint16_t w = resolution[framesize][0];
@ -203,12 +203,12 @@ static int set_framesize(struct sensor_dev *sensor, enum sensor_framesize frames
return ret;
}
static int set_framerate(struct sensor_dev *sensor, enum sensor_framerate framerate)
static int set_framerate(sensor_t *sensor, framerate_t framerate)
{
return 0;
}
static int set_contrast(struct sensor_dev *sensor, int level)
static int set_contrast(sensor_t *sensor, int level)
{
int ret=0;
@ -221,7 +221,7 @@ static int set_contrast(struct sensor_dev *sensor, int level)
return ret;
}
static int set_brightness(struct sensor_dev *sensor, int level)
static int set_brightness(sensor_t *sensor, int level)
{
int ret=0;
@ -235,7 +235,7 @@ static int set_brightness(struct sensor_dev *sensor, int level)
return ret;
}
static int set_saturation(struct sensor_dev *sensor, int level)
static int set_saturation(sensor_t *sensor, int level)
{
int ret=0;
@ -249,12 +249,12 @@ static int set_saturation(struct sensor_dev *sensor, int level)
return ret;
}
static int set_exposure(struct sensor_dev *sensor, int exposure)
static int set_exposure(sensor_t *sensor, int exposure)
{
return 0;
}
static int set_gainceiling(struct sensor_dev *sensor, enum sensor_gainceiling gainceiling)
static int set_gainceiling(sensor_t *sensor, gainceiling_t gainceiling)
{
// Read register COM9
uint8_t reg = SCCB_Read(sensor->slv_addr, COM9);
@ -266,7 +266,7 @@ static int set_gainceiling(struct sensor_dev *sensor, enum sensor_gainceiling ga
return SCCB_Write(sensor->slv_addr, COM9, reg);
}
static int set_colorbar(struct sensor_dev *sensor, int enable)
static int set_colorbar(sensor_t *sensor, int enable)
{
// Read register COM3
uint8_t reg = SCCB_Read(sensor->slv_addr, COM3);
@ -281,7 +281,7 @@ static int set_colorbar(struct sensor_dev *sensor, int enable)
return SCCB_Write(sensor->slv_addr, COM3, reg);
}
static int set_special_effect(struct sensor_dev *sensor, enum sensor_sde sde)
static int set_special_effect(sensor_t *sensor, sde_t sde)
{
int ret=0;
@ -301,7 +301,7 @@ static int set_special_effect(struct sensor_dev *sensor, enum sensor_sde sde)
return 0;
}
int ov7725_init(struct sensor_dev *sensor)
int ov7725_init(sensor_t *sensor)
{
// Set function pointers
sensor->reset = reset;

View File

@ -9,5 +9,5 @@
#ifndef __OV7725_H__
#define __OV7725_H__
#include "sensor.h"
int ov7725_init(struct sensor_dev *sensor);
int ov7725_init(sensor_t *sensor);
#endif // __OV7725_H__

View File

@ -196,7 +196,7 @@ static const uint8_t yuv422_regs[][2] = {
{0x00, 0x00}
};
static int reset(struct sensor_dev *sensor)
static int reset(sensor_t *sensor)
{
int i=0;
const uint8_t (*regs)[2]=default_regs;
@ -216,7 +216,7 @@ static int reset(struct sensor_dev *sensor)
return 0;
}
static int set_pixformat(struct sensor_dev *sensor, enum sensor_pixformat pixformat)
static int set_pixformat(sensor_t *sensor, pixformat_t pixformat)
{
int i=0;
const uint8_t (*regs)[2];
@ -254,7 +254,7 @@ static int set_pixformat(struct sensor_dev *sensor, enum sensor_pixformat pixfor
return 0;
}
static int set_framesize(struct sensor_dev *sensor, enum sensor_framesize framesize)
static int set_framesize(sensor_t *sensor, framesize_t framesize)
{
uint8_t com7=0; /* framesize/RGB */
uint8_t com1=0; /* Skip option */
@ -285,14 +285,14 @@ static int set_framesize(struct sensor_dev *sensor, enum sensor_framesize frames
return 0;
}
static int set_framerate(struct sensor_dev *sensor, enum sensor_framerate framerate)
static int set_framerate(sensor_t *sensor, framerate_t framerate)
{
/* Write framerate register */
SCCB_Write(sensor->slv_addr, REG_CLKRC, framerate);
return 0;
}
static int set_brightness(struct sensor_dev *sensor, int level)
static int set_brightness(sensor_t *sensor, int level)
{
int i;
@ -319,7 +319,7 @@ static int set_brightness(struct sensor_dev *sensor, int level)
return 0;
}
static int set_exposure(struct sensor_dev *sensor, int exposure)
static int set_exposure(sensor_t *sensor, int exposure)
{
uint8_t val;
val = SCCB_Read(sensor->slv_addr, REG_COM1);
@ -336,14 +336,14 @@ static int set_exposure(struct sensor_dev *sensor, int exposure)
return 0;
}
static int set_gainceiling(struct sensor_dev *sensor, enum sensor_gainceiling gainceiling)
static int set_gainceiling(sensor_t *sensor, gainceiling_t gainceiling)
{
/* Write gain ceiling register */
SCCB_Write(sensor->slv_addr, REG_COM9, (gainceiling<<4));
return 0;
}
int ov9650_init(struct sensor_dev *sensor)
int ov9650_init(sensor_t *sensor)
{
// Set function pointers
sensor->reset = reset;

View File

@ -9,5 +9,5 @@
#ifndef __OV9650_H__
#define __OV9650_H__
#include "sensor.h"
int ov9650_init(struct sensor_dev *sensor);
int ov9650_init(sensor_t *sensor);
#endif // __OV9650_H__

View File

@ -19,7 +19,7 @@
#define JPEG_INIT_BUF (5*1024)
extern struct sensor_dev sensor;
extern sensor_t sensor;
static const mp_obj_type_t py_cascade_type;
static const mp_obj_type_t py_image_type;

View File

@ -14,7 +14,7 @@
#include "py_sensor.h"
#include "omv_boardconfig.h"
extern struct sensor_dev sensor;
extern sensor_t sensor;
static mp_obj_t py_sensor_reset() {
sensor_reset();
@ -54,7 +54,7 @@ static mp_obj_t py_sensor_set_pixformat(mp_obj_t pixformat) {
}
static mp_obj_t py_sensor_set_framerate(mp_obj_t framerate) {
enum sensor_framerate fr;
framerate_t fr;
switch (mp_obj_get_int(framerate)) {
case 2:
fr = FRAMERATE_2FPS;
@ -90,7 +90,7 @@ static mp_obj_t py_sensor_set_framesize(mp_obj_t framesize) {
}
static mp_obj_t py_sensor_set_gainceiling(mp_obj_t gainceiling) {
enum sensor_gainceiling gain;
gainceiling_t gain;
switch (mp_obj_get_int(gainceiling)) {
case 2:
gain = GAINCEILING_2X;

View File

@ -29,7 +29,7 @@
#define MAX_XFER_SIZE (0xFFFC)
struct sensor_dev sensor;
sensor_t sensor;
TIM_HandleTypeDef TIMHandle;
DMA_HandleTypeDef DMAHandle;
DCMI_HandleTypeDef DCMIHandle;
@ -188,7 +188,7 @@ int sensor_init()
//HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSI, RCC_MCODIV_1);
/* Reset the sesnor state */
memset(&sensor, 0, sizeof(struct sensor_dev));
memset(&sensor, 0, sizeof(sensor_t));
/* Some sensors have different reset polarities, and we can't know which sensor
is connected before initializing SCCB and probing the sensor, which in turn
@ -293,7 +293,7 @@ int sensor_write_reg(uint8_t reg, uint8_t val)
return SCCB_Write(sensor.slv_addr, reg, val);
}
int sensor_set_pixformat(enum sensor_pixformat pixformat)
int sensor_set_pixformat(pixformat_t pixformat)
{
uint32_t jpeg_mode = DCMI_JPEG_DISABLE;
@ -334,7 +334,7 @@ int sensor_set_pixformat(enum sensor_pixformat pixformat)
return dcmi_config(jpeg_mode);
}
int sensor_set_framesize(enum sensor_framesize framesize)
int sensor_set_framesize(framesize_t framesize)
{
if (sensor.framesize == framesize) {
/* no change */
@ -363,7 +363,7 @@ int sensor_set_framesize(enum sensor_framesize framesize)
return 0;
}
int sensor_set_framerate(enum sensor_framerate framerate)
int sensor_set_framerate(framerate_t framerate)
{
if (sensor.framerate == framerate) {
/* no change */
@ -412,7 +412,7 @@ int sensor_set_exposure(int exposure)
return 0;
}
int sensor_set_gainceiling(enum sensor_gainceiling gainceiling)
int sensor_set_gainceiling(gainceiling_t gainceiling)
{
if (sensor.gainceiling == gainceiling) {
/* no change */
@ -452,7 +452,7 @@ int sensor_set_colorbar(int enable)
return 0;
}
int sensor_set_special_effect(enum sensor_sde sde)
int sensor_set_special_effect(sde_t sde)
{
if (sensor.sde == sde) {
/* no change */
@ -496,7 +496,7 @@ void DCMI_DMAConvCpltUser(uint32_t addr)
// The JPEG offset allows JPEG compression of the framebuffer without overwriting the pixels.
// The offset size may need to be adjusted depending on the quality, otherwise JPEG data may
// overwrite image pixels before they are compressed.
int sensor_snapshot(struct image *image)
int sensor_snapshot(image_t *image)
{
volatile uint32_t addr;
volatile uint16_t length;

View File

@ -15,21 +15,21 @@
#define OV2640_PID (0x26)
#define OV7725_PID (0x77)
struct sensor_id {
typedef struct {
uint8_t MIDH;
uint8_t MIDL;
uint8_t PID;
uint8_t VER;
};
} sensor_id_t;
enum sensor_pixformat {
typedef enum {
PIXFORMAT_RGB565, // 2BPP/RGB565
PIXFORMAT_YUV422, // 2BPP/YUV422
PIXFORMAT_GRAYSCALE, // 1BPP/GRAYSCALE
PIXFORMAT_JPEG, // JPEG/COMPRESSED
};
} pixformat_t;
enum sensor_framesize {
typedef enum {
FRAMESIZE_QQCIF, // 88x72
FRAMESIZE_QQVGA, // 160x120
FRAMESIZE_QQVGA2, // 128x160
@ -41,19 +41,17 @@ enum sensor_framesize {
FRAMESIZE_SVGA, // 800x600
FRAMESIZE_SXGA, // 1280x1024
FRAMESIZE_UXGA, // 1600x1200
};
} framesize_t;
extern const int resolution[][2];
enum sensor_framerate {
typedef enum {
FRAMERATE_2FPS =0x9F,
FRAMERATE_8FPS =0x87,
FRAMERATE_15FPS=0x83,
FRAMERATE_30FPS=0x81,
FRAMERATE_60FPS=0x80,
};
} framerate_t;
enum sensor_gainceiling {
typedef enum {
GAINCEILING_2X,
GAINCEILING_4X,
GAINCEILING_8X,
@ -61,24 +59,24 @@ enum sensor_gainceiling {
GAINCEILING_32X,
GAINCEILING_64X,
GAINCEILING_128X,
};
} gainceiling_t;
enum sensor_sde {
typedef enum {
SDE_NORMAL,
SDE_NEGATIVE,
};
} sde_t;
enum sensor_attr {
typedef enum {
ATTR_CONTRAST=0,
ATTR_BRIGHTNESS,
ATTR_SATURATION,
ATTR_GAINCEILING,
};
} sensor_attr_t;
enum reset_polarity {
typedef enum {
ACTIVE_LOW,
ACTIVE_HIGH
};
} reset_polarity_t;
#define SENSOR_HW_FLAGS_VSYNC (0) // vertical sync polarity.
#define SENSOR_HW_FLAGS_HSYNC (1) // horizontal sync polarity.
@ -87,33 +85,37 @@ enum reset_polarity {
#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))
struct sensor_dev {
struct sensor_id id; // Sensor ID.
uint8_t slv_addr; // Sensor I2C slave address.
uint32_t hw_flags; // Hardware flags (clock polarities/hw capabilities)
enum reset_polarity reset_pol; // Reset polarity (TODO move to hw_flags)
typedef struct _sensor sensor_t;
typedef struct _sensor {
sensor_id_t id; // Sensor ID.
uint8_t slv_addr; // Sensor I2C slave address.
uint32_t hw_flags; // Hardware flags (clock polarities/hw capabilities)
reset_polarity_t reset_pol; // Reset polarity (TODO move to hw_flags)
// Sensor state
enum sensor_sde sde;
enum sensor_pixformat pixformat;
enum sensor_framesize framesize;
enum sensor_framerate framerate;
enum sensor_gainceiling gainceiling;
sde_t sde; // Special digital effects
pixformat_t pixformat; // Pixel format
framesize_t framesize; // Frame size
framerate_t framerate; // Frame rate
gainceiling_t gainceiling; // AGC gainceiling
// Sensor function pointers
int (*reset) (struct sensor_dev *sensor);
int (*set_pixformat) (struct sensor_dev *sensor, enum sensor_pixformat pixformat);
int (*set_framesize) (struct sensor_dev *sensor, enum sensor_framesize framesize);
int (*set_framerate) (struct sensor_dev *sensor, enum sensor_framerate framerate);
int (*set_contrast) (struct sensor_dev *sensor, int level);
int (*set_brightness) (struct sensor_dev *sensor, int level);
int (*set_saturation) (struct sensor_dev *sensor, int level);
int (*set_exposure) (struct sensor_dev *sensor, int exposure);
int (*set_gainceiling) (struct sensor_dev *sensor, enum sensor_gainceiling gainceiling);
int (*set_quality) (struct sensor_dev *sensor, int quality);
int (*set_colorbar) (struct sensor_dev *sensor, int enable);
int (*set_special_effect) (struct sensor_dev *sensor, enum sensor_sde sde);
};
int (*reset) (sensor_t *sensor);
int (*set_pixformat) (sensor_t *sensor, pixformat_t pixformat);
int (*set_framesize) (sensor_t *sensor, framesize_t framesize);
int (*set_framerate) (sensor_t *sensor, framerate_t framerate);
int (*set_contrast) (sensor_t *sensor, int level);
int (*set_brightness) (sensor_t *sensor, int level);
int (*set_saturation) (sensor_t *sensor, int level);
int (*set_exposure) (sensor_t *sensor, int exposure);
int (*set_gainceiling) (sensor_t *sensor, gainceiling_t gainceiling);
int (*set_quality) (sensor_t *sensor, int quality);
int (*set_colorbar) (sensor_t *sensor, int enable);
int (*set_special_effect) (sensor_t *sensor, sde_t sde);
} sensor_t;
// Resolution table
extern const int resolution[][2];
// Initialize the sensor hardware and probe the image sensor.
int sensor_init();
@ -134,16 +136,16 @@ int sensor_read_reg(uint8_t reg);
int sensor_write_reg(uint8_t reg, uint8_t val);
// Capture a Snapshot.
int sensor_snapshot(struct image *image);
int sensor_snapshot(image_t *image);
// Set the sensor pixel format.
int sensor_set_pixformat(enum sensor_pixformat pixformat);
int sensor_set_pixformat(pixformat_t pixformat);
// Set the sensor frame size.
int sensor_set_framesize(enum sensor_framesize framesize);
int sensor_set_framesize(framesize_t framesize);
// Set the sensor frame rate.
int sensor_set_framerate(enum sensor_framerate framerate);
int sensor_set_framerate(framerate_t framerate);
// Set the sensor contrast level (from -3 to +3).
int sensor_set_contrast(int level);
@ -160,7 +162,7 @@ int sensor_set_exposure(int exposure);
// Set the sensor AGC gain ceiling.
// Note: This function has no effect when AGC (Automatic Gain Control) is disabled.
int sensor_set_gainceiling(enum sensor_gainceiling gainceiling);
int sensor_set_gainceiling(gainceiling_t gainceiling);
// Set the quantization scale factor, controls JPEG quality (quality 0-255).
int sensor_set_quality(int qs);
@ -169,5 +171,5 @@ int sensor_set_quality(int qs);
int sensor_set_colorbar(int enable);
// Set special digital effects (SDE).
int sensor_set_special_effect(enum sensor_sde sde);
int sensor_set_special_effect(sde_t sde);
#endif /* __SENSOR_H__ */