diff options
author | Alexander Orlenko <zxteam@gmail.com> | 2010-07-07 12:37:54 +1100 |
---|---|---|
committer | Alexander Orlenko <zxteam@gmail.com> | 2010-07-07 12:37:54 +1100 |
commit | f44269a4c06267541d26c38320b97ba99c7451a3 (patch) | |
tree | 3b9fad8ae1b3b10445b4a54f2183b0f54a30520f | |
parent | d7c8d5ff388be507a591e95d77b2f06a36d45d0b (diff) | |
download | bluez-tools-f44269a4c06267541d26c38320b97ba99c7451a3.tar.gz |
Fixed options description (--help message)
Added common header `bluez-dbus.h` that contain all others headers
Fixed some error messages
Added support to `on/off` boolean values (--set mode)
-rw-r--r-- | src/bt-adapter.c | 33 | ||||
-rw-r--r-- | src/bt-agent.c | 11 | ||||
-rw-r--r-- | src/bt-audio.c | 8 | ||||
-rw-r--r-- | src/bt-device.c | 48 | ||||
-rw-r--r-- | src/bt-input.c | 8 | ||||
-rw-r--r-- | src/bt-monitor.c | 16 | ||||
-rw-r--r-- | src/bt-network.c | 7 | ||||
-rw-r--r-- | src/bt-serial.c | 16 | ||||
-rw-r--r-- | src/lib/bluez-dbus.h | 46 | ||||
-rw-r--r-- | src/lib/dbus-common.c | 2 | ||||
-rw-r--r-- | src/lib/dbus-common.h | 2 | ||||
-rw-r--r-- | src/lib/helpers.c | 3 |
12 files changed, 126 insertions, 74 deletions
diff --git a/src/bt-adapter.c b/src/bt-adapter.c index 73407cf..188ab13 100644 --- a/src/bt-adapter.c +++ b/src/bt-adapter.c @@ -28,10 +28,7 @@ #include <stdlib.h>
#include <glib.h>
-#include "lib/dbus-common.h"
-#include "lib/helpers.h"
-#include "lib/adapter.h"
-#include "lib/manager.h"
+#include "lib/bluez-dbus.h"
static void adapter_device_found(Adapter *adapter, const gchar *address, GHashTable *values, gpointer data)
{
@@ -97,10 +94,22 @@ int main(int argc, char *argv[]) g_type_init();
- context = g_option_context_new("[--set Name Value] - a bluetooth adapter manager");
+ context = g_option_context_new("- a bluetooth adapter manager");
g_option_context_add_main_entries(context, entries, NULL);
g_option_context_set_summary(context, "adapter summary");
- g_option_context_set_description(context, "adapter desc");
+ g_option_context_set_description(context,
+ "Set Options:\n"
+ " --set <Name> <Value>\n"
+ " Where `Name` is adapter property name:\n"
+ " Name\n"
+ " Discoverable\n"
+ " DiscoverableTimeout\n"
+ " Pairable\n"
+ " PairableTimeout\n"
+ " Powered\n"
+ " And `Value` is property value to set\n\n"
+ "adapter desc"
+ );
if (!g_option_context_parse(context, &argc, &argv, &error)) {
g_print("%s: %s\n", g_get_prgname(), error->message);
@@ -118,7 +127,7 @@ int main(int argc, char *argv[]) g_option_context_free(context);
if (!dbus_connect(&error)) {
- g_printerr("Couldn't connect to dbus: %s", error->message);
+ g_printerr("Couldn't connect to dbus: %s\n", error->message);
exit(EXIT_FAILURE);
}
@@ -128,12 +137,12 @@ int main(int argc, char *argv[]) const GPtrArray *adapters_list = manager_get_adapters(manager);
g_assert(adapters_list != NULL);
- g_print("Available adapters:\n");
-
if (adapters_list->len == 0) {
- g_print("no adapters found\n");
+ g_print("No adapters found\n");
+ exit(EXIT_FAILURE);
}
+ g_print("Available adapters:\n");
for (int i = 0; i < adapters_list->len; i++) {
const gchar *adapter_path = g_ptr_array_index(adapters_list, i);
Adapter *adapter = g_object_new(ADAPTER_TYPE, "DBusObjectPath", adapter_path, NULL);
@@ -209,9 +218,9 @@ int main(int argc, char *argv[]) ) {
g_value_init(&v, G_TYPE_BOOLEAN);
- if (g_strcmp0(set_value_arg, "0") == 0 || g_strcmp0(set_value_arg, "FALSE") == 0) {
+ if (g_strcmp0(set_value_arg, "0") == 0 || g_ascii_strcasecmp(set_value_arg, "FALSE") == 0 || g_ascii_strcasecmp(set_value_arg, "OFF") == 0) {
g_value_set_boolean(&v, FALSE);
- } else if (g_strcmp0(set_value_arg, "1") == 0 || g_strcmp0(set_value_arg, "TRUE") == 0) {
+ } else if (g_strcmp0(set_value_arg, "1") == 0 || g_ascii_strcasecmp(set_value_arg, "TRUE") == 0 || g_ascii_strcasecmp(set_value_arg, "ON") == 0) {
g_value_set_boolean(&v, TRUE);
} else {
g_print("Invalid value: %s\n", set_value_arg);
diff --git a/src/bt-agent.c b/src/bt-agent.c index 485f4ea..bd4e291 100644 --- a/src/bt-agent.c +++ b/src/bt-agent.c @@ -28,11 +28,7 @@ #include <stdlib.h>
#include <glib.h>
-#include "lib/dbus-common.h"
-#include "lib/helpers.h"
-#include "lib/adapter.h"
-#include "lib/manager.h"
-#include "lib/agent.h"
+#include "lib/bluez-dbus.h"
static gchar *adapter_arg = NULL;
@@ -62,7 +58,7 @@ int main(int argc, char *argv[]) g_option_context_free(context);
if (!dbus_connect(&error)) {
- g_printerr("Couldn't connect to dbus: %s", error->message);
+ g_printerr("Couldn't connect to dbus: %s\n", error->message);
exit(EXIT_FAILURE);
}
@@ -81,6 +77,9 @@ int main(int argc, char *argv[]) GMainLoop *mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
+ // It is unnecessary...
+ // TODO: Add SIGINT handler (Ctrl+C)
+
adapter_unregister_agent(adapter, DBUS_AGENT_PATH, &error);
exit_if_error(error);
diff --git a/src/bt-audio.c b/src/bt-audio.c index 058f7a4..91fd10e 100644 --- a/src/bt-audio.c +++ b/src/bt-audio.c @@ -28,11 +28,7 @@ #include <stdlib.h> #include <glib.h> -#include "lib/dbus-common.h" -#include "lib/helpers.h" -#include "lib/adapter.h" -#include "lib/device.h" -#include "lib/audio.h" +#include "lib/bluez-dbus.h" static void audio_property_changed(Audio *audio, const gchar *name, const GValue *value, gpointer data) { @@ -82,7 +78,7 @@ int main(int argc, char *argv[]) g_option_context_free(context); if (!dbus_connect(&error)) { - g_printerr("Couldn't connect to dbus: %s", error->message); + g_printerr("Couldn't connect to dbus: %s\n", error->message); exit(EXIT_FAILURE); } diff --git a/src/bt-device.c b/src/bt-device.c index a3fd1e8..5205d98 100644 --- a/src/bt-device.c +++ b/src/bt-device.c @@ -28,11 +28,13 @@ #include <stdlib.h> #include <glib.h> -#include "lib/dbus-common.h" -#include "lib/helpers.h" -#include "lib/adapter.h" -#include "lib/device.h" -#include "lib/agent.h" +#include "lib/bluez-dbus.h" + +static void create_paired_device_done(gpointer data) +{ + GMainLoop *mainloop = data; + g_main_loop_quit(mainloop); +} static gchar *adapter_arg = NULL; static gboolean list_arg = FALSE; @@ -45,12 +47,6 @@ static gchar *set_device_arg = NULL; static gchar *set_name_arg = NULL; static gchar *set_value_arg = NULL; -static void create_paired_device_done(gpointer data) -{ - GMainLoop *mainloop = data; - g_main_loop_quit(mainloop); -} - static GOptionEntry entries[] = { {"adapter", 'a', 0, G_OPTION_ARG_STRING, &adapter_arg, "Adapter name or MAC", "adapter#id"}, {"list", 'l', 0, G_OPTION_ARG_NONE, &list_arg, "List added devices", NULL}, @@ -69,10 +65,19 @@ int main(int argc, char *argv[]) g_type_init(); - context = g_option_context_new("[--set device#id Name Value] - a bluetooth device manager"); + context = g_option_context_new("- a bluetooth device manager"); g_option_context_add_main_entries(context, entries, NULL); g_option_context_set_summary(context, "device summary"); - g_option_context_set_description(context, "device desc"); + g_option_context_set_description(context, + "Set Options:\n" + " --set <device#id> <Name> <Value>\n" + " Where `Name` is device property name:\n" + " Alias\n" + " Trusted\n" + " Blocked\n" + " And `Value` is property value to set\n\n" + "device desc" + ); if (!g_option_context_parse(context, &argc, &argv, &error)) { g_print("%s: %s\n", g_get_prgname(), error->message); @@ -90,7 +95,7 @@ int main(int argc, char *argv[]) g_option_context_free(context); if (!dbus_connect(&error)) { - g_printerr("Couldn't connect to dbus: %s", error->message); + g_printerr("Couldn't connect to dbus: %s\n", error->message); exit(EXIT_FAILURE); } @@ -101,12 +106,12 @@ int main(int argc, char *argv[]) const GPtrArray *devices_list = adapter_get_devices(adapter); g_assert(devices_list != NULL); - g_print("Added devices:\n"); - if (devices_list->len == 0) { - g_print("no devices found\n"); + g_print("No devices found\n"); + exit(EXIT_FAILURE); } + g_print("Added devices:\n"); for (int i = 0; i < devices_list->len; i++) { const gchar *device_path = g_ptr_array_index(devices_list, i); Device *device = g_object_new(DEVICE_TYPE, "DBusObjectPath", device_path, NULL); @@ -120,11 +125,12 @@ int main(int argc, char *argv[]) adapter_create_paired_device_begin(adapter, create_paired_device_done, mainloop, connect_arg, DBUS_AGENT_PATH, "DisplayYesNo"); g_main_loop_run(mainloop); - adapter_create_paired_device_end(adapter, &error); + g_char *created_device = adapter_create_paired_device_end(adapter, &error); exit_if_error(error); g_main_loop_unref(mainloop); g_object_unref(agent); + g_free(created_device); } else if (remove_arg) { Device *device = find_device(adapter, remove_arg, &error); exit_if_error(error); @@ -161,7 +167,7 @@ int main(int argc, char *argv[]) Device *device = find_device(adapter, services_arg, &error); exit_if_error(error); - // TODO: Impl services scan + // TODO: Add services scan g_object_unref(device); } else if (set_arg) { @@ -183,9 +189,9 @@ int main(int argc, char *argv[]) ) { g_value_init(&v, G_TYPE_BOOLEAN); - if (g_strcmp0(set_value_arg, "0") == 0 || g_strcmp0(set_value_arg, "FALSE") == 0) { + if (g_strcmp0(set_value_arg, "0") == 0 || g_ascii_strcasecmp(set_value_arg, "FALSE") == 0 || g_ascii_strcasecmp(set_value_arg, "OFF") == 0) { g_value_set_boolean(&v, FALSE); - } else if (g_strcmp0(set_value_arg, "1") == 0 || g_strcmp0(set_value_arg, "TRUE") == 0) { + } else if (g_strcmp0(set_value_arg, "1") == 0 || g_ascii_strcasecmp(set_value_arg, "TRUE") == 0 || g_ascii_strcasecmp(set_value_arg, "ON") == 0) { g_value_set_boolean(&v, TRUE); } else { g_print("Invalid value: %s\n", set_value_arg); diff --git a/src/bt-input.c b/src/bt-input.c index ba6757e..3d89219 100644 --- a/src/bt-input.c +++ b/src/bt-input.c @@ -28,11 +28,7 @@ #include <stdlib.h> #include <glib.h> -#include "lib/dbus-common.h" -#include "lib/helpers.h" -#include "lib/adapter.h" -#include "lib/device.h" -#include "lib/input.h" +#include "lib/bluez-dbus.h" static void input_property_changed(Input *input, const gchar *name, const GValue *value, gpointer data) { @@ -80,7 +76,7 @@ int main(int argc, char *argv[]) g_option_context_free(context); if (!dbus_connect(&error)) { - g_printerr("Couldn't connect to dbus: %s", error->message); + g_printerr("Couldn't connect to dbus: %s\n", error->message); exit(EXIT_FAILURE); } diff --git a/src/bt-monitor.c b/src/bt-monitor.c index 03bb894..fc3c281 100644 --- a/src/bt-monitor.c +++ b/src/bt-monitor.c @@ -28,12 +28,7 @@ #include <stdlib.h> #include <glib.h> -#include "lib/dbus-common.h" -#include "lib/helpers.h" -#include "lib/adapter.h" -#include "lib/device.h" -#include "lib/manager.h" -#include "lib/agent.h" +#include "lib/bluez-dbus.h" static gchar *adapter_arg = NULL; @@ -240,6 +235,8 @@ static void capture_device(Device *device) g_signal_connect(device, "NodeRemoved", G_CALLBACK(device_node_removed), NULL); g_signal_connect(device, "PropertyChanged", G_CALLBACK(device_property_changed), NULL); + // TODO: Add capturing services (eg. input, audio) signals + g_ptr_array_add(captured_devices, device); } @@ -282,7 +279,7 @@ int main(int argc, char *argv[]) g_option_context_free(context); if (!dbus_connect(&error)) { - g_printerr("Couldn't connect to dbus: %s", error->message); + g_printerr("Couldn't connect to dbus: %s\n", error->message); exit(EXIT_FAILURE); } @@ -300,7 +297,8 @@ int main(int argc, char *argv[]) g_assert(adapters_list != NULL); if (adapters_list->len == 0) { - g_print("no adapters found\n"); + g_print("No adapters found\n"); + exit(EXIT_FAILURE); } for (int i = 0; i < adapters_list->len; i++) { @@ -318,6 +316,8 @@ int main(int argc, char *argv[]) GMainLoop *mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(mainloop); + // TODO: Add SIGINT handler (Ctrl+C) + exit(EXIT_SUCCESS); } diff --git a/src/bt-network.c b/src/bt-network.c index 4ed4ae4..67cf115 100644 --- a/src/bt-network.c +++ b/src/bt-network.c @@ -25,8 +25,13 @@ #include <config.h> #endif +#include <stdlib.h> +#include <glib.h> + +#include "lib/bluez-dbus.h" + int main(int argc, char *argv[]) { - + exit(EXIT_SUCCESS); } diff --git a/src/bt-serial.c b/src/bt-serial.c index 4309882..8abc246 100644 --- a/src/bt-serial.c +++ b/src/bt-serial.c @@ -28,11 +28,7 @@ #include <stdlib.h> #include <glib.h> -#include "lib/dbus-common.h" -#include "lib/helpers.h" -#include "lib/adapter.h" -#include "lib/device.h" -#include "lib/serial.h" +#include "lib/bluez-dbus.h" static gchar *adapter_arg = NULL; static gboolean connect_arg = FALSE; @@ -61,14 +57,14 @@ int main(int argc, char *argv[]) g_option_context_set_summary(context, "serial summary"); g_option_context_set_description(context, "Connect Options:\n" - " -c, --connect device#id <pattern>\n" - " Where pattern is:\n" + " -c, --connect <device#id> <pattern>\n" + " Where `pattern` is:\n" " UUID 128 bit string\n" " Profile short name, e.g: spp, dun\n" " RFCOMM channel, 1-30\n\n" "Disconnect Options:\n" - " -d, --disconnect device#id <tty_device>\n" - " Where tty_device is:\n" + " -d, --disconnect <device#id> <tty_device>\n" + " Where `tty_device` is:\n" " RFCOMM TTY device that has been connected\n\n" "serial desc" ); @@ -101,7 +97,7 @@ int main(int argc, char *argv[]) } if (!dbus_connect(&error)) { - g_printerr("Couldn't connect to dbus: %s", error->message); + g_printerr("Couldn't connect to dbus: %s\n", error->message); exit(EXIT_FAILURE); } diff --git a/src/lib/bluez-dbus.h b/src/lib/bluez-dbus.h new file mode 100644 index 0000000..9322850 --- /dev/null +++ b/src/lib/bluez-dbus.h @@ -0,0 +1,46 @@ +/* + * + * bluez-tools - a set of tools to manage bluetooth devices for linux + * + * Copyright (C) 2010 Alexander Orlenko <zxteam@gmail.com> + * + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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 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 + * + */ + +#ifndef __BLUEZ_DBUS_H +#define __BLUEZ_DBUS_H + +/* Global includes */ +#include <glib.h> +#include <dbus/dbus-glib.h> + +/* Local includes */ +#include "dbus-common.h" +#include "helpers.h" +#include "marshallers.h" + +/* Bluez DBus Interfaces */ +#include "adapter.h" +#include "agent.h" +#include "audio.h" +#include "device.h" +#include "input.h" +#include "manager.h" +#include "network.h" +#include "serial.h" + +#endif /* __BLUEZ_DBUS_H */ diff --git a/src/lib/dbus-common.c b/src/lib/dbus-common.c index 054dc56..0045d5a 100644 --- a/src/lib/dbus-common.c +++ b/src/lib/dbus-common.c @@ -25,8 +25,8 @@ #include <config.h> #endif -#include "agent.h" #include "marshallers.h" +#include "agent.h" #include "dbus-common.h" DBusGConnection *conn = NULL; diff --git a/src/lib/dbus-common.h b/src/lib/dbus-common.h index acb1aee..94d15a6 100644 --- a/src/lib/dbus-common.h +++ b/src/lib/dbus-common.h @@ -29,7 +29,7 @@ #define BLUEZ_DBUS_NAME "org.bluez" -#define DBUS_TYPE_G_STRING_VARIANT_HASHTABLE (dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE)) +#define DBUS_TYPE_G_STRING_VARIANT_HASHTABLE (dbus_g_type_get_map("GHashTable", G_TYPE_STRING, G_TYPE_VALUE)) extern DBusGConnection *conn; diff --git a/src/lib/helpers.c b/src/lib/helpers.c index f2dc28b..ac879f9 100644 --- a/src/lib/helpers.c +++ b/src/lib/helpers.c @@ -27,9 +27,8 @@ #include <string.h> -#include "helpers.h" -#include "adapter.h" #include "manager.h" +#include "helpers.h" Adapter *find_adapter(const gchar *name, GError **error) { |