public class Power : zavai.Resource, Object
{
public dynamic DBus.Object usage;
+ public dynamic DBus.Object gsm_device;
public bool screen_locked;
private int screen_lock_fd;
// Timestamp of the past power button pressed even (0 if the button has
"org.freesmartphone.ousaged",
"/org/freesmartphone/Usage",
"org.freesmartphone.Usage");
+ gsm_device = zavai.registry.sbus.get_object(
+ "org.freesmartphone.ogsmd",
+ "/org/freesmartphone/GSM/Device",
+ "org.freesmartphone.Resource");
zavai.input.power_button.power_button += on_power_button;
zavai.input.power_button.request("zavai.ui.powerbutton.power");
public void do_suspend()
{
- try {
- usage.Suspend();
- } catch (Error e) {
- zavai.log.error("Suspending phone: " + e.message);
+ bool done = false;
+ if (!done)
+ {
+ try {
+ usage.Suspend();
+ done = true;
+ } catch (Error e) {
+ zavai.log.error("Suspending phone with ousaged: " + e.message);
+ }
+ }
+ if (!done)
+ {
+ // From http://lindi.iki.fi/lindi/openmoko/susp
+ try {
+ gsm_device.Suspend();
+ } catch (Error e) {
+ zavai.log.error("Cannot tell GSM to suspend (but never mind): " + e.message);
+ }
+ // amixer -q -d sset "Amp Spk" mute
+ // sync;sync;sync
+ // echo 0 | sudo tee /proc/sysrq-trigger
+ FileStream state = FileStream.open("/sys/power/state", "w");
+ if (state != null)
+ {
+ state.puts("mem\n");
+ }
+ // amixer -q -d sset "Amp Spk" unmute
+ try {
+ gsm_device.Resume();
+ } catch (Error e) {
+ zavai.log.error("Cannot tell GSM to resume (but never mind): " + e.message);
+ }
+ done = true;
}
}
public void do_shutdown()
protected void update_icon()
{
string name = zavai.config.icondir + "/battery/";
- bool charging = false;
Dkp.DeviceState state = (Dkp.DeviceState)battery.state;
stderr.printf("New battery status: %s\n", Dkp.Device.state_to_text(state));
// Turn the backlight on and then let it fade off
public void wiggle()
{
- // There must be a better method
try {
zavai.app.run_script(zavai.config.homedir + "/display wiggle");
} catch (Error e) {