Date: Thu, 14 May 2009 09:42:52 -0700 From: Maksim Yevmenkin <maksim.yevmenkin@gmail.com> To: Iain Hibbert <plunky@rya-online.net> Cc: freebsd-bluetooth@freebsd.org Subject: Re: libhci update Message-ID: <bb4a86c70905140942u67ed1203ke245029a740be3ca@mail.gmail.com> In-Reply-To: <bb4a86c70905140926n488cb2b5x5f5530e01d70bd66@mail.gmail.com> References: <E1Lv5La-00058x-HH@smtpbarns01> <bb4a86c70904201053y1a04d76el336432d3e1a23576@mail.gmail.com> <1240311202.361300.1366.nullmailer@galant.ukfsn.org> <bb4a86c70904210959w6de5e808h9f85ee2bb1995dbf@mail.gmail.com> <1240352254.082638.416.nullmailer@galant.ukfsn.org> <bb4a86c70904211651m6127745ao9d4f26c91e428994@mail.gmail.com> <1240386569.369073.696.nullmailer@galant.ukfsn.org> <bb4a86c70904220909j5d047ce6x6260bd2e87b5b7bd@mail.gmail.com> <1242294653.314348.1748.nullmailer@galant.ukfsn.org> <bb4a86c70905140926n488cb2b5x5f5530e01d70bd66@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, May 14, 2009 at 9:26 AM, Maksim Yevmenkin <maksim.yevmenkin@gmail.com> wrote: >> /* Calculate inquire length in 1.28 second units */ >> to = (time_t) ((double) length / 1.28); >> >> if (to <= 0) >> cp->inquiry_length = 4; /* 5.12 seconds */ >> else if (to > 254) >> cp->inquiry_length = 255; /* 326.40 seconds */ >> else >> cp->inquiry_length = to + 1; >> >> 2.1 spec says 1.28 -> 61.44 seconds range is acceptable (0x01->0x30) ok, do you like something like Index: hci.c =================================================================== --- hci.c (revision 191499) +++ hci.c (working copy) @@ -410,7 +410,6 @@ ng_hci_inquiry_response *ir; struct bt_devinquiry *i; int s, n; - time_t to; if (ii == NULL) { errno = EINVAL; @@ -452,17 +451,21 @@ cp->lap[1] = 0x8b; cp->lap[2] = 0x9e; - /* Calculate inquire length in 1.28 second units */ - to = (time_t) ((double) length / 1.28); - if (to <= 0) - cp->inquiry_length = 4; /* 5.12 seconds */ - else if (to > 254) - cp->inquiry_length = 255; /* 326.40 seconds */ - else - cp->inquiry_length = to + 1; + /* + * Calculate inquire length in 1.28 second units + * v2.x specification says that 1.28 -> 61.44 seconds + * range is acceptable + */ - to = (time_t)((double) cp->inquiry_length * 1.28) + 1; + if (length <= 0) + length = 5; + else if (length == 1) + length = 2; + else if (length > 61) + length = 61; + cp->inquiry_length = (uint8_t)((length * 100) / 128); + if (num_rsp <= 0 || num_rsp > 255) num_rsp = 8; cp->num_responses = (uint8_t) num_rsp; @@ -484,7 +487,7 @@ wait_for_more: - n = bt_devrecv(s, buf, sizeof(buf), to); + n = bt_devrecv(s, buf, sizeof(buf), length); if (n < 0) { free(i); bt_devclose(s); == thanks, max
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bb4a86c70905140942u67ed1203ke245029a740be3ca>