+ return 0;
+}
+
+static int dbus_queue = 0;
+
+void set_dbus_retval(char *buffer, unsigned int n, int item);
+
+DBusConnection *connection;
+DBusError error;
+DBusMessage *message;
+DBusMessageIter iter;
+DBusBusType type;
+int message_type;
+DBusMessage *reply;
+
+void dbus_exit_app_view()
+{
+ //not needed in harmattan - swipe down or away and close (although it doesn't seem to be reliable to swipe)
+
+
+ //dbus-send --type=signal --session /com/nokia/hildon_desktop .
+
+// type = DBUS_BUS_SESSION;
+// //message_type = DBUS_MESSAGE_TYPE_SIGNAL;
+// dbus_error_init (&error);
+// connection = dbus_bus_get (type, &error);
+// message = dbus_message_new_signal ("/com/nokia/hildon_desktop", "com.nokia.hildon_desktop", "exit_app_view");
+// // send the message and flush the connection
+// if (!dbus_connection_send(connection, message, NULL)) {
+// fprintf(stderr, "Out Of Memory!\n");
+// exit(1);
+// }
+// dbus_connection_flush(connection);
+//
+// // free the message
+// dbus_message_unref(message);
+
+}
+
+void get_dbus_stuff(char *buffer,unsigned int intMax_length, int item)
+{
+ char method[128];
+ char path[128];
+ char dest[128];
+ char *args = "";
+ char *args2 = "";
+ if (dbus_queue > 10)
+ {
+ fprintf (stderr, "too much dbus queuing\n");
+ exit(1);
+// set_dbus_retval(buffer, intMax_length, item);
+// return;
+ }
+ dbus_queue++;//prevent a queue from forming on these requests...
+//fetch data from dbus, store in here as last_cell_radio_dbm
+//return into buffer
+
+ type = DBUS_BUS_SYSTEM;
+ message_type = DBUS_MESSAGE_TYPE_METHOD_CALL;
+// print_reply = TRUE;
+// print_reply_literal = FALSE;
+ int reply_timeout_ms = 5000;
+ dbus_error_init (&error);
+ connection = dbus_bus_get (type, &error);
+ if (connection == NULL)
+ {
+ fprintf (stderr, "Failed to open connection to %s message bus: %s\n",
+ (type == DBUS_BUS_SYSTEM) ? "system" : "session",
+ error.message);
+ dbus_error_free (&error);
+ exit (1);
+ }
+ switch(item){
+ case DBUS_CELL_DBM:
+ snprintf(method,127,"Get");
+ args = "com.nokia.csd.CSNet.SignalStrength";
+ args2 = "SignalDecibels";
+ snprintf(path,127,"/com/nokia/csd/csnet");
+ snprintf(dest,127,"com.nokia.csd.CSNet"); //service name
+ message = dbus_message_new_method_call (dest,path,"org.freedesktop.DBus.Properties",method);//dest,path,interface,method
+ dbus_message_set_auto_start (message, TRUE);
+ if (!dbus_message_append_args(message,
+ DBUS_TYPE_STRING, &args,
+ DBUS_TYPE_STRING, &args2,
+ DBUS_TYPE_INVALID))
+ fprintf (stderr, "OOM appending args\n");
+ //dbus_message_iter_init_append(message, &iter);
+ //if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &args))
+ // fprintf (stderr, "OOM appending args\n");
+ break;
+ case DBUS_CELL_PERCENT:
+ snprintf(method,127,"Get");
+ args = "com.nokia.csd.CSNet.SignalStrength";
+ args2 = "SignalPercent";
+ snprintf(path,127,"/com/nokia/csd/csnet");
+ snprintf(dest,127,"com.nokia.csd.CSNet"); //service name
+ message = dbus_message_new_method_call (dest,path,"org.freedesktop.DBus.Properties",method);//dest,path,interface,method
+ dbus_message_set_auto_start (message, TRUE);
+ if (!dbus_message_append_args(message,
+ DBUS_TYPE_STRING, &args,
+ DBUS_TYPE_STRING, &args2,
+ DBUS_TYPE_INVALID))
+ fprintf (stderr, "OOM appending args\n");
+ //dbus_message_iter_init_append(message, &iter);
+ //if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &args))
+ // fprintf (stderr, "OOM appending args\n");
+ break;
+ case DBUS_HAL_BATTERY_CHRG_STATUS:
+ // 'full' 'on' 'off'
+ snprintf(method,127,"GetProperty");
+ args = "maemo.rechargeable.charging_status";
+ snprintf(path,127,"/org/freedesktop/Hal/devices/bme");
+ snprintf(dest,127,"org.freedesktop.Hal");
+ message = dbus_message_new_method_call (dest,path,"org.freedesktop.Hal.Device",method);
+ dbus_message_set_auto_start (message, TRUE);
+ dbus_message_iter_init_append(message, &iter);
+ if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &args))
+ fprintf (stderr, "OOM appending args\n");
+ break;
+ case DBUS_HAL_BATTERY_PERCENT:
+ // '96'
+ snprintf(method,127,"GetProperty");
+ args = "battery.charge_level.percentage";
+ snprintf(path,127,"/org/freedesktop/Hal/devices/bme");
+ snprintf(dest,127,"org.freedesktop.Hal");
+ message = dbus_message_new_method_call (dest,path,"org.freedesktop.Hal.Device",method);
+ dbus_message_set_auto_start (message, TRUE);
+ dbus_message_iter_init_append(message, &iter);
+ if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &args))
+ fprintf (stderr, "OOM appending args\n");
+ break;
+ case DBUS_HAL_BATTERY_VOLTS_CURRENT:
+ // '3600' - '4200'
+ snprintf(method,127,"GetProperty");
+ args = "battery.voltage.current"; //battery.reporting.current gets battery mA, not charge/discharge rate
+ snprintf(path,127,"/org/freedesktop/Hal/devices/bme");
+ snprintf(dest,127,"org.freedesktop.Hal");
+ message = dbus_message_new_method_call (dest,path,"org.freedesktop.Hal.Device",method);
+ dbus_message_set_auto_start (message, TRUE);
+ dbus_message_iter_init_append(message, &iter);
+ if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &args))
+ fprintf (stderr, "OOM appending args\n");
+ break;
+ default:
+ fprintf (stderr, "invalid item type in get_dbus_stuff");
+ break;
+ }
+ if (message == NULL)
+ {
+ fprintf (stderr, "Couldn't allocate D-Bus message\n");
+ exit (1);
+ }
+ if (!dbus_message_set_destination (message, dest))
+ {
+ fprintf (stderr, "Not enough memory\n");
+ exit (1);