Utility Functions and Definitions

nRF5 SDK v9.0.0

nRF51 SDK v9.0.0

Various types and definitions available to all applications. More...

Data Structures

struct uint8_array_t
Byte array type. More...
struct regcertdatalist_t
IEEE 11073-20601 Regulatory Certification Data List Structure. More...
struct sfloat_t
SFLOAT format (IEEE-11073 16-bit FLOAT, meaning 4 bits for exponent (base 10) and 12 bits mantissa) More...
struct ble_date_time_t
Date and Time structure. More...

Macros

#define STRING_CONCATENATE_IMPL (lhs, rhs)   lhs ## rhs
Implementation specific macro for delayed macro expansion used in string concatenation. More...
#define STRING_CONCATENATE (lhs, rhs) STRING_CONCATENATE_IMPL (lhs, rhs)
Macro used to concatenate string using delayed macro expansion. More...
#define STATIC_ASSERT (EXPR)   ;enum { STRING_CONCATENATE (assert_line_, __LINE__) = 1/(!!(EXPR)) }
Macro for doing static (i.e. compile time) assertion. More...
#define ROUNDED_DIV (A, B)   (((A) + ((B) / 2)) / (B))
Perform rounded integer division (as opposed to truncating the result). More...
#define IS_POWER_OF_TWO (A)   ( ((A) != 0) && ((((A) - 1) & (A)) == 0) )
Check if the integer provided is a power of two. More...
#define MSEC_TO_UNITS (TIME, RESOLUTION)   (((TIME) * 1000) / (RESOLUTION))
To convert milliseconds to ticks. More...
#define CEIL_DIV (A, B)
Perform integer division, making sure the result is rounded up. More...

Typedefs

typedef uint8_t uint16_le_t [2]
type for holding an encoded (i.e. little endian) 16 bit unsigned integer.
typedef uint8_t uint32_le_t [4]
type for holding an encoded (i.e. little endian) 32 bit unsigned integer.
typedef uint8_t nibble_t
typedef uint32_t uint24_t
typedef uint64_t uint40_t

Enumerations

enum {
UNIT_0_625_MS = 625,
UNIT_1_25_MS = 1250,
UNIT_10_MS = 10000
}

Functions

static __INLINE uint8_t uint16_encode (uint16_t value, uint8_t *p_encoded_data)
Function for encoding a uint16 value. More...
static __INLINE uint8_t uint32_encode (uint32_t value, uint8_t *p_encoded_data)
Function for encoding a uint32 value. More...
static __INLINE uint16_t uint16_decode (const uint8_t *p_encoded_data)
Function for decoding a uint16 value. More...
static __INLINE uint32_t uint32_decode (const uint8_t *p_encoded_data)
Function for decoding a uint32 value. More...
static __INLINE uint8_t battery_level_in_percent (const uint16_t mvolts)
Function for converting the input voltage (in milli volts) into percentage of 3.0 Volts. More...
static __INLINE bool is_word_aligned (void *p)
Function for checking if a pointer value is aligned to a 4 byte boundary. More...
static __INLINE uint8_t bds_uint16_encode (const uint16_t *p_value, uint8_t *p_encoded_data)
Function for encoding a uint16 value. More...
static __INLINE uint8_t bds_int16_encode (const int16_t *p_value, uint8_t *p_encoded_data)
static __INLINE uint8_t bds_uint24_encode (const uint32_t *p_value, uint8_t *p_encoded_data)
Function for encoding a uint24 value. More...
static __INLINE uint8_t bds_uint32_encode (const uint32_t *p_value, uint8_t *p_encoded_data)
Function for encoding a uint32 value. More...
static __INLINE uint8_t bds_uint40_encode (const uint64_t *p_value, uint8_t *p_encoded_data)
Function for encoding a uint40 value. More...
static __INLINE uint8_t bds_sfloat_encode (const sfloat_t *p_value, uint8_t *p_encoded_data)
Function for encoding a sfloat value. More...
static __INLINE uint8_t bds_uint8_array_encode (const uint8_array_t *p_value, uint8_t *p_encoded_data)
Function for encoding a uint8_array value. More...
static __INLINE uint8_t bds_ble_srv_utf8_str_encode (const ble_srv_utf8_str_t *p_value, uint8_t *p_encoded_data)
Function for encoding a utf8_str value. More...
static __INLINE uint8_t bds_regcertdatalist_encode (const regcertdatalist_t *p_value, uint8_t *p_encoded_data)
Function for encoding a regcertdatalist value. More...
static __INLINE uint8_t bds_ble_date_time_encode (const ble_date_time_t *p_date_time, uint8_t *p_encoded_data)
Function for decoding a date_time value. More...
static __INLINE uint8_t bds_uint16_decode (const uint8_t len, const uint8_t *p_encoded_data, uint16_t *p_decoded_val)
Function for decoding a uint16 value. More...
static __INLINE uint8_t bds_int16_decode (const uint8_t len, const uint8_t *p_encoded_data, int16_t *p_decoded_val)
Function for decoding a int16 value. More...
static __INLINE uint8_t bds_uint24_decode (const uint8_t len, const uint8_t *p_encoded_data, uint32_t *p_decoded_val)
Function for decoding a uint24 value. More...
static __INLINE uint8_t bds_uint32_decode (const uint8_t len, const uint8_t *p_encoded_data, uint32_t *p_decoded_val)
Function for decoding a uint32 value. More...
static __INLINE uint8_t bds_uint40_decode (const uint8_t len, const uint8_t *p_encoded_data, uint64_t *p_decoded_val)
Function for decoding a uint40 value. More...
static __INLINE uint8_t bds_sfloat_decode (const uint8_t len, const uint8_t *p_encoded_data, sfloat_t *p_decoded_val)
Function for decoding a sfloat value. More...
static __INLINE uint8_t bds_uint8_array_decode (const uint8_t len, const uint8_t *p_encoded_data, uint8_array_t *p_decoded_val)
Function for decoding a uint8_array value. More...
static __INLINE uint8_t bds_ble_srv_utf8_str_decode (const uint8_t len, const uint8_t *p_encoded_data, ble_srv_utf8_str_t *p_decoded_val)
Function for decoding a utf8_str value. More...
static __INLINE uint8_t bds_regcertdatalist_decode (const uint8_t len, const uint8_t *p_encoded_data, regcertdatalist_t *p_decoded_val)
Function for decoding a regcertdatalist value. More...
static __INLINE uint8_t bds_ble_date_time_decode (const uint8_t len, const uint8_t *p_encoded_data, ble_date_time_t *p_date_time)
Function for decoding a date_time value. More...

