--- tools/hciconfig.c 26 Jul 2006 13:09:44 -0000 1.82 +++ tools/hciconfig.c 7 Nov 2006 09:47:46 -0000 @@ -597,16 +597,51 @@ return "Gaming/Toy"; } break; - case 5: /* peripheral */ - switch(minor) { + case 5: /* peripheral */ { + static char cls_str[48]; cls_str[0] = 0; + + switch(minor & 48) { case 16: - return "Keyboard"; + strncpy(cls_str, "Keyboard", sizeof(cls_str)); + break; case 32: - return "Pointing device"; + strncpy(cls_str, "Pointing device", sizeof(cls_str)); + break; case 48: - return "Combo keyboard/pointing device"; + strncpy(cls_str, "Combo keyboard/pointing device", sizeof(cls_str)); + break; } - break; + if((minor & 15) && (strlen(cls_str) > 0)) + strcat(cls_str, "/"); + + switch(minor & 15) { + case 0: + break; + case 1: + strncat(cls_str, "Joystick", sizeof(cls_str) - strlen(cls_str)); + break; + case 2: + strncat(cls_str, "Gamepad", sizeof(cls_str) - strlen(cls_str)); + break; + case 3: + strncat(cls_str, "Remote control", sizeof(cls_str) - strlen(cls_str)); + break; + case 4: + strncat(cls_str, "Sensing device", sizeof(cls_str) - strlen(cls_str)); + break; + case 5: + strncat(cls_str, "Digitizer tablet", sizeof(cls_str) - strlen(cls_str)); + break; + case 6: + strncat(cls_str, "Card reader", sizeof(cls_str) - strlen(cls_str)); + break; + default: + strncat(cls_str, "(reserved)", sizeof(cls_str) - strlen(cls_str)); + break; + } + if(strlen(cls_str) > 0) + return cls_str; + } case 6: /* imaging */ if (minor & 4) return "Display"; @@ -617,6 +652,34 @@ if (minor & 32) return "Printer"; break; + case 7: /* wearable */ + switch(minor) { + case 1: + return "Wrist Watch"; + case 2: + return "Pager"; + case 3: + return "Jacket"; + case 4: + return "Helmet"; + case 5: + return "Glasses"; + } + break; + case 8: /* toy */ + switch(minor) { + case 1: + return "Robot"; + case 2: + return "Vehicle"; + case 3: + return "Doll / Action Figure"; + case 4: + return "Controller"; + case 5: + return "Game"; + } + break; case 63: /* uncategorised */ return ""; } Index: tools/hcitool.c =================================================================== RCS file: /cvsroot/bluez/utils/tools/hcitool.c,v retrieving revision 1.91 diff -u -r1.91 hcitool.c --- tools/hcitool.c 29 Sep 2006 11:42:14 -0000 1.91 +++ tools/hcitool.c 7 Nov 2006 09:47:47 -0000 @@ -245,16 +245,51 @@ return "Gaming/Toy"; } break; - case 5: /* peripheral */ - switch(minor) { + case 5: /* peripheral */ { + static char cls_str[48]; cls_str[0] = 0; + + switch(minor & 48) { case 16: - return "Keyboard"; + strncpy(cls_str, "Keyboard", sizeof(cls_str)); + break; case 32: - return "Pointing device"; + strncpy(cls_str, "Pointing device", sizeof(cls_str)); + break; case 48: - return "Combo keyboard/pointing device"; + strncpy(cls_str, "Combo keyboard/pointing device", sizeof(cls_str)); + break; } + if((minor & 15) && (strlen(cls_str) > 0)) + strcat(cls_str, "/"); + + switch(minor & 15) { + case 0: + break; + case 1: + strncat(cls_str, "Joystick", sizeof(cls_str) - strlen(cls_str)); + break; + case 2: + strncat(cls_str, "Gamepad", sizeof(cls_str) - strlen(cls_str)); + break; + case 3: + strncat(cls_str, "Remote control", sizeof(cls_str) - strlen(cls_str)); + break; + case 4: + strncat(cls_str, "Sensing device", sizeof(cls_str) - strlen(cls_str)); + break; + case 5: + strncat(cls_str, "Digitizer tablet", sizeof(cls_str) - strlen(cls_str)); break; + case 6: + strncat(cls_str, "Card reader", sizeof(cls_str) - strlen(cls_str)); + break; + default: + strncat(cls_str, "(reserved)", sizeof(cls_str) - strlen(cls_str)); + break; + } + if(strlen(cls_str) > 0) + return cls_str; + } case 6: /* imaging */ if (minor & 4) return "Display"; @@ -265,6 +300,34 @@ if (minor & 32) return "Printer"; break; + case 7: /* wearable */ + switch(minor) { + case 1: + return "Wrist Watch"; + case 2: + return "Pager"; + case 3: + return "Jacket"; + case 4: + return "Helmet"; + case 5: + return "Glasses"; + } + break; + case 8: /* toy */ + switch(minor) { + case 1: + return "Robot"; + case 2: + return "Vehicle"; + case 3: + return "Doll / Action Figure"; + case 4: + return "Controller"; + case 5: + return "Game"; + } + break; case 63: /* uncategorised */ return ""; }