From 2c45a96edc10376ddc5f60fd767a02c0e30a581c Mon Sep 17 00:00:00 2001 From: Enrico Zini Date: Sun, 7 Mar 2010 16:21:19 +0100 Subject: [PATCH] Notify alarms via omhacks vibrator --- src/audio.vala | 59 +++++++++++++++++++++++++++++++++++---------- src/libomhacks.vapi | 19 +++++++++++++++ 2 files changed, 65 insertions(+), 13 deletions(-) diff --git a/src/audio.vala b/src/audio.vala index 6686fa2..805ba49 100644 --- a/src/audio.vala +++ b/src/audio.vala @@ -25,22 +25,54 @@ namespace audio { public class Audio: zavai.Service { - protected dynamic DBus.Object audiodev; - protected dynamic DBus.Object vibdev; + protected Omhacks.Led vibrator; + protected bool has_vibrator; + /* + protected dynamic DBus.Object audiodev; + protected dynamic DBus.Object vibdev; + */ - public Audio() - { - Object(name: "audio"); - audiodev = zavai.registry.sbus.get_object( - "org.freesmartphone.odeviced", - "/org/freesmartphone/Device/Audio", - "org.freesmartphone.Device.Audio"); + public Audio() + { + Object(name: "audio"); + + has_vibrator = (vibrator.init("neo1973:vibrator") == 0); + +/* + audiodev = zavai.registry.sbus.get_object( + "org.freesmartphone.odeviced", + "/org/freesmartphone/Device/Audio", + "org.freesmartphone.Device.Audio"); vibdev = zavai.registry.sbus.get_object( - "org.freesmartphone.odeviced", - "/org/freesmartphone/Device/LED/neo1973_vibrator", - "org.freesmartphone.Device.LED"); - } + "org.freesmartphone.odeviced", + "/org/freesmartphone/Device/LED/neo1973_vibrator", + "org.freesmartphone.Device.LED"); +*/ + if (has_vibrator) + { + clock.alarm_trigger_queue.triggered += on_alarm_trigger; + clock.alarm_trigger_queue.acked += on_alarm_done; + clock.alarm_trigger_queue.canceled += on_alarm_done; + } else { + zavai.log.warning("audio: no way to notify alarm triggers"); + } + } + public void on_alarm_trigger(clock.AlarmTriggerInfo info) + { + vibrator.brightness = 128; + vibrator.delay_on = 200; + vibrator.delay_off = 300; + vibrator.set(); + } + + public void on_alarm_done(clock.AlarmTriggerInfo info) + { + vibrator.brightness = 0; + vibrator.set(); + } + +/* public void notify_alarm(zavai.clock.Alarm a) { // Wiggle screen to turn on backlight @@ -53,6 +85,7 @@ public class Audio: zavai.Service } // TODO: play music? } +*/ } public Audio audio = null; diff --git a/src/libomhacks.vapi b/src/libomhacks.vapi index 10577a7..83434f3 100644 --- a/src/libomhacks.vapi +++ b/src/libomhacks.vapi @@ -1,6 +1,25 @@ [CCode (cprefix="", cheader_filename="omhacks/all.h")] namespace Omhacks { + [CCode (cname = "struct om_led", cheader_filename = "omhacks/led.h", destroy_function = "")] + public struct Led + { + public char name[255]; + public string dir; + public int dir_len; + public int brightness; + public char trigger[255]; + public int delay_on; + public int delay_off; + + [CCode (cname = "om_led_init")] + public int init(string name); + [CCode (cname = "om_led_get")] + public int get(); + [CCode (cname = "om_led_set")] + public int set(); + } + namespace Screen { namespace Brightness -- 2.39.5