Outsource display, encoder cfg to config.cpp, Optimize speedsensor
- outsource configuration of display and encoder from source/header file
to config.cpp and pass it to init function or task from main()
- optimize logging in several init functions
- speedsensor:
- fix startup error: initialize ISR only once
- create instances at initialization instead of first method call
- ssd1306 display library:
- modify library to pass offsetX to init function instead of using macro
This commit is contained in:
@@ -17,8 +17,10 @@ typedef union out_column_t {
|
||||
uint8_t u8[4];
|
||||
} PACK8 out_column_t;
|
||||
|
||||
void ssd1306_init(SSD1306_t * dev, int width, int height)
|
||||
//void ssd1306_init(SSD1306_t * dev, int width, int height, int offsetX) //original
|
||||
void ssd1306_init(SSD1306_t * dev, int width, int height, int offsetX)
|
||||
{
|
||||
dev->_offsetX = offsetX;
|
||||
if (dev->_address == SPIAddress) {
|
||||
spi_init(dev, width, height);
|
||||
} else {
|
||||
|
||||
@@ -98,6 +98,7 @@ typedef struct {
|
||||
int _scDirection;
|
||||
PAGE_t _page[8];
|
||||
bool _flip;
|
||||
int _offsetX; //added offset here instead of using macro variable
|
||||
} SSD1306_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -105,7 +106,7 @@ extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
void ssd1306_init(SSD1306_t * dev, int width, int height);
|
||||
void ssd1306_init(SSD1306_t * dev, int width, int height, int offsetX);
|
||||
int ssd1306_get_width(SSD1306_t * dev);
|
||||
int ssd1306_get_height(SSD1306_t * dev);
|
||||
int ssd1306_get_pages(SSD1306_t * dev);
|
||||
@@ -128,6 +129,7 @@ void _ssd1306_pixel(SSD1306_t * dev, int xpos, int ypos, bool invert);
|
||||
void _ssd1306_line(SSD1306_t * dev, int x1, int y1, int x2, int y2, bool invert);
|
||||
void ssd1306_invert(uint8_t *buf, size_t blen);
|
||||
void ssd1306_flip(uint8_t *buf, size_t blen);
|
||||
void ssd1306_setOffset(SSD1306_t * dev, int offset);
|
||||
uint8_t ssd1306_copy_bit(uint8_t src, int srcBits, uint8_t dst, int dstBits);
|
||||
uint8_t ssd1306_rotate_byte(uint8_t ch1);
|
||||
void ssd1306_fadeout(SSD1306_t * dev);
|
||||
|
||||
@@ -112,7 +112,8 @@ void i2c_display_image(SSD1306_t * dev, int page, int seg, uint8_t * images, int
|
||||
if (page >= dev->_pages) return;
|
||||
if (seg >= dev->_width) return;
|
||||
|
||||
int _seg = seg + CONFIG_OFFSETX;
|
||||
//int _seg = seg + CONFIG_OFFSETX; //original
|
||||
int _seg = seg + dev->_offsetX;
|
||||
uint8_t columLow = _seg & 0x0F;
|
||||
uint8_t columHigh = (_seg >> 4) & 0x0F;
|
||||
|
||||
|
||||
@@ -158,7 +158,8 @@ void spi_display_image(SSD1306_t * dev, int page, int seg, uint8_t * images, int
|
||||
if (page >= dev->_pages) return;
|
||||
if (seg >= dev->_width) return;
|
||||
|
||||
int _seg = seg + CONFIG_OFFSETX;
|
||||
//int _seg = seg + CONFIG_OFFSETX; //original
|
||||
int _seg = seg + dev->_offsetX;
|
||||
uint8_t columLow = _seg & 0x0F;
|
||||
uint8_t columHigh = (_seg >> 4) & 0x0F;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user