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 static inline int digitalRead(
int pin) {
return LOW; };
64 #if defined(__KERNEL__) // ============== KERNEL
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);
102 #if defined(SDL_EMULATION)
103 static inline int analogRead(
int pin) {
return sdl_read_analog(pin); };
104 static inline void digitalWrite(
int pin,
int level) { sdl_write_digital(pin, level); };
105 static inline void pinMode(
int pin,
int mode) { };
106 #elif !defined(__KERNEL__)
107 static inline int analogRead(
int pin) {
return 0; };
108 void digitalWrite(
int pin,
int level);
111 static inline void randomSeed(
int seed) { };
112 static inline void attachInterrupt(
int pin,
void (*interrupt)(
void),
int level) { };
113 static inline uint8_t pgm_read_byte(
const void *ptr) {
return *((
const uint8_t *)ptr); };
114 static inline uint16_t eeprom_read_word(
const void *ptr) {
return 0; };
115 static inline void eeprom_write_word(
const void *ptr, uint16_t val) { };
117 static inline char *utoa(
unsigned int num,
char *str,
int radix)
128 digit = (
unsigned int)num % radix;
130 temp[temp_loc++] = digit +
'0';
132 temp[temp_loc++] = digit - 10 +
'A';
133 num = ((
unsigned int)num) / radix;
134 }
while ((
unsigned int)num > 0);
140 while ( temp_loc >=0 ) {
141 str[str_loc++] = temp[temp_loc--];
154 static inline long random(
long v)
159 static inline long random(
long min,
long max)
161 return rand() % (max - min + 1) + min;