diff options
Diffstat (limited to 'hcid')
-rw-r--r-- | hcid/dbus-adapter.c | 95 | ||||
-rw-r--r-- | hcid/dbus-api.txt | 17 | ||||
-rwxr-xr-x | hcid/dbus-test | 24 |
3 files changed, 134 insertions, 2 deletions
diff --git a/hcid/dbus-adapter.c b/hcid/dbus-adapter.c index 13634390..0b0ce72a 100644 --- a/hcid/dbus-adapter.c +++ b/hcid/dbus-adapter.c @@ -87,6 +87,79 @@ static const char *phone_minor_cls[] = { "isdn" }; +static const char *access_point_minor_cls[] = { + "fully", + "1-17 percent", + "17-33 percent", + "33-50 percent", + "50-67 percent", + "67-83 percent", + "83-99 percent", + "not available" +}; + +static const char *audio_video_minor_cls[] = { + "uncategorized", + "headset", + "handsfree", + "unknown", + "microphone", + "loudspeaker", + "headphones", + "portable audio", + "car audio", + "set-top box", + "hifi audio", + "vcr", + "video camera", + "camcorder", + "video monitor", + "video display and loudspeaker", + "video conferencing", + "unknown", + "gaming/toy" +}; + +static const char *peripheral_minor_cls[] = { + "uncategorized", + "keyboard", + "pointing", + "combo" +}; + +static const char *peripheral_2_minor_cls[] = { + "uncategorized", + "joystick", + "gamepad", + "remote control", + "sensing", + "digitizer tablet", + "card reader" +}; + +static const char *imaging_minor_cls[] = { + "display", + "camera", + "scanner", + "printer" +}; + +static const char *wearable_minor_cls[] = { + "wrist watch", + "pager", + "jacket", + "helmet", + "glasses" +}; + +static const char *toy_minor_cls[] = { + "robot", + "vehicle", + "doll", + "controller", + "game" +}; + static int check_address(const char *addr) { char tmp[18]; @@ -2199,13 +2272,33 @@ const char *major_class_str(uint32_t class) const char *minor_class_str(uint32_t class) { uint8_t major_index = (class >> 8) & 0x1F; - uint8_t minor_index = (class >> 2) & 0x3F; + uint8_t minor_index; switch (major_index) { case 1: /* computer */ + minor_index = (class >> 2) & 0x3F; return computer_minor_cls[minor_index]; case 2: /* phone */ + minor_index = (class >> 2) & 0x3F; return phone_minor_cls[minor_index]; + case 3: /* access point */ + minor_index = (class >> 5) & 0x07; + return access_point_minor_cls[minor_index]; + case 4: /* audio/video */ + minor_index = (class >> 2) & 0x3F; + return audio_video_minor_cls[minor_index]; + case 5: /* peripheral */ + minor_index = (class >> 6) & 0x03; + return peripheral_minor_cls[minor_index]; + case 6: /* imaging */ + minor_index = (class >> 4) & 0x0F; + return imaging_minor_cls[minor_index]; + case 7: /* wearable */ + minor_index = (class >> 2) & 0x3F; + return wearable_minor_cls[minor_index]; + case 8: /* toy */ + minor_index = (class >> 2) & 0x3F; + return toy_minor_cls[minor_index]; } return ""; diff --git a/hcid/dbus-api.txt b/hcid/dbus-api.txt index 7e2dddd2..3e28ad7a 100644 --- a/hcid/dbus-api.txt +++ b/hcid/dbus-api.txt @@ -28,6 +28,23 @@ Minor classes computer uncategorized, desktop, server, laptop, handheld, Minor classes phone uncategorized, cellular, cordless, smart phone, modem, isdn +Minor classes access point fully, 1-17 percent, 17-33 percent, + 33-50 percent, 50-67 percent, 67-83 percent, + 83-99 percent, not available + +Minor classes audio video uncategorized, headset, handsfree,microphone, + loudspeaker, headphones, portable audio, car audio, + set-top box, hifi audio, vcr, video camera, camcorder, + video monitor, video display and loudspeaker, + video conferencing, gaming/toy, unknown + +Minor classes peripheral uncategorized, keyboard, pointing, combo + +Minor classes imaging display, camera, scanner, printer + +Minor classes wearable wrist watch, pager, jacket, helmet, glasses + +Minor classes toy robot, vehicle, doll, controller, game Error hierarchy =============== diff --git a/hcid/dbus-test b/hcid/dbus-test index 2877043e..c72c20ae 100755 --- a/hcid/dbus-test +++ b/hcid/dbus-test @@ -36,6 +36,9 @@ dev_cmds = [ "GetAddress", "GetRemoteManufacturer", "GetRemoteCompany", "GetRemoteName", + "GetRemoteMajorClass", + "GetRemoteMinorClass", + "GetRemoteServiceClasses", "GetRemoteAlias", "SetRemoteAlias", "ClearRemoteAlias", @@ -276,7 +279,7 @@ class Tester: print 'Usage: %s -i <dev> SetName newname' % self.name elif self.cmd == 'GetRemoteName': if len(self.cmd_args) == 1: - print self.device.GetRemoteName() + print self.device.GetRemoteName(self.cmd_args[0]) else: print 'Usage: %s -i <dev> GetRemoteName address' % self.name elif self.cmd == 'GetRemoteVersion': @@ -304,6 +307,21 @@ class Tester: print self.device.GetRemoteAlias(self.cmd_args[0]) else: print 'Usage: %s -i <dev> GetRemoteAlias address' % self.name + elif self.cmd == 'GetRemoteMajorClass': + if len(self.cmd_args) == 1: + print self.device.GetRemoteMajorClass(self.cmd_args[0]) + else: + print 'Usage: %s -i <dev> GetRemoteMajorClass address' % self.name + elif self.cmd == 'GetRemoteMinorClass': + if len(self.cmd_args) == 1: + print self.device.GetRemoteMinorClass(self.cmd_args[0]) + else: + print 'Usage: %s -i <dev> GetRemoteMinorClass address' % self.name + elif self.cmd == 'GetRemoteServiceClasses': + if len(self.cmd_args) == 1: + print self.device.GetRemoteServiceClasses(self.cmd_args[0]) + else: + print 'Usage: %s -i <dev> GetRemoteServiceClasses address' % self.name elif self.cmd == 'SetRemoteAlias': if len(self.cmd_args) == 2: self.device.SetRemoteAlias(self.cmd_args[0], self.cmd_args[1]) @@ -363,6 +381,10 @@ class Tester: print self.device.GetEncryptionKeySize(self.cmd_args[0]) else: print 'Usage: %s -i <dev> GetEncryptionKeySize address' % self.name + elif self.cmd == 'DiscoverDevices': + print self.device.DiscoverDevices() + elif self.cmd == 'DiscoverDevicesWithoutNameResolving': + print self.device.DiscoverDevicesWithoutNameResolving() else: # FIXME: remove at future version print 'Script Error: Method %s not found. Maybe a mispelled word.' % (self.cmd_args) |