Mackie Control: Shift/Select now toggles individual channels within group. Makes...
[ardour.git] / libs / surfaces / mackie / led.h
index b2bc29ec5f5dfb1f0437c5f4af9df217b257f010..19c48cb6a867f1ae89ae0c2cb49741a4bbe787da 100644 (file)
 #define __ardour_mackie_control_protocol_led_h__
 
 #include "controls.h"
+#include "midi_byte_array.h"
+#include "types.h"
+
+namespace ArdourSurface {
 
 namespace Mackie {
 
 class Led : public Control
 {
 public:
+       static const int FaderTouch;
+       static const int Timecode;
+       static const int Beats;
+       static const int RudeSolo;
+       static const int RelayClick;
+
        Led (int id, std::string name, Group & group)
                : Control (id, name, group)
+               , state (off)
        {
        }
-       
-       virtual const Led & led() const { return *this; }
 
-       virtual type_t type() const { return type_led; }
+       Led & led() { return *this; }
+       MidiByteArray set_state (LedState);
+
+       MidiByteArray zero() { return set_state (off); }
 
        static Control* factory (Surface&, int id, const char*, Group&);
+
+  private:
+       LedState state;
 };
 
+}
 }
 
 #endif /* __ardour_mackie_control_protocol_led_h__ */