#include"ssd1309.h"#include<stdint.h>#include<string.h>staticuint8_tssd1309_inits_commands[]={0xAE,// Turn off OLED panel0xFD,0x12,// Set display clock divide ratio/oscillator frequency0xD5,// Set display clock divide ratio0xA0,// Set multiplex ratio0xA8,// Set multiplex ratio (1 to 64)0x3F,// 1/64 duty0xD3,// Set display offset0x00,// No offset0x40,// Set start line address0xA1,// Set SEG/Column mapping (0xA0 for reverse, 0xA1 for normal)0xC8,// Set COM/Row scan direction (0xC0 for reverse, 0xC8 for normal)0xDA,// Set COM pins hardware configuration0x12,// COM pins configuration0x81,// Set contrast control register0xBF,// Set SEG output current brightness0xD9,// Set pre-charge period0x25,// Set pre-charge as 15 clocks & discharge as 1 clock0xDB,// Set VCOMH0x34,// Set VCOM deselect level0xA4,// Disable entire display on0xA6,// Disable inverse display on0xAF// Turn on the display};#define CMD_TABLE_SZ ((sizeof(ssd1309_inits_commands)) / sizeof(ssd1309_inits_commands[0]))staticuint8_t*ssd1309_init_sessions(void){returnssd1309_inits_commands;}staticCFBD_OLED_DeviceSpecificssd1309_specific;CFBD_OLED_DeviceSpecific*getSSD1309Specific(){ssd1309_specific.init_session_tables=ssd1309_init_sessions;ssd1309_specific.init_session_tables_sz=CMD_TABLE_SZ;ssd1309_specific.cmd_prefix=0x00;ssd1309_specific.data_prefix=0x40;ssd1309_specific.logic_height=64;ssd1309_specific.logic_width=128;ssd1309_specific.iic_pack_type=SSD1309_IIC_PACK;ssd1309_specific.private_data=NULL;// no, nothing herereturn&ssd1309_specific;}