2 Copyright (C) 2006,2007 John Anderson
3 Copyright (C) 2012 Paul Davis
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 #ifndef __ardour_mackie_control_protocol_device_info_h__
21 #define __ardour_mackie_control_protocol_device_info_h__
34 struct GlobalButtonInfo {
35 std::string label; // visible to user
36 std::string group; // in case we want to present in a GUI
37 int32_t id; // value sent by device
39 GlobalButtonInfo () : id (-1) {}
40 GlobalButtonInfo (const std::string& l, const std::string& g, uint32_t i)
41 : label (l), group (g), id (i) {}
44 struct StripButtonInfo {
48 StripButtonInfo () : base_id (-1) {}
49 StripButtonInfo (uint32_t i, const std::string& n)
50 : base_id (i), name (n) {}
59 int set_state (const XMLNode&, int version);
61 uint32_t strip_cnt () const;
62 uint32_t extenders() const;
63 bool has_two_character_display() const;
64 bool has_master_fader () const;
65 bool has_timecode_display() const;
66 bool has_global_controls() const;
67 bool has_jog_wheel () const;
68 bool has_touch_sense_faders() const;
69 bool uses_ipmidi() const;
70 bool no_handshake() const;
71 const std::string& name() const;
73 static std::map<std::string,DeviceInfo> device_info;
74 static void reload_device_info();
76 const std::map<Button::ID,GlobalButtonInfo>& global_buttons() const { return _global_buttons; }
77 const std::map<Button::ID,StripButtonInfo>& strip_buttons() const { return _strip_buttons; }
82 bool _has_two_character_display;
83 bool _has_master_fader;
84 bool _has_timecode_display;
85 bool _has_global_controls;
87 bool _has_touch_sense_faders;
88 bool _uses_logic_control_buttons;
93 std::map<Button::ID,GlobalButtonInfo> _global_buttons;
94 std::map<Button::ID,StripButtonInfo> _strip_buttons;
96 void logic_control_buttons ();
97 void mackie_control_buttons ();
98 void shared_buttons ();
104 std::ostream& operator<< (std::ostream& os, const Mackie::DeviceInfo& di);
106 #endif /* __ardour_mackie_control_protocol_device_info_h__ */