From: Andrei Emeltchenko <andrei.emeltchenko.news@gmail.com>
To: Vinicius Gomes <vinicius.gomes@openbossa.org>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH bluez] add get_le/get_be helpers
Date: Mon, 24 Oct 2011 13:26:06 +0300 [thread overview]
Message-ID: <20111024102603.GD31896@aemeltch-MOBL1> (raw)
In-Reply-To: <CAE6HaMkxvTPa1eTj1Og7Lvqn=PvieuKJyzugPouwiUTOsnnW_g@mail.gmail.com>
Hi Vinicius,
On Mon, Oct 24, 2011 at 12:13:43PM +0200, Vinicius Gomes wrote:
> Hi Andrei,
>
> On Mon, Oct 24, 2011 at 11:20 AM, Emeltchenko Andrei
> <Andrei.Emeltchenko.news@gmail.com> wrote:
> > From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
> >
> > Helpers to access LE / BE values. In bluetooth there is a mixture
> > of LE / BE network byte order.
> > ---
>
> Sorry if this comes too late, but here's an idea:
>
> How about changing the name of the functions to something a little
> more high level, for example: in attrib/att.h we have
> att_{get,put}_u16() that uses the byte order defined in the ATT spec
> (little endian).
>
> So my suggestion is to have bt_{get,put}_u*() and sdp_{get,put}_u*
> functions (perhaps also no_{get,put}_u* for cases when we use the host
> byte order). The bt_ functions will be used for everything that uses
> the Bluetooth byte order and the sdp_ ones for SDP, which is the only
maybe we can define bt_{get,put}_u*() as bt_{get,put}_le*() and be with
SDP?
Best regards
Andrei Emeltchenko
> case of Big Endian defined by Bluetooth, correct me if I am wrong.
>
> What do you think?
>
> > lib/bluetooth.h | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > 1 files changed, 64 insertions(+), 0 deletions(-)
> >
> > diff --git a/lib/bluetooth.h b/lib/bluetooth.h
> > index b0680e2..5bd4f03 100644
> > --- a/lib/bluetooth.h
> > +++ b/lib/bluetooth.h
> > @@ -125,6 +125,70 @@ do { \
> > __p->__v = (val); \
> > } while(0)
> >
> > +#if __BYTE_ORDER == __LITTLE_ENDIAN
> > +static inline uint64_t bt_get_le64(void *ptr)
> > +{
> > + return bt_get_unaligned((uint64_t *) ptr);
> > +}
> > +
> > +static inline uint64_t bt_get_be64(void *ptr)
> > +{
> > + return bswap_64(bt_get_unaligned((uint64_t *) ptr));
> > +}
> > +
> > +static inline uint32_t bt_get_le32(void *ptr)
> > +{
> > + return bt_get_unaligned((uint32_t *) ptr);
> > +}
> > +
> > +static inline uint32_t bt_get_be32(void *ptr)
> > +{
> > + return bswap_32(bt_get_unaligned((uint32_t *) ptr));
> > +}
> > +
> > +static inline uint16_t bt_get_le16(void *ptr)
> > +{
> > + return bt_get_unaligned((uint16_t *) ptr);
> > +}
> > +
> > +static inline uint16_t bt_get_be16(void *ptr)
> > +{
> > + return bswap_16(bt_get_unaligned((uint16_t *) ptr));
> > +}
> > +#elif __BYTE_ORDER == __BIG_ENDIAN
> > +static inline uint64_t bt_get_le64(void *ptr)
> > +{
> > + return bswap_64(bt_get_unaligned((uint64_t *) ptr));
> > +}
> > +
> > +static inline uint64_t bt_get_be64(void *ptr)
> > +{
> > + return bt_get_unaligned((uint64_t *) ptr);
> > +}
> > +
> > +static inline uint32_t bt_get_le32(void *ptr)
> > +{
> > + return bswap_32(bt_get_unaligned((uint32_t *) ptr));
> > +}
> > +
> > +static inline uint32_t bt_get_be32(void *ptr)
> > +{
> > + return bt_get_unaligned((uint32_t *) ptr);
> > +}
> > +
> > +static inline uint16_t bt_get_le16(void *ptr)
> > +{
> > + return bswap_16(bt_get_unaligned((uint16_t *) ptr));
> > +}
> > +
> > +static inline uint16_t bt_get_be16(void *ptr)
> > +{
> > + return bt_get_unaligned((uint16_t *) ptr);
> > +}
> > +#else
> > +#error "Unknown byte order"
> > +#endif
> > +
> > /* BD Address */
> > typedef struct {
> > uint8_t b[6];
> > --
> > 1.7.4.1
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
>
>
> Cheers,
> --
> Vinicius
next prev parent reply other threads:[~2011-10-24 10:26 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-24 9:20 [PATCH bluez] add get_le/get_be helpers Emeltchenko Andrei
2011-10-24 10:13 ` Vinicius Gomes
2011-10-24 10:26 ` Andrei Emeltchenko [this message]
2011-10-24 10:27 ` Szymon Janc
2011-10-24 11:50 ` Marcel Holtmann
2011-10-24 12:06 ` Vinicius Gomes
2011-10-25 8:52 ` Johan Hedberg
2011-10-25 9:34 ` Lucas De Marchi
2011-10-25 9:22 ` Johan Hedberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20111024102603.GD31896@aemeltch-MOBL1 \
--to=andrei.emeltchenko.news@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=vinicius.gomes@openbossa.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.