namespace zavai {
namespace audio {
-public class VibratorState
-{
- public string name;
- public int brightness;
- public string trigger;
- public int delay_on;
- public int delay_off;
-
- public VibratorState(string name)
- {
- this.name = name;
- set_constant(0);
- }
-
- public void set_constant(int power)
- {
- brightness = power;
- trigger = "none";
- delay_on = 0;
- delay_off = 0;
- }
-
- public void set_blink(int power, int delay_on=200, int delay_off=300)
- {
- brightness = power;
- trigger = "timer";
- this.delay_on = delay_on;
- this.delay_off = delay_off;
- }
-
- public void to_omhacks(ref Omhacks.Led led)
- {
- led.brightness = brightness;
- Memory.copy(led.trigger, trigger, trigger.size());
- led.delay_on = 200;
- led.delay_off = 300;
- }
-}
-
-public class Vibrator : zavai.Resource, Object
-{
- protected Omhacks.Led vibrator;
-
- protected List<VibratorState> states;
-
- public Vibrator() throws FileError
- {
- if (vibrator.init("neo1973:vibrator") != 0)
- throw new FileError.NOENT("vibrator not found");
-
- states = new List<VibratorState>();
- }
-
- public void turn_off()
- {
- vibrator.brightness = 0;
- Memory.copy(vibrator.trigger, "none", 5);
- vibrator.set();
- }
-
- public void push_state(VibratorState state)
- {
- states.prepend(state);
- state.to_omhacks(ref vibrator);
- vibrator.set();
- }
-
- public void pop_state(string name)
- {
- // Handle empty list
- if (states == null) return;
-
- // Track if the list head changed
- weak List<VibratorState> old_top = states;
-
- // Remove state "name" from the stack
- for (weak List<VibratorState> i = states; i != null; i = i.next)
- if (i.data.name == name)
- {
- states.delete_link(i);
- break;
- }
-
- // If the list head changed, put into action the new top state
- if (states != old_top)
- if (states == null)
- turn_off();
- else {
- // Activate the new top
- states.data.to_omhacks(ref vibrator);
- vibrator.set();
- }
- }
-
- public void shutdown()
- {
- while (states != null)
- states.delete_link(states);
- turn_off();
- }
-}
-
public class Audio: zavai.Service
{
/*
public void on_alarm_trigger(clock.AlarmTriggerInfo info)
{
zavai.log.debug("Make noise for alarm");
- if (vibrator != null)
+ if (zavai.led.vibrator != null)
{
- var state = new VibratorState("alarm");
+ var state = new zavai.led.LedState("alarm");
state.set_blink(255);
- vibrator.push_state(state);
+ zavai.led.vibrator.push_state(state);
}
soundplayer.play(config.ringtone_alarm, true);
}
public void on_alarm_done(clock.AlarmTriggerInfo info)
{
zavai.log.debug("Stop noise for alarm");
- if (vibrator != null)
- vibrator.pop_state("alarm");
+ if (zavai.led.vibrator != null)
+ zavai.led.vibrator.pop_state("alarm");
soundplayer.stop();
}
}
}
}
-public Vibrator vibrator = null;
public Audio audio = null;
public Player musicplayer = null;
public Player soundplayer = null;
public void init()
{
- try {
- vibrator = new Vibrator();
- zavai.registry.register(vibrator);
- } catch (Error e) {
- zavai.log.info("No vibrator found");
- vibrator = null;
- }
audio = new Audio();
musicplayer = new Player();
soundplayer = new Player();