, _uses_logic_control_buttons (false)
, _uses_ipmidi (false)
, _no_handshake (false)
+ , _is_qcon(false)
, _has_meters (true)
, _has_separate_meters (false)
, _device_type (MCU)
_has_meters = true;
}
+ if ((child = node.child ("IsQCon")) != 0) {
+ child->get_property ("value", _is_qcon);
+ } else {
+ _is_qcon = false;
+ }
+
if ((child = node.child ("HasSeparateMeters")) != 0) {
child->get_property ("value", _has_separate_meters);
} else {
return _no_handshake;
}
+bool
+DeviceInfo::is_qcon () const
+{
+ return _is_qcon;
+}
+
bool
DeviceInfo::has_touch_sense_faders () const
{
bool has_touch_sense_faders() const;
bool uses_ipmidi() const;
bool no_handshake() const;
+ bool is_qcon() const;
bool has_meters() const;
bool has_separate_meters() const;
const std::string& name() const;
bool _uses_logic_control_buttons;
bool _uses_ipmidi;
bool _no_handshake;
+ bool _is_qcon;
bool _has_meters;
bool _has_separate_meters;
DeviceType _device_type;
// the device type
static MidiByteArray mackie_sysex_hdr_xt (5, MIDI::sysex, 0x0, 0x0, 0x66, 0x15);
+//QCON
+// The MCU sysex header for QCon Control surface
+static MidiByteArray mackie_sysex_hdr_qcon (5, MIDI::sysex, 0x0, 0x0, 0x66, 0x14);
+
+// The MCU sysex header for QCon Control - extender
+// The extender differs from Mackie by 4th bit - it's same like for main control surface (for display)
+static MidiByteArray mackie_sysex_hdr_xt_qcon (5, MIDI::sysex, 0x0, 0x0, 0x66, 0x14);
+
+
static MidiByteArray empty_midi_byte_array;
Surface::Surface (MackieControlProtocol& mcp, const std::string& device_name, uint32_t number, surface_type_t stype)
Surface::sysex_hdr() const
{
switch (_stype) {
- case mcu: return mackie_sysex_hdr;
- case ext: return mackie_sysex_hdr_xt;
+ case mcu:
+ if (_mcp.device_info().is_qcon()) {
+ return mackie_sysex_hdr_qcon;
+ } else {
+ return mackie_sysex_hdr;
+ }
+ case ext:
+ if(_mcp.device_info().is_qcon()) {
+ return mackie_sysex_hdr_xt_qcon;
+ } else {
+ return mackie_sysex_hdr_xt;
+ }
}
cout << "SurfacePort::sysex_hdr _port_type not known" << endl;
return mackie_sysex_hdr;
*/
if (_stype == mcu) {
- mackie_sysex_hdr[4] = bytes[4];
+ if (_mcp.device_info().is_qcon()) {
+ mackie_sysex_hdr_qcon[4] = bytes[4];
+ } else {
+ mackie_sysex_hdr[4] = bytes[4];
+ }
+
} else {
- mackie_sysex_hdr_xt[4] = bytes[4];
+ if (_mcp.device_info().is_qcon()) {
+ mackie_sysex_hdr_xt_qcon[4] = bytes[4];
+ } else {
+ mackie_sysex_hdr_xt[4] = bytes[4];
+ }
}
switch (bytes[5]) {