Compiler and Platform specific definitions and typedefs common to all platforms. More...

Macros

#define MEMSET(d, v, l)   memset(d, v, l)
 Friendly convenience macro pointing to the C Stdlib functions. More...
 
#define MEMCOPY(d, s, l)   memcpy(d, s, l)
 
#define MEMMOVE(d, s, l)   memmove(d, s, l)
 
#define MEMPGMCOPY(d, s, l)   memcpy(d, s, l)
 
#define MEMCOMPARE(s0, s1, l)   memcmp(s0, s1, l)
 
#define MEMPGMCOMPARE(s0, s1, l)   memcmp(s0, s1, l)
 

Generic Types

#define TRUE   1
 An alias for one, used for clarity. More...
 
#define FALSE   0
 An alias for zero, used for clarity. More...
 
#define NULL   ((void *)0)
 The null pointer. More...
 

Bit Manipulation Macros

#define BIT(x)   (1U << (x))
 Useful to reference a single bit of a byte. More...
 
#define BIT32(x)   (((uint32_t) 1) << (x))
 Useful to reference a single bit of an uint32_t type. More...
 
#define SETBIT(reg, bit)   (reg) |= BIT(bit)
 Sets bit in the reg register or byte. More...
 
#define SETBITS(reg, bits)   (reg) |= (bits)
 Sets the bits in the reg register or the byte as specified in the bitmask bits. More...
 
#define CLEARBIT(reg, bit)   (reg) &= ~(BIT(bit))
 Clears a bit in the reg register or byte. More...
 
#define CLEARBITS(reg, bits)   (reg) &= ~(bits)
 Clears the bits in the reg register or byte as specified in the bitmask bits. More...
 
#define READBIT(reg, bit)   ((reg) & (BIT(bit)))
 Returns the value of bit within the register or byte reg. More...
 
#define READBITS(reg, bits)   ((reg) & (bits))
 Returns the value of the bitmask bits within the register or byte reg. More...
 

Byte Manipulation Macros

#define LOW_BYTE(n)   ((uint8_t)((n) & 0xFF))
 Returns the low byte of the 16-bit value n as an uint8_t. More...
 
#define HIGH_BYTE(n)   ((uint8_t)(LOW_BYTE((n) >> 8)))
 Returns the high byte of the 16-bit value n as an uint8_t. More...
 
#define HIGH_LOW_TO_INT(high, low)
 Returns the value built from the two uint8_t values high and low. More...
 
#define INT8U_TO_INT32U(byte3, byte2, byte1, byte0)
 Returns the value built from the four uint8_t as an uint32_t. More...
 
#define BYTE_0(n)   ((uint8_t)((n) & 0xFF))
 Returns the low byte of the 32-bit value n as an uint8_t. More...
 
#define BYTE_1(n)   BYTE_0((n) >> 8)
 Returns the second byte of the 32-bit value n as an uint8_t. More...
 
#define BYTE_2(n)   BYTE_0((n) >> 16)
 Returns the third byte of the 32-bit value n as an uint8_t. More...
 
#define BYTE_3(n)   BYTE_0((n) >> 24)
 Returns the high byte of the 32-bit value n as an uint8_t. More...
 
#define BYTE_4(n)   BYTE_0((n) >> 32)
 Returns the fifth byte of the 64-bit value n as an uint8_t. More...
 
#define BYTE_5(n)   BYTE_0((n) >> 40)
 Returns the sixth byte of the 64-bit value n as an uint8_t. More...
 
#define BYTE_6(n)   BYTE_0((n) >> 48)
 Returns the seventh byte of the 64-bit value n as an uint8_t. More...
 
#define BYTE_7(n)   BYTE_0((n) >> 56)
 Returns the high byte of the 64-bit value n as an uint8_t. More...
 
#define COUNTOF(a)   (sizeof(a) / sizeof(a[0]))
 Returns the number of entries in an array. More...
 

Time Manipulation Macros

#define elapsedTimeInt8u(oldTime, newTime)   ((uint8_t) ((uint8_t)(newTime) - (uint8_t)(oldTime)))
 Returns the elapsed time between two 8 bit values. Result may not be valid if the time samples differ by more than 127. More...
 
#define elapsedTimeInt16u(oldTime, newTime)   ((uint16_t) ((uint16_t)(newTime) - (uint16_t)(oldTime)))
 Returns the elapsed time between two 16 bit values. Result may not be valid if the time samples differ by more than 32767. More...
 
