diff --git a/client/gatt.c b/client/gatt.c
index 82e7851..3ceea45 100644
--- a/client/gatt.c
+++ b/client/gatt.c
return;
}
- rl_printf("Service registered at %s\n", service->path);
+ print_service(service, COLORED_NEW);
local_services = g_list_append(local_services, service);
rl_prompt_input(service->path, "Primary (yes/no):", service_set_primary,
service);
}
+
+static struct service *service_find(const char *pattern)
+{
+ GList *l;
+
+ for (l = local_services; l; l = g_list_next(l)) {
+ struct service *service = l->data;
+
+ /* match object path */
+ if (!strcmp(service->path, pattern))
+ return service;
+
+ /* match UUID */
+ if (!strcmp(service->uuid, pattern))
+ return service;
+ }
+
+ return NULL;
+}
+
+void gatt_unregister_service(DBusConnection *conn, GDBusProxy *proxy,
+ wordexp_t *w)
+{
+ struct service *service;
+
+ service = service_find(w->we_wordv[0]);
+ if (!service) {
+ rl_printf("Failed to unregister service object\n");
+ return;
+ }
+
+ local_services = g_list_remove(local_services, service);
+
+ print_service(service, COLORED_DEL);
+
+ g_dbus_unregister_interface(service->conn, service->path,
+ SERVICE_INTERFACE);
+}
diff --git a/client/gatt.h b/client/gatt.h
index 7f116df..4b9edd5 100644
--- a/client/gatt.h
+++ b/client/gatt.h
void gatt_register_service(DBusConnection *conn, GDBusProxy *proxy,
wordexp_t *w);
+void gatt_unregister_service(DBusConnection *conn, GDBusProxy *proxy,
+ wordexp_t *w);
diff --git a/client/main.c b/client/main.c
index 726d749..dd18eb8 100644
--- a/client/main.c
+++ b/client/main.c
wordfree(&w);
}
+static void cmd_unregister_service(const char *arg)
+{
+ wordexp_t w;
+
+ if (check_default_ctrl() == FALSE)
+ return;
+
+ if (wordexp(arg, &w, WRDE_NOCMD)) {
+ rl_printf("Invalid argument\n");
+ return;
+ }
+
+ if (w.we_wordc == 0) {
+ rl_printf("Missing argument\n");
+ goto done;
+ }
+
+ gatt_unregister_service(dbus_conn, default_ctrl->proxy, &w);
+
+done:
+ wordfree(&w);
+}
+
static void cmd_version(const char *arg)
{
rl_printf("Version %s\n", VERSION);
"Unregister profile" },
{ "register-service", "<UUID>", cmd_register_service,
"Register application service." },
+ { "unregister-service", "<UUID/object>", cmd_unregister_service,
+ "Unregister application service" },
{ "version", NULL, cmd_version, "Display version" },
{ "quit", NULL, cmd_quit, "Quit program" },
{ "exit", NULL, cmd_quit, "Quit program" },