Added dbus config
[gregoa/zavai.git] / src / input.vala
index 81a07b24112cbb8f976cffb5097074bf88bb649b..8527ac101b3a6f97320bea22d402bd9742b97631 100644 (file)
@@ -48,14 +48,19 @@ public abstract class DevInput : zavai.Service
     {
                if (condition != IOCondition.IN) return true;
 
-        stderr.printf("GOT INPUT ON %s %d\n", device, source.unix_get_fd());
+        //stderr.printf("GOT INPUT ON %s %d\n", device, source.unix_get_fd());
         char[] buf = new char[sizeof(LinuxInput.Event)];
                size_t count_read;
-               source.read_chars(buf, out count_read);
-        stderr.printf("READ %zu chars\n", count_read);
+               try {
+                       source.read_chars(buf, out count_read);
+               } catch (Error e) {
+                       zavai.log.error("Reading from " + device + ": " + e.message);
+                       return true;
+               }
+        //stderr.printf("READ %zu chars\n", count_read);
 
                LinuxInput.Event* ie = (LinuxInput.Event*)buf;
-        stderr.printf("INPUT EVENT time %lu.%lu type %hu code %hu val %d\n", (ulong)ie->time.tv_sec, ie->time.tv_usec, ie->type, ie->code, ie->val);
+        //stderr.printf("INPUT EVENT time %lu.%lu type %hu code %hu val %d\n", (ulong)ie->time.tv_sec, ie->time.tv_usec, ie->type, ie->code, ie->val);
 
         /*
         ts1, ts2, type, code, value = struct.unpack("LLHHI", buf)
@@ -90,8 +95,13 @@ public abstract class DevInput : zavai.Service
             close_fd();
 
         // Open the device and listed to it using the GObject main loop
+               zavai.log.info("Opening device " + device);
         fd = new IOChannel.file(device, "r");
-               fd.set_encoding(null);
+               try {
+                       fd.set_encoding(null);
+               } catch (Error e) {
+                       zavai.log.error("Setting encoding to null on " + device + ": " + e.message);
+               }
                fd.set_buffered(false);
         fd_watch = fd.add_watch(IOCondition.IN, on_input_data);
 
@@ -115,7 +125,7 @@ public abstract class DevInput : zavai.Service
 
 public class PowerButton : DevInput
 {
-       public signal void power_button(bool pressed);
+       public signal void power_button(Posix.timeval* time, bool pressed);
 
     public PowerButton()
     {
@@ -133,7 +143,7 @@ public class PowerButton : DevInput
                if (ev->type == LinuxInput.Type.KEY && 
                        ev->code == LinuxInput.Key.POWER)
                {
-                       power_button(ev->val == 0 ? false : true);
+                       power_button(&(ev->time), ev->val == 0 ? false : true);
                }
                return true;
        }
@@ -280,6 +290,7 @@ class Audio:
             raise RuntimeError("Setting mixer failed")
 */
 
+
 public PowerButton power_button = null;
 
 public void init()