Path: blob/master/libraries/AP_Camera/AP_Camera_Relay.cpp
9354 views
#include "AP_Camera_Relay.h"12#if AP_CAMERA_RELAY_ENABLED34#include <AP_Relay/AP_Relay.h>56// update - should be called at 50hz7void AP_Camera_Relay::update()8{9if (trigger_counter > 0) {10trigger_counter--;11} else {12AP_Relay *ap_relay = AP::relay();13if (ap_relay == nullptr) {14return;15}16ap_relay->set(AP_Relay_Params::FUNCTION::CAMERA, !_params.relay_on);17}1819// call parent update20AP_Camera_Backend::update();21}2223// entry point to actually take a picture. returns true on success24bool AP_Camera_Relay::trigger_pic()25{26// fail if have not completed previous picture27if (trigger_counter > 0) {28return false;29}3031// exit immediately if no relay is setup32AP_Relay *ap_relay = AP::relay();33if (ap_relay == nullptr) {34return false;35}3637ap_relay->set(AP_Relay_Params::FUNCTION::CAMERA, _params.relay_on);3839// set counter to move servo to off position after this many iterations of update (assumes 50hz update rate)40trigger_counter = constrain_float(_params.trigger_duration * 50, 0, UINT16_MAX);4142return true;43}4445#endif // AP_CAMERA_RELAY_ENABLED464748