33 #include <sys/ioctl.h> 34 #include <linux/usb/video.h> 35 #include <linux/uvcvideo.h> 36 #include <linux/videodev2.h> 66 hid_input(
const std::string& iio_device_path,
const std::string& input_name);
70 void enable(
bool is_enable);
96 std::vector<uint8_t> read_report(
const std::string& name_report_path);
100 void enable(
bool state);
104 int _stop_pipe_fd[2];
106 std::map<std::string, std::string> _reports;
107 std::string _custom_device_path;
108 std::string _custom_sensor_name;
109 std::string _custom_device_name;
111 std::atomic<bool> _is_capturing;
112 std::unique_ptr<std::thread> _hid_thread;
132 void set_frequency(uint32_t frequency);
140 void create_channel_array();
143 void init(uint32_t frequency);
146 uint32_t get_channel_size()
const;
149 uint32_t get_output_size()
const;
151 std::string get_sampling_frequency_name()
const;
154 void read_device_inputs();
157 void write_integer_to_param(
const std::string& param,
int value);
159 static const uint32_t buf_len = 128;
160 int _stop_pipe_fd[2];
162 int _iio_device_number;
163 std::string _iio_device_path;
164 std::string _sensor_name;
165 std::string _sampling_frequency_name;
166 std::list<hid_input*> _inputs;
167 std::list<hid_input*> _channels;
169 std::atomic<bool> _is_capturing;
170 std::unique_ptr<std::thread> _hid_thread;
180 void open(
const std::vector<hid_profile>& hid_profiles);
184 std::vector<hid_sensor> get_sensors();
190 std::vector<uint8_t> get_custom_report_data(
const std::string& custom_sensor_name,
191 const std::string& report_name,
194 static void foreach_hid_device(std::function<
void(
const hid_device_info&)> action);
199 std::vector<hid_profile> _hid_profiles;
200 std::vector<hid_device_info> _hid_device_infos;
201 std::vector<std::unique_ptr<iio_hid_sensor>> _iio_hid_sensors;
202 std::vector<std::unique_ptr<hid_custom_sensor>> _hid_custom_sensors;
203 std::vector<iio_hid_sensor*> _streaming_iio_sensors;
204 std::vector<hid_custom_sensor*> _streaming_custom_sensors;
205 static constexpr
const char* custom_id{
"custom"};