Various types and definitions available to all applications.
More...
|
#define | STATIC_ASSERT(EXPR) typedef char static_assert_failed[(EXPR) ? 1 : -1] |
| 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...
|
|
|
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.
|
|
|
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...
|
|
Various types and definitions available to all applications.
#define CEIL_DIV |
( |
|
A, |
|
|
|
B |
|
) |
| |
Value: \
((((A) - 1) / (B)) + 1) \
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 | ) |
typedef char static_assert_failed[(EXPR) ? 1 : -1] |
Macro for doing static (i.e. compile time) assertion.
- Note
- If the assertion fails when compiling using Keil, the compiler will report error message "error: #94: the size of an array must be greater than zero" (while gcc will list the symbol static_assert_failed, making the error message more readable). If the supplied expression can not be evaluated at compile time, Keil will report "error: #28: expression must have a constant value".
-
The macro is intentionally implemented not using do while(0), allowing it to be used outside function blocks (e.g. close to global type- and variable declarations). If used in a code block, it must be used before any executable code in this block.
- Parameters
-
[in] | EXPR | Constant expression to be verified. |
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.
|
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 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.