29 #ifndef _SSD1306_LINUX_IO_H_ 30 #define _SSD1306_LINUX_IO_H_ 32 #define CONFIG_PLATFORM_I2C_AVAILABLE 33 #define CONFIG_PLATFORM_SPI_AVAILABLE 36 #if defined(SDL_EMULATION) // SDL Emulation mode includes 40 #if defined(__KERNEL__) // KERNEL includes 41 #include <linux/types.h> 43 #else // LINUX includes 63 #if defined(__KERNEL__) // ============== KERNEL 64 static inline int digitalRead(
int pin) {
return LOW; };
65 static inline void delay(
unsigned long ms) { };
66 static inline void delayMicroseconds(
unsigned long us) { };
67 static inline int analogRead(
int pin) {
return 0; };
68 static inline void digitalWrite(
int pin,
int level) { };
69 static inline uint32_t millis(
void) {
return 0; };
70 static inline uint32_t micros(
void) {
return 0; };
71 static inline void pinMode(
int pin,
int mode) {};
73 #else // ============== LINUX 74 static inline void delay(
unsigned long ms) { usleep(ms*1000); };
75 static inline void delayMicroseconds(
unsigned long us) { usleep(us); };
76 static inline uint32_t millis(
void)
79 clock_gettime(CLOCK_MONOTONIC, &ts);
80 return ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
83 static inline uint32_t micros(
void)
86 clock_gettime(CLOCK_MONOTONIC, &ts);
87 return ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
94 static inline int min(
int a,
int b) {
return a<b?a:b; };
95 static inline int max(
int a,
int b) {
return a>b?a:b; };
96 #if !defined(SDL_EMULATION) 97 void pinMode(
int pin,
int mode);
98 static inline int digitalRead(
int pin) {
return LOW; };
103 #if defined(SDL_EMULATION) 104 static inline int digitalRead(
int pin) {
return sdl_read_digital(pin); };
105 static inline int analogRead(
int pin) {
return sdl_read_analog(pin); };
106 static inline void digitalWrite(
int pin,
int level) { sdl_write_digital(pin, level); };
107 static inline void pinMode(
int pin,
int mode) { };
108 #elif !defined(__KERNEL__) 109 static inline int analogRead(
int pin) {
return 0; };
110 void digitalWrite(
int pin,
int level);
113 static inline void randomSeed(
int seed) { };
114 static inline void attachInterrupt(
int pin,
void (*interrupt)(
void),
int level) { };
115 static inline uint8_t pgm_read_byte(
const void *ptr) {
return *((
const uint8_t *)ptr); };
116 static inline uint16_t eeprom_read_word(
const void *ptr) {
return 0; };
117 static inline void eeprom_write_word(
const void *ptr, uint16_t val) { };
119 static inline char *utoa(
unsigned int num,
char *str,
int radix)
130 digit = (
unsigned int)num % radix;
132 temp[temp_loc++] = digit +
'0';
134 temp[temp_loc++] = digit - 10 +
'A';
135 num = ((
unsigned int)num) / radix;
136 }
while ((
unsigned int)num > 0);
142 while ( temp_loc >=0 ) {
143 str[str_loc++] = temp[temp_loc--];
156 static inline long random(
long v)
161 static inline long random(
long min,
long max)
163 return rand() % (max - min + 1) + min;