30 #if defined(SSD1306_LINUX_SUPPORTED) && !defined(__KERNEL__) 35 #if !defined(SDL_EMULATION) 39 #include <sys/ioctl.h> 40 #include <linux/i2c-dev.h> 45 static uint8_t s_buffer[128];
46 static uint8_t s_dataSize = 0;
48 static void ssd1306_i2cStart_Linux(
void)
53 static void ssd1306_i2cStop_Linux(
void)
55 if (write(s_fd, s_buffer, s_dataSize) != s_dataSize)
57 fprintf(stderr,
"Failed to write to the i2c bus: %s.\n", strerror(errno));
62 static void ssd1306_i2cSendByte_Linux(uint8_t data)
64 s_buffer[s_dataSize] = data;
66 if (s_dataSize ==
sizeof(s_buffer))
76 static void ssd1306_i2cSendBytes_Linux(
const uint8_t *buffer, uint16_t size)
80 ssd1306_i2cSendByte_Linux(*buffer);
85 static void ssd1306_i2cClose_Linux()
94 static void empty_function()
98 static void empty_function_single_arg(uint8_t arg)
102 static void empty_function_two_args(
const uint8_t *arg1, uint16_t arg2)
106 void ssd1306_i2cInit_Linux(int8_t busId, uint8_t sa)
113 snprintf(filename, 19,
"/dev/i2c-%d", busId);
119 if ((s_fd = open(filename, O_RDWR)) < 0)
121 fprintf(stderr,
"Failed to open the i2c bus\n");
128 if (ioctl(s_fd, I2C_SLAVE, s_sa) < 0)
130 fprintf(stderr,
"Failed to acquire bus access and/or talk to slave.\n");
142 #include "sdl_core.h" 144 static void sdl_send_bytes(
const uint8_t *buffer, uint16_t size)
148 sdl_send_byte(*buffer);
153 void ssd1306_i2cInit_Linux(int8_t busId, uint8_t sa)
void(* send)(uint8_t data)
void(* close)(void)
deinitializes internal resources, allocated for interface.
ssd1306_interface_t ssd1306_intf
void(* send_buffer)(const uint8_t *buffer, uint16_t size)
Sends bytes to SSD1306 device.