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
This commit is contained in:
parent
f387e834fd
commit
261738d01e
|
@ -748,29 +748,36 @@ MackieControlProtocol::notify_transport_state_changed()
|
||||||
update_global_button ("ffwd", session->transport_speed() > 1.0);
|
update_global_button ("ffwd", session->transport_speed() > 1.0);
|
||||||
|
|
||||||
_transport_previously_rolling = session->transport_rolling();
|
_transport_previously_rolling = session->transport_rolling();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MackieControlProtocol::notify_record_state_changed ()
|
MackieControlProtocol::notify_record_state_changed ()
|
||||||
{
|
{
|
||||||
|
/* rec is a tristate */
|
||||||
|
|
||||||
|
|
||||||
Button * rec = reinterpret_cast<Button*> (surfaces.front()->controls_by_name["record"]);
|
Button * rec = reinterpret_cast<Button*> (surfaces.front()->controls_by_name["record"]);
|
||||||
if (rec) {
|
if (rec) {
|
||||||
LedState ls;
|
LedState ls;
|
||||||
|
|
||||||
switch (session->record_status()) {
|
switch (session->record_status()) {
|
||||||
case Session::Disabled:
|
case Session::Disabled:
|
||||||
|
DEBUG_TRACE (DEBUG::MackieControl, "record state changed to disabled, LED off\n");
|
||||||
ls = off;
|
ls = off;
|
||||||
break;
|
break;
|
||||||
case Session::Recording:
|
case Session::Recording:
|
||||||
|
DEBUG_TRACE (DEBUG::MackieControl, "record state changed to recording, LED on\n");
|
||||||
ls = on;
|
ls = on;
|
||||||
break;
|
break;
|
||||||
case Session::Enabled:
|
case Session::Enabled:
|
||||||
|
DEBUG_TRACE (DEBUG::MackieControl, "record state changed to enabled, LED flashing\n");
|
||||||
ls = flashing;
|
ls = flashing;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
surfaces.front()->write (builder.build_led (*rec, ls));
|
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<int,ButtonHandlers> (Button::Io, ButtonHandlers (&MackieControlProtocol::io_press, &MackieControlProtocol::io_release)));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MackieControlProtocol::handle_button_event (Surface& surface, Button& button, ButtonState bs)
|
MackieControlProtocol::handle_button_event (Surface& surface, Button& button, ButtonState bs)
|
||||||
{
|
{
|
||||||
|
@ -999,134 +1012,6 @@ MackieControlProtocol::handle_button_event (Surface& surface, Button& button, Bu
|
||||||
}
|
}
|
||||||
break;
|
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
|
case 0x46: // shift
|
||||||
switch (bs) {
|
switch (bs) {
|
||||||
case press: ls = shift_press (button); break;
|
case press: ls = shift_press (button); break;
|
||||||
|
@ -1399,6 +1284,134 @@ MackieControlProtocol::handle_button_event (Surface& surface, Button& button, Bu
|
||||||
}
|
}
|
||||||
break;
|
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);
|
update_led (surface, button, ls);
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#define ardour_mackie_control_protocol_h
|
#define ardour_mackie_control_protocol_h
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
@ -48,6 +49,7 @@ namespace Mackie {
|
||||||
class Surface;
|
class Surface;
|
||||||
class Control;
|
class Control;
|
||||||
class SurfacePort;
|
class SurfacePort;
|
||||||
|
class Button;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -377,6 +379,22 @@ class MackieControlProtocol
|
||||||
bool midi_input_handler (Glib::IOCondition ioc, MIDI::Port* port);
|
bool midi_input_handler (Glib::IOCondition ioc, MIDI::Port* port);
|
||||||
void clear_ports ();
|
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<int,ButtonHandlers> ButtonMap;
|
||||||
|
ButtonMap button_map;
|
||||||
|
|
||||||
|
void build_button_map ();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif // ardour_mackie_control_protocol_h
|
#endif // ardour_mackie_control_protocol_h
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
#include "pbd/memento_command.h"
|
#include "pbd/memento_command.h"
|
||||||
|
|
||||||
|
#include "ardour/debug.h"
|
||||||
#include "ardour/session.h"
|
#include "ardour/session.h"
|
||||||
#include "ardour/route.h"
|
#include "ardour/route.h"
|
||||||
#include "ardour/location.h"
|
#include "ardour/location.h"
|
||||||
|
@ -35,6 +36,7 @@
|
||||||
|
|
||||||
using namespace Mackie;
|
using namespace Mackie;
|
||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
|
using namespace PBD;
|
||||||
using std::string;
|
using std::string;
|
||||||
|
|
||||||
LedState
|
LedState
|
||||||
|
@ -92,6 +94,9 @@ MackieControlProtocol::left_press (Button &)
|
||||||
Sorted sorted = get_sorted_routes();
|
Sorted sorted = get_sorted_routes();
|
||||||
uint32_t strip_cnt = n_strips ();
|
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) {
|
if (sorted.size() > strip_cnt) {
|
||||||
int new_initial = _current_initial_bank - strip_cnt;
|
int new_initial = _current_initial_bank - strip_cnt;
|
||||||
if (new_initial < 0) {
|
if (new_initial < 0) {
|
||||||
|
@ -120,6 +125,9 @@ MackieControlProtocol::right_press (Button &)
|
||||||
Sorted sorted = get_sorted_routes();
|
Sorted sorted = get_sorted_routes();
|
||||||
uint32_t strip_cnt = n_strips();
|
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) {
|
if (sorted.size() > strip_cnt) {
|
||||||
uint32_t delta = sorted.size() - (strip_cnt + _current_initial_bank);
|
uint32_t delta = sorted.size() - (strip_cnt + _current_initial_bank);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user