52 :_command_transfer(command_transfer),
53 _uvc_sensor_base(uvc_ep)
57 const std::vector<uint8_t>& data,
58 int timeout_ms = 5000,
59 bool require_response =
true)
61 std::lock_guard<std::recursive_mutex> lock(_local_mtx);
65 std::lock_guard<platform::uvc_device> lock(dev);
66 return _command_transfer->send_receive(data, timeout_ms, require_response);
71 std::shared_ptr<platform::command_transfer> _command_transfer;
73 std::recursive_mutex _local_mtx;
108 int sizeOfSendCommandData;
112 size_t receivedCommandDataLength;
113 uint8_t receivedOpcode[4];
115 explicit hwmon_cmd(uint8_t cmd_id)
121 sizeOfSendCommandData(0),
124 receivedCommandDataLength(0)
128 explicit hwmon_cmd(
const command& cmd)
137 receivedCommandDataLength(0)
143 struct hwmon_cmd_details
146 std::array<uint8_t, HW_MONITOR_COMMAND_SIZE> sendCommandData;
147 int sizeOfSendCommandData;
149 std::array<uint8_t, 4> receivedOpcode;
150 std::array<uint8_t, HW_MONITOR_BUFFER_SIZE> receivedCommandData;
151 size_t receivedCommandDataLength;
154 static void fill_usb_buffer(
int opCodeNumber,
int p1,
int p2,
int p3,
int p4, uint8_t* data,
int dataLength, uint8_t* bufferToSend,
int& length);
155 void execute_usb_command(uint8_t *out,
size_t outSize, uint32_t& op, uint8_t* in,
size_t& inSize)
const;
156 static void update_cmd_details(hwmon_cmd_details& details,
size_t receivedCmdLen,
unsigned char* outputBuffer);
157 void send_hw_monitor_command(hwmon_cmd_details& details)
const;
159 std::shared_ptr<locked_transfer> _locked_transfer;
165 std::vector<uint8_t>
send(std::vector<uint8_t> data)
const;
167 void get_gvd(
size_t sz,
unsigned char* gvd, uint8_t gvd_cmd)
const;
const uint8_t IVCAM_MONITOR_ENDPOINT_IN
Definition: hw-monitor.h:24
const uint8_t IV_COMMAND_POWER_GEAR
Definition: hw-monitor.h:17
auto invoke_powered(T action) -> decltype(action(*static_cast< platform::uvc_device *>(nullptr)))
Definition: sensor.h:194
const uint8_t IV_COMMAND_CONFIDENCE_THRESHHOLD
Definition: hw-monitor.h:20
const uint8_t IV_COMMAND_FIRMWARE_UPDATE_MODE
Definition: hw-monitor.h:9
int param4
Definition: hw-monitor.h:82
const uint8_t NUM_OF_CALIBRATION_COEFFS
Definition: hw-monitor.h:30
Definition: hw-monitor.h:98
const uint8_t IVCAM_MONITOR_INTERFACE
Definition: hw-monitor.h:22
int param2
Definition: hw-monitor.h:80
const uint8_t IV_COMMAND_FILTER_OPTION
Definition: hw-monitor.h:18
const uint16_t IVCAM_MONITOR_MAGIC_NUMBER
Definition: hw-monitor.h:34
locked_transfer(std::shared_ptr< platform::command_transfer > command_transfer, uvc_sensor &uvc_ep)
Definition: hw-monitor.h:51
std::string get_firmware_version_string(int gvd_cmd, uint32_t offset) const
const uint8_t IV_COMMAND_INTENSITY_IMAGE_TYPE
Definition: hw-monitor.h:15
const uint8_t IV_COMMAND_ZUNIT
Definition: hw-monitor.h:13
int timeout_ms
Definition: hw-monitor.h:84
const uint8_t SIZE_OF_CALIB_HEADER_BYTES
Definition: hw-monitor.h:29
std::vector< uint8_t > send_receive(const std::vector< uint8_t > &data, int timeout_ms=5000, bool require_response=true)
Definition: hw-monitor.h:56
std::vector< uint8_t > data
Definition: hw-monitor.h:83
const uint8_t PARAMETERS2_BUFFER_SIZE
Definition: hw-monitor.h:28
const uint8_t IV_COMMAND_MOTION_VS_RANGE_TRADE
Definition: hw-monitor.h:16
const uint16_t SIZE_OF_CALIB_PARAM_BYTES
Definition: hw-monitor.h:33
const uint8_t IVCAM_MIN_SUPPORTED_VERSION
Definition: hw-monitor.h:25
const uint16_t IVCAM_MONITOR_MAX_BUFFER_SIZE
Definition: hw-monitor.h:35
int param3
Definition: hw-monitor.h:81
const uint16_t HW_MONITOR_BUFFER_SIZE
Definition: hw-monitor.h:38
uint8_t cmd
Definition: hw-monitor.h:78
const uint8_t NUM_OF_CALIBRATION_PARAMS
Definition: hw-monitor.h:27
std::string get_module_serial_string(uint8_t gvd_cmd, uint32_t offset) const
const uint16_t HW_MONITOR_COMMAND_SIZE
Definition: hw-monitor.h:37
const uint16_t HW_MONITOR_DATA_SIZE_OFFSET
Definition: hw-monitor.h:39
Definition: hw-monitor.h:48
const uint8_t IV_COMMAND_GET_CALIBRATION_DATA
Definition: hw-monitor.h:10
bool is_camera_locked(uint8_t gvd_cmd, uint32_t offset) const
const uint16_t MAX_SIZE_OF_CALIB_PARAM_BYTES
Definition: hw-monitor.h:32
command(uint8_t cmd, int param1=0, int param2=0, int param3=0, int param4=0, int timeout_ms=5000, bool require_response=true)
Definition: hw-monitor.h:87
const uint8_t IV_COMMAND_DEPTH_ACCURACY
Definition: hw-monitor.h:12
const uint16_t SIZE_OF_HW_MONITOR_HEADER
Definition: hw-monitor.h:40
const uint8_t IVCAM_MONITOR_HEADER_SIZE
Definition: hw-monitor.h:26
bool require_response
Definition: hw-monitor.h:85
std::vector< uint8_t > send(std::vector< uint8_t > data) const
const uint8_t IV_COMMAND_LASER_POWER
Definition: hw-monitor.h:11
int param1
Definition: hw-monitor.h:79
const uint8_t IV_COMMAND_VERSION
Definition: hw-monitor.h:19
const uint8_t IVCAM_MONITOR_ENDPOINT_OUT
Definition: hw-monitor.h:23
const uint16_t IVCAM_MONITOR_MUTEX_TIMEOUT
Definition: hw-monitor.h:36
hw_monitor(std::shared_ptr< locked_transfer > locked_transfer)
Definition: hw-monitor.h:161
Definition: hw-monitor.h:76
void copy(void *dst, void const *src, size_t size)
void get_gvd(size_t sz, unsigned char *gvd, uint8_t gvd_cmd) const
const uint8_t IV_COMMAND_LOW_CONFIDENCE_LEVEL
Definition: hw-monitor.h:14