30 #if defined(SSD1306_LINUX_SUPPORTED) && !defined(__KERNEL__) 35 #if !defined(SDL_EMULATION) 40 #include <sys/ioctl.h> 41 #include <linux/spi/spidev.h> 46 static void ssd1306_spiStart_Linux(
void)
50 static void ssd1306_spiStop_Linux(
void)
54 static void ssd1306_spiSendByte_Linux(uint8_t data)
60 struct spi_ioc_transfer mesg;
62 memset(&mesg, 0,
sizeof mesg);
63 mesg.tx_buf = (
unsigned long)&buf[0];
68 mesg.bits_per_word = 8;
70 if (ioctl(s_fd, SPI_IOC_MESSAGE(1), &mesg) < 1)
72 fprintf(stderr,
"SPI failed to send SPI message: %s\n", strerror (errno)) ;
76 static void ssd1306_spiSendBytes_Linux(
const uint8_t *buffer, uint16_t size)
80 ssd1306_spiSendByte_Linux(*buffer);
85 static void ssd1306_spiClose_Linux()
94 static void empty_function(
void)
98 static void empty_function_arg(uint8_t byte)
102 static void empty_function_args(
const uint8_t *buffer, uint16_t bytes)
106 void ssd1306_spiInit_Linux(int8_t busId, int8_t ces, int8_t dcPin)
126 snprintf(filename, 19,
"/dev/spidev%d.%d", busId, ces);
127 if ((s_fd = open(filename, O_RDWR)) < 0)
129 printf(
"Failed to initialize SPI: %s!\n", strerror(errno));
133 if (ioctl(s_fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed) < 0)
135 printf(
"Failed to set speed on SPI line: %s!\n", strerror(errno));
137 uint8_t mode = SPI_MODE_0;
138 if (ioctl (s_fd, SPI_IOC_WR_MODE, &mode) < 0)
140 printf(
"Failed to set SPI mode: %s!\n", strerror(errno));
143 if (ioctl (s_fd, SPI_IOC_WR_BITS_PER_WORD, &spi_bpw) < 0)
145 printf(
"Failed to set SPI BPW: %s!\n", strerror(errno));
158 #include "sdl_core.h" 160 static void sdl_send_bytes(
const uint8_t *buffer, uint16_t size)
164 sdl_send_byte(*buffer);
169 void ssd1306_spiInit_Linux(int8_t busId, int8_t ces, int8_t dcPin)
172 sdl_set_dc_pin(dcPin);
185 #if defined(__KERNEL__) && defined(SSD1306_LINUX_SUPPORTED) 186 void ssd1306_spiInit_Linux(int8_t busId, int8_t ces, int8_t dcPin)
void(* send)(uint8_t data)
uint32_t s_ssd1306_spi_clock
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.