summaryrefslogtreecommitdiffstats
path: root/app/oled.c
diff options
context:
space:
mode:
authorfishsoupisgood <github@madingley.org>2020-06-18 13:26:56 +0100
committerfishsoupisgood <github@madingley.org>2020-06-18 13:26:56 +0100
commite41764fceeabb1cdb6a7a299e00f2166a6f6ac32 (patch)
treec58c73d742bf990ec692d61ca8d911dd43fab8c6 /app/oled.c
parentf7b7cf9e80200cade938d47527e39034c75b9b6d (diff)
downloadrobs_speedo-e41764fceeabb1cdb6a7a299e00f2166a6f6ac32.tar.gz
robs_speedo-e41764fceeabb1cdb6a7a299e00f2166a6f6ac32.tar.bz2
robs_speedo-e41764fceeabb1cdb6a7a299e00f2166a6f6ac32.zip
moved stm32 into directory added noddy pcb
Diffstat (limited to 'app/oled.c')
-rw-r--r--app/oled.c190
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;
- }
- }
-}