From 261738d01e34c84a07fad3336ce5eca450017c0b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 11 Apr 2012 02:54:25 +0000 Subject: [PATCH] MCP: debug tracing, plus start of a new cleaner handling system for button handling git-svn-id: svn://localhost/ardour2/branches/3.0@11880 d708f5d6-7413-0410-9779-e7cbd77b26cf --- .../mackie/mackie_control_protocol.cc | 271 +++++++++--------- .../surfaces/mackie/mackie_control_protocol.h | 18 ++ libs/surfaces/mackie/mcp_buttons.cc | 8 + 3 files changed, 168 insertions(+), 129 deletions(-) diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index d7fda8ad7f..653bdfeb6d 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -748,29 +748,36 @@ MackieControlProtocol::notify_transport_state_changed() update_global_button ("ffwd", session->transport_speed() > 1.0); _transport_previously_rolling = session->transport_rolling(); - } void MackieControlProtocol::notify_record_state_changed () { + /* rec is a tristate */ + + Button * rec = reinterpret_cast (surfaces.front()->controls_by_name["record"]); if (rec) { LedState ls; switch (session->record_status()) { case Session::Disabled: + DEBUG_TRACE (DEBUG::MackieControl, "record state changed to disabled, LED off\n"); ls = off; break; case Session::Recording: + DEBUG_TRACE (DEBUG::MackieControl, "record state changed to recording, LED on\n"); ls = on; break; case Session::Enabled: + DEBUG_TRACE (DEBUG::MackieControl, "record state changed to enabled, LED flashing\n"); ls = flashing; break; } surfaces.front()->write (builder.build_led (*rec, ls)); + } else { + DEBUG_TRACE (DEBUG::MackieControl, "record button control not found\n"); } } @@ -874,6 +881,12 @@ MackieControlProtocol::update_led (Surface& surface, Button& button, Mackie::Led } } +void +MackieControlProtocol::build_button_map () +{ + button_map.insert (pair (Button::Io, ButtonHandlers (&MackieControlProtocol::io_press, &MackieControlProtocol::io_release))); +} + void MackieControlProtocol::handle_button_event (Surface& surface, Button& button, ButtonState bs) { @@ -999,134 +1012,6 @@ MackieControlProtocol::handle_button_event (Surface& surface, Button& button, Bu } break; - case 0x36: // F1 - switch (bs) { - case press: ls = F1_press (button); break; - case release: ls = F1_release (button); break; - case neither: break; - } - break; - - case 0x37: // F2 - switch (bs) { - case press: ls = F2_press (button); break; - case release: ls = F2_release (button); break; - case neither: break; - } - break; - - case 0x38: // F3 - switch (bs) { - case press: ls = F3_press (button); break; - case release: ls = F3_release (button); break; - case neither: break; - } - break; - - case 0x39: // F4 - switch (bs) { - case press: ls = F4_press (button); break; - case release: ls = F4_release (button); break; - case neither: break; - } - break; - - case 0x3a: // F5 - switch (bs) { - case press: ls = F5_press (button); break; - case release: ls = F5_release (button); break; - case neither: break; - } - break; - - case 0x3b: // F6 - switch (bs) { - case press: ls = F6_press (button); break; - case release: ls = F6_release (button); break; - case neither: break; - } - break; - - case 0x3c: // F7 - switch (bs) { - case press: ls = F7_press (button); break; - case release: ls = F7_release (button); break; - case neither: break; - } - break; - - case 0x3d: // F8 - switch (bs) { - case press: ls = F8_press (button); break; - case release: ls = F8_release (button); break; - case neither: break; - } - break; - - case 0x3e: // F9 - switch (bs) { - case press: ls = F9_press (button); break; - case release: ls = F9_release (button); break; - case neither: break; - } - break; - - case 0x3f: // F10 - switch (bs) { - case press: ls = F10_press (button); break; - case release: ls = F10_release (button); break; - case neither: break; - } - break; - - case 0x40: // F11 - switch (bs) { - case press: ls = F11_press (button); break; - case release: ls = F11_release (button); break; - case neither: break; - } - break; - - case 0x41: // F12 - switch (bs) { - case press: ls = F12_press (button); break; - case release: ls = F12_release (button); break; - case neither: break; - } - break; - - case 0x42: // F13 - switch (bs) { - case press: ls = F13_press (button); break; - case release: ls = F13_release (button); break; - case neither: break; - } - break; - - case 0x43: // F14 - switch (bs) { - case press: ls = F14_press (button); break; - case release: ls = F14_release (button); break; - case neither: break; - } - break; - - case 0x44: // F15 - switch (bs) { - case press: ls = F15_press (button); break; - case release: ls = F15_release (button); break; - case neither: break; - } - break; - - case 0x45: // F16 - switch (bs) { - case press: ls = F16_press (button); break; - case release: ls = F16_release (button); break; - case neither: break; - } - break; - case 0x46: // shift switch (bs) { case press: ls = shift_press (button); break; @@ -1399,6 +1284,134 @@ MackieControlProtocol::handle_button_event (Surface& surface, Button& button, Bu } break; + case Button::F1: + switch (bs) { + case press: ls = F1_press (button); break; + case release: ls = F1_release (button); break; + case neither: break; + } + break; + + case Button::F2: + switch (bs) { + case press: ls = F2_press (button); break; + case release: ls = F2_release (button); break; + case neither: break; + } + break; + + case Button::F3: + switch (bs) { + case press: ls = F3_press (button); break; + case release: ls = F3_release (button); break; + case neither: break; + } + break; + + case Button::F4: + switch (bs) { + case press: ls = F4_press (button); break; + case release: ls = F4_release (button); break; + case neither: break; + } + break; + + case Button::F5: + switch (bs) { + case press: ls = F5_press (button); break; + case release: ls = F5_release (button); break; + case neither: break; + } + break; + + case Button::F6: + switch (bs) { + case press: ls = F6_press (button); break; + case release: ls = F6_release (button); break; + case neither: break; + } + break; + + case Button::F7: + switch (bs) { + case press: ls = F7_press (button); break; + case release: ls = F7_release (button); break; + case neither: break; + } + break; + + case Button::F8: + switch (bs) { + case press: ls = F8_press (button); break; + case release: ls = F8_release (button); break; + case neither: break; + } + break; + + case Button::F9: + switch (bs) { + case press: ls = F9_press (button); break; + case release: ls = F9_release (button); break; + case neither: break; + } + break; + + case Button::F10: + switch (bs) { + case press: ls = F10_press (button); break; + case release: ls = F10_release (button); break; + case neither: break; + } + break; + + case Button::F11: + switch (bs) { + case press: ls = F11_press (button); break; + case release: ls = F11_release (button); break; + case neither: break; + } + break; + + case Button::F12: + switch (bs) { + case press: ls = F12_press (button); break; + case release: ls = F12_release (button); break; + case neither: break; + } + break; + + case Button::F13: + switch (bs) { + case press: ls = F13_press (button); break; + case release: ls = F13_release (button); break; + case neither: break; + } + break; + + case Button::F14: + switch (bs) { + case press: ls = F14_press (button); break; + case release: ls = F14_release (button); break; + case neither: break; + } + break; + + case Button::F15: + switch (bs) { + case press: ls = F15_press (button); break; + case release: ls = F15_release (button); break; + case neither: break; + } + break; + + case Button::F16: + switch (bs) { + case press: ls = F16_press (button); break; + case release: ls = F16_release (button); break; + case neither: break; + } + break; + } update_led (surface, button, ls); diff --git a/libs/surfaces/mackie/mackie_control_protocol.h b/libs/surfaces/mackie/mackie_control_protocol.h index 0861c6fbb8..ab971e1b78 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.h +++ b/libs/surfaces/mackie/mackie_control_protocol.h @@ -20,6 +20,7 @@ #define ardour_mackie_control_protocol_h #include +#include #include #include @@ -48,6 +49,7 @@ namespace Mackie { class Surface; class Control; class SurfacePort; + class Button; } /** @@ -377,6 +379,22 @@ class MackieControlProtocol bool midi_input_handler (Glib::IOCondition ioc, MIDI::Port* port); void clear_ports (); + struct ButtonHandlers { + Mackie::LedState (MackieControlProtocol::*press) (Mackie::Button&); + Mackie::LedState (MackieControlProtocol::*release) (Mackie::Button&); + + ButtonHandlers (Mackie::LedState (MackieControlProtocol::*p) (Mackie::Button&), + Mackie::LedState (MackieControlProtocol::*r) (Mackie::Button&)) + : press (p) + , release (r) {} + }; + + typedef std::map ButtonMap; + ButtonMap button_map; + + void build_button_map (); }; + + #endif // ardour_mackie_control_protocol_h diff --git a/libs/surfaces/mackie/mcp_buttons.cc b/libs/surfaces/mackie/mcp_buttons.cc index 5699c9ff03..09848577f6 100644 --- a/libs/surfaces/mackie/mcp_buttons.cc +++ b/libs/surfaces/mackie/mcp_buttons.cc @@ -19,6 +19,7 @@ #include "pbd/memento_command.h" +#include "ardour/debug.h" #include "ardour/session.h" #include "ardour/route.h" #include "ardour/location.h" @@ -35,6 +36,7 @@ using namespace Mackie; using namespace ARDOUR; +using namespace PBD; using std::string; LedState @@ -92,6 +94,9 @@ MackieControlProtocol::left_press (Button &) Sorted sorted = get_sorted_routes(); uint32_t strip_cnt = n_strips (); + DEBUG_TRACE (DEBUG::MackieControl, string_compose ("bank left with current initial = %1 nstrips = %2 tracks/busses = %3\n", + _current_initial_bank, strip_cnt, sorted.size())); + if (sorted.size() > strip_cnt) { int new_initial = _current_initial_bank - strip_cnt; if (new_initial < 0) { @@ -120,6 +125,9 @@ MackieControlProtocol::right_press (Button &) Sorted sorted = get_sorted_routes(); uint32_t strip_cnt = n_strips(); + DEBUG_TRACE (DEBUG::MackieControl, string_compose ("bank right with current initial = %1 nstrips = %2 tracks/busses = %3\n", + _current_initial_bank, strip_cnt, sorted.size())); + if (sorted.size() > strip_cnt) { uint32_t delta = sorted.size() - (strip_cnt + _current_initial_bank);