+++ /dev/null
-/*
- * app_aux - AUX button interaction
- *
- * Copyright (C) 2010 Enrico Zini <enrico@enricozini.org>
- *
- * 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;
-
- protected weak clock.AlarmTriggerInfo current_alarm = null;
-
- 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");
- }
-
- // Listen to the button via X
- input.hotkeys.hotkey += on_auxbutton;
- input.hotkeys.grab(zavai.config.aux_button_keycode, 0, false);
- input.hotkeys.request("auxbutton");
- }
-
- protected bool on_auxbutton(uint keycode, ulong time, bool pressed)
- {
- if (keycode == zavai.config.aux_button_keycode)
- {
- if (pressed)
- {
- zavai.log.debug("AUX button pressed");
- if (current_alarm != null)
- {
- zavai.log.debug("HASCA");
- clock.alarm_trigger_queue.ack(current_alarm);
- }
- }
- else
- zavai.log.debug("AUX button released");
- return true;
- }
- return false;
- }
-
- 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();
- current_alarm = info;
- }
-
- 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();
- current_alarm = null;
- }
-}
-
-public AUX aux = null;
-
-public void init()
-{
- aux = new AUX();
-}
-
-}
-}
-}