Detailed Description

Various types and definitions available to all applications.

Macro Definition Documentation

#define CEIL_DIV ( A,
B
)
Value:
/*lint -save -e573 */ \
((((A) - 1) / (B)) + 1) \
/*lint -restore */

Perform integer division, making sure the result is rounded up.

One typical use for this is to compute the number of objects with size B is needed to hold A number of bytes.

Parameters
[in] A Numerator.
[in] B Denominator.
Returns
Integer result of dividing A by B, rounded up.
#define IS_POWER_OF_TWO ( A ) ( ((A) != 0) && ((((A) - 1) & (A)) == 0) )

Check if the integer provided is a power of two.

Parameters
[in] A Number to be tested.
Returns
true if value is power of two.
false if value not power of two.
#define MSEC_TO_UNITS ( TIME,
RESOLUTION
) (((TIME) * 1000) / (RESOLUTION))

To convert milliseconds to ticks.

Parameters
[in] TIME Number of milliseconds to convert.
[in] RESOLUTION Unit to be converted to in [us/ticks].
#define ROUNDED_DIV ( A,
B
) (((A) + ((B) / 2)) / (B))

Perform rounded integer division (as opposed to truncating the result).

Parameters
[in] A Numerator.
[in] B Denominator.
Returns
Rounded (integer) result of dividing A by B.
#define STATIC_ASSERT ( EXPR ) ;enum { STRING_CONCATENATE (assert_line_, __LINE__) = 1/(!!(EXPR)) }

Macro for doing static (i.e. compile time) assertion.

Note
If the EXPR isn't resolvable, then the error message won't be shown.
The output of STATIC_ASSERT_MSG will be different across different compilers.
Parameters
[in] EXPR Constant expression to be verified.
#define STRING_CONCATENATE ( lhs,
rhs
) STRING_CONCATENATE_IMPL (lhs, rhs)

Macro used to concatenate string using delayed macro expansion.

Note
This macro will delay concatenation until the expressions have been resolved
Parameters
[in] lhs Left hand side in concatenation
[in] rhs Right hand side in concatenation
#define STRING_CONCATENATE_IMPL ( lhs,
rhs
) lhs ## rhs

Implementation specific macro for delayed macro expansion used in string concatenation.

Parameters
[in] lhs Left hand side in concatenation
[in] rhs Right hand side in concatenation

Enumeration Type Documentation

anonymous enum
Enumerator
UNIT_0_625_MS

Number of microseconds in 0.625 milliseconds.

UNIT_1_25_MS

Number of microseconds in 1.25 milliseconds.

UNIT_10_MS

Number of microseconds in 10 milliseconds.

Function Documentation