#define elapsedTimeInt32u(oldTime, newTime)   ((uint32_t) ((uint32_t)(newTime) - (uint32_t)(oldTime)))
 Returns the elapsed time between two 32 bit values. Result may not be valid if the time samples differ by more than 2147483647. More...
 
#define MAX_INT8U_VALUE   (0xFF)
 Returns true if t1 is greater than t2. Can only account for 1 wrap around of the variable before it is wrong. More...
 
#define HALF_MAX_INT8U_VALUE   (0x80)
 Returns the elapsed time between two 8 bit values. Result may not be valid if the time samples differ by more than 127. More...
 
#define timeGTorEqualInt8u(t1, t2)   (elapsedTimeInt8u(t2, t1) <= (HALF_MAX_INT8U_VALUE))
 Returns the elapsed time between two 8 bit values. Result may not be valid if the time samples differ by more than 127. More...
 
#define MAX_INT16U_VALUE   (0xFFFF)
 Returns true if t1 is greater than t2. Can only account for 1 wrap around of the variable before it is wrong. More...
 
#define HALF_MAX_INT16U_VALUE   (0x8000)
 Returns the elapsed time between two 8 bit values. Result may not be valid if the time samples differ by more than 127. More...
 
#define timeGTorEqualInt16u(t1, t2)   (elapsedTimeInt16u(t2, t1) <= (HALF_MAX_INT16U_VALUE))
 Returns the elapsed time between two 8 bit values. Result may not be valid if the time samples differ by more than 127. More...
 
#define MAX_INT32U_VALUE   (0xFFFFFFFFUL)
 Returns true if t1 is greater than t2. Can only account for 1 wrap around of the variable before it is wrong. More...
 
#define HALF_MAX_INT32U_VALUE   (0x80000000UL)
 Returns the elapsed time between two 8 bit values. Result may not be valid if the time samples differ by more than 127. More...
 
#define timeGTorEqualInt32u(t1, t2)   (elapsedTimeInt32u(t2, t1) <= (HALF_MAX_INT32U_VALUE))
 Returns the elapsed time between two 8 bit values. Result may not be valid if the time samples differ by more than 127. More...
 

Miscellaneous Macros

#define UNUSED_VAR(x)   (void)(x)
 
#define DEBUG_LEVEL   BASIC_DEBUG
 Set debug level based on whether DEBUG or DEBUG_STRIPPED are defined. More...
 
#define STATIC_ASSERT(__condition, __errorstr)
 Disable static assertions on compilers that don't support them. More...
 

Detailed Description

Compiler and Platform specific definitions and typedefs common to all platforms.

platform-common.h provides PLATFORM_HEADER defaults and common definitions. This head should never be included directly, it should only be included by the specific PLATFORM_HEADER used by your platform.

See platform-common.h for source code.

Macro Definition Documentation

◆ BIT

#define BIT (   x)    (1U << (x))

Useful to reference a single bit of a byte.

Definition at line 234 of file platform-common.h.

◆ BIT32

#define BIT32 (   x)    (((uint32_t) 1) << (x))

Useful to reference a single bit of an uint32_t type.

Definition at line 239 of file platform-common.h.

◆ BYTE_0

#define BYTE_0 (   n)    ((uint8_t)((n) & 0xFF))

Returns the low byte of the 32-bit value n as an uint8_t.

Definition at line 321 of file platform-common.h.

◆ BYTE_1

#define BYTE_1 (   n)    BYTE_0((n) >> 8)

Returns the second byte of the 32-bit value n as an uint8_t.

Definition at line 326 of file platform-common.h.

◆ BYTE_2

#define BYTE_2 (   n)    BYTE_0((n) >> 16)

Returns the third byte of the 32-bit value n as an uint8_t.

Definition at line 331 of file platform-common.h.

◆ BYTE_3

#define BYTE_3 (   n)    BYTE_0((n) >> 24)

Returns the high byte of the 32-bit value n as an uint8_t.

Definition at line 336 of file platform-common.h.

◆ BYTE_4

#define BYTE_4 (   n)    BYTE_0((n) >> 32)

Returns the fifth byte of the 64-bit value n as an uint8_t.

Definition at line 341 of file platform-common.h.

◆ BYTE_5

#define BYTE_5 (   n)    BYTE_0((n) >> 40)

Returns the sixth byte of the 64-bit value n as an uint8_t.

Definition at line 346 of file platform-common.h.

◆ BYTE_6

#define BYTE_6 (   n)    BYTE_0((n) >> 48)

Returns the seventh byte of the 64-bit value n as an uint8_t.

