-
Notifications
You must be signed in to change notification settings - Fork 227
Expand file tree
/
Copy pathSiudiFactory.cpp
More file actions
68 lines (62 loc) · 2.36 KB
/
SiudiFactory.cpp
File metadata and controls
68 lines (62 loc) · 2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* SiudiFactory.cpp
* The WidgetFactory for SIUDI widgets.
* Copyright (C) 2023 Alexander Simon
*/
#include "plugins/usbdmx/SiudiFactory.h"
#include "ola/Logging.h"
#include "ola/base/Flags.h"
DECLARE_bool(use_async_libusb);
namespace ola {
namespace plugin {
namespace usbdmx {
const uint16_t SiudiFactory::NICOLAUDIE_ID = 0x6244;
const uint16_t SiudiFactory::SIUDI6_COLD_ID = 0x0300;
const uint16_t SiudiFactory::SIUDI6C_HOT_ID = 0x301;
const uint16_t SiudiFactory::SIUDI6A_HOT_ID = 0x302;
const uint16_t SiudiFactory::SIUDI6D_HOT_ID = 0x303;
bool SiudiFactory::DeviceAdded(
WidgetObserver *observer,
libusb_device *usb_device,
const struct libusb_device_descriptor &descriptor) {
if (descriptor.idVendor != NICOLAUDIE_ID) {
return false;
}
if (descriptor.idProduct == SIUDI6_COLD_ID) {
OLA_WARN << "Found a Nicoleaudie SIUDI-6 device in cold state. "
"Firmware download is currently not supported.";
return false;
}
if (descriptor.idProduct == SIUDI6C_HOT_ID ||
descriptor.idProduct == SIUDI6A_HOT_ID ||
descriptor.idProduct == SIUDI6D_HOT_ID) {
if (descriptor.idProduct == SIUDI6C_HOT_ID) {
OLA_INFO << "Found a new Nicoleaudie SIUDI-6C device";
} else if (descriptor.idProduct == SIUDI6A_HOT_ID) {
OLA_INFO << "Found a new Nicoleaudie SIUDI-6A device";
} else if (descriptor.idProduct == SIUDI6D_HOT_ID) {
OLA_INFO << "Found a new Nicoleaudie SIUDI-6D device";
}
Siudi *widget = NULL;
widget = new SynchronousSiudi(m_adaptor, usb_device);
return AddWidget(observer, widget);
}
return false;
}
} // namespace usbdmx
} // namespace plugin
} // namespace ola