static __INLINE uint8_t battery_level_in_percent ( const uint16_t mvolts )
static

Function for converting the input voltage (in milli volts) into percentage of 3.0 Volts.

The calculation is based on a linearized version of the battery's discharge curve. 3.0V returns 100% battery level. The limit for power failure is 2.1V and is considered to be the lower boundary.

The discharge curve for CR2032 is non-linear. In this model it is split into 4 linear sections:

  • Section 1: 3.0V - 2.9V = 100% - 42% (58% drop on 100 mV)
  • Section 2: 2.9V - 2.74V = 42% - 18% (24% drop on 160 mV)
  • Section 3: 2.74V - 2.44V = 18% - 6% (12% drop on 300 mV)
  • Section 4: 2.44V - 2.1V = 6% - 0% (6% drop on 340 mV)

These numbers are by no means accurate. Temperature and load in the actual application is not accounted for!

Parameters
[in] mvolts The voltage in mV
Returns
Battery level in percent.
static __INLINE uint8_t bds_ble_date_time_decode ( const uint8_t len ,
const uint8_t * p_encoded_data ,
ble_date_time_t * p_date_time
)
static

Function for decoding a date_time value.

Parameters
[in] len length of the field to be decoded.
[in] p_encoded_data Buffer where the encoded data is stored.
[in] p_date_time pointer to the decoded value
Returns
length of the decoded field.
static __INLINE uint8_t bds_ble_date_time_encode ( const ble_date_time_t * p_date_time ,
uint8_t * p_encoded_data
)
static

Function for decoding a date_time value.

Parameters
[in] p_date_time pointer to the date_time structure to encode.
[in] p_encoded_data pointer to the encoded data
Returns
length of the encoded field.
static __INLINE uint8_t bds_ble_srv_utf8_str_decode ( const uint8_t len ,
const uint8_t * p_encoded_data ,
ble_srv_utf8_str_t * p_decoded_val
)
static

Function for decoding a utf8_str value.

Parameters
[in] len length of the field to be decoded.
[in] p_encoded_data Buffer where the encoded data is stored.
[in] p_decoded_val pointer to the decoded value
Returns
length of the decoded field.
static __INLINE uint8_t bds_ble_srv_utf8_str_encode ( const ble_srv_utf8_str_t * p_value ,
uint8_t * p_encoded_data
)
static

Function for encoding a utf8_str value.

Parameters
[in] p_value Value to be encoded.
[out] p_encoded_data Buffer where the encoded data is to be written.
static __INLINE uint8_t bds_int16_decode ( const uint8_t len ,
const uint8_t * p_encoded_data ,
int16_t * p_decoded_val
)
static

Function for decoding a int16 value.

Parameters
[in] len length of the field to be decoded.
[in] p_encoded_data Buffer where the encoded data is stored.
[in] p_decoded_val pointer to the decoded value
Returns
length of the decoded field.
static __INLINE uint8_t bds_regcertdatalist_decode ( const uint8_t len ,
const uint8_t * p_encoded_data ,
regcertdatalist_t * p_decoded_val
)
static

Function for decoding a regcertdatalist value.

Parameters
[in] len length of the field to be decoded.
[in] p_encoded_data Buffer where the encoded data is stored.
[in] p_decoded_val pointer to the decoded value
Returns
length of the decoded field.
static __INLINE uint8_t bds_regcertdatalist_encode ( const regcertdatalist_t * p_value ,
uint8_t * p_encoded_data
)
static

Function for encoding a regcertdatalist value.

Parameters
[in] p_value Value to be encoded.
[out] p_encoded_data Buffer where the encoded data is to be written.
static __INLINE uint8_t bds_sfloat_decode ( const uint8_t len ,
const uint8_t * p_encoded_data ,
sfloat_t * p_decoded_val
)
static

Function for decoding a sfloat value.

Parameters
[in] len length of the field to be decoded.
[in] p_encoded_data Buffer where the encoded data is stored.
[in] p_decoded_val pointer to the decoded value
Returns
length of the decoded field.
static __INLINE uint8_t bds_sfloat_encode ( const sfloat_t * p_value ,
uint8_t * p_encoded_data
)
static

Function for encoding a sfloat value.

Parameters
[in] p_value Value to be encoded.
[out] p_encoded_data Buffer where the encoded data is to be written.
Returns
Number of bytes written.
static __INLINE uint8_t bds_uint16_decode ( const uint8_t len ,
const uint8_t * p_encoded_data ,
uint16_t * p_decoded_val
)
static

Function for decoding a uint16 value.

