#ifndef COMMON_H #define COMMON_H #ifdef __AVR__ #include //TODO: // Known to work: 4.8.4, 4.9.1 // Known to fail: 4.8.3, 4.9.0 #define GCC_BUG_61443 1 #else // TODO: stm32 #endif /* __AVR__ */ #include #ifdef __FLASH #define FLASH __flash #define MEMX __memx #else #define FLASH #define MEMX #endif #define stringify(s) tostring(s) #define tostring(s) #s #define FSTR(X) ((const FLASH char[]) { X } ) #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) #ifdef __AVR__ #define Stat GPIOR0 #else extern volatile uint_least8_t Stat; #endif /* __AVR__ */ #define S_10MS_TO (1<<0) #define S_MSG_PENDING (2<<0) static inline void my_puts(const char *s) { fputs(s, stdout); } static inline void my_puts_P(const char *s) { #ifdef __AVR__ fputs_P(s, stdout); #else fputs(s, stdout); #endif /* __AVR__ */ } #endif /* COMMON_H */