Commit ac00cfc7 authored by delima02's avatar delima02 Committed by Commit Bot

Add setHome method to webcam.h

Add method to all implementing classes.
See go/hotrodsethome for more details.

Bug: b:139706624
Change-Id: I7d884e259135b46715e1dbceda6e8aa85a7c32fc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1917970
Commit-Queue: Juan Pablo De Lima <jpdelima@chromium.org>
Reviewed-by: default avatarZachary Kuznia <zork@chromium.org>
Cr-Commit-Position: refs/heads/master@{#723527}
parent 8e5da8d1
......@@ -14,6 +14,7 @@
#include "base/posix/eintr_wrapper.h"
#include "base/stl_util.h"
#include "base/logging.h"
#define V4L2_CID_PAN_SPEED (V4L2_CID_CAMERA_CLASS_BASE+32)
#define V4L2_CID_TILT_SPEED (V4L2_CID_CAMERA_CLASS_BASE+33)
......@@ -40,7 +41,9 @@
namespace {
const int kLogitechMenuIndexGoHome = 2;
const int kLogitechMenuIndexSetHome = 0;
const int kAverMenuIndexGoHome = 1;
const int kAverMenuIndexSetHome = 0;
const uvc_menu_info kLogitechCmdMenu[] = {
{1, "Set Preset"}, {2, "Get Preset"}, {3, "Go Home"}
......@@ -287,6 +290,31 @@ void V4L2Webcam::SetTiltDirection(TiltDirection direction,
SetWebcamParameter(fd_.get(), V4L2_CID_TILT_SPEED, direction_value));
}
void V4L2Webcam::SetHome(const SetPTZCompleteCallback& callback) {
if (EnsureLogitechCommandsMapped()) {
if (!SetWebcamParameter(fd_.get(), V4L2_CID_PANTILT_CMD,
kLogitechMenuIndexSetHome)) {
LOG(WARNING) << "Failed to set HOME preset for Logitech webcam";
callback.Run(false);
return;
}
callback.Run(true);
return;
}
if (EnsureAverCommandsMapped()) {
if (!SetWebcamParameter(fd_.get(), V4L2_CID_PANTILT_CMD,
kAverMenuIndexSetHome)) {
LOG(WARNING) << "Failed to set HOME preset for AVer CAM webcam";
callback.Run(false);
return;
}
callback.Run(true);
return;
}
LOG(WARNING) << "Active webcam does not currently support seting HOME preset";
callback.Run(false);
}
void V4L2Webcam::Reset(bool pan,
bool tilt,
bool zoom,
......
......@@ -52,6 +52,7 @@ class V4L2Webcam : public Webcam {
bool tilt,
bool zoom,
const SetPTZCompleteCallback& callback) override;
void SetHome(const SetPTZCompleteCallback& callback) override;
void SetFocus(int value, const SetPTZCompleteCallback& callback) override;
void SetAutofocusState(AutofocusState state,
const SetPTZCompleteCallback& callback) override;
......
......@@ -504,6 +504,8 @@ void ViscaWebcam::Reset(bool pan,
}
}
void ViscaWebcam::SetHome(const SetPTZCompleteCallback& callback) {}
void ViscaWebcam::OpenForTesting(
std::unique_ptr<SerialConnection> serial_connection) {
serial_connection_ = std::move(serial_connection);
......
......@@ -114,6 +114,7 @@ class ViscaWebcam : public Webcam {
bool tilt,
bool zoom,
const SetPTZCompleteCallback& callback) override;
void SetHome(const SetPTZCompleteCallback& callback) override;
void SetFocus(int value, const SetPTZCompleteCallback& callback) override;
void SetAutofocusState(AutofocusState state,
const SetPTZCompleteCallback& callback) override;
......
......@@ -65,6 +65,8 @@ class Webcam : public base::RefCounted<Webcam> {
bool zoom,
const SetPTZCompleteCallback& callback) = 0;
virtual void SetHome(const SetPTZCompleteCallback& callback) = 0;
protected:
friend class base::RefCounted<Webcam>;
virtual ~Webcam();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment