libdrmconf  0.10.4
A library to program DMR radios.
usbdevice.hh
1 
89 #ifndef USBDEVICE_HH
90 #define USBDEVICE_HH
91 
92 #include <inttypes.h>
93 #include <QVariant>
94 
99  uint8_t bus;
100  uint8_t device;
101  uint32_t locationId;
102 
104  USBDeviceHandle();
106  USBDeviceHandle(uint8_t busno, uint8_t deviceno, uint32_t locid=0);
107 
109  bool operator==(const USBDeviceHandle &other);
110 };
111 Q_DECLARE_METATYPE(USBDeviceHandle)
112 
113 
121 {
122 public:
124  enum class Class {
125  None,
126  Serial,
127  DFU,
128  HID
129  };
130 
131 public:
133  USBDeviceInfo();
135  USBDeviceInfo(Class cls, uint16_t vid, uint16_t pid, bool save=true, bool identifiable=true);
137  virtual ~USBDeviceInfo();
138 
140  USBDeviceInfo(const USBDeviceInfo &other);
142  USBDeviceInfo &operator =(const USBDeviceInfo &other);
143 
145  bool operator ==(const USBDeviceInfo &other) const;
147  bool operator !=(const USBDeviceInfo &other) const;
148 
150  bool isValid() const;
151 
153  Class interfaceClass() const;
154 
156  uint16_t vendorId() const;
158  uint16_t productId() const;
159 
161  QString description() const;
162 
164  QString longDescription() const;
165 
170  bool isSave() const;
171 
173  bool isIdentifiable() const;
174 
175 protected:
179  uint16_t _vid;
181  uint16_t _pid;
183  bool _save;
186 };
187 
188 
197 {
198 protected:
200  USBDeviceDescriptor(const USBDeviceInfo &info, const QString &device);
203 
204 public:
209 
212 
215  bool isValid() const;
216 
218  QString description() const;
219 
221  const QVariant &device() const;
223  QString deviceHandle() const;
224 
225 public:
227  static QList<USBDeviceDescriptor> detect();
228 
229 protected:
231  bool validSerial() const;
233  bool validRawUSB() const;
234 
235 protected:
237  QVariant _device;
238 };
239 
240 #endif // USBDEVICE_HH
Base class for all radio interface descriptors representing a unique interface to a connected radio.
Definition: usbdevice.hh:197
QString deviceHandle() const
Returns a unique string representation of the device information.
Definition: usbdevice.cc:281
QVariant _device
Holds some information to identify the radio interface uniquely.
Definition: usbdevice.hh:237
bool validSerial() const
Checks a serial port.
Definition: usbdevice.cc:244
QString description() const
Returns a human readable description of the device.
Definition: usbdevice.cc:262
bool validRawUSB() const
Checks a raw USB device.
Definition: usbdevice.cc:198
static QList< USBDeviceDescriptor > detect()
Searches for all connected radios (may contain false positives).
Definition: usbdevice.cc:297
bool isValid() const
Returns true if the descriptor is still valid.
Definition: usbdevice.cc:180
USBDeviceDescriptor & operator=(const USBDeviceDescriptor &other)
Assignment.
Definition: usbdevice.cc:173
USBDeviceDescriptor()
Empty constructor.
Definition: usbdevice.cc:148
const QVariant & device() const
Returns the device information identifying the interface uniquely.
Definition: usbdevice.cc:276
Generic information about a possible radio interface.
Definition: usbdevice.hh:121
uint16_t _pid
The USB pid.
Definition: usbdevice.hh:181
bool _save
If true, it is save to send commands to the device without user approval.
Definition: usbdevice.hh:183
uint16_t _vid
The USB vid.
Definition: usbdevice.hh:179
Class _class
The class of the interface.
Definition: usbdevice.hh:177
Class
Possible interface types.
Definition: usbdevice.hh:124
bool _identifiable
If true, the device may be identified automatically.
Definition: usbdevice.hh:185
Combines the USB bus and device number, to address a USB device uniquely.
Definition: usbdevice.hh:98
uint8_t bus
Holds the bus number.
Definition: usbdevice.hh:99
uint32_t locationId
On MacOS, holds the location ID.
Definition: usbdevice.hh:101
bool operator==(const USBDeviceHandle &other)
Compares only wrt bus and device number.
Definition: usbdevice.cc:30
uint8_t device
Holds the device address.
Definition: usbdevice.hh:100
USBDeviceHandle()
Empty constructor.
Definition: usbdevice.cc:17