Update xu_control_range in uvc-wmf.cc
This commit is contained in:
		
							parent
							
								
									5daf4162e4
								
							
						
					
					
						commit
						87470f29a9
					
				
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -1,5 +1,7 @@
 | 
			
		||||
.DS_Store
 | 
			
		||||
/.vscode/
 | 
			
		||||
 | 
			
		||||
.vs/
 | 
			
		||||
.vscode/
 | 
			
		||||
 | 
			
		||||
_build/
 | 
			
		||||
_install/
 | 
			
		||||
 | 
			
		||||
@ -45,8 +45,8 @@
 | 
			
		||||
 | 
			
		||||
#include <glog/logging.h>
 | 
			
		||||
 | 
			
		||||
// #define VLOG_INFO VLOG(2)
 | 
			
		||||
#define VLOG_INFO LOG(INFO)
 | 
			
		||||
#define VLOG_INFO VLOG(2)
 | 
			
		||||
// #define VLOG_INFO LOG(INFO)
 | 
			
		||||
 | 
			
		||||
MYNTEYE_BEGIN_NAMESPACE
 | 
			
		||||
 | 
			
		||||
@ -557,6 +557,14 @@ bool pu_control_query(
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static std::string to_string(uint16_t size, uint8_t *data) {
 | 
			
		||||
  std::ostringstream ss;
 | 
			
		||||
  for (uint8_t *beg = data, *end = data + size; beg != end; beg++) {
 | 
			
		||||
    ss << "0x" << std::hex << static_cast<int>(*beg) << ",";
 | 
			
		||||
  }
 | 
			
		||||
  return ss.str();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static std::vector<BYTE> xu_control_desc(const device &device, const xu &xu, ULONG id, ULONG flags) {
 | 
			
		||||
  auto ks_control = const_cast<uvc::device &>(device).get_ks_control(xu);
 | 
			
		||||
 | 
			
		||||
@ -588,6 +596,8 @@ static std::vector<BYTE> xu_control_desc(const device &device, const xu &xu, ULO
 | 
			
		||||
 | 
			
		||||
  if (bytes_received != size) { throw_error() << "wrong data"; }
 | 
			
		||||
 | 
			
		||||
  // VLOG_INFO << "buffer size=" << size << ", data=["
 | 
			
		||||
  //     << to_string(size, buffer.data()) << "]";
 | 
			
		||||
  return buffer;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -595,41 +605,42 @@ bool xu_control_range(
 | 
			
		||||
    const device &device, const xu &xu, uint8_t selector, int32_t *min,
 | 
			
		||||
    int32_t *max, int32_t *def) {
 | 
			
		||||
  VLOG_INFO << __func__ << " " << static_cast<int>(selector);
 | 
			
		||||
  size_t prop_header_size = sizeof(KSPROPERTY_MEMBERSHEADER) + sizeof(KSPROPERTY_DESCRIPTION);
 | 
			
		||||
  // get step, min and max values
 | 
			
		||||
  {
 | 
			
		||||
    auto &&buffer = xu_control_desc(device, xu, selector,
 | 
			
		||||
        KSPROPERTY_TYPE_BASICSUPPORT | KSPROPERTY_TYPE_TOPOLOGY);
 | 
			
		||||
 | 
			
		||||
    BYTE *values = buffer.data() + sizeof(KSPROPERTY_MEMBERSHEADER) + sizeof(KSPROPERTY_DESCRIPTION);
 | 
			
		||||
    BYTE *values = buffer.data() + prop_header_size;
 | 
			
		||||
 | 
			
		||||
    // *step = static_cast<int32_t>(*values);
 | 
			
		||||
    values++;
 | 
			
		||||
    *min = static_cast<int32_t>(*values);
 | 
			
		||||
    values++;
 | 
			
		||||
    *max = static_cast<int32_t>(*values);
 | 
			
		||||
    // size_t size = buffer.size() - prop_header_size;
 | 
			
		||||
    // VLOG_INFO << "values size: " << size << ", data=["
 | 
			
		||||
    //     << to_string(size, values) << "]";
 | 
			
		||||
 | 
			
		||||
    *min = (values[1] << 8) | (values[2]);
 | 
			
		||||
    values += 3;
 | 
			
		||||
    *max = (values[1] << 8) | (values[2]);
 | 
			
		||||
    // values += 3;
 | 
			
		||||
    // *step = (values[1] << 8) | (values[2]);
 | 
			
		||||
  }
 | 
			
		||||
  // get def value
 | 
			
		||||
  {
 | 
			
		||||
    auto &&buffer = xu_control_desc(device, xu, selector,
 | 
			
		||||
        KSPROPERTY_TYPE_DEFAULTVALUES | KSPROPERTY_TYPE_TOPOLOGY);
 | 
			
		||||
 | 
			
		||||
    BYTE *values = buffer.data() + sizeof(KSPROPERTY_MEMBERSHEADER) + sizeof(KSPROPERTY_DESCRIPTION);
 | 
			
		||||
    BYTE *values = buffer.data() + prop_header_size;
 | 
			
		||||
 | 
			
		||||
    *def = static_cast<int32_t>(*values);
 | 
			
		||||
    // size_t size = buffer.size() - prop_header_size;
 | 
			
		||||
    // VLOG_INFO << "values size: " << size << ", data=["
 | 
			
		||||
    //     << to_string(size, values) << "]";
 | 
			
		||||
 | 
			
		||||
    *def = (values[1] << 8) | (values[2]);
 | 
			
		||||
  }
 | 
			
		||||
  VLOG_INFO << __func__ << " " << static_cast<int>(selector)
 | 
			
		||||
      << ": min=" << *min << ", max=" << *max << ", def=" << *def;
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static std::string to_string(uint16_t size, uint8_t *data) {
 | 
			
		||||
  std::ostringstream ss;
 | 
			
		||||
  for (uint8_t *beg = data, *end = data + size; beg != end; beg++) {
 | 
			
		||||
    ss << "0x" << std::hex << static_cast<int>(*beg) << ",";
 | 
			
		||||
  }
 | 
			
		||||
  return ss.str();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void xu_control_get(const device &device, const xu &xu, uint8_t selector,
 | 
			
		||||
      uint16_t size, uint8_t *data) {
 | 
			
		||||
  VLOG_INFO << __func__ << " " << static_cast<int>(selector);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user