Definition at line 351 of file platform-common.h.

◆ BYTE_7

#define BYTE_7 (   n)    BYTE_0((n) >> 56)

Returns the high byte of the 64-bit value n as an uint8_t.

Definition at line 356 of file platform-common.h.

◆ CLEARBIT

#define CLEARBIT (   reg,
  bit 
)    (reg) &= ~(BIT(bit))

Clears a bit in the reg register or byte.

Note
Assuming reg is an IO register, some platforms (such as the AVR) can implement this in a single atomic operation.

Definition at line 260 of file platform-common.h.

◆ CLEARBITS

#define CLEARBITS (   reg,
  bits 
)    (reg) &= ~(bits)

Clears the bits in the reg register or byte as specified in the bitmask bits.

Note
This is never a single atomic operation.

Definition at line 267 of file platform-common.h.

◆ COUNTOF

#define COUNTOF (   a)    (sizeof(a) / sizeof(a[0]))

Returns the number of entries in an array.

Definition at line 361 of file platform-common.h.

◆ DEBUG_LEVEL

#define DEBUG_LEVEL   BASIC_DEBUG

Set debug level based on whether DEBUG or DEBUG_STRIPPED are defined.

Definition at line 457 of file platform-common.h.

◆ elapsedTimeInt16u

#define elapsedTimeInt16u (   oldTime,
  newTime 
)    ((uint16_t) ((uint16_t)(newTime) - (uint16_t)(oldTime)))

Returns the elapsed time between two 16 bit values. Result may not be valid if the time samples differ by more than 32767.

Definition at line 383 of file platform-common.h.

◆ elapsedTimeInt32u

#define elapsedTimeInt32u (   oldTime,
  newTime 
)    ((uint32_t) ((uint32_t)(newTime) - (uint32_t)(oldTime)))

Returns the elapsed time between two 32 bit values. Result may not be valid if the time samples differ by more than 2147483647.

Definition at line 390 of file platform-common.h.

◆ elapsedTimeInt8u

#define elapsedTimeInt8u (   oldTime,
  newTime 
)    ((uint8_t) ((uint8_t)(newTime) - (uint8_t)(oldTime)))

Returns the elapsed time between two 8 bit values. Result may not be valid if the time samples differ by more than 127.

Definition at line 376 of file platform-common.h.

◆ FALSE

#define FALSE   0

An alias for zero, used for clarity.

Definition at line 214 of file platform-common.h.

◆ HALF_MAX_INT16U_VALUE

#define HALF_MAX_INT16U_VALUE   (0x8000)

Returns the elapsed time between two 8 bit values. Result may not be valid if the time samples differ by more than 127.

Definition at line 407 of file platform-common.h.

◆ HALF_MAX_INT32U_VALUE

#define HALF_MAX_INT32U_VALUE   (0x80000000UL)

Returns the elapsed time between two 8 bit values. Result may not be valid if the time samples differ by more than 127.

Definition at line 416 of file platform-common.h.

◆ HALF_MAX_INT8U_VALUE

#define HALF_MAX_INT8U_VALUE   (0x80)

Returns the elapsed time between two 8 bit values. Result may not be valid if the time samples differ by more than 127.

Definition at line 398 of file platform-common.h.

◆ HIGH_BYTE

#define HIGH_BYTE (   n)    ((uint8_t)(LOW_BYTE((n) >> 8)))

Returns the high byte of the 16-bit value n as an uint8_t.

Definition at line 297 of file platform-common.h.

◆ HIGH_LOW_TO_INT

#define HIGH_LOW_TO_INT (   high,
  low 
)
Value:
( \
((uint16_t) (((uint16_t) (high)) << 8)) \
+ ((uint16_t) ((low) & 0xFF)) \
)

Returns the value built from the two uint8_t values high and low.

Definition at line 303 of file platform-common.h.

◆ INT8U_TO_INT32U

#define INT8U_TO_INT32U (   byte3,
  byte2,
  byte1,
  byte0 
)
Value:
( \
(((uint32_t) (byte3)) << 24) \
+ (((uint32_t) (byte2)) << 16) \
+ (((uint32_t) (byte1)) << 8) \
+ ((uint32_t) ((byte0) & 0xFF)) \
)

Returns the value built from the four uint8_t as an uint32_t.

Definition at line 311 of file platform-common.h.

◆ LOW_BYTE

#define LOW_BYTE (   n)    ((uint8_t)((n) & 0xFF))

Returns the low byte of the 16-bit value n as an uint8_t.

