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 64 #if defined(__KERNEL__) // ============== KERNEL 65 static inline int digitalRead(
int pin) {
return LOW; };
66 static inline void delay(
unsigned long ms) { };
67 static inline void delayMicroseconds(
unsigned long us) { };
68 static inline int analogRead(
int pin) {
return 0; };
69 static inline void digitalWrite(
int pin,
int level) { };
70 static inline uint32_t millis(
void) {
return 0; };
71 static inline uint32_t micros(
void) {
return 0; };
72 static inline void pinMode(
int pin,
int mode) {};
74 #else // ============== LINUX 75 static inline void delay(
unsigned long ms) { usleep(ms*1000); };
76 static inline void delayMicroseconds(
unsigned long us) { usleep(us); };
77 static inline uint32_t millis(
void)
80 clock_gettime(CLOCK_MONOTONIC, &ts);
81 return ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
84 static inline uint32_t micros(
void)
87 clock_gettime(CLOCK_MONOTONIC, &ts);
88 return ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
95 static inline int min(
int a,
int b) {
return a<b?a:b; };
96 static inline int max(
int a,
int b) {
return a>b?a:b; };
97 #if !defined(SDL_EMULATION) 98 void pinMode(
int pin,
int mode);
99 static inline int digitalRead(
int pin) {
return LOW; };
104 #if defined(SDL_EMULATION) 105 static inline int digitalRead(
int pin) {
return sdl_read_digital(pin); };
106 static inline int analogRead(
int pin) {
return sdl_read_analog(pin); };
107 static inline void digitalWrite(
int pin,
int level) { sdl_write_digital(pin, level); };
108 static inline void pinMode(
int pin,
int mode) { };
109 #elif !defined(__KERNEL__) 110 static inline int analogRead(
int pin) {
return 0; };
111 void digitalWrite(
int pin,
int level);
114 static inline void randomSeed(
int seed) { };
115 static inline void attachInterrupt(
int pin,
void (*interrupt)(
void),
int level) { };
116 static inline uint8_t pgm_read_byte(
const void *ptr) {
return *((
const uint8_t *)ptr); };
117 static inline uint16_t eeprom_read_word(
const void *ptr) {
return 0; };
118 static inline void eeprom_write_word(
const void *ptr, uint16_t val) { };
120 static inline char *utoa(
unsigned int num,
char *str,
int radix)
130 int 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;