29 #ifndef _SSD1306_LINUX_IO_H_ 30 #define _SSD1306_LINUX_IO_H_ 32 #define SSD1306_LINUX_SUPPORTED 34 #if defined(SDL_EMULATION) // SDL Emulation mode includes 38 #if defined(__KERNEL__) // KERNEL includes 39 #include <linux/types.h> 41 #else // LINUX includes 61 static inline int digitalRead(
int pin) {
return LOW; };
62 #if defined(__KERNEL__) // ============== KERNEL 63 static inline void delay(
unsigned long ms) { };
64 static inline void delayMicroseconds(
unsigned long us) { };
65 static inline int analogRead(
int pin) {
return 0; };
66 static inline void digitalWrite(
int pin,
int level) { };
67 static inline uint32_t millis(
void) {
return 0; };
68 static inline uint32_t micros(
void) {
return 0; };
69 static inline void pinMode(
int pin,
int mode) {};
71 #else // ============== LINUX 72 static inline void delay(
unsigned long ms) { usleep(ms*1000); };
73 static inline void delayMicroseconds(
unsigned long us) { usleep(us); };
74 static inline uint32_t millis(
void)
77 clock_gettime(CLOCK_MONOTONIC, &ts);
78 return ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
81 static inline uint32_t micros(
void)
84 clock_gettime(CLOCK_MONOTONIC, &ts);
85 return ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
92 static inline int min(
int a,
int b) {
return a<b?a:b; };
93 static inline int max(
int a,
int b) {
return a>b?a:b; };
94 #if !defined(SDL_EMULATION) 95 void pinMode(
int pin,
int mode);
100 #if defined(SDL_EMULATION) 101 static inline int analogRead(
int pin) {
return sdl_read_analog(pin); };
102 static inline void digitalWrite(
int pin,
int level) { sdl_write_digital(pin, level); };
103 static inline void pinMode(
int pin,
int mode) { };
104 #elif !defined(__KERNEL__) 105 static inline int analogRead(
int pin) {
return 0; };
106 void digitalWrite(
int pin,
int level);
109 static inline void randomSeed(
int seed) { };
110 static inline void attachInterrupt(
int pin,
void (*interrupt)(
void),
int level) { };
111 static inline uint8_t pgm_read_byte(
const void *ptr) {
return *((
const uint8_t *)ptr); };
112 static inline uint16_t eeprom_read_word(
const void *ptr) {
return 0; };
113 static inline void eeprom_write_word(
const void *ptr, uint16_t val) { };
115 static inline char *utoa(
unsigned int num,
char *str,
int radix)
126 digit = (
unsigned int)num % radix;
128 temp[temp_loc++] = digit +
'0';
130 temp[temp_loc++] = digit - 10 +
'A';
131 num = ((
unsigned int)num) / radix;
132 }
while ((
unsigned int)num > 0);
138 while ( temp_loc >=0 ) {
139 str[str_loc++] = temp[temp_loc--];
152 static inline long random(
long v)
157 static inline long random(
long min,
long max)
159 return rand() % (max - min + 1) + min;