summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2004-07-07 16:41:31 +0000
committerMarcel Holtmann <marcel@holtmann.org>2004-07-07 16:41:31 +0000
commit7ef1d3ac012443faf2b369aabc3dc209cf5042ea (patch)
tree08441a2d248281188b0845fb132bfabf0465e354
parent495521cf00684b398eaf69a9bb542d85404a108e (diff)
Add support for virtual cable unplug
-rw-r--r--hidd/main.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/hidd/main.c b/hidd/main.c
index c265848b..b05e15cd 100644
--- a/hidd/main.c
+++ b/hidd/main.c
@@ -409,6 +409,7 @@ static void usage(void)
"\t--server Start HID server\n"
"\t--search Search for HID devices\n"
"\t--connect <bdaddr> Connect remote HID device\n"
+ "\t--unplug <bdaddr> Unplug the HID connection\n"
"\t--kill <bdaddr> Terminate HID connection\n"
"\t--killall Terminate all connections\n"
"\t--show List current HID connections\n"
@@ -432,6 +433,7 @@ static struct option main_options[] = {
{ "release", 1, 0, 'k' },
{ "kill", 1, 0, 'k' },
{ "killall", 0, 0, 'K' },
+ { "unplug", 1, 0, 'u' },
{ 0, 0, 0, 0 }
};
@@ -439,6 +441,7 @@ int main(int argc, char *argv[])
{
struct sigaction sa;
bdaddr_t bdaddr, dev;
+ uint32_t flags = 0;
char addr[18];
int log_option = LOG_NDELAY | LOG_PID;
int opt, fd, ctl, csk, isk;
@@ -446,7 +449,7 @@ int main(int argc, char *argv[])
bacpy(&bdaddr, BDADDR_ANY);
- while ((opt = getopt_long(argc, argv, "+i:nt:ldsc:k:Kh", main_options, NULL)) != -1) {
+ while ((opt = getopt_long(argc, argv, "+i:nt:ldsc:k:Ku:h", main_options, NULL)) != -1) {
switch(opt) {
case 'i':
if (!strncasecmp(optarg, "hci", 3))
@@ -481,6 +484,11 @@ int main(int argc, char *argv[])
bacpy(&dev, BDADDR_ALL);
mode = 4;
break;
+ case 'u':
+ str2ba(optarg, &dev);
+ flags = (1 << HIDP_VIRTUAL_CABLE_UNPLUG);
+ mode = 4;
+ break;
case 'h':
usage();
exit(0);
@@ -526,7 +534,7 @@ int main(int argc, char *argv[])
exit(0);
case 4:
- do_kill(ctl, &dev, 0);
+ do_kill(ctl, &dev, flags);
close(ctl);
exit(0);