diff options
author | Stephen Crane <steve.crane@rococosoft.com> | 2002-08-22 10:06:55 +0000 |
---|---|---|
committer | Stephen Crane <steve.crane@rococosoft.com> | 2002-08-22 10:06:55 +0000 |
commit | d10423ecaa32884c2c382756d502f615349c400b (patch) | |
tree | aee94af134467fb2275076772399cbf36d07eace /tools/hciconfig.c | |
parent | 41577e502830106f479fd9a17e08a797d671256b (diff) |
use hci lib
Diffstat (limited to 'tools/hciconfig.c')
-rw-r--r-- | tools/hciconfig.c | 84 |
1 files changed, 18 insertions, 66 deletions
diff --git a/tools/hciconfig.c b/tools/hciconfig.c index 3c213ba4..bbc61d0e 100644 --- a/tools/hciconfig.c +++ b/tools/hciconfig.c @@ -299,48 +299,26 @@ void cmd_features(int ctl, int hdev, char *opt) void cmd_name(int ctl, int hdev, char *opt) { - struct hci_request rq; - int s; - if ((s = hci_open_dev(hdev)) < 0) { + int s = hci_open_dev(hdev); + if (s < 0) { printf("Can't open device hci%d. %s(%d)\n", hdev, strerror(errno), errno); exit(1); } - - memset(&rq, 0, sizeof(rq)); - if (opt) { - change_local_name_cp cp; - strcpy(cp.name, opt); - - rq.ogf = OGF_HOST_CTL; - rq.ocf = OCF_CHANGE_LOCAL_NAME; - rq.cparam = &cp; - rq.clen = CHANGE_LOCAL_NAME_CP_SIZE; - - if (hci_send_req(s, &rq, 1000) < 0) { + if (hci_write_local_name(s, opt, 1000) < 0) { printf("Can't change local name on hci%d. %s(%d)\n", hdev, strerror(errno), errno); exit(1); } } else { - read_local_name_rp rp; - - rq.ogf = OGF_HOST_CTL; - rq.ocf = OCF_READ_LOCAL_NAME; - rq.rparam = &rp; - rq.rlen = READ_LOCAL_NAME_RP_SIZE; - - if (hci_send_req(s, &rq, 1000) < 0) { + char name[248]; + if (hci_read_local_name(s, sizeof(name), name, 1000) < 0) { printf("Can't read local name on hci%d. %s(%d)\n", hdev, strerror(errno), errno); exit(1); } - if (rp.status) { - printf("Read local name on hci%d returned status %d\n", hdev, rp.status); - exit(1); - } print_dev_hdr(&di); - printf("\tName: '%s'\n", rp.name); + printf("\tName: '%s'\n", name); } } @@ -495,58 +473,33 @@ void cmd_class(int ctl, int hdev, char *opt) "Peripheral", "Imaging", "Uncategorized" }; - struct hci_request rq; - int s; + int s = hci_open_dev(hdev); - if ((s = hci_open_dev(hdev)) < 0) { + if (s < 0) { printf("Can't open device hci%d. %s(%d)\n", hdev, strerror(errno), errno); exit(1); } - - memset(&rq, 0, sizeof(rq)); if (opt) { uint32_t cod = htobl(strtoul(opt, NULL, 16)); - write_class_of_dev_cp cp; - - memcpy(cp.dev_class, &cod, 3); - - rq.ogf = OGF_HOST_CTL; - rq.ocf = OCF_WRITE_CLASS_OF_DEV; - rq.cparam = &cp; - rq.clen = WRITE_CLASS_OF_DEV_CP_SIZE; - - if (hci_send_req(s, &rq, 1000) < 0) { + if (0 > hci_write_class_of_dev(s, cod, 1000)) { printf("Can't write local class of device on hci%d. %s(%d)\n", hdev, strerror(errno), errno); exit(1); } } else { - read_class_of_dev_rp rp; - - rq.ogf = OGF_HOST_CTL; - rq.ocf = OCF_READ_CLASS_OF_DEV; - rq.rparam = &rp; - rq.rlen = READ_CLASS_OF_DEV_RP_SIZE; - - if (hci_send_req(s, &rq, 1000) < 0) { + uint8_t cls[3]; + if (0 > hci_read_class_of_dev(s, cls, 1000)) { printf("Can't read class of device on hci%d. %s(%d)\n", hdev, strerror(errno), errno); exit(1); } - - if (rp.status) { - printf("Read class of device on hci%d returned status %d\n", - hdev, rp.status); - exit(1); - } print_dev_hdr(&di); - printf("\tClass: 0x%02x%02x%02x\n", - rp.dev_class[2], rp.dev_class[1], rp.dev_class[0]); + printf("\tClass: 0x%02x%02x%02x\n", cls[2], cls[1], cls[0]); printf("\tService Classes: "); - if (rp.dev_class[2]) { + if (cls[2]) { int first = 1; for(s=0; s < sizeof(services); s++) - if (rp.dev_class[2] & (1 << s)) { + if (cls[2] & (1 << s)) { if (!first) printf(", "); printf(services[s]); @@ -555,12 +508,11 @@ void cmd_class(int ctl, int hdev, char *opt) } else printf("Unspecified"); printf("\n\tDevice Class: "); - if (rp.dev_class[1] > sizeof(major_devices)) + if (cls[1] > sizeof(major_devices)) printf("Invalid Device Class!\n"); else - printf("%s, %s\n", major_devices[rp.dev_class[1]], - get_minor_device_name(rp.dev_class[1], - rp.dev_class[0] / 4)); + printf("%s, %s\n", major_devices[cls[1]], + get_minor_device_name(cls[1], cls[0] / 4)); } } @@ -653,7 +605,7 @@ void cmd_inq_parms(int ctl, int hdev, char *opt) interval = btohs(rp.interval); printf("\tInquiry interval: %u slots (%.2f ms), window: %u slots (%.2f ms)\n", interval, (float)interval * 0.625, window, (float)window * 0.625); - } + } } void cmd_page_parms(int ctl, int hdev, char *opt) |