};
call.call_status += on_call_status;
+ sim.incoming_stored_message += (idx) => {
+ stderr.printf("INCOMING STORED MESSAGE %d\n", idx);
+ sms_log_and_delete(idx);
+ };
}
/// Request GPS resource
os.system("ledctrl --off gta02-aux:red");
*/
}
+
+ public async void sms_log_and_delete(int idx)
+ {
+ // Retrieve message info
+ string state, sender, msg;
+ GLib.HashTable<string, GLib.Value?> info;
+ yield sim.retrieve_message(idx, out state, out sender, out msg, out info);
+
+ // Log message info
+ var sms_log = zavai.log.log.start("sms", msg);
+ string sms_info = "state: %s\nsender: %s\nmsg: %s\n".printf(state, sender, msg);
+ info.for_each((pk, pv) => {
+ string k = (string)pk;
+ Value? v = (Value?)pv;
+ sms_info = sms_info + "%s: %s\n".printf(k, v == null ? "(null)" : v.strdup_contents());
+ });
+ sms_log.add(sms_info);
+ zavai.log.log.end(sms_log);
+
+ // Delete message
+ yield sim.delete_message(idx);
+ }
}
public class GPRS: zavai.Service
{
public dynamic DBus.Object device;
public dynamic DBus.Object network;
+ public dynamic DBus.Object sim;
public dynamic DBus.Object call;
public GSMReceive()
"org.freesmartphone.ogsmd",
"/org/freesmartphone/GSM/Device",
"org.freesmartphone.GSM.Network");
+ sim = sbus.get_object(
+ "org.freesmartphone.ogsmd",
+ "/org/freesmartphone/GSM/Device",
+ "org.freesmartphone.GSM.SIM");
call = sbus.get_object(
"org.freesmartphone.ogsmd",
network.Status += on_network_Status;
network.SignalStrength += on_network_SignalStrength;
call.CallStatus += on_call_Status;
+ sim.IncomingStoredMessage += on_sim_IncomingStoredMessage;
}
public void shutdown()
});
}
+ public void on_sim_IncomingStoredMessage(DBus.Object sender, int index)
+ {
+ stderr.printf("INCOMING STORED MESSAGE %d\n", index);
+ dump_message(index);
+ }
+
+ public void dump_message(int index)
+ {
+ string state, sender, msg;
+ GLib.HashTable<string, GLib.Value?> info;
+ sim.RetrieveMessage(index, out state, out sender, out msg, out info);
+ stderr.printf("state: %s\n", state);
+ stderr.printf("sender: %s\n", sender);
+ stderr.printf("msg: %s\n", msg);
+ dump_table(info);
+ }
+
public void on_network_SignalStrength(DBus.Object sender, int strength)
{
stderr.printf("SIGNAL STRENGTH %d\n", strength);
// PLAY here
var gr = new GSMReceive();
+ if (args.length > 1)
+ gr.dump_message(args[1].to_int());
+
Gtk.main();
// zavai.info("Shutting down")