mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Implement sensor soft sleep.
This commit is contained in:
parent
f86a5fb63d
commit
20c8b66789
@ -173,6 +173,24 @@ static int reset(sensor_t *sensor)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sleep(sensor_t *sensor, int enable)
|
||||
{
|
||||
int ret=0;
|
||||
// Read register
|
||||
uint8_t reg = SCCB_Read(sensor->slv_addr, COM2);
|
||||
|
||||
if (enable) {
|
||||
reg |= COM2_SOFT_SLEEP;
|
||||
} else {
|
||||
reg &= ~COM2_SOFT_SLEEP;
|
||||
}
|
||||
|
||||
// Write back register
|
||||
ret |= SCCB_Write(sensor->slv_addr, COM2, reg);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int set_pixformat(sensor_t *sensor, pixformat_t pixformat)
|
||||
{
|
||||
int ret=0;
|
||||
@ -467,6 +485,7 @@ int ov7725_init(sensor_t *sensor)
|
||||
{
|
||||
// Set function pointers
|
||||
sensor->reset = reset;
|
||||
sensor->sleep = sleep;
|
||||
sensor->set_pixformat = set_pixformat;
|
||||
sensor->set_framesize = set_framesize;
|
||||
sensor->set_framerate = set_framerate;
|
||||
|
||||
@ -27,6 +27,13 @@ static mp_obj_t py_sensor_reset() {
|
||||
return mp_const_none;
|
||||
}
|
||||
|
||||
static mp_obj_t py_sensor_sleep(mp_obj_t enable) {
|
||||
if (sensor_sleep(mp_obj_is_true(enable)) != 0) {
|
||||
return mp_const_false;
|
||||
}
|
||||
return mp_const_true;
|
||||
}
|
||||
|
||||
static mp_obj_t py_sensor_flush() {
|
||||
fb_update_jpeg_buffer();
|
||||
return mp_const_none;
|
||||
@ -366,6 +373,7 @@ static mp_obj_t py_sensor_read_reg(mp_obj_t addr) {
|
||||
//}
|
||||
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_0(py_sensor_reset_obj, py_sensor_reset);
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_sleep_obj, py_sensor_sleep);
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_0(py_sensor_flush_obj, py_sensor_flush);
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(py_sensor_snapshot_obj, 0, py_sensor_snapshot);
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(py_sensor_skip_frames_obj, 0, py_sensor_skip_frames);
|
||||
@ -438,6 +446,7 @@ STATIC const mp_map_elem_t globals_dict_table[] = {
|
||||
|
||||
// Sensor functions
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_reset), (mp_obj_t)&py_sensor_reset_obj },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_sleep), (mp_obj_t)&py_sensor_sleep_obj },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_flush), (mp_obj_t)&py_sensor_flush_obj },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_snapshot), (mp_obj_t)&py_sensor_snapshot_obj },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_skip_frames), (mp_obj_t)&py_sensor_skip_frames_obj },
|
||||
|
||||
@ -345,6 +345,16 @@ int sensor_get_id()
|
||||
return sensor.id.PID;
|
||||
}
|
||||
|
||||
int sensor_sleep(int enable)
|
||||
{
|
||||
if (sensor.sleep == NULL
|
||||
|| sensor.sleep(&sensor, enable) != 0) {
|
||||
// Operation not supported
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sensor_read_reg(uint8_t reg)
|
||||
{
|
||||
return SCCB_Read(sensor.slv_addr, reg);
|
||||
|
||||
@ -127,6 +127,7 @@ typedef struct _sensor {
|
||||
|
||||
// Sensor function pointers
|
||||
int (*reset) (sensor_t *sensor);
|
||||
int (*sleep) (sensor_t *sensor, int enable);
|
||||
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);
|
||||
@ -160,6 +161,9 @@ int sensor_reset();
|
||||
// Return sensor PID.
|
||||
int sensor_get_id();
|
||||
|
||||
// Sleep mode.
|
||||
int sensor_sleep(int enable);
|
||||
|
||||
// Read a sensor register.
|
||||
int sensor_read_reg(uint8_t reg);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user