Mistake on this page?
Report an issue in GitHub or email us
Functions
bstream.h File Reference

Byte stream to integer conversion macros. More...

#include "util/bda.h"

Go to the source code of this file.

Macros

Macros for converting a little endian byte buffer to integers.
#define BYTES_TO_INT16(n, p)    {n = ((int16_t)(p)[0] + ((int16_t)(p)[1] << 8));}
 convert little endian byte buffer to int16_t. More...
 
#define BYTES_TO_UINT16(n, p)    {n = ((uint16_t)(p)[0] + ((uint16_t)(p)[1] << 8));}
 convert little endian byte buffer to uint16_t. More...
 
#define BYTES_TO_UINT24(n, p)
 convert little endian byte buffer to uint24_t. More...
 
#define BYTES_TO_UINT32(n, p)
 convert little endian byte buffer to uint32_t. More...
 
#define BYTES_TO_UINT40(n, p)
 convert little endian byte buffer to uint40_t. More...
 
#define BYTES_TO_UINT64(n, p)
 convert little endian byte buffer to uint64_t. More...
 
Macros for converting a big endian byte buffer to integers.
#define BYTES_BE_TO_UINT16(n, p)    {n = ((uint16_t)(p)[1] + ((uint16_t)(p)[0] << 8));}
 convert big endian byte buffer to uint16_t. More...
 
#define BYTES_BE_TO_UINT24(n, p)
 convert big endian byte buffer to 24-bit uint32_t (MSB 0). More...
 
#define BYTES_BE_TO_UINT32(n, p)
 convert big endian byte buffer to uint32_t. More...
 
Macros for converting little endian integers to array of bytes
#define UINT16_TO_BYTES(n)    ((uint8_t) (n)), ((uint8_t)((n) >> 8))
 convert little endian uint16_t to array of bytes. More...
 
#define UINT32_TO_BYTES(n)    ((uint8_t) (n)), ((uint8_t)((n) >> 8)), ((uint8_t)((n) >> 16)), ((uint8_t)((n) >> 24))
 convert little endian uint32_t to array of bytes. More...
 
Macros for converting big endian integers to array of bytes
#define UINT16_TO_BE_BYTES(n)    ((uint8_t)((n) >> 8)), ((uint8_t) (n))
 convert big endian uint16_t to array of bytes. More...
 
#define UINT24_TO_BE_BYTES(n)    ((uint8_t)((n) >> 16)), ((uint8_t)((n) >> 8)), ((uint8_t) (n))
 convert 24-bit big endian uint32_t (MSB 0) to array of bytes. More...
 
#define UINT32_TO_BE_BYTES(n)    ((uint8_t)((n) >> 24)), ((uint8_t)((n) >> 16)), ((uint8_t)((n) >> 8)), ((uint8_t) (n))
 convert big endian uint32_t to array of bytes. More...
 
Macros for converting little endian integers to single bytes
#define UINT16_TO_BYTE0(n)    ((uint8_t) (n))
 convert little endian uint16_t to byte 0. More...
 
#define UINT16_TO_BYTE1(n)    ((uint8_t) ((n) >> 8))
 convert little endian uint16_t to byte 1. More...
 
#define UINT32_TO_BYTE0(n)    ((uint8_t) (n))
 convert little endian uint32_t to byte 0. More...
 
#define UINT32_TO_BYTE1(n)    ((uint8_t) ((n) >> 8))
 convert little endian uint32_t to byte 1. More...
 
#define UINT32_TO_BYTE2(n)    ((uint8_t) ((n) >> 16))
 convert little endian uint32_t to byte 2. More...
 
#define UINT32_TO_BYTE3(n)    ((uint8_t) ((n) >> 24))
 convert little endian uint32_t to byte 3. More...
 
Macros for converting a little endian byte stream to integers, with increment.
#define BSTREAM_TO_INT8(n, p)    {n = (int8_t)(*(p)++);}
 convert little endian byte stream to uint8_t, incrementing one byte. More...
 
