summaryrefslogtreecommitdiff
path: root/libs/surfaces/tranzport
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-05-23 19:54:52 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-05-23 19:54:52 +0000
commit2fba6d0925307abd11be9d8f7a8d2722a2b6ccbd (patch)
tree485eed909963636b010d5f1e24527a6a4b377a42 /libs/surfaces/tranzport
parenta222c19737fa2d3fce3971350c1a18906635e29a (diff)
breakout control protocol code into LGPL library; fix panner buttons even more than nick did, plus some other bits and pieces
git-svn-id: svn://localhost/trunk/ardour2@522 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces/tranzport')
-rw-r--r--libs/surfaces/tranzport/SConscript7
-rw-r--r--libs/surfaces/tranzport/interface.cc9
-rw-r--r--libs/surfaces/tranzport/tranzport_control_protocol.cc43
-rw-r--r--libs/surfaces/tranzport/tranzport_control_protocol.h22
4 files changed, 40 insertions, 41 deletions
diff --git a/libs/surfaces/tranzport/SConscript b/libs/surfaces/tranzport/SConscript
index 8c92831215..98ecf09d41 100644
--- a/libs/surfaces/tranzport/SConscript
+++ b/libs/surfaces/tranzport/SConscript
@@ -32,12 +32,13 @@ tranzport.Append(CXXFLAGS="-DLOCALEDIR=\\\""+final_prefix+"/share/locale\\\"")
tranzport.Merge ([
libraries['ardour'],
+ libraries['ardour_cp'],
libraries['sigc2'],
libraries['pbd3'],
libraries['midi++2'],
- libraries['xml'],
- libraries['usb']
- ])
+ libraries['xml'],
+ libraries['usb']
+ ])
libardour_tranzport = tranzport.SharedLibrary('ardour_tranzport', tranzport_files)
diff --git a/libs/surfaces/tranzport/interface.cc b/libs/surfaces/tranzport/interface.cc
index bcefd100c3..20f38dce08 100644
--- a/libs/surfaces/tranzport/interface.cc
+++ b/libs/surfaces/tranzport/interface.cc
@@ -1,4 +1,4 @@
-#include <ardour/control_protocol.h>
+#include "control_protocol.h"
#include "tranzport_control_protocol.h"
@@ -24,12 +24,19 @@ delete_tranzport_protocol (ControlProtocolDescriptor* descriptor, ControlProtoco
delete cp;
}
+bool
+probe_tranzport_protocol (ControlProtocolDescriptor* descriptor)
+{
+ return TranzportControlProtocol::probe();
+}
+
static ControlProtocolDescriptor tranzport_descriptor = {
name : "Tranzport",
id : "uri://ardour.org/surfaces/tranzport:0",
ptr : 0,
module : 0,
mandatory : 0,
+ probe : probe_tranzport_protocol,
initialize : new_tranzport_protocol,
destroy : delete_tranzport_protocol
};
diff --git a/libs/surfaces/tranzport/tranzport_control_protocol.cc b/libs/surfaces/tranzport/tranzport_control_protocol.cc
index 5a4c4fc385..61c10440ff 100644
--- a/libs/surfaces/tranzport/tranzport_control_protocol.cc
+++ b/libs/surfaces/tranzport/tranzport_control_protocol.cc
@@ -66,9 +66,7 @@ slider_position_to_gain (double pos)
TranzportControlProtocol::TranzportControlProtocol (Session& s)
- : ControlProtocol (s, X_("Tranzport")),
- AbstractUI<TranzportRequest> (X_("Tranzport"), false)
-
+ : ControlProtocol (s, X_("Tranzport"))
{
/* tranzport controls one track at a time */
@@ -106,6 +104,28 @@ TranzportControlProtocol::~TranzportControlProtocol ()
set_active (false);
}
+bool
+TranzportControlProtocol::probe ()
+{
+ struct usb_bus *bus;
+ struct usb_device *dev;
+
+ usb_init();
+ usb_find_busses();
+ usb_find_devices();
+
+ for (bus = usb_busses; bus; bus = bus->next) {
+
+ for(dev = bus->devices; dev; dev = dev->next) {
+ if (dev->descriptor.idVendor == VENDORID && dev->descriptor.idProduct == PRODUCTID) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+}
+
int
TranzportControlProtocol::set_active (bool yn)
{
@@ -559,7 +579,7 @@ TranzportControlProtocol::monitor_work ()
if ((err = pthread_setschedparam (pthread_self(), SCHED_FIFO, &rtparam)) != 0) {
// do we care? not particularly.
- info << string_compose (_("%1: thread not running with realtime scheduling (%2)"), BaseUI::name(), strerror (errno)) << endmsg;
+ info << string_compose (_("%1: thread not running with realtime scheduling (%2)"), name(), strerror (errno)) << endmsg;
}
pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, 0);
@@ -1554,18 +1574,3 @@ TranzportControlProtocol::print (int row, int col, const char *text)
}
}
-bool
-TranzportControlProtocol::caller_is_ui_thread ()
-{
- return (pthread_self() == thread);
-}
-
-void
-TranzportControlProtocol::do_request (TranzportRequest* req)
-{
- if (req->type == SetCurrentTrack) {
- route_table[0] = req->track;
- }
-
- return;
-}
diff --git a/libs/surfaces/tranzport/tranzport_control_protocol.h b/libs/surfaces/tranzport/tranzport_control_protocol.h
index b24a94577a..0311140f8c 100644
--- a/libs/surfaces/tranzport/tranzport_control_protocol.h
+++ b/libs/surfaces/tranzport/tranzport_control_protocol.h
@@ -7,24 +7,12 @@
#include <pbd/lockmonitor.h>
#include <pthread.h>
#include <usb.h>
-#include <ardour/control_protocol.h>
-#include <ardour/types.h>
-#include <pbd/abstract_ui.h>
+#include <ardour/types.h>
-extern BaseUI::RequestType LEDChange;
-extern BaseUI::RequestType Print;
-extern BaseUI::RequestType SetCurrentTrack;
+#include "control_protocol.h"
-struct TranzportRequest : public BaseUI::BaseRequestObject {
- int led;
- int row;
- int col;
- char* text;
- ARDOUR::Route* track;
-};
-
-class TranzportControlProtocol : public ARDOUR::ControlProtocol, public AbstractUI<TranzportRequest>
+class TranzportControlProtocol : public ARDOUR::ControlProtocol
{
public:
TranzportControlProtocol (ARDOUR::Session&);
@@ -32,7 +20,7 @@ class TranzportControlProtocol : public ARDOUR::ControlProtocol, public Abstract
int set_active (bool yn);
- bool caller_is_ui_thread();
+ static bool probe ();
private:
static const int VENDORID = 0x165b;
@@ -107,8 +95,6 @@ class TranzportControlProtocol : public ARDOUR::ControlProtocol, public Abstract
DisplayMode display_mode;
ARDOUR::gain_t gain_fraction;
- void do_request (TranzportRequest*);
-
PBD::Lock update_lock;
char current_screen[2][20];
char pending_screen[2][20];