30 #ifdef SSD1306_LINUX_SUPPORTED 35 #include <sys/ioctl.h> 36 #include <linux/i2c-dev.h> 40 static uint8_t s_buffer[128];
41 static uint8_t s_dataSize = 0;
43 static void ssd1306_i2cStart_Linux(
void)
48 static void ssd1306_i2cStop_Linux(
void)
50 if (write(s_fd, s_buffer, s_dataSize) != s_dataSize)
52 fprintf(stderr,
"Failed to write to the i2c bus.\n");
57 static void ssd1306_i2cSendByte_Linux(uint8_t data)
59 s_buffer[s_dataSize] = data;
61 if (s_dataSize ==
sizeof(s_buffer))
65 ssd1306_i2cStop_Linux();
70 static void ssd1306_i2cClose_Linux()
79 void ssd1306_i2cInit_Linux(int8_t busId, uint8_t sa)
86 snprintf(filename, 19,
"/dev/i2c-%d", busId);
87 if ((s_fd = open(filename, O_RDWR)) < 0)
89 fprintf(stderr,
"Failed to open the i2c bus\n");
96 if (ioctl(s_fd, I2C_SLAVE, s_sa) < 0)
98 fprintf(stderr,
"Failed to acquire bus access and/or talk to slave.\n");
void(* ssd1306_sendByte)(uint8_t data)
void(* ssd1306_dataStart)()
void(* ssd1306_endTransmission)()
void ssd1306_i2cCommandStart()
void ssd1306_i2cDataStart()
void(* ssd1306_startTransmission)()
void(* ssd1306_closeInterface)()
deinitializes internal resources, allocated for interface.
void(* ssd1306_commandStart)()