mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-12-15 23:14:38 +08:00
client: Add unregister-characteristic command
This adds unregister-characteristic which can be used to unregister characteristics registered with register-characteristic: unregister-characteristic /org/bluez/app/service0xc80150/chrc0xc99960 [DEL] Characteristic /org/bluez/app/service0xc80150/chrc0xc99960 00002a06-0000-1000-8000-00805f9b34fb Alert Level
This commit is contained in:
parent
68fa26fb80
commit
5dbe747450
@ -1233,3 +1233,44 @@ void gatt_register_chrc(DBusConnection *conn, GDBusProxy *proxy, wordexp_t *w)
|
||||
|
||||
rl_prompt_input(chrc->path, "Enter value:", chrc_set_value, chrc);
|
||||
}
|
||||
|
||||
static struct chrc *chrc_find(const char *pattern)
|
||||
{
|
||||
GList *l, *lc;
|
||||
struct service *service;
|
||||
struct chrc *chrc;
|
||||
|
||||
for (l = local_services; l; l = g_list_next(l)) {
|
||||
service = l->data;
|
||||
|
||||
for (lc = service->chrcs; lc; lc = g_list_next(lc)) {
|
||||
chrc = lc->data;
|
||||
|
||||
/* match object path */
|
||||
if (!strcmp(chrc->path, pattern))
|
||||
return chrc;
|
||||
|
||||
/* match UUID */
|
||||
if (!strcmp(chrc->uuid, pattern))
|
||||
return chrc;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void gatt_unregister_chrc(DBusConnection *conn, GDBusProxy *proxy,
|
||||
wordexp_t *w)
|
||||
{
|
||||
struct chrc *chrc;
|
||||
|
||||
chrc = chrc_find(w->we_wordv[0]);
|
||||
if (!chrc) {
|
||||
rl_printf("Failed to unregister characteristic object\n");
|
||||
return;
|
||||
}
|
||||
|
||||
chrc->service->chrcs = g_list_remove(chrc->service->chrcs, chrc);
|
||||
|
||||
chrc_unregister(chrc);
|
||||
}
|
||||
|
@ -50,3 +50,5 @@ void gatt_unregister_service(DBusConnection *conn, GDBusProxy *proxy,
|
||||
wordexp_t *w);
|
||||
|
||||
void gatt_register_chrc(DBusConnection *conn, GDBusProxy *proxy, wordexp_t *w);
|
||||
void gatt_unregister_chrc(DBusConnection *conn, GDBusProxy *proxy,
|
||||
wordexp_t *w);
|
||||
|
@ -1908,6 +1908,29 @@ done:
|
||||
wordfree(&w);
|
||||
}
|
||||
|
||||
static void cmd_unregister_characteristic(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 < 1) {
|
||||
rl_printf("Missing arguments\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
gatt_unregister_chrc(dbus_conn, default_ctrl->proxy, &w);
|
||||
|
||||
done:
|
||||
wordfree(&w);
|
||||
}
|
||||
|
||||
static void cmd_version(const char *arg)
|
||||
{
|
||||
rl_printf("Version %s\n", VERSION);
|
||||
@ -2217,6 +2240,9 @@ static const struct {
|
||||
{ "register-characteristic", "<UUID> <Flags=read,write,notify...>",
|
||||
cmd_register_characteristic,
|
||||
"Register application characteristic" },
|
||||
{ "unregister-characteristic", "<UUID/object>",
|
||||
cmd_unregister_characteristic,
|
||||
"Unregister application characteristic" },
|
||||
{ "version", NULL, cmd_version, "Display version" },
|
||||
{ "quit", NULL, cmd_quit, "Quit program" },
|
||||
{ "exit", NULL, cmd_quit, "Quit program" },
|
||||
|
Loading…
Reference in New Issue
Block a user