/* * app_aux - AUX button interaction * * Copyright (C) 2010 Enrico Zini * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ using GLib; namespace zavai { namespace ui { namespace aux { public class AUX: zavai.Service { protected Omhacks.Led auxled; protected bool has_aux; public AUX() { Object(name: "ui.aux"); has_aux = (auxled.init("gta02-aux:red") == 0); if (has_aux) { zavai.log.warning("aux: can notify alarm triggers"); 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("aux: no way to notify alarm triggers"); } } public void on_alarm_trigger(clock.AlarmTriggerInfo info) { zavai.log.debug("Start blinking"); auxled.brightness = 256; // FIXME: is there a better way? I hope there is a better way. Please // tell me there is a better way. var trig = "timer"; for (int i = 0; ; ++i) { auxled.trigger[i] = (char)trig[i]; if (trig[i] == 0) break; } auxled.delay_on = 200; auxled.delay_off = 300; auxled.set(); } public void on_alarm_done(clock.AlarmTriggerInfo info) { zavai.log.debug("Stop blinking"); var trig = "none"; for (int i = 0; ; ++i) { auxled.trigger[i] = (char)trig[i]; if (trig[i] == 0) break; } auxled.brightness = 0; auxled.set(); } } public AUX aux = null; public void init() { aux = new AUX(); } } } }