Add files via upload

-Added definition of 5th line in OLED.h
-Added new logos for D-Star, Fusion, DMR and Idle Screen
-Relocated text for better reading in all modes (moved everything down a line)
-Added a line to make the logo of the active mode scroll. (you have to un-comment it; it is at the very end of OLED.cpp)
-D-Star screen organised  to show the info in a more visual way
This commit is contained in:
M0IEI
2017-08-06 17:35:10 +01:00
committed by GitHub
parent 1437fca2f2
commit ed6c4cb854
2 changed files with 191 additions and 127 deletions

292
OLED.cpp
View File

@@ -18,64 +18,91 @@
#include "OLED.h" #include "OLED.h"
//Logo MMDVM for Idle Screen
static unsigned char logo_glcd_bmp[] = static unsigned char logo_glcd_bmp[] =
{ 0b00101011, 0b11010100, {
0b01010111, 0b11101010, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0b01010111, 0b11101010, 0x00, 0xFE, 0x01, 0xFF, 0x3F, 0xC0, 0x1F, 0xE7, 0xFF, 0xFC, 0xF8, 0x00, 0xF9, 0xFC, 0x03, 0xFE,
0b00101011, 0b11010100, 0x00, 0xFE, 0x01, 0xFF, 0x3F, 0xE0, 0x3F, 0xE4, 0x00, 0x02, 0x48, 0x00, 0x91, 0xFC, 0x03, 0xFE,
0b00000001, 0b10000000, 0x01, 0xFF, 0x03, 0xFF, 0x3F, 0xE0, 0x3F, 0xE5, 0xFF, 0xF1, 0x24, 0x01, 0x33, 0xFE, 0x07, 0xFE,
0b00000001, 0b10000000, 0x03, 0xEF, 0x03, 0xCF, 0x3D, 0xF0, 0x7D, 0xE5, 0x00, 0x09, 0x24, 0x01, 0x27, 0xDE, 0x07, 0x9E,
0b00000001, 0b10000000, 0x03, 0xCF, 0x87, 0xCF, 0x3C, 0xF0, 0x79, 0xE5, 0x00, 0x05, 0x12, 0x02, 0x47, 0x9F, 0x0F, 0x9E,
0b00000001, 0b10000000, 0x07, 0xC7, 0x87, 0x8F, 0x3C, 0xF8, 0xF9, 0xE5, 0x00, 0x05, 0x12, 0x02, 0x4F, 0x8F, 0x0F, 0x1E,
0b00000001, 0b10000000, 0x07, 0x83, 0xCF, 0x8F, 0x3C, 0x78, 0xF1, 0xE5, 0x00, 0x05, 0x09, 0x04, 0x8F, 0x07, 0x9F, 0x1E,
0b00000001, 0b10000000, 0x0F, 0x83, 0xCF, 0x0F, 0x3C, 0x7D, 0xF1, 0xE5, 0x00, 0x05, 0x09, 0x04, 0x9F, 0x07, 0x9E, 0x1E,
0b00000001, 0b10000000, 0x0F, 0x01, 0xFF, 0x0F, 0x3C, 0x3F, 0xE1, 0xE5, 0x00, 0x05, 0x04, 0x89, 0x1E, 0x03, 0xFE, 0x1E,
0b00000001, 0b10000000, 0x1F, 0x01, 0xFE, 0x0F, 0x3C, 0x1F, 0xE1, 0xE5, 0x00, 0x09, 0x04, 0x89, 0x3E, 0x03, 0xFC, 0x1E,
0b00000001, 0b10000000, 0x1E, 0x00, 0xFE, 0x0F, 0x3C, 0x1F, 0xC1, 0xE5, 0xFF, 0xF1, 0x02, 0x52, 0x3C, 0x01, 0xFC, 0x1E,
0b00000001, 0b10000000, 0x3C, 0x00, 0xFC, 0x0F, 0x3C, 0x0F, 0x81, 0xE4, 0x00, 0x02, 0x02, 0x22, 0x78, 0x01, 0xF8, 0x1E,
0b00000001, 0b10000000, 0x7C, 0x00, 0x7C, 0x0F, 0x3C, 0x0F, 0x81, 0xE7, 0xFF, 0xFC, 0x01, 0xFC, 0xF8, 0x00, 0xF8, 0x1E,
0b00000000, 0b00000000 }; 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
//DMR 48x16 px
static unsigned char logo_dmr_bmp[] =
{ 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111,
0b10000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000001,
0b10111111, 0b11111000, 0b01111000, 0b00011110, 0b01111111, 0b11100001,
0b10111111, 0b11111110, 0b01111100, 0b00111110, 0b01100000, 0b00011001,
0b10110000, 0b00001110, 0b01100110, 0b01100110, 0b01100000, 0b00011001,
0b10110000, 0b00000110, 0b01100011, 0b11000110, 0b01100000, 0b00011001,
0b10110000, 0b00000110, 0b01100001, 0b10000110, 0b01100000, 0b00011001,
0b10110000, 0b00000110, 0b01100000, 0b00000110, 0b01111111, 0b11111001,
0b10110000, 0b00000110, 0b01100000, 0b00000110, 0b01111000, 0b00000001,
0b10110000, 0b00000110, 0b01100000, 0b00000110, 0b01101100, 0b00000001,
0b10110000, 0b00000110, 0b01100000, 0b00000110, 0b01100110, 0b00000001,
0b10110000, 0b00001110, 0b01100000, 0b00000110, 0b01100011, 0b00000001,
0b10111111, 0b11111110, 0b01100000, 0b00000110, 0b01100001, 0b10000001,
0b10011111, 0b11111000, 0b01100000, 0b00000110, 0b01100000, 0b11000001,
0b10000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000001,
0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111
}; };
//D-Star 64x16 px //Logo D-Star 128x16 px
static unsigned char logo_dstar_bmp[] = static unsigned char logo_dstar_bmp[] =
{ 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, {
0b10000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000001, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0b10000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000001, 0x00, 0x00, 0x60, 0x03, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xF0, 0xFF, 0xFE, 0x07, 0x80, 0x3F, 0xF8,
0b10000001, 0b11111100, 0b00000000, 0b00111100, 0b00000000, 0b00000000, 0b00000000, 0b01000001, 0x00, 0x00, 0xC0, 0x07, 0xC1, 0xE0, 0x00, 0x00, 0x78, 0x7C, 0xFF, 0xFE, 0x0F, 0xC0, 0x3F, 0xFC,
0b10000001, 0b00000010, 0b00000000, 0b01000010, 0b01000000, 0b00000000, 0b00000000, 0b01000001, 0x00, 0x01, 0xC0, 0x07, 0x80, 0xF0, 0x00, 0x00, 0xE0, 0x3C, 0x07, 0x80, 0x0F, 0xC0, 0x78, 0x0E,
0b10000001, 0b00000010, 0b00000000, 0b01000000, 0b01000000, 0b00000000, 0b00000000, 0b01000001, 0x00, 0x03, 0xC0, 0x07, 0x80, 0x70, 0x00, 0x00, 0xE0, 0x38, 0x07, 0x00, 0x1B, 0xC0, 0x78, 0x0E,
0b10000001, 0b00000010, 0b00000000, 0b01000000, 0b01000000, 0b00000000, 0b00000000, 0b01000001, 0x00, 0x07, 0xC0, 0x07, 0x80, 0x70, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x00, 0x33, 0xC0, 0x70, 0x1E,
0b10000001, 0b00000010, 0b01111111, 0b00111100, 0b01111000, 0b00111100, 0b00111100, 0b01000001, 0x07, 0xFF, 0xFE, 0x07, 0x00, 0x70, 0x00, 0x01, 0xF8, 0x00, 0x07, 0x00, 0x63, 0xC0, 0x70, 0x3C,
0b10000001, 0b00000010, 0b00000000, 0b00000010, 0b01000000, 0b00000010, 0b01000010, 0b01000001, 0x01, 0xFF, 0xF8, 0x0F, 0x00, 0x71, 0xFF, 0xE0, 0xFF, 0xF0, 0x0E, 0x00, 0xE1, 0xE0, 0xFF, 0xE0,
0b10000001, 0b00000010, 0b00000000, 0b00000010, 0b01000000, 0b00111110, 0b01000000, 0b01000001, 0x00, 0x7F, 0xE0, 0x0F, 0x00, 0x60, 0x00, 0x00, 0x03, 0xF8, 0x0E, 0x00, 0xC1, 0xE0, 0xFF, 0xE0,
0b10000001, 0b00000010, 0b00000000, 0b00000010, 0b01000000, 0b01000010, 0b01000000, 0b00000001, 0x00, 0x3F, 0x80, 0x0E, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xF0, 0x0E, 0x01, 0xFF, 0xE0, 0xE0, 0x70,
0b10000001, 0b00000010, 0b00000000, 0b01000010, 0b01000010, 0b01000010, 0b01000000, 0b01000001, 0x00, 0x7F, 0x00, 0x1E, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x70, 0x0C, 0x03, 0xFC, 0xE0, 0xE0, 0x30,
0b10000001, 0b11111100, 0b00000000, 0b00111100, 0b00111100, 0b00111100, 0b01000000, 0b01000001, 0x00, 0xFF, 0x00, 0x1E, 0x01, 0xC0, 0x00, 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE1, 0xE0, 0x38,
0b10000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000001, 0x01, 0xEF, 0x00, 0x1C, 0x07, 0x80, 0x00, 0x07, 0xC1, 0xE0, 0x1C, 0x06, 0x00, 0xF1, 0xC0, 0x38,
0b10000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000001, 0x03, 0x87, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x1C, 0x0C, 0x00, 0xF3, 0xC0, 0x38,
0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}; };
//Logo DMR 128x16 px
static unsigned char logo_dmr_bmp[] =
{
0x00, 0x01, 0xFF, 0xFF, 0xF8, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x1F, 0xFF, 0xFF, 0xFC, 0x00, 0x00,
0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x81, 0xFC, 0x00, 0x00, 0x3F, 0x1F, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xE1, 0xFE, 0x00, 0x00, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x01, 0xF8, 0x00, 0x0F, 0xF1, 0xFF, 0x80, 0x01, 0xFF, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00,
0x00, 0x01, 0xF8, 0x00, 0x03, 0xF9, 0xFF, 0xC0, 0x03, 0xFF, 0x1F, 0x80, 0x00, 0x0F, 0x00, 0x00,
0x00, 0x01, 0xF8, 0x00, 0x01, 0xF9, 0xFF, 0xE0, 0x07, 0xFF, 0x1F, 0x80, 0x00, 0x0F, 0x00, 0x00,
0x00, 0x01, 0xF8, 0x00, 0x01, 0xFD, 0xF3, 0xF0, 0x1F, 0x9F, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00,
0x00, 0x01, 0xF8, 0x00, 0x00, 0xFD, 0xF1, 0xFC, 0x3F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x01, 0xF8, 0x00, 0x00, 0xFD, 0xF0, 0xFE, 0x7E, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x01, 0xF8, 0x00, 0x01, 0xFD, 0xF0, 0x7F, 0xFC, 0x1F, 0x1F, 0xFF, 0xFF, 0xFC, 0x00, 0x00,
0x00, 0x01, 0xF8, 0x00, 0x01, 0xF9, 0xF0, 0x1F, 0xF0, 0x1F, 0x1F, 0x81, 0xFC, 0x00, 0x00, 0x00,
0x00, 0x01, 0xF8, 0x00, 0x07, 0xF9, 0xF0, 0x0F, 0xE0, 0x1F, 0x1F, 0x80, 0x7F, 0x00, 0x00, 0x00,
0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF1, 0xF0, 0x07, 0xC0, 0x1F, 0x1F, 0x80, 0x3F, 0xC0, 0x00, 0x00,
0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xC1, 0xF0, 0x03, 0x80, 0x1F, 0x1F, 0x80, 0x0F, 0xF0, 0x00, 0x00,
0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0x00,
0x00, 0x01, 0xFF, 0xFF, 0xF0, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x1F, 0x80, 0x01, 0xFF, 0x00, 0x00
};
//Logo Fusion 128x16
const unsigned char logo_fusion_bmp [] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xFC, 0x00, 0x1F, 0xE1, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xC3, 0xFF, 0xFF, 0x1F, 0xFF, 0xFE,
0x03, 0xFC, 0x00, 0x3F, 0xC3, 0xFC, 0x3F, 0x80, 0x00, 0x7F, 0x87, 0xF0, 0xFF, 0x0F, 0xF1, 0xFF,
0x07, 0xFF, 0xFC, 0x7F, 0x83, 0xF8, 0x7F, 0x80, 0x00, 0xFF, 0x0F, 0xF0, 0xFF, 0x1F, 0xE1, 0xFE,
0x0F, 0xFF, 0xF0, 0x7F, 0x07, 0xF0, 0xFF, 0xFF, 0xC1, 0xFF, 0x1F, 0xE1, 0xFE, 0x3F, 0xC3, 0xFC,
0x0F, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xE1, 0xFE, 0x3F, 0xC3, 0xFC, 0x3F, 0xC3, 0xFC,
0x1F, 0xE0, 0x01, 0xFC, 0x1F, 0xE0, 0x1F, 0xFF, 0xE3, 0xFC, 0x3F, 0xC3, 0xF8, 0x7F, 0x87, 0xF8,
0x3F, 0xC0, 0x03, 0xFC, 0x3F, 0xC0, 0x00, 0x3F, 0xC7, 0xF8, 0x7F, 0x87, 0xF8, 0xFF, 0x0F, 0xF0,
0x7F, 0xC0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0x07, 0xF8, 0x7F, 0xCF, 0xE1, 0xFF, 0x1F, 0xF8,
0x7F, 0x80, 0x01, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x0F, 0xF0, 0x3F, 0xFF, 0x81, 0xFE, 0x1F, 0xF0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
COLED::COLED(unsigned char displayType, unsigned char displayBrightness, bool displayInvert) : COLED::COLED(unsigned char displayType, unsigned char displayBrightness, bool displayInvert) :
m_displayType(displayType), m_displayType(displayType),
m_displayBrightness(displayBrightness), m_displayBrightness(displayBrightness),
@@ -127,12 +154,14 @@ void COLED::setIdleInt()
display.clearDisplay(); display.clearDisplay();
OLED_statusbar(); OLED_statusbar();
display.setCursor(0,display.height()/2);
display.setTextSize(2); display.setCursor(0,30);
display.setTextSize(3);
display.print("Idle"); display.print("Idle");
display.setTextSize(1); display.setTextSize(1);
display.startscrollleft(0x02,0x0f);
display.display(); display.display();
display.startscrollright(0x02,0x0f);
} }
void COLED::setErrorInt(const char* text) void COLED::setErrorInt(const char* text)
@@ -141,8 +170,10 @@ void COLED::setErrorInt(const char* text)
display.clearDisplay(); display.clearDisplay();
OLED_statusbar(); OLED_statusbar();
display.setCursor(0,OLED_LINE1); display.setCursor(0,OLED_LINE1);
display.printf("%s\n",text); display.printf("%s\n",text);
display.display(); display.display();
} }
@@ -152,34 +183,45 @@ void COLED::setLockoutInt()
display.clearDisplay(); display.clearDisplay();
OLED_statusbar(); OLED_statusbar();
display.setCursor(0,OLED_LINE1);
display.setCursor(0,30);
display.setTextSize(3);
display.print("Lockout"); display.print("Lockout");
display.setTextSize(1);
display.display(); display.display();
} }
void COLED::writeDStarInt(const char* my1, const char* my2, const char* your, const char* type, const char* reflector) void COLED::writeDStarInt(const char* my1, const char* my2, const char* your, const char* type, const char* reflector)
{ {
m_mode = MODE_DSTAR; m_mode = MODE_DSTAR;
display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK);
display.setCursor(0,OLED_LINE1); display.clearDisplay();
display.printf("%s %.8s/%4.4s", type, my1, my2); display.fillRect(0,OLED_LINE1,display.width(),display.height(),BLACK); //clear everything under logo
display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK);
display.setCursor(0,OLED_LINE2); display.setCursor(0,OLED_LINE2);
display.printf("via %.8s", reflector); display.printf("%s %.8s/%4.4s",type,my1,my2);
display.fillRect(0, OLED_LINE3, display.width(), 10, BLACK);
display.setCursor(0,OLED_LINE3); display.setCursor(0,OLED_LINE3);
display.printf("%.8s <- %-8s", your, reflector); display.printf("-> %.8s",your);
display.setCursor(0,OLED_LINE5);
display.printf("via %.8s",reflector);
OLED_statusbar(); OLED_statusbar();
display.display(); display.display();
} }
void COLED::clearDStarInt() void COLED::clearDStarInt()
{ {
display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK); display.clearDisplay();
display.setCursor(0,OLED_LINE1); display.fillRect(0,OLED_LINE2, display.width(),display.height(),BLACK); //clear everything under logo
display.setCursor(40,38);
display.print("Listening"); display.print("Listening");
display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK);
display.fillRect(0, OLED_LINE3, display.width(), 10, BLACK);
OLED_statusbar(); OLED_statusbar();
display.display(); display.display();
} }
@@ -188,115 +230,129 @@ void COLED::writeDMRInt(unsigned int slotNo, const std::string& src, bool group,
{ {
if (m_mode != MODE_DMR) { if (m_mode != MODE_DMR) {
display.clearDisplay(); display.clearDisplay();
m_mode = MODE_DMR; m_mode = MODE_DMR;
if (slotNo == 1U) if (slotNo == 1U)
{ {
display.fillRect(0, OLED_LINE3, display.width(), 10, BLACK); display.fillRect(0,OLED_LINE4,display.width(),20,BLACK); //20=> clear 2 lines
display.setCursor(0,OLED_LINE3); display.setCursor(0,OLED_LINE4);
display.print("2 Listening"); display.print("2 Listening");
display.fillRect(0, OLED_LINE4, display.width(), 10, BLACK);
} }
else else
{ {
display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK); display.fillRect(0,OLED_LINE2,display.width(),20,BLACK); //20=> clear 2 lines
display.setCursor(0,OLED_LINE1); display.setCursor(0,OLED_LINE2);
display.print("1 Listening"); display.print("1 Listening");
display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK);
} }
} }
if (slotNo == 1U) { if (slotNo == 1U)
display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK); {
display.setCursor(0,OLED_LINE1); display.fillRect(0,OLED_LINE2,display.width(),20,BLACK);
display.printf("%i %s %s", slotNo, type, src.c_str());
display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK);
display.setCursor(0,OLED_LINE2); display.setCursor(0,OLED_LINE2);
display.printf("%s%s", group ? "TG" : "", dst.c_str());
} else {
display.fillRect(0, OLED_LINE3, display.width(), 10, BLACK);
display.setCursor(0,OLED_LINE3);
display.printf("%i %s %s",slotNo,type,src.c_str()); display.printf("%i %s %s",slotNo,type,src.c_str());
display.fillRect(0, OLED_LINE4, display.width(), 10, BLACK); display.setCursor(0,OLED_LINE3);
display.setCursor(0,OLED_LINE4);
display.printf("%s%s",group ? "TG" : "",dst.c_str()); display.printf("%s%s",group ? "TG" : "",dst.c_str());
} }
else
{
display.fillRect(0,OLED_LINE4,display.width(),20,BLACK);
display.setCursor(0,OLED_LINE4);
display.printf("%i %s %s",slotNo,type,src.c_str());
display.setCursor(0,OLED_LINE5);
display.printf("%s%s", group ? "TG" : "", dst.c_str());
}
OLED_statusbar(); OLED_statusbar();
display.display(); display.display();
} }
void COLED::clearDMRInt(unsigned int slotNo) void COLED::clearDMRInt(unsigned int slotNo)
{ {
OLED_statusbar();
if (slotNo == 1U) if (slotNo == 1U)
{ {
display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK); display.fillRect(0, OLED_LINE2, display.width(), 20, BLACK);
display.setCursor(0,OLED_LINE1); display.setCursor(0,OLED_LINE2);
display.print("1 Listening"); display.print("1 Listening");
display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK);
} }
else else
{ {
display.fillRect(0, OLED_LINE3, display.width(), 10, BLACK); display.fillRect(0, OLED_LINE4, display.width(), 20, BLACK);
display.setCursor(0,OLED_LINE3); display.setCursor(0, OLED_LINE4);
display.print("2 Listening"); display.print("2 Listening");
display.fillRect(0, OLED_LINE4, display.width(), 10, BLACK);
} }
display.display(); display.display();
} }
void COLED::writeFusionInt(const char* source, const char* dest, const char* type, const char* origin) void COLED::writeFusionInt(const char* source, const char* dest, const char* type, const char* origin)
{ {
m_mode = MODE_YSF; m_mode = MODE_YSF;
display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK);
display.setCursor(0,OLED_LINE1); display.clearDisplay();
display.printf("%s %.10s", type, source); display.fillRect(0,OLED_LINE1,display.width(),display.height(),BLACK);
display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK);
display.setCursor(0,OLED_LINE2); display.setCursor(0,OLED_LINE2);
display.printf("%s %.10s", type, source);
display.setCursor(0,OLED_LINE3);
display.printf(" %.10s", dest); display.printf(" %.10s", dest);
OLED_statusbar(); OLED_statusbar();
display.display(); display.display();
} }
void COLED::clearFusionInt() void COLED::clearFusionInt()
{ {
display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK); display.fillRect(0, OLED_LINE1, display.width(), display.height(), BLACK);
display.setCursor(0,OLED_LINE1);
display.setCursor(40,38);
display.print("Listening"); display.print("Listening");
display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK);
OLED_statusbar();
display.display(); display.display();
} }
void COLED::writeP25Int(const char* source, bool group, unsigned int dest, const char* type) void COLED::writeP25Int(const char* source, bool group, unsigned int dest, const char* type)
{ {
m_mode = MODE_P25; m_mode = MODE_P25;
display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK);
display.setCursor(0,OLED_LINE1); display.clearDisplay();
display.printf("%s %.10s", type, source); display.fillRect(0, OLED_LINE2, display.width(), display.height(), BLACK);
display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK);
display.setCursor(0,OLED_LINE2); display.setCursor(0,OLED_LINE2);
display.printf("%s %.10s", type, source);
display.setCursor(0,OLED_LINE3);
display.printf(" %s%u", group ? "TG" : "", dest); display.printf(" %s%u", group ? "TG" : "", dest);
OLED_statusbar(); OLED_statusbar();
display.display(); display.display();
} }
void COLED::clearP25Int() void COLED::clearP25Int()
{ {
display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK); display.clearDisplay();
display.setCursor(0,OLED_LINE1); display.fillRect(0, OLED_LINE2, display.width(), display.height(), BLACK);
display.setCursor(40,38);
display.print("Listening"); display.print("Listening");
display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK);
OLED_statusbar();
display.display(); display.display();
} }
void COLED::writeCWInt() void COLED::writeCWInt()
{ {
display.clearDisplay(); display.clearDisplay();
display.setCursor(0,display.height()/2);
display.setCursor(0,30);
display.setTextSize(3); display.setTextSize(3);
display.print("CW TX"); display.print("CW TX");
display.setTextSize(1); display.setTextSize(1);
display.display(); display.display();
display.startscrollright(0x02,0x0f); display.startscrollright(0x02,0x0f);
@@ -305,12 +361,14 @@ void COLED::writeCWInt()
void COLED::clearCWInt() void COLED::clearCWInt()
{ {
display.clearDisplay(); display.clearDisplay();
display.setCursor(0,display.height()/2);
display.setTextSize(2); display.setCursor(0,30);
display.setTextSize(3);
display.print("Idle"); display.print("Idle");
display.setTextSize(1); display.setTextSize(1);
display.display(); display.display();
display.startscrollright(0x02,0x0f); display.startscrollleft(0x02,0x0f);
} }
void COLED::close() void COLED::close()
@@ -323,15 +381,19 @@ void COLED::OLED_statusbar()
display.stopscroll(); display.stopscroll();
display.fillRect(0, 0, display.width(), 16, BLACK); display.fillRect(0, 0, display.width(), 16, BLACK);
display.setTextColor(WHITE); display.setTextColor(WHITE);
display.setCursor(0,0); display.setCursor(0,0);
if (m_mode == MODE_DMR) if (m_mode == MODE_DMR)
display.drawBitmap(0, 0, logo_dmr_bmp, 48, 16, WHITE); display.drawBitmap(0, 0, logo_dmr_bmp, 128, 16, WHITE);
else if (m_mode == MODE_DSTAR) else if (m_mode == MODE_DSTAR)
display.drawBitmap(0, 0, logo_dstar_bmp, 64, 16, WHITE); display.drawBitmap(0, 0, logo_dstar_bmp, 128, 16, WHITE);
else if (m_mode == MODE_YSF) else if (m_mode == MODE_YSF)
display.print("Fusion"); display.drawBitmap(0, 0, logo_fusion_bmp, 128, 16, WHITE);
else if (m_mode == MODE_P25) else if (m_mode == MODE_P25)
display.print("P25"); display.print("P25");
else else
display.drawBitmap(0, 0, logo_glcd_bmp, 16, 15, WHITE); display.drawBitmap(0, 0, logo_glcd_bmp, 128, 16, WHITE);
// display.startscrollright(0x00,0x02); //<-Uncomment this line to make the mode logo scroll
} }

2
OLED.h
View File

@@ -24,6 +24,7 @@
#define OLED_LINE2 26 #define OLED_LINE2 26
#define OLED_LINE3 36 #define OLED_LINE3 36
#define OLED_LINE4 46 #define OLED_LINE4 46
#define OLED_LINE5 56
#include "Display.h" #include "Display.h"
#include "Defines.h" #include "Defines.h"
@@ -71,6 +72,7 @@ private:
unsigned char m_displayType; unsigned char m_displayType;
unsigned char m_displayBrightness; unsigned char m_displayBrightness;
bool m_displayInvert; bool m_displayInvert;
;
ArduiPi_OLED display; ArduiPi_OLED display;
void OLED_statusbar(); void OLED_statusbar();