Update uvc control query

This commit is contained in:
John Zhao
2018-04-09 22:24:34 +08:00
parent e061430e61
commit ef38681bd1
7 changed files with 154 additions and 60 deletions

View File

@@ -2,8 +2,6 @@
#include <glog/logging.h>
#include "uvc/uvc.h"
MYNTEYE_BEGIN_NAMESPACE
Channels::Channels(std::shared_ptr<uvc::device> device) : device_(device) {
@@ -14,31 +12,16 @@ Channels::~Channels() {
VLOG(2) << __func__;
}
bool Channels::ControlQuery(
const uvc::xu &xu, uint8_t selector, const query_t &query, uint16_t size,
bool Channels::XuControlQuery(
uint8_t selector, uvc::xu_query query, uint16_t size, uint8_t *data) {
return XuControlQuery({3}, selector, query, size, data);
}
bool Channels::XuControlQuery(
const uvc::xu &xu, uint8_t selector, uvc::xu_query query, uint16_t size,
uint8_t *data) {
CHECK_NOTNULL(device_);
uvc::xu_query code;
switch (query) {
case SET_CUR:
code = uvc::XU_SET_CUR;
break;
case GET_CUR:
code = uvc::XU_GET_CUR;
break;
case GET_MIN:
code = uvc::XU_GET_MIN;
break;
case GET_MAX:
code = uvc::XU_GET_MAX;
break;
case GET_DEF:
code = uvc::XU_GET_DEF;
break;
default:
LOG(FATAL) << "ControlQuery query code is unaccepted";
}
return uvc::xu_control_query(*device_, xu, selector, code, size, data);
return uvc::xu_control_query(*device_, xu, selector, query, size, data);
}
MYNTEYE_END_NAMESPACE

View File

@@ -2,9 +2,11 @@
#define MYNTEYE_INTERNAL_CHANNELS_H_
#pragma once
#include <map>
#include <memory>
#include "mynteye/mynteye.h"
#include "uvc/uvc.h"
MYNTEYE_BEGIN_NAMESPACE
@@ -17,24 +19,34 @@ struct xu;
class Channels {
public:
typedef enum Query {
SET_CUR,
GET_CUR,
GET_MIN,
GET_MAX,
GET_DEF,
LAST
} query_t;
typedef enum Channel {
CHANNEL_CAM_CTRL = 0x0100,
CHANNEL_HALF_DUPLEX = 0x0200,
CHANNEL_IMU_WRITE = 0x0300,
CHANNEL_IMU_READ = 0x0400,
CHANNEL_FILE = 0x0500,
CHANNEL_LAST
} channel_t;
typedef struct ControlInfo {
std::int32_t min;
std::int32_t max;
std::int32_t def;
} control_info_t;
explicit Channels(std::shared_ptr<uvc::device> device);
~Channels();
private:
bool ControlQuery(
const uvc::xu &xu, uint8_t selector, const query_t &query, uint16_t size,
bool XuControlQuery(
uint8_t selector, uvc::xu_query query, uint16_t size, uint8_t *data);
bool XuControlQuery(
const uvc::xu &xu, uint8_t selector, uvc::xu_query query, uint16_t size,
uint8_t *data);
std::shared_ptr<uvc::device> device_;
std::map<Option, ControlInfo> control_infos_;
};
MYNTEYE_END_NAMESPACE