#include <vector>
#include <sys/time.h>
-#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 <glibmm/thread.h>
-extern BaseUI::RequestType LEDChange;
-extern BaseUI::RequestType Print;
-extern BaseUI::RequestType SetCurrentTrack;
+#include <ardour/types.h>
-struct TranzportRequest : public BaseUI::BaseRequestObject {
- int led;
- int row;
- int col;
- char* text;
- ARDOUR::Route* track;
-};
+#include <control_protocol/control_protocol.h>
-class TranzportControlProtocol : public ARDOUR::ControlProtocol, public AbstractUI<TranzportRequest>
+class TranzportControlProtocol : public ARDOUR::ControlProtocol
{
public:
TranzportControlProtocol (ARDOUR::Session&);
int set_active (bool yn);
- bool caller_is_ui_thread();
+ static bool probe ();
+
+ XMLNode& get_state ();
+ int set_state (const XMLNode&);
private:
static const int VENDORID = 0x165b;
uint8_t _datawheel;
uint8_t _device_status;
usb_dev_handle* udev;
- ARDOUR::Route* current_route;
+
uint32_t current_track_id;
WheelMode wheel_mode;
WheelShiftMode wheel_shift_mode;
DisplayMode display_mode;
+ ARDOUR::gain_t gain_fraction;
- void do_request (TranzportRequest*);
-
- PBD::Lock update_lock;
+ Glib::Mutex update_lock;
char current_screen[2][20];
char pending_screen[2][20];
bool lights[7];
uint32_t last_mins;
uint32_t last_secs;
uint32_t last_frames;
- jack_nframes_t last_where;
+ nframes_t last_where;
ARDOUR::gain_t last_track_gain;
uint32_t last_meter_fill;
struct timeval last_wheel_motion;
int last_wheel_dir;
- PBD::Lock io_lock;
+ Glib::Mutex io_lock;
int open ();
int read (uint32_t timeout_override = 0);