From b4ff147a19a5623a4e2de4190c0d3bb65d79e942 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Mon, 23 Nov 2020 11:00:43 +0000 Subject: [PATCH] Begin the display of the modes on the display. --- I2COLED.cpp | 414 +++++++++++++++++++++++++++++++++++++++++++++++++++- I2COLED.h | 14 +- 2 files changed, 423 insertions(+), 5 deletions(-) diff --git a/I2COLED.cpp b/I2COLED.cpp index 96616a5..ff4ec3a 100644 --- a/I2COLED.cpp +++ b/I2COLED.cpp @@ -22,17 +22,425 @@ #include "I2COLED.h" +#include "Globals.h" + +const uint8_t OLED_ADDRESS = 0x78U; + +const uint8_t OLED_WIDTH = 64U; +const uint8_t OLED_HEIGHT = 32U; +const uint16_t OLED_BUFFER_SIZE = OLED_HEIGHT * OLED_WIDTH / 8U; + +const uint8_t SSD_Command_Mode = 0x00U; /* C0 and DC bit are 0 */ +const uint8_t SSD_Data_Mode = 0x40U; /* C0 bit is 0 and DC bit is 1 */ + +const uint8_t CHAR_HEIGHT = 5U; +const uint8_t CHAR_WIDTH = 7U; + +// standard ascii 5x7 font +const uint8_t FONT[] = { + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x3EU, 0x5BU, 0x4FU, 0x5BU, 0x3EU, + 0x3EU, 0x6BU, 0x4FU, 0x6BU, 0x3EU, + 0x1CU, 0x3EU, 0x7CU, 0x3EU, 0x1CU, + 0x18U, 0x3CU, 0x7EU, 0x3CU, 0x18U, + 0x1CU, 0x57U, 0x7DU, 0x57U, 0x1CU, + 0x1CU, 0x5EU, 0x7FU, 0x5EU, 0x1CU, + 0x00U, 0x18U, 0x3CU, 0x18U, 0x00U, + 0xFFU, 0xE7U, 0xC3U, 0xE7U, 0xFFU, + 0x00U, 0x18U, 0x24U, 0x18U, 0x00U, + 0xFFU, 0xE7U, 0xDBU, 0xE7U, 0xFFU, + 0x30U, 0x48U, 0x3AU, 0x06U, 0x0EU, + 0x26U, 0x29U, 0x79U, 0x29U, 0x26U, + 0x40U, 0x7FU, 0x05U, 0x05U, 0x07U, + 0x40U, 0x7FU, 0x05U, 0x25U, 0x3FU, + 0x5AU, 0x3CU, 0xE7U, 0x3CU, 0x5AU, + 0x7FU, 0x3EU, 0x1CU, 0x1CU, 0x08U, + 0x08U, 0x1CU, 0x1CU, 0x3EU, 0x7FU, + 0x14U, 0x22U, 0x7FU, 0x22U, 0x14U, + 0x5FU, 0x5FU, 0x00U, 0x5FU, 0x5FU, + 0x06U, 0x09U, 0x7FU, 0x01U, 0x7FU, + 0x00U, 0x66U, 0x89U, 0x95U, 0x6AU, + 0x60U, 0x60U, 0x60U, 0x60U, 0x60U, + 0x94U, 0xA2U, 0xFFU, 0xA2U, 0x94U, + 0x08U, 0x04U, 0x7EU, 0x04U, 0x08U, + 0x10U, 0x20U, 0x7EU, 0x20U, 0x10U, + 0x08U, 0x08U, 0x2AU, 0x1CU, 0x08U, + 0x08U, 0x1CU, 0x2AU, 0x08U, 0x08U, + 0x1EU, 0x10U, 0x10U, 0x10U, 0x10U, + 0x0CU, 0x1EU, 0x0CU, 0x1EU, 0x0CU, + 0x30U, 0x38U, 0x3EU, 0x38U, 0x30U, + 0x06U, 0x0EU, 0x3EU, 0x0EU, 0x06U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x5FU, 0x00U, 0x00U, + 0x00U, 0x07U, 0x00U, 0x07U, 0x00U, + 0x14U, 0x7FU, 0x14U, 0x7FU, 0x14U, + 0x24U, 0x2AU, 0x7FU, 0x2AU, 0x12U, + 0x23U, 0x13U, 0x08U, 0x64U, 0x62U, + 0x36U, 0x49U, 0x56U, 0x20U, 0x50U, + 0x00U, 0x08U, 0x07U, 0x03U, 0x00U, + 0x00U, 0x1CU, 0x22U, 0x41U, 0x00U, + 0x00U, 0x41U, 0x22U, 0x1CU, 0x00U, + 0x2AU, 0x1CU, 0x7FU, 0x1CU, 0x2AU, + 0x08U, 0x08U, 0x3EU, 0x08U, 0x08U, + 0x00U, 0x80U, 0x70U, 0x30U, 0x00U, + 0x08U, 0x08U, 0x08U, 0x08U, 0x08U, + 0x00U, 0x00U, 0x60U, 0x60U, 0x00U, + 0x20U, 0x10U, 0x08U, 0x04U, 0x02U, + 0x3EU, 0x51U, 0x49U, 0x45U, 0x3EU, + 0x00U, 0x42U, 0x7FU, 0x40U, 0x00U, + 0x72U, 0x49U, 0x49U, 0x49U, 0x46U, + 0x21U, 0x41U, 0x49U, 0x4DU, 0x33U, + 0x18U, 0x14U, 0x12U, 0x7FU, 0x10U, + 0x27U, 0x45U, 0x45U, 0x45U, 0x39U, + 0x3CU, 0x4AU, 0x49U, 0x49U, 0x31U, + 0x41U, 0x21U, 0x11U, 0x09U, 0x07U, + 0x36U, 0x49U, 0x49U, 0x49U, 0x36U, + 0x46U, 0x49U, 0x49U, 0x29U, 0x1EU, + 0x00U, 0x00U, 0x14U, 0x00U, 0x00U, + 0x00U, 0x40U, 0x34U, 0x00U, 0x00U, + 0x00U, 0x08U, 0x14U, 0x22U, 0x41U, + 0x14U, 0x14U, 0x14U, 0x14U, 0x14U, + 0x00U, 0x41U, 0x22U, 0x14U, 0x08U, + 0x02U, 0x01U, 0x59U, 0x09U, 0x06U, + 0x3EU, 0x41U, 0x5DU, 0x59U, 0x4EU, + 0x7CU, 0x12U, 0x11U, 0x12U, 0x7CU, + 0x7FU, 0x49U, 0x49U, 0x49U, 0x36U, + 0x3EU, 0x41U, 0x41U, 0x41U, 0x22U, + 0x7FU, 0x41U, 0x41U, 0x41U, 0x3EU, + 0x7FU, 0x49U, 0x49U, 0x49U, 0x41U, + 0x7FU, 0x09U, 0x09U, 0x09U, 0x01U, + 0x3EU, 0x41U, 0x41U, 0x51U, 0x73U, + 0x7FU, 0x08U, 0x08U, 0x08U, 0x7FU, + 0x00U, 0x41U, 0x7FU, 0x41U, 0x00U, + 0x20U, 0x40U, 0x41U, 0x3FU, 0x01U, + 0x7FU, 0x08U, 0x14U, 0x22U, 0x41U, + 0x7FU, 0x40U, 0x40U, 0x40U, 0x40U, + 0x7FU, 0x02U, 0x1CU, 0x02U, 0x7FU, + 0x7FU, 0x04U, 0x08U, 0x10U, 0x7FU, + 0x3EU, 0x41U, 0x41U, 0x41U, 0x3EU, + 0x7FU, 0x09U, 0x09U, 0x09U, 0x06U, + 0x3EU, 0x41U, 0x51U, 0x21U, 0x5EU, + 0x7FU, 0x09U, 0x19U, 0x29U, 0x46U, + 0x26U, 0x49U, 0x49U, 0x49U, 0x32U, + 0x03U, 0x01U, 0x7FU, 0x01U, 0x03U, + 0x3FU, 0x40U, 0x40U, 0x40U, 0x3FU, + 0x1FU, 0x20U, 0x40U, 0x20U, 0x1FU, + 0x3FU, 0x40U, 0x38U, 0x40U, 0x3FU, + 0x63U, 0x14U, 0x08U, 0x14U, 0x63U, + 0x03U, 0x04U, 0x78U, 0x04U, 0x03U, + 0x61U, 0x59U, 0x49U, 0x4DU, 0x43U, + 0x00U, 0x7FU, 0x41U, 0x41U, 0x41U, + 0x02U, 0x04U, 0x08U, 0x10U, 0x20U, + 0x00U, 0x41U, 0x41U, 0x41U, 0x7FU, + 0x04U, 0x02U, 0x01U, 0x02U, 0x04U, + 0x40U, 0x40U, 0x40U, 0x40U, 0x40U, + 0x00U, 0x03U, 0x07U, 0x08U, 0x00U, + 0x20U, 0x54U, 0x54U, 0x78U, 0x40U, + 0x7FU, 0x28U, 0x44U, 0x44U, 0x38U, + 0x38U, 0x44U, 0x44U, 0x44U, 0x28U, + 0x38U, 0x44U, 0x44U, 0x28U, 0x7FU, + 0x38U, 0x54U, 0x54U, 0x54U, 0x18U, + 0x00U, 0x08U, 0x7EU, 0x09U, 0x02U, + 0x18U, 0xA4U, 0xA4U, 0x9CU, 0x78U, + 0x7FU, 0x08U, 0x04U, 0x04U, 0x78U, + 0x00U, 0x44U, 0x7DU, 0x40U, 0x00U, + 0x20U, 0x40U, 0x40U, 0x3DU, 0x00U, + 0x7FU, 0x10U, 0x28U, 0x44U, 0x00U, + 0x00U, 0x41U, 0x7FU, 0x40U, 0x00U, + 0x7CU, 0x04U, 0x78U, 0x04U, 0x78U, + 0x7CU, 0x08U, 0x04U, 0x04U, 0x78U, + 0x38U, 0x44U, 0x44U, 0x44U, 0x38U, + 0xFCU, 0x18U, 0x24U, 0x24U, 0x18U, + 0x18U, 0x24U, 0x24U, 0x18U, 0xFCU, + 0x7CU, 0x08U, 0x04U, 0x04U, 0x08U, + 0x48U, 0x54U, 0x54U, 0x54U, 0x24U, + 0x04U, 0x04U, 0x3FU, 0x44U, 0x24U, + 0x3CU, 0x40U, 0x40U, 0x20U, 0x7CU, + 0x1CU, 0x20U, 0x40U, 0x20U, 0x1CU, + 0x3CU, 0x40U, 0x30U, 0x40U, 0x3CU, + 0x44U, 0x28U, 0x10U, 0x28U, 0x44U, + 0x4CU, 0x90U, 0x90U, 0x90U, 0x7CU, + 0x44U, 0x64U, 0x54U, 0x4CU, 0x44U, + 0x00U, 0x08U, 0x36U, 0x41U, 0x00U, + 0x00U, 0x00U, 0x77U, 0x00U, 0x00U, + 0x00U, 0x41U, 0x36U, 0x08U, 0x00U, + 0x02U, 0x01U, 0x02U, 0x04U, 0x02U, + 0x3CU, 0x26U, 0x23U, 0x26U, 0x3CU, + 0x1EU, 0xA1U, 0xA1U, 0x61U, 0x12U, + 0x3AU, 0x40U, 0x40U, 0x20U, 0x7AU, + 0x38U, 0x54U, 0x54U, 0x55U, 0x59U, + 0x21U, 0x55U, 0x55U, 0x79U, 0x41U, + 0x21U, 0x54U, 0x54U, 0x78U, 0x41U, + 0x21U, 0x55U, 0x54U, 0x78U, 0x40U, + 0x20U, 0x54U, 0x55U, 0x79U, 0x40U, + 0x0CU, 0x1EU, 0x52U, 0x72U, 0x12U, + 0x39U, 0x55U, 0x55U, 0x55U, 0x59U, + 0x39U, 0x54U, 0x54U, 0x54U, 0x59U, + 0x39U, 0x55U, 0x54U, 0x54U, 0x58U, + 0x00U, 0x00U, 0x45U, 0x7CU, 0x41U, + 0x00U, 0x02U, 0x45U, 0x7DU, 0x42U, + 0x00U, 0x01U, 0x45U, 0x7CU, 0x40U, + 0xF0U, 0x29U, 0x24U, 0x29U, 0xF0U, + 0xF0U, 0x28U, 0x25U, 0x28U, 0xF0U, + 0x7CU, 0x54U, 0x55U, 0x45U, 0x00U, + 0x20U, 0x54U, 0x54U, 0x7CU, 0x54U, + 0x7CU, 0x0AU, 0x09U, 0x7FU, 0x49U, + 0x32U, 0x49U, 0x49U, 0x49U, 0x32U, + 0x32U, 0x48U, 0x48U, 0x48U, 0x32U, + 0x32U, 0x4AU, 0x48U, 0x48U, 0x30U, + 0x3AU, 0x41U, 0x41U, 0x21U, 0x7AU, + 0x3AU, 0x42U, 0x40U, 0x20U, 0x78U, + 0x00U, 0x9DU, 0xA0U, 0xA0U, 0x7DU, + 0x39U, 0x44U, 0x44U, 0x44U, 0x39U, + 0x3DU, 0x40U, 0x40U, 0x40U, 0x3DU, + 0x3CU, 0x24U, 0xFFU, 0x24U, 0x24U, + 0x48U, 0x7EU, 0x49U, 0x43U, 0x66U, + 0x2BU, 0x2FU, 0xFCU, 0x2FU, 0x2BU, + 0xFFU, 0x09U, 0x29U, 0xF6U, 0x20U, + 0xC0U, 0x88U, 0x7EU, 0x09U, 0x03U, + 0x20U, 0x54U, 0x54U, 0x79U, 0x41U, + 0x00U, 0x00U, 0x44U, 0x7DU, 0x41U, + 0x30U, 0x48U, 0x48U, 0x4AU, 0x32U, + 0x38U, 0x40U, 0x40U, 0x22U, 0x7AU, + 0x00U, 0x7AU, 0x0AU, 0x0AU, 0x72U, + 0x7DU, 0x0DU, 0x19U, 0x31U, 0x7DU, + 0x26U, 0x29U, 0x29U, 0x2FU, 0x28U, + 0x26U, 0x29U, 0x29U, 0x29U, 0x26U, + 0x30U, 0x48U, 0x4DU, 0x40U, 0x20U, + 0x38U, 0x08U, 0x08U, 0x08U, 0x08U, + 0x08U, 0x08U, 0x08U, 0x08U, 0x38U, + 0x2FU, 0x10U, 0xC8U, 0xACU, 0xBAU, + 0x2FU, 0x10U, 0x28U, 0x34U, 0xFAU, + 0x00U, 0x00U, 0x7BU, 0x00U, 0x00U, + 0x08U, 0x14U, 0x2AU, 0x14U, 0x22U, + 0x22U, 0x14U, 0x2AU, 0x14U, 0x08U, + 0xAAU, 0x00U, 0x55U, 0x00U, 0xAAU, + 0xAAU, 0x55U, 0xAAU, 0x55U, 0xAAU, + 0x00U, 0x00U, 0x00U, 0xFFU, 0x00U, + 0x10U, 0x10U, 0x10U, 0xFFU, 0x00U, + 0x14U, 0x14U, 0x14U, 0xFFU, 0x00U, + 0x10U, 0x10U, 0xFFU, 0x00U, 0xFFU, + 0x10U, 0x10U, 0xF0U, 0x10U, 0xF0U, + 0x14U, 0x14U, 0x14U, 0xFCU, 0x00U, + 0x14U, 0x14U, 0xF7U, 0x00U, 0xFFU, + 0x00U, 0x00U, 0xFFU, 0x00U, 0xFFU, + 0x14U, 0x14U, 0xF4U, 0x04U, 0xFCU, + 0x14U, 0x14U, 0x17U, 0x10U, 0x1FU, + 0x10U, 0x10U, 0x1FU, 0x10U, 0x1FU, + 0x14U, 0x14U, 0x14U, 0x1FU, 0x00U, + 0x10U, 0x10U, 0x10U, 0xF0U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x1FU, 0x10U, + 0x10U, 0x10U, 0x10U, 0x1FU, 0x10U, + 0x10U, 0x10U, 0x10U, 0xF0U, 0x10U, + 0x00U, 0x00U, 0x00U, 0xFFU, 0x10U, + 0x10U, 0x10U, 0x10U, 0x10U, 0x10U, + 0x10U, 0x10U, 0x10U, 0xFFU, 0x10U, + 0x00U, 0x00U, 0x00U, 0xFFU, 0x14U, + 0x00U, 0x00U, 0xFFU, 0x00U, 0xFFU, + 0x00U, 0x00U, 0x1FU, 0x10U, 0x17U, + 0x00U, 0x00U, 0xFCU, 0x04U, 0xF4U, + 0x14U, 0x14U, 0x17U, 0x10U, 0x17U, + 0x14U, 0x14U, 0xF4U, 0x04U, 0xF4U, + 0x00U, 0x00U, 0xFFU, 0x00U, 0xF7U, + 0x14U, 0x14U, 0x14U, 0x14U, 0x14U, + 0x14U, 0x14U, 0xF7U, 0x00U, 0xF7U, + 0x14U, 0x14U, 0x14U, 0x17U, 0x14U, + 0x10U, 0x10U, 0x1FU, 0x10U, 0x1FU, + 0x14U, 0x14U, 0x14U, 0xF4U, 0x14U, + 0x10U, 0x10U, 0xF0U, 0x10U, 0xF0U, + 0x00U, 0x00U, 0x1FU, 0x10U, 0x1FU, + 0x00U, 0x00U, 0x00U, 0x1FU, 0x14U, + 0x00U, 0x00U, 0x00U, 0xFCU, 0x14U, + 0x00U, 0x00U, 0xF0U, 0x10U, 0xF0U, + 0x10U, 0x10U, 0xFFU, 0x10U, 0xFFU, + 0x14U, 0x14U, 0x14U, 0xFFU, 0x14U, + 0x10U, 0x10U, 0x10U, 0x1FU, 0x00U, + 0x00U, 0x00U, 0x00U, 0xF0U, 0x10U, + 0xFFU, 0xFFU, 0xFFU, 0xFFU, 0xFFU, + 0xF0U, 0xF0U, 0xF0U, 0xF0U, 0xF0U, + 0xFFU, 0xFFU, 0xFFU, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0xFFU, 0xFFU, + 0x0FU, 0x0FU, 0x0FU, 0x0FU, 0x0FU, + 0x38U, 0x44U, 0x44U, 0x38U, 0x44U, + 0x7CU, 0x2AU, 0x2AU, 0x3EU, 0x14U, + 0x7EU, 0x02U, 0x02U, 0x06U, 0x06U, + 0x02U, 0x7EU, 0x02U, 0x7EU, 0x02U, + 0x63U, 0x55U, 0x49U, 0x41U, 0x63U, + 0x38U, 0x44U, 0x44U, 0x3CU, 0x04U, + 0x40U, 0x7EU, 0x20U, 0x1EU, 0x20U, + 0x06U, 0x02U, 0x7EU, 0x02U, 0x02U, + 0x99U, 0xA5U, 0xE7U, 0xA5U, 0x99U, + 0x1CU, 0x2AU, 0x49U, 0x2AU, 0x1CU, + 0x4CU, 0x72U, 0x01U, 0x72U, 0x4CU, + 0x30U, 0x4AU, 0x4DU, 0x4DU, 0x30U, + 0x30U, 0x48U, 0x78U, 0x48U, 0x30U, + 0xBCU, 0x62U, 0x5AU, 0x46U, 0x3DU, + 0x3EU, 0x49U, 0x49U, 0x49U, 0x00U, + 0x7EU, 0x01U, 0x01U, 0x01U, 0x7EU, + 0x2AU, 0x2AU, 0x2AU, 0x2AU, 0x2AU, + 0x44U, 0x44U, 0x5FU, 0x44U, 0x44U, + 0x40U, 0x51U, 0x4AU, 0x44U, 0x40U, + 0x40U, 0x44U, 0x4AU, 0x51U, 0x40U, + 0x00U, 0x00U, 0xFFU, 0x01U, 0x03U, + 0xE0U, 0x80U, 0xFFU, 0x00U, 0x00U, + 0x08U, 0x08U, 0x6BU, 0x6BU, 0x08U, + 0x36U, 0x12U, 0x36U, 0x24U, 0x36U, + 0x06U, 0x0FU, 0x09U, 0x0FU, 0x06U, + 0x00U, 0x00U, 0x18U, 0x18U, 0x00U, + 0x00U, 0x00U, 0x10U, 0x10U, 0x00U, + 0x30U, 0x40U, 0xFFU, 0x01U, 0x01U, + 0x00U, 0x1FU, 0x01U, 0x01U, 0x1EU, + 0x00U, 0x19U, 0x1DU, 0x17U, 0x12U, + 0x00U, 0x3CU, 0x3CU, 0x3CU, 0x3CU, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U}; + CI2COLED::CI2COLED() : -i2c(3U) +m_i2c(3U), +m_oledBuffer(NULL) { + m_oledBuffer = new uint8_t[OLED_BUFFER_SIZE]; + + clear(); } bool CI2COLED::init() { - return i2c.init(); + bool ret = m_i2c.init(); + if (!ret) + return false; + + // Initialise the VG-6432TSWEG02 OLED display + sendCommand(0xAEU); /*display off*/ + + sendCommand(0x00U); /*set lower column address*/ + sendCommand(0x12U); /*set higher column address*/ + + sendCommand(0x00U); /*set display start line*/ + + sendCommand(0xB0U); /*set page address*/ + + sendCommand(0x81U, 0x41U); /*contract control*/ + + sendCommand(0xA1U); /*set segment remap*/ + + sendCommand(0xA6U); /*normal / reverse*/ + + sendCommand(0xA8U, 0x1FU); /*multiplex ratio*/ + + sendCommand(0xC8U); /*Com scan direction*/ + + sendCommand(0xD3U, 0x00U); /*set display offset*/ + + sendCommand(0xD5U, 0x80U); /*set osc division*/ + + sendCommand(0xD9U, 0x1FU); /*set pre-charge period*/ + + sendCommand(0xDAU, 0x12U); /*set COM pins*/ + + sendCommand(0xDBU, 0x40U); /*set vcomh*/ + + sendCommand(0x8DU, 0x10U); /*set charge pump enable*/ + + sendCommand(0xAFU); /*display ON*/ + + return true; } -void CI2COLED::setMode(uint8_t state) +void CI2COLED::setMode(int state) +{ + clear(); + + switch (MMDVM_STATE(state)) { + case STATE_DSTAR: + write(3U, "D-Star"); + break; + case STATE_DMR: + write(3U, "DMR"); + break; + case STATE_YSF: + write(3U, "YSF"); + break; + case STATE_P25: + write(3U, "P25"); + break; + case STATE_NXDN: + write(3U, "NXDN"); + break; + case STATE_FM: + write(3U, "FM"); + break; + case STATE_M17: + write(3U, "M17"); + break; + default: + write(3U, "Idle"); + break; + } + + display(); +} + +void CI2COLED::sendCommand(uint8_t c0, uint8_t c1, uint8_t c2) +{ + uint8_t buff[5U]; + + buff[0U] = OLED_ADDRESS; + buff[1U] = SSD_Command_Mode; + buff[2U] = c0; + buff[3U] = c1; + buff[4U] = c2; + + // Write Data on I2C + m_i2c.write(buff, 5U); +} + +void CI2COLED::sendCommand(uint8_t c0, uint8_t c1) +{ + uint8_t buff[4U]; + + buff[0U] = OLED_ADDRESS; + buff[1U] = SSD_Command_Mode; + buff[2U] = c0; + buff[3U] = c1; + + // Write Data on I2C + m_i2c.write(buff, 4U); +} + +void CI2COLED::sendCommand(uint8_t c) +{ + uint8_t buff[3U]; + + buff[0U] = OLED_ADDRESS; + buff[1U] = SSD_Command_Mode; + buff[2U] = c; + + // Write Data on I2C + m_i2c.write(buff, 3U); +} + +void CI2COLED::sendData(const uint8_t* data, uint16_t length) +{ + uint8_t buff[2U]; + + buff[0U] = OLED_ADDRESS; + buff[1U] = SSD_Data_Mode; + + // Write Data on I2C + m_i2c.write(buff, 2U); + m_i2c.write(data, length); +} + +void CI2COLED::clear() +{ + ::memset(m_oledBuffer, 0x00U, OLED_BUFFER_SIZE); +} + +void CI2COLED::write(uint8_t scale, const char* text) +{ +} + +void CI2COLED::display() { } diff --git a/I2COLED.h b/I2COLED.h index f46ff85..fb71677 100644 --- a/I2COLED.h +++ b/I2COLED.h @@ -33,10 +33,20 @@ public: bool init(); - void setMode(uint8_t state); + void setMode(int state); private: - CI2CPort i2c; + CI2CPort m_i2c; + uint8_t* m_oledBuffer; + + void write(uint8_t size, const char* text); + void clear(); + void display(); + + void sendCommand(uint8_t c); + void sendCommand(uint8_t c0, uint8_t c1); + void sendCommand(uint8_t c0, uint8_t c1, uint8_t c2); + void sendData(const uint8_t* c, uint16_t length); }; #endif