#ifndef MYNTEYE_UVC_H_ // NOLINT #define MYNTEYE_UVC_H_ #pragma once #include #include #include #include #include "mynteye/mynteye.h" #include "mynteye/types.h" #define MYNTEYE_VID 0x04B4 #define MYNTEYE_PID 0x00F9 MYNTEYE_BEGIN_NAMESPACE namespace uvc { typedef enum pu_query { PU_QUERY_SET, // Set the value of a control PU_QUERY_GET, // Get the value of a control PU_QUERY_LAST } pu_query; // Extension Unit struct xu { uint8_t unit; }; typedef enum xu_query { XU_QUERY_SET, // Set current value of the control XU_QUERY_GET, // Get current value of the control XU_QUERY_MIN, // Get min value of the control XU_QUERY_MAX, // Get max value of the control XU_QUERY_DEF, // Get default value of the control XU_QUERY_LAST } xu_query; struct context; // Opaque type representing access to the underlying UVC // implementation struct device; // Opaque type representing access to a specific UVC device // Enumerate devices std::shared_ptr create_context(); std::vector> query_devices( std::shared_ptr context); // Static device properties std::string get_name(const device &device); int get_vendor_id(const device &device); int get_product_id(const device &device); std::string get_video_name(const device &device); // Access PU (Processing Unit) controls inline bool is_pu_control(Option option) { return option >= Option::GAIN && option <= Option::CONTRAST; } bool pu_control_range( const device &device, Option option, int32_t *min, int32_t *max, int32_t *def); bool pu_control_query( const device &device, Option option, pu_query query, int32_t *value); // Access XU (Extension Unit) controls bool xu_control_query( const device &device, const xu &xu, uint8_t selector, xu_query query, uint16_t size, uint8_t *data); // Control streaming typedef std::function video_channel_callback; void set_device_mode( device &device, int width, int height, int fourcc, int fps, // NOLINT video_channel_callback callback); void start_streaming(device &device, int num_transfer_bufs); // NOLINT void stop_streaming(device &device); // NOLINT } // namespace uvc MYNTEYE_END_NAMESPACE #endif // MYNTEYE_UVC_H_ NOLINT