1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-17 05:15:25 +03:00
betaflight/src/main/drivers/camera_control.h
Bruce Luckcuck 4a7cfeb34f Expose camera control button resistance values
Allows fine tuning of the voltage divider resistance values for each button to account for slight variances amongst cameras. Also allows manual configuration for non-standard cameras. Resistance values are in 100ohm steps.
2019-07-10 09:52:20 -04:00

60 lines
1.8 KiB
C

/*
* This file is part of Cleanflight and Betaflight.
*
* Cleanflight and Betaflight are free software. You can redistribute
* this software and/or modify this software under the terms of the
* GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option)
* any later version.
*
* Cleanflight and Betaflight are distributed in the hope that they
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software.
*
* If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "io_types.h"
#include "pg/pg.h"
typedef enum {
CAMERA_CONTROL_KEY_ENTER,
CAMERA_CONTROL_KEY_LEFT,
CAMERA_CONTROL_KEY_UP,
CAMERA_CONTROL_KEY_RIGHT,
CAMERA_CONTROL_KEY_DOWN,
CAMERA_CONTROL_KEYS_COUNT
} cameraControlKey_e;
typedef enum {
CAMERA_CONTROL_MODE_HARDWARE_PWM,
CAMERA_CONTROL_MODE_SOFTWARE_PWM,
CAMERA_CONTROL_MODE_DAC,
CAMERA_CONTROL_MODES_COUNT
} cameraControlMode_e;
typedef struct cameraControlConfig_s {
cameraControlMode_e mode;
// measured in 10 mV steps
uint16_t refVoltage;
uint16_t keyDelayMs;
// measured 100 Ohm steps
uint16_t internalResistance;
ioTag_t ioTag;
uint8_t inverted;
uint16_t buttonResistanceValues[CAMERA_CONTROL_KEYS_COUNT]; // resistance in 100ohm steps
} cameraControlConfig_t;
PG_DECLARE(cameraControlConfig_t, cameraControlConfig);
void cameraControlInit(void);
void cameraControlProcess(uint32_t currentTimeUs);
void cameraControlKeyPress(cameraControlKey_e key, uint32_t holdDurationMs);