13 #include <util/parity.h> 14 #include <util/delay.h> 15 #include <avr/pgmspace.h> 18 #define ODD_PARITY(Value) OddParityBit(Value)//(parity_even_bit(Value) ? 0 : 1) 21 void __attribute__((signal)) // This function type has to be used for all the interrupt handlers that have to be changed at runtime 24 static inline __attribute__((always_inline)) 27 #define STRINGIFY(x) #x 30 #define ARRAY_COUNT(x) \ 31 (sizeof(x) / sizeof(x[0])) 33 #define NIBBLE_TO_HEXCHAR(x) ( (x) < 0x0A ? (x) + '0' : (x) + 'A' - 0x0A ) 34 #define HEXCHAR_TO_NIBBLE(x) ( (x) < 'A' ? (x) - '0' : (x) - 'A' + 0x0A ) 35 #define VALID_HEXCHAR(x) ( ( (x) >= '0' && (x) <= '9' ) || ( (x) >= 'A' && (x) <= 'F' ) ) 36 #define MIN(x,y) ( (x) < (y) ? (x) : (y) ) 37 #define MAX(x,y) ( (x) > (y) ? (x) : (y) ) 38 #define SYSTICK_DIFF(since) ((uint16_t) (SystemGetSysTick() - since)) 39 #define SYSTICK_DIFF_100MS(since) (SYSTICK_DIFF(since) / 100) 41 #define BITS_PER_BYTE 8 42 #define ARCH_BIG_ENDIAN 44 uint16_t BufferToHexString(
char *HexOut, uint16_t MaxChars,
const void *Buffer, uint16_t ByteCount);
45 uint16_t HexStringToBuffer(
void *Buffer, uint16_t MaxBytes,
const char *HexIn);
47 INLINE uint8_t BitReverseByte(uint8_t Byte) {
48 extern const uint8_t PROGMEM BitReverseByteTable[];
50 return pgm_read_byte(&BitReverseByteTable[Byte]);
53 INLINE uint8_t OddParityBit(uint8_t Byte) {
54 extern const uint8_t PROGMEM OddParityByteTable[];
56 return pgm_read_byte(&OddParityByteTable[Byte]);
59 INLINE uint8_t StringLength(
const char *Str, uint8_t MaxLen) {