diff options
Diffstat (limited to 'app/oled.c')
-rw-r--r-- | app/oled.c | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/app/oled.c b/app/oled.c deleted file mode 100644 index 63a47fc..0000000 --- a/app/oled.c +++ /dev/null @@ -1,190 +0,0 @@ -#include "project.h" - - -int -ssd1306_cmds (uint32_t i2c, uint8_t *buf, size_t len, int delay) -{ - - int ret = -1; - - while (i2c_lock()); - - do { - - if (i2cp_start_transaction (i2c, SSD1306_I2C_ADDRESS, I2C_WRITE)) - break; - - if (i2cp_send (i2c, SSD1306_COMMAND)) - break; - - while (len--) - if (i2cp_send (i2c, * (buf++))) - break; - - i2cp_stop (i2c); - - if (delay) - delay_us (delay); - - ret = 0; - } while (0); - - i2c_unlock(); - - - return ret; -} - -int -ssd1306_cmd (uint32_t i2c, uint8_t cmd, int delay) -{ - return ssd1306_cmds (i2c, &cmd, 1, delay); -} - - - -void -oled_generate_stream (uint8_t *vram) -{ - memset (vram, 0, DMA_BUF_SZ); - vram[0] = SSD1306_DATA_CONTINUE; -} - - - - -void -oled_cls (uint8_t *vram) -{ - memset (vram + 1, 0, SSD1306_VRAM_SIZE); -} - - -void -oled_on (uint32_t i2c) -{ - ssd1306_cmd (i2c, SSD1306_DISPLAY_ON, 0); - -} - - -void -oled_off (uint32_t i2c) -{ - ssd1306_cmd (i2c, SSD1306_DISPLAY_OFF, 0); -} - - - -#if 0 -void -oled_squirt (void) -{ - unsigned i; - uint8_t cmds[] = { - SSD1306_SET_PAGE_ADDR, 0, 0xff, - SSD1306_SET_COLUMN_ADDR, 0, SSD1306_WIDTH - 1 - }; - - ssd1306_cmds (cmds, sizeof (cmds), 0); - - - while (i2c_lock()); - - i2cp_start_transaction (SSD1306_I2C_ADDRESS, I2C_WRITE); - - for (i = 0; i < DMA_BUF_SZ; ++i) - i2cp_send (update_buf[i]); - - i2cp_stop(); - - i2c_unlock(); -} -#endif - -void -oled_reset (uint32_t i2c) -{ - uint8_t init[] = { - SSD1306_DISPLAY_OFF, - SSD1306_SET_DISPLAY_CLOCK_DIV_RATIO, 0x80, - SSD1306_SET_MULTIPLEX_RATIO, SSD1306_HEIGHT - 1, - SSD1306_SET_DISPLAY_OFFSET, 0x0, - SSD1306_SET_START_LINE | 0x0, - SSD1306_CHARGE_PUMP, 0x14, - SSD1306_MEMORY_ADDR_MODE, 0x00, - SSD1306_SET_SEGMENT_REMAP | 0x1, - SSD1306_COM_SCAN_DIR_DEC, - //SSD1306_SET_COM_PINS, 0x12, - SSD1306_SET_COM_PINS, 0x02, - //SSD1306_SET_CONTRAST_CONTROL, 0xCF, - SSD1306_SET_CONTRAST_CONTROL, 0x8F, - SSD1306_SET_PRECHARGE_PERIOD, 0xF1, - SSD1306_SET_VCOM_DESELECT, 0x40, - SSD1306_DISPLAY_ALL_ON_RESUME, - SSD1306_NORMAL_DISPLAY, - SSD1306_DISPLAY_ON, - }; - - ssd1306_cmds (i2c, init, sizeof (init), 0); -} - - -void -oled_const_strip (uint8_t *vram, int x, int xe, uint8_t and, uint8_t or) -{ - uint8_t r; - - for (x++; x <= xe; ++x) { - r = vram[x] & and; - vram[x] = r | or; - } -} - - -void -oled_blit_strip (uint8_t *vram, int x, int xe, uint8_t mask, int shift, - uint8_t *src) -{ - uint8_t r, s; - - while (x < 0) { - x++; - src++; - }; - - if (xe < 0) xe = 0; - - if (x > SSD1306_VRAM_SIZE) xe = SSD1306_VRAM_SIZE; - - if (xe > SSD1306_VRAM_SIZE) xe = SSD1306_VRAM_SIZE; - - - if (shift > 0) { - for (x++; x <= xe; ++x) { - s = * (src++); - s <<= shift; - s &= mask; - r = vram[x] & ~mask; - vram[x] = r | s; - - } - } else if (shift < 0) { - shift = -shift; - - for (x++; x <= xe; ++x) { - s = * (src++); - s >>= shift; - s &= mask; - r = vram[x] & ~mask; - vram[x] = r | s; - } - } else { - for (x++; x <= xe; ++x) { - s = * (src++); - s &= mask; - r = vram[x] & ~mask; - vram[x] = r | s; - } - } -} |