Definition at line 292 of file platform-common.h.

◆ MAX_INT16U_VALUE

#define MAX_INT16U_VALUE   (0xFFFF)

Returns true if t1 is greater than t2. Can only account for 1 wrap around of the variable before it is wrong.

Definition at line 406 of file platform-common.h.

◆ MAX_INT32U_VALUE

#define MAX_INT32U_VALUE   (0xFFFFFFFFUL)

Returns true if t1 is greater than t2. Can only account for 1 wrap around of the variable before it is wrong.

Definition at line 415 of file platform-common.h.

◆ MAX_INT8U_VALUE

#define MAX_INT8U_VALUE   (0xFF)

Returns true if t1 is greater than t2. Can only account for 1 wrap around of the variable before it is wrong.

Definition at line 397 of file platform-common.h.

◆ MEMCOMPARE

#define MEMCOMPARE (   s0,
  s1,
 
)    memcmp(s0, s1, l)

Definition at line 191 of file platform-common.h.

◆ MEMCOPY

#define MEMCOPY (   d,
  s,
 
)    memcpy(d, s, l)

Definition at line 188 of file platform-common.h.

◆ MEMMOVE

#define MEMMOVE (   d,
  s,
 
)    memmove(d, s, l)

Definition at line 189 of file platform-common.h.

◆ MEMPGMCOMPARE

#define MEMPGMCOMPARE (   s0,
  s1,
 
)    memcmp(s0, s1, l)

Definition at line 192 of file platform-common.h.

◆ MEMPGMCOPY

#define MEMPGMCOPY (   d,
  s,
 
)    memcpy(d, s, l)

Definition at line 190 of file platform-common.h.

◆ MEMSET

#define MEMSET (   d,
  v,
 
)    memset(d, v, l)

Friendly convenience macro pointing to the C Stdlib functions.

Definition at line 187 of file platform-common.h.

◆ NULL

#define NULL   ((void *)0)

The null pointer.

Definition at line 221 of file platform-common.h.

◆ READBIT

#define READBIT (   reg,
  bit 
)    ((reg) & (BIT(bit)))

Returns the value of bit within the register or byte reg.

Definition at line 272 of file platform-common.h.

◆ READBITS

#define READBITS (   reg,
  bits 
)    ((reg) & (bits))

Returns the value of the bitmask bits within the register or byte reg.

Definition at line 278 of file platform-common.h.

◆ SETBIT

#define SETBIT (   reg,
  bit 
)    (reg) |= BIT(bit)

Sets bit in the reg register or byte.

Note
Assuming reg is an IO register, some platforms (such as the AVR) can implement this in a single atomic operation.

Definition at line 246 of file platform-common.h.

◆ SETBITS

#define SETBITS (   reg,
  bits 
)    (reg) |= (bits)

Sets the bits in the reg register or the byte as specified in the bitmask bits.

Note
This is never a single atomic operation.

Definition at line 253 of file platform-common.h.

◆ STATIC_ASSERT

#define STATIC_ASSERT (   __condition,
  __errorstr 
)

Disable static assertions on compilers that don't support them.

Definition at line 465 of file platform-common.h.

◆ timeGTorEqualInt16u

#define timeGTorEqualInt16u (   t1,
  t2 
)    (elapsedTimeInt16u(t2, t1) <= (HALF_MAX_INT16U_VALUE))

Returns the elapsed time between two 8 bit values. Result may not be valid if the time samples differ by more than 127.

Definition at line 408 of file platform-common.h.

◆ timeGTorEqualInt32u

#define timeGTorEqualInt32u (   t1,
  t2 
)    (elapsedTimeInt32u(t2, t1) <= (HALF_MAX_INT32U_VALUE))

Returns the elapsed time between two 8 bit values. Result may not be valid if the time samples differ by more than 127.

Definition at line 417 of file platform-common.h.

◆ timeGTorEqualInt8u

#define timeGTorEqualInt8u (   t1,
  t2 
)    (elapsedTimeInt8u(t2, t1) <= (HALF_MAX_INT8U_VALUE))

Returns the elapsed time between two 8 bit values. Result may not be valid if the time samples differ by more than 127.

Definition at line 399 of file platform-common.h.

◆ TRUE

#define TRUE   1

An alias for one, used for clarity.

Definition at line 209 of file platform-common.h.

◆ UNUSED_VAR

#define UNUSED_VAR (   x)    (void)(x)
Description:
Useful macro for avoiding compiler warnings related to unused function arguments or unused variables.

Definition at line 435 of file platform-common.h.