change the node and confirm the KSNODETYPE_DEV
This commit is contained in:
parent
8ca90f3478
commit
b8f20c570c
|
@ -15,7 +15,7 @@ MYNTEYE_BEGIN_NAMESPACE
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
const uvc::xu mynteye_xu = {3, 1, {0x18682d34, 0xdd2c, 0x4073, {0xad, 0x23, 0x72, 0x14, 0x73, 0x9a, 0x07, 0x4c}}};
|
const uvc::xu mynteye_xu = {3, 2, {0x18682d34, 0xdd2c, 0x4073, {0xad, 0x23, 0x72, 0x14, 0x73, 0x9a, 0x07, 0x4c}}};
|
||||||
|
|
||||||
int XuCamCtrlId(Option option) {
|
int XuCamCtrlId(Option option) {
|
||||||
switch (option) {
|
switch (option) {
|
||||||
|
|
|
@ -141,6 +141,7 @@ static void check(const char *call, HRESULT hr)
|
||||||
if (FAILED(hr)) {
|
if (FAILED(hr)) {
|
||||||
throw_error() << call << "(...) returned 0x" << std::hex << (uint32_t)hr;
|
throw_error() << call << "(...) returned 0x" << std::hex << (uint32_t)hr;
|
||||||
}
|
}
|
||||||
|
LOG(INFO) << call << " SUCCESSED";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::string> tokenize(std::string string, char separator)
|
std::vector<std::string> tokenize(std::string string, char separator)
|
||||||
|
@ -158,6 +159,18 @@ std::vector<std::string> tokenize(std::string string, char separator)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void print_guid(const char *call, GUID guid) {
|
||||||
|
std::cout << call << ":";
|
||||||
|
std::cout << " Data1: " << std::hex << guid.Data1 << ",";
|
||||||
|
std::cout << " Data2: " << std::hex << guid.Data2 << ",";
|
||||||
|
std::cout << " Data3: " << std::hex << guid.Data3 << ",";
|
||||||
|
std::cout << " Data4: [ ";
|
||||||
|
for(int j = 0; j < 8; j++) {
|
||||||
|
std::cout << std::hex << (int)guid.Data4[j] << " ";
|
||||||
|
}
|
||||||
|
std::cout << "]" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
bool parse_usb_path(int & vid, int & pid, int & mi, std::string & unique_id, const std::string & path)
|
bool parse_usb_path(int & vid, int & pid, int & mi, std::string & unique_id, const std::string & path)
|
||||||
{
|
{
|
||||||
auto name = path;
|
auto name = path;
|
||||||
|
@ -299,6 +312,7 @@ struct device {
|
||||||
|
|
||||||
|
|
||||||
IKsControl * get_ks_control(const uvc::xu & xu) {
|
IKsControl * get_ks_control(const uvc::xu & xu) {
|
||||||
|
|
||||||
auto it = ks_controls.find(xu.node);
|
auto it = ks_controls.find(xu.node);
|
||||||
if(it != end(ks_controls)) return it->second;
|
if(it != end(ks_controls)) return it->second;
|
||||||
|
|
||||||
|
@ -309,8 +323,17 @@ struct device {
|
||||||
check("QueryInterface", mf_media_source->QueryInterface(__uuidof(IKsTopologyInfo), (void **)&ks_topology_info));
|
check("QueryInterface", mf_media_source->QueryInterface(__uuidof(IKsTopologyInfo), (void **)&ks_topology_info));
|
||||||
|
|
||||||
GUID node_type;
|
GUID node_type;
|
||||||
|
/*
|
||||||
|
DWORD numberOfNodes;
|
||||||
|
check("get_NumNodes",ks_topology_info->get_NumNodes(&numberOfNodes));
|
||||||
|
for(int i = 0; i < numberOfNodes; i++) {
|
||||||
|
check("get_NodeType", ks_topology_info->get_NodeType(i, &node_type));
|
||||||
|
std::cout << "node" << i << " ";
|
||||||
|
print_guid("node_type", node_type);
|
||||||
|
}
|
||||||
|
*/
|
||||||
check("get_NodeType", ks_topology_info->get_NodeType(xu.node, &node_type));
|
check("get_NodeType", ks_topology_info->get_NodeType(xu.node, &node_type));
|
||||||
const GUID KSNODETYPE_DEV_SPECIFIC_LOCAL{0xDFF229E5, 0xF70F, 0x11D0, {0xB9, 0x17 ,0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
|
const GUID KSNODETYPE_DEV_SPECIFIC_LOCAL{0x941C7AC0L, 0xC559, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
|
||||||
if(node_type != KSNODETYPE_DEV_SPECIFIC_LOCAL) throw_error() << "Invalid extension unit node ID: " << xu.node;
|
if(node_type != KSNODETYPE_DEV_SPECIFIC_LOCAL) throw_error() << "Invalid extension unit node ID: " << xu.node;
|
||||||
|
|
||||||
com_ptr<IUnknown> unknown;
|
com_ptr<IUnknown> unknown;
|
||||||
|
@ -318,7 +341,7 @@ struct device {
|
||||||
|
|
||||||
com_ptr<IKsControl> ks_control;
|
com_ptr<IKsControl> ks_control;
|
||||||
check("QueryInterface", unknown->QueryInterface(__uuidof(IKsControl), (void **)&ks_control));
|
check("QueryInterface", unknown->QueryInterface(__uuidof(IKsControl), (void **)&ks_control));
|
||||||
VLOG(2) << "Obtained KS control node" << xu.node;
|
LOG(INFO) << "Obtained KS control node : " << xu.node;
|
||||||
return ks_controls[xu.node] = ks_control;
|
return ks_controls[xu.node] = ks_control;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user