Parameters
[in] len length of the field to be decoded.
[in] p_encoded_data Buffer where the encoded data is stored.
[in] p_decoded_val pointer to the decoded value
Returns
length of the decoded field.
static __INLINE uint8_t bds_uint16_encode ( const uint16_t * p_value ,
uint8_t * p_encoded_data
)
static

Function for encoding a uint16 value.

Parameters
[in] p_value Value to be encoded.
[out] p_encoded_data Buffer where the encoded data is to be written.
Returns
Number of bytes written.
static __INLINE uint8_t bds_uint24_decode ( const uint8_t len ,
const uint8_t * p_encoded_data ,
uint32_t * p_decoded_val
)
static

Function for decoding a uint24 value.

Parameters
[in] len length of the field to be decoded.
[in] p_encoded_data Buffer where the encoded data is stored.
[in] p_decoded_val pointer to the decoded value
Returns
length of the decoded field.
static __INLINE uint8_t bds_uint24_encode ( const uint32_t * p_value ,
uint8_t * p_encoded_data
)
static

Function for encoding a uint24 value.

Parameters
[in] p_value Value to be encoded.
[out] p_encoded_data Buffer where the encoded data is to be written.
Returns
Number of bytes written.
static __INLINE uint8_t bds_uint32_decode ( const uint8_t len ,
const uint8_t * p_encoded_data ,
uint32_t * p_decoded_val
)
static

Function for decoding a uint32 value.

Parameters
[in] len length of the field to be decoded.
[in] p_encoded_data Buffer where the encoded data is stored.
[in] p_decoded_val pointer to the decoded value
Returns
length of the decoded field.
static __INLINE uint8_t bds_uint32_encode ( const uint32_t * p_value ,
uint8_t * p_encoded_data
)
static

Function for encoding a uint32 value.

Parameters
[in] p_value Value to be encoded.
[out] p_encoded_data Buffer where the encoded data is to be written.
Returns
Number of bytes written.
static __INLINE uint8_t bds_uint40_decode ( const uint8_t len ,
const uint8_t * p_encoded_data ,
uint64_t * p_decoded_val
)
static

Function for decoding a uint40 value.

Parameters
[in] len length of the field to be decoded.
[in] p_encoded_data Buffer where the encoded data is stored.
[in] p_decoded_val pointer to the decoded value
Returns
length of the decoded field.
static __INLINE uint8_t bds_uint40_encode ( const uint64_t * p_value ,
uint8_t * p_encoded_data
)
static

Function for encoding a uint40 value.

Parameters
[in] p_value Value to be encoded.
[out] p_encoded_data Buffer where the encoded data is to be written.
Returns
Number of bytes written.
static __INLINE uint8_t bds_uint8_array_decode ( const uint8_t len ,
const uint8_t * p_encoded_data ,
uint8_array_t * p_decoded_val
)
static

Function for decoding a uint8_array value.

Parameters
[in] len length of the field to be decoded.
[in] p_encoded_data Buffer where the encoded data is stored.
[in] p_decoded_val pointer to the decoded value
Returns
length of the decoded field.
static __INLINE uint8_t bds_uint8_array_encode ( const uint8_array_t * p_value ,
uint8_t * p_encoded_data
)
static

Function for encoding a uint8_array value.

Parameters
[in] p_value Value to be encoded.
[out] p_encoded_data Buffer where the encoded data is to be written.
static __INLINE bool is_word_aligned ( void * p )
static

Function for checking if a pointer value is aligned to a 4 byte boundary.

Parameters
[in] p Pointer value to be checked.
Returns
TRUE if pointer is aligned to a 4 byte boundary, FALSE otherwise.
static __INLINE uint16_t uint16_decode ( const uint8_t * p_encoded_data )
static

Function for decoding a uint16 value.

Parameters
[in] p_encoded_data Buffer where the encoded data is stored.
Returns
Decoded value.
static __INLINE uint8_t uint16_encode ( uint16_t value ,
uint8_t * p_encoded_data
)
static

Function for encoding a uint16 value.

Parameters
[in] value Value to be encoded.
[out] p_encoded_data Buffer where the encoded data is to be written.
Returns
Number of bytes written.
static __INLINE uint32_t uint32_decode ( const uint8_t * p_encoded_data )
static

Function for decoding a uint32 value.

Parameters
[in] p_encoded_data Buffer where the encoded data is stored.
Returns
Decoded value.
static __INLINE uint8_t uint32_encode ( uint32_t value ,
uint8_t * p_encoded_data
)
static

Function for encoding a uint32 value.

Parameters
[in] value Value to be encoded.
[out] p_encoded_data Buffer where the encoded data is to be written.
Returns
Number of bytes written.

Please send us your feedback about the documentation! For technical questions, visit the Nordic Developer Zone .