diff --git a/debian/changelog b/debian/changelog index b508886..26bddd9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,9 @@ usb-moded (0.60) unstable; urgency=low * Add dedicated charger tracking + * Config file merging support + * Add basic version of usb_moded_util to not having to remember dbus-send commands + * Fix small bug in the android mode setting -- Philippe De Swert Fri, 10 May 2013 15:56:03 +0300 diff --git a/src/Makefile.am b/src/Makefile.am index 9e60a6f..c62fefe 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,4 +1,5 @@ -sbin_PROGRAMS = usb_moded +sbin_PROGRAMS = usb_moded \ + usb_moded_util usb_moded_CPPFLAGS = \ $(USB_MODED_CFLAGS) @@ -86,4 +87,15 @@ usb_moded_SOURCES += \ usb_moded-dyn-config.c \ usb_moded-dyn-config.h endif + +usb_moded_util_CPPFLAGS = \ + $(USB_MODED_CFLAGS) + +usb_moded_util_LDFLAGS = \ + -Wl,--as-needed + +usb_moded_util_LDADD = \ + $(USB_MODED_LIBS) +usb_moded_util_SOURCES = \ + usb_moded-util.c diff --git a/src/usb_moded-util.c b/src/usb_moded-util.c new file mode 100644 index 0000000..a4a72a9 --- /dev/null +++ b/src/usb_moded-util.c @@ -0,0 +1,186 @@ +/** + @file usb_moded-util.c + + Copyright (C) 2013 Jolla. All rights reserved. + + @author: Philippe De Swert + + This program is free software; you can redistribute it and/or + modify it under the terms of the Lesser GNU General Public License + version 2 as published by the Free Software Foundation. + + 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 Lesser GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + 02110-1301 USA +*/ + + +#include +#include +#include +#include +#include + +#include "usb_moded-dbus.h" + +DBusError error; +DBusConnection *conn = 0; + +static int query_mode (void) +{ + DBusMessage *req = NULL, *reply = NULL; + char *ret = 0; + + if ((req = dbus_message_new_method_call(USB_MODE_SERVICE, USB_MODE_OBJECT, USB_MODE_INTERFACE, USB_MODE_STATE_REQUEST)) != NULL) + { + if ((reply = dbus_connection_send_with_reply_and_block(conn, req, -1, NULL)) != NULL) + { + dbus_message_get_args(reply, NULL, DBUS_TYPE_STRING, &ret, DBUS_TYPE_INVALID); + dbus_message_unref(reply); + } + dbus_message_unref(req); + } + + if(ret) + { + printf("mode = %s\n", ret); + return 0; + } + + /* not everything went as planned, return error */ + return 1; +} + +static int get_modelist (void) +{ + DBusMessage *req = NULL, *reply = NULL; + char *ret = 0; + + if ((req = dbus_message_new_method_call(USB_MODE_SERVICE, USB_MODE_OBJECT, USB_MODE_INTERFACE, USB_MODE_LIST)) != NULL) + { + if ((reply = dbus_connection_send_with_reply_and_block(conn, req, -1, NULL)) != NULL) + { + dbus_message_get_args(reply, NULL, DBUS_TYPE_STRING, &ret, DBUS_TYPE_INVALID); + dbus_message_unref(reply); + } + dbus_message_unref(req); + } + + if(ret) + { + printf("modes supported are = %s\n", ret); + return 0; + } + + /* not everything went as planned, return error */ + return 1; +} + +static int get_mode_configured (void) +{ + DBusMessage *req = NULL, *reply = NULL; + char *ret = 0; + + if ((req = dbus_message_new_method_call(USB_MODE_SERVICE, USB_MODE_OBJECT, USB_MODE_INTERFACE, USB_MODE_CONFIG_GET)) != NULL) + { + if ((reply = dbus_connection_send_with_reply_and_block(conn, req, -1, NULL)) != NULL) + { + dbus_message_get_args(reply, NULL, DBUS_TYPE_STRING, &ret, DBUS_TYPE_INVALID); + dbus_message_unref(reply); + } + dbus_message_unref(req); + } + + if(ret) + { + printf("On USB connection usb_moded will set the following mode based on the configuration = %s\n", ret); + return 0; + } + + /* not everything went as planned, return error */ + return 1; +} + +int main (int argc, char *argv[]) +{ + int query = 0, network = 0, setmode = 0, config = 0; + int modelist = 0, mode_configured = 0; + int res = 1, opt; + + if(argc == 1) + { + fprintf(stderr, "No options given, try -h for more information\n"); + exit(1); + } + + while ((opt = getopt(argc, argv, "cdhmnqs")) != -1) + { + switch (opt) { + case 'c': + config = 1; + break; + case 'd': + mode_configured = 1; + break; + case 'm': + modelist = 1; + break; + case 'n': + network = 1; + break; + case 'q': + query = 1; + break; + case 's': + setmode = 1; + break; + case 'h': + default: + fprintf(stderr, "\nUsage: %s -