Merge pull request #2435 from openmv/sensors_ioctl

misc: Add a flag to ioctls to abort streaming.
This commit is contained in:
Ibrahim Abdelkader 2024-10-01 18:58:41 +03:00 committed by GitHub
commit be35ac86d2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 37 additions and 33 deletions

View File

@ -145,39 +145,41 @@ typedef enum {
XCLK_SOURCE_OSC = 2U,
} xclk_source_t;
#define SENSOR_IOCTL_ABORT (1 << 8)
typedef enum {
IOCTL_SET_READOUT_WINDOW,
IOCTL_GET_READOUT_WINDOW,
IOCTL_SET_TRIGGERED_MODE,
IOCTL_GET_TRIGGERED_MODE,
IOCTL_SET_FOV_WIDE,
IOCTL_GET_FOV_WIDE,
IOCTL_TRIGGER_AUTO_FOCUS,
IOCTL_PAUSE_AUTO_FOCUS,
IOCTL_RESET_AUTO_FOCUS,
IOCTL_WAIT_ON_AUTO_FOCUS,
IOCTL_SET_NIGHT_MODE,
IOCTL_GET_NIGHT_MODE,
IOCTL_LEPTON_GET_WIDTH,
IOCTL_LEPTON_GET_HEIGHT,
IOCTL_LEPTON_GET_RADIOMETRY,
IOCTL_LEPTON_GET_REFRESH,
IOCTL_LEPTON_GET_RESOLUTION,
IOCTL_LEPTON_RUN_COMMAND,
IOCTL_LEPTON_SET_ATTRIBUTE,
IOCTL_LEPTON_GET_ATTRIBUTE,
IOCTL_LEPTON_GET_FPA_TEMPERATURE,
IOCTL_LEPTON_GET_AUX_TEMPERATURE,
IOCTL_LEPTON_SET_MEASUREMENT_MODE,
IOCTL_LEPTON_GET_MEASUREMENT_MODE,
IOCTL_LEPTON_SET_MEASUREMENT_RANGE,
IOCTL_LEPTON_GET_MEASUREMENT_RANGE,
IOCTL_HIMAX_MD_ENABLE,
IOCTL_HIMAX_MD_CLEAR,
IOCTL_HIMAX_MD_WINDOW,
IOCTL_HIMAX_MD_THRESHOLD,
IOCTL_HIMAX_OSC_ENABLE,
IOCTL_GET_RGB_STATS,
IOCTL_SET_READOUT_WINDOW = 0x00 | SENSOR_IOCTL_ABORT,
IOCTL_GET_READOUT_WINDOW = 0x01,
IOCTL_SET_TRIGGERED_MODE = 0x02,
IOCTL_GET_TRIGGERED_MODE = 0x03,
IOCTL_SET_FOV_WIDE = 0x04,
IOCTL_GET_FOV_WIDE = 0x05,
IOCTL_TRIGGER_AUTO_FOCUS = 0x06,
IOCTL_PAUSE_AUTO_FOCUS = 0x07,
IOCTL_RESET_AUTO_FOCUS = 0x08,
IOCTL_WAIT_ON_AUTO_FOCUS = 0x09,
IOCTL_SET_NIGHT_MODE = 0x0A,
IOCTL_GET_NIGHT_MODE = 0x0B,
IOCTL_LEPTON_GET_WIDTH = 0x0C,
IOCTL_LEPTON_GET_HEIGHT = 0x0D,
IOCTL_LEPTON_GET_RADIOMETRY = 0x0E,
IOCTL_LEPTON_GET_REFRESH = 0x0F,
IOCTL_LEPTON_GET_RESOLUTION = 0x10,
IOCTL_LEPTON_RUN_COMMAND = 0x11,
IOCTL_LEPTON_SET_ATTRIBUTE = 0x12,
IOCTL_LEPTON_GET_ATTRIBUTE = 0x13,
IOCTL_LEPTON_GET_FPA_TEMPERATURE = 0x14,
IOCTL_LEPTON_GET_AUX_TEMPERATURE = 0x15,
IOCTL_LEPTON_SET_MEASUREMENT_MODE = 0x16 | SENSOR_IOCTL_ABORT,
IOCTL_LEPTON_GET_MEASUREMENT_MODE = 0x17,
IOCTL_LEPTON_SET_MEASUREMENT_RANGE = 0x18 | SENSOR_IOCTL_ABORT,
IOCTL_LEPTON_GET_MEASUREMENT_RANGE = 0x19,
IOCTL_HIMAX_MD_ENABLE = 0x1A,
IOCTL_HIMAX_MD_CLEAR = 0x1B,
IOCTL_HIMAX_MD_WINDOW = 0x1C | SENSOR_IOCTL_ABORT,
IOCTL_HIMAX_MD_THRESHOLD = 0x1D,
IOCTL_HIMAX_OSC_ENABLE = 0x1E | SENSOR_IOCTL_ABORT,
IOCTL_GET_RGB_STATS = 0x1F
} ioctl_t;
typedef enum {

View File

@ -1198,7 +1198,9 @@ __weak int sensor_set_lens_correction(int enable, int radi, int coef) {
__weak int sensor_ioctl(int request, ... /* arg */) {
// Disable any ongoing frame capture.
sensor_abort(true, false);
if (request & SENSOR_IOCTL_ABORT) {
sensor_abort(true, false);
}
// Check if the control is supported.
if (sensor.ioctl == NULL) {