feat(src): added feature of syncing timestamp for 200B
This commit is contained in:
@@ -368,6 +368,10 @@ void API::SetOptionValue(const Option &option, std::int32_t value) {
|
||||
device_->SetOptionValue(option, value);
|
||||
}
|
||||
|
||||
bool API::SetOptionValue(const Option &option, std::uint64_t value) {
|
||||
return device_->SetOptionValue(option, value);
|
||||
}
|
||||
|
||||
bool API::RunOptionAction(const Option &option) const {
|
||||
return device_->RunOptionAction(option);
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ int XuHalfDuplexId(Option option) {
|
||||
return 1;
|
||||
break;
|
||||
case Option::SYNC_TIMESTAMP:
|
||||
return 2;
|
||||
return 3;
|
||||
break;
|
||||
default:
|
||||
LOG(FATAL) << "No half duplex id for " << option;
|
||||
@@ -332,7 +332,7 @@ bool Channels::SetControlValue(const Option &option, std::uint64_t value) {
|
||||
LOG(WARNING) << option << " set value useless";
|
||||
break;
|
||||
case Option::SYNC_TIMESTAMP:
|
||||
return XuHalfDuplexSet(option, XU_SYNC_TIMESTAMP);
|
||||
return XuHalfDuplexSet(option, value);
|
||||
break;
|
||||
default:
|
||||
LOG(ERROR) << "Unsupported option " << option;
|
||||
@@ -719,6 +719,29 @@ bool Channels::XuHalfDuplexSet(Option option, xu_cmd_t cmd) const {
|
||||
}
|
||||
}
|
||||
|
||||
bool Channels::XuHalfDuplexSet(Option option, std::uint64_t value) const {
|
||||
int id = XuHalfDuplexId(option);
|
||||
std::uint8_t data[20] = {static_cast<std::uint8_t>(id & 0xFF),
|
||||
static_cast<std::uint8_t>(value & 0xFF),
|
||||
static_cast<std::uint8_t>((value >> 8) & 0xFF),
|
||||
static_cast<std::uint8_t>((value >> 16) & 0xFF),
|
||||
static_cast<std::uint8_t>((value >> 24) & 0xFF),
|
||||
static_cast<std::uint8_t>((value >> 32) & 0xFF),
|
||||
static_cast<std::uint8_t>((value >> 40) & 0xFF),
|
||||
static_cast<std::uint8_t>((value >> 48) & 0xFF),
|
||||
static_cast<std::uint8_t>((value >> 56) & 0xFF)};
|
||||
|
||||
if (XuControlQuery(CHANNEL_HALF_DUPLEX, uvc::XU_QUERY_SET, 20, data)) {
|
||||
VLOG(2) << "XuHalfDuplexSet value (0x" << std::hex << std::uppercase << value
|
||||
<< ") of " << option << " success";
|
||||
return true;
|
||||
} else {
|
||||
LOG(WARNING) << "XuHalfDuplexSet value (0x" << std::hex << std::uppercase
|
||||
<< value << ") of " << option << " failed";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool Channels::XuImuWrite(const ImuReqPacket &req) const {
|
||||
auto &&data = req.to_data();
|
||||
if (XuControlQuery(
|
||||
|
||||
@@ -112,6 +112,7 @@ class MYNTEYE_API Channels {
|
||||
void XuCamCtrlSet(Option option, std::int32_t value) const;
|
||||
|
||||
bool XuHalfDuplexSet(Option option, xu_cmd_t cmd) const;
|
||||
bool XuHalfDuplexSet(Option option, std::uint64_t value) const;
|
||||
|
||||
bool XuImuWrite(const ImuReqPacket &req) const;
|
||||
bool XuImuRead(ImuResPacket *res) const;
|
||||
|
||||
@@ -381,6 +381,14 @@ void Device::SetOptionValue(const Option &option, std::int32_t value) {
|
||||
channels_->SetControlValue(option, value);
|
||||
}
|
||||
|
||||
bool Device::SetOptionValue(const Option &option, std::uint64_t value) {
|
||||
if (!Supports(option)) {
|
||||
LOG(WARNING) << "Unsupported option: " << option;
|
||||
return false;
|
||||
}
|
||||
return channels_->SetControlValue(option, value);
|
||||
}
|
||||
|
||||
bool Device::RunOptionAction(const Option &option) const {
|
||||
if (!Supports(option)) {
|
||||
LOG(WARNING) << "Unsupported option: " << option;
|
||||
|
||||
Reference in New Issue
Block a user