#define BSTREAM_TO_UINT8(n, p)    {n = (uint8_t)(*(p)++);}
 convert little endian byte stream to int8_t, incrementing one byte. More...
 
#define BSTREAM_TO_INT16(n, p)    {BYTES_TO_INT16(n, p); p += 2;}
 convert little endian byte stream to int16_t, incrementing two bytes. More...
 
#define BSTREAM_TO_UINT16(n, p)    {BYTES_TO_UINT16(n, p); p += 2;}
 convert little endian byte stream to uint16_t, incrementing two bytes. More...
 
#define BSTREAM_TO_UINT24(n, p)    {BYTES_TO_UINT24(n, p); p += 3;}
 convert little endian byte stream to uint24_t, incrementing three bytes. More...
 
#define BSTREAM_TO_UINT32(n, p)    {BYTES_TO_UINT32(n, p); p += 4;}
 convert little endian byte stream to uint32_t, incrementing four bytes. More...
 
#define BSTREAM_TO_UINT40(n, p)    {BYTES_TO_UINT40(n, p); p += 5;}
 convert little endian byte stream to uint40_t, incrementing five bytes. More...
 
#define BSTREAM_TO_UINT64(n, p)    {n = BstreamToUint64(p); p += 8;}
 convert little endian byte stream to uint64_t, incrementing eigth bytes. More...
 
#define BSTREAM_TO_BDA(bda, p)    {BdaCpy(bda, p); p += BDA_ADDR_LEN;}
 convert little endian byte stream to six byte Bluetooth device address, incrementing six bytes. More...
 
#define BSTREAM_TO_BDA64(bda, p)   {bda = BstreamToBda64(p); p += BDA_ADDR_LEN;}
 convert little endian byte stream to eight byte Bluetooth device address, incrementing eight bytes. More...
 
Macros for converting a big endian byte stream to integers, with increment.
#define BSTREAM_BE_TO_UINT16(n, p)    {BYTES_BE_TO_UINT16(n, p); p += 2;}
 convert big endian byte stream to uint16_t, incrementing one byte. More...
 
#define BSTREAM_BE_TO_UINT24(n, p)    {BYTES_BE_TO_UINT24(n, p); p += 3;}
 convert big endian byte stream to 24-bit uint32_t (MSB 0), incrementing one byte. More...
 
Macros for converting integers to a little endian byte stream, with increment.
#define UINT8_TO_BSTREAM(p, n)    {*(p)++ = (uint8_t)(n);}
 convert uint8_t to little endian byte stream, incrementing one byte. More...
 
#define UINT16_TO_BSTREAM(p, n)    {*(p)++ = (uint8_t)(n); *(p)++ = (uint8_t)((n) >> 8);}
 convert uint16_t to little endian byte stream, incrementing two bytes. More...
 
#define UINT24_TO_BSTREAM(p, n)
 convert uint24_t to little endian byte stream, incrementing three bytes. More...
 
#define UINT32_TO_BSTREAM(p, n)
 convert uint32_t to little endian byte stream, incrementing four bytes. More...
 
#define UINT40_TO_BSTREAM(p, n)
 convert uint40_t to little endian byte stream, incrementing five bytes. More...
 
#define UINT64_TO_BSTREAM(p, n)    {Uint64ToBstream(p, n); p += sizeof(uint64_t);}
 convert uint64_t to little endian byte stream, incrementing eight bytes. More...
 
#define BDA_TO_BSTREAM(p, bda)    {BdaCpy(p, bda); p += BDA_ADDR_LEN;}
 convert six byte Bluetooth device address to little endian byte stream, incrementing six bytes. More...
 
#define BDA64_TO_BSTREAM(p, bda)   {Bda64ToBstream(p, bda); p += BDA_ADDR_LEN;}
 convert eight byte Bluetooth device address to little endian byte stream, incrementing eigth bytes. More...
 
Macros for converting integers to a big endian byte stream, with increment.
#define UINT16_TO_BE_BSTREAM(p, n)    {*(p)++ = (uint8_t)((n) >> 8); *(p)++ = (uint8_t)(n);}
 convert uint16_t to big endian byte stream, incrementing one byte. More...
 
#define UINT32_TO_BE_BSTREAM(p, n)
 convert uint32_t to big endian byte stream, incrementing one byte. More...
 
Macros for converting integers to a little endian byte stream, without increment.
#define UINT16_TO_BUF(p, n)    {(p)[0] = (uint8_t)(n); (p)[1] = (uint8_t)((n) >> 8);}
 convert uint16_t to little endian byte stream. More...
 
#define UINT24_TO_BUF(p, n)
 convert uint24_t to little endian byte stream. More...
 
#define UINT32_TO_BUF(p, n)
 convert uint32_t to little endian byte stream. More...
 
#define UINT40_TO_BUF(p, n)
 convert uint40_t to little endian byte stream. More...
 
Macros for converting integers to a big endian byte stream, without increment.
#define UINT16_TO_BE_BUF(p, n)    {(p)[0] = (uint8_t)((n) >> 8); (p)[1] = (uint8_t)(n);}
 convert uint16_t to big endian byte stream. More...
 
#define UINT24_TO_BE_BUF(p, n)
 convert 24-bit uint32_t (MSB 0) to big endian byte stream. More...
 
#define UINT32_TO_BE_BUF(p, n)
 convert uint32_t to big endian byte stream. More...
 
Macros for comparing a little endian byte buffer to integers.
#define BYTES_UINT16_CMP(p, n)    ((p)[1] == UINT16_TO_BYTE1(n) && (p)[0] == UINT16_TO_BYTE0(n))
 compare 2 byte little endian buffer with a uint16_t. More...
 
Macros for IEEE FLOAT type: exponent = byte 3, mantissa = bytes 2-0
#define FLT_TO_UINT32(m, e)    ((m) | ((int32_t)(e) * 16777216))
 Convert float to uint32. More...
 
#define UINT32_TO_FLT(m, e, n)    {m = UINT32_TO_FLT_M(n); e = UINT32_TO_FLT_E(n);}
 Convert uint32_t to float. More...
 
#define UINT32_TO_FLT_M(n)
 Convert uint32_t to float mantissa component. More...
 
#define UINT32_TO_FLT_E(n)    ((int8_t)(n >> 24))
 Convert uint32_t to float exponent component. More...
 
Macros for IEEE SFLOAT type: exponent = bits 15-12, mantissa = bits 11-0
#define SFLT_TO_UINT16(m, e)    ((m) | (0xF000 & ((int16_t)(e) * 4096)))
 Convert sfloat to uint16_t. More...
 
#define UINT16_TO_SFLT(m, e, n)    {m = UINT16_TO_SFLT_M(n); e = UINT16_TO_SFLT_E(n);}
 Convert uint16_t to sfloat. More...
 
#define UINT16_TO_SFLT_M(n)
 Convert uint16_T to sfloat mantissa component. More...
 
#define UINT16_TO_SFLT_E(n)
 Convert uint16_T to sfloat exponent component. More...
 

Functions

uint64_t BstreamToBda64 (const uint8_t *p)
 Convert bstream to BDA64. More...
 
uint64_t BstreamToUint64 (const uint8_t *p)
 Convert bstream to uint64_t. More...
 
void Bda64ToBstream (uint8_t *p, uint64_t bda)
 Convert BDA64 to bstream. More...
 
void Uint64ToBstream (uint8_t *p, uint64_t n)
 Convert uint64_t to bstream. More...
 

Detailed Description

Byte stream to integer conversion macros.

Copyright (c) 2009-2018 Arm Ltd. All Rights Reserved.

Copyright (c) 2019-2020 Packetcraft, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Definition in file bstream.h.

Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.