--- ../bluez-4.59/tools/bccmd.c 2009-02-01 23:30:43.000000000 -0200 +++ tools/bccmd.c 2010-03-29 16:47:04.000000000 -0300 @@ -823,16 +823,32 @@ static int cmd_psset(int transport, int break; default: - if (argc != length * 2) { + if (argc != length * 2 && argc != length) { errno = EINVAL; return -1; } - for (i = 0; i < length * 2; i++) - if (!strncasecmp(argv[0], "0x", 2)) + if (argc == length * 2) { + for (i = 0; i < length * 2; i++) + if (!strncasecmp(argv[0], "0x", 2)){ array[i + 6] = strtol(argv[i] + 2, NULL, 16); + } else array[i + 6] = atoi(argv[i]); + } + else { + for (i = 0; i < length; i++){ + uint16_t val = 0; + + if (!strncasecmp(argv[0], "0x", 2)) + val = strtol(argv[i] + 2, NULL, 16); + else + val = atoi(argv[i]); + + array[i*2 + 7] = val % 0x100; + array[i*2 + 6] = (val / 0x100); + } + } break; }