summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Orlenko <zxteam@gmail.com>2010-07-07 12:37:54 +1100
committerAlexander Orlenko <zxteam@gmail.com>2010-07-07 12:37:54 +1100
commitf44269a4c06267541d26c38320b97ba99c7451a3 (patch)
tree3b9fad8ae1b3b10445b4a54f2183b0f54a30520f
parentd7c8d5ff388be507a591e95d77b2f06a36d45d0b (diff)
downloadbluez-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.c33
-rw-r--r--src/bt-agent.c11
-rw-r--r--src/bt-audio.c8
-rw-r--r--src/bt-device.c48
-rw-r--r--src/bt-input.c8
-rw-r--r--src/bt-monitor.c16
-rw-r--r--src/bt-network.c7
-rw-r--r--src/bt-serial.c16
-rw-r--r--src/lib/bluez-dbus.h46
-rw-r--r--src/lib/dbus-common.c2
-rw-r--r--src/lib/dbus-common.h2
-rw-r--r--src/lib/helpers.c3
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)
{