#include <unistd.h>
#include <fcntl.h>
-#include <i18n.h>
-#include <pbd/xml++.h>
-#include <pbd/error.h>
#include <glibmm.h>
+#include "pbd/pthread_utils.h"
+#include "pbd/xml++.h"
+#include "pbd/error.h"
+
+#include "ardour/debug.h"
+
#include "powermate.h"
+#include "i18n.h"
using namespace ARDOUR;
using namespace std;
int find_powermate(int mode)
{
- char devname[256];
- int i, r;
-
- for(i=0; i<NUM_EVENT_DEVICES; i++){
- sprintf(devname, "/dev/input/event%d", i);
- r = open_powermate(devname, mode);
- if(r >= 0)
- return r;
- }
-
- return -1;
+ char devname[256];
+ int i, r;
+
+ for (i = 0; i < NUM_EVENT_DEVICES; i++) {
+ sprintf (devname, "/dev/input/event%d", i);
+ r = open_powermate (devname, mode);
+ if (r >= 0) {
+ return r;
+ }
+ }
+
+ return -1;
}
PowermateControlProtocol::PowermateControlProtocol (Session& s)
int port = find_powermate( O_RDONLY );
if (port < 0) {
- printf ("powermate: Opening of powermate failed - %s\n", strerror(errno));
+ if (errno == ENOENT) {
+ DEBUG_TRACE (DEBUG::ControlProtocols, "Powermate device not found; perhaps you have no powermate connected");
+ } else {
+ DEBUG_TRACE (DEBUG::ControlProtocols, string_compose ("powermate: Opening of powermate failed - %1\n", strerror(errno)));
+ }
return false;
}
return -1;
}
- if (pthread_create (&mThread, 0, SerialThreadEntry, this) == 0) {
+ if (pthread_create_and_store ("Powermate", &mThread, SerialThreadEntry, this) == 0) {
_active = true;
} else {
return -1;
}
int
-PowermateControlProtocol::set_state (const XMLNode& /*node*/)
+PowermateControlProtocol::set_state (const XMLNode& /*node*/, int /*version*/)
{
return 0;
}
void*
PowermateControlProtocol::SerialThreadEntry (void* arg)
{
+ static_cast<PowermateControlProtocol*>(arg)->register_thread ("Powermate");
return static_cast<PowermateControlProtocol*>(arg)->SerialThread ();
}