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

316
OLED.cpp
View file

@ -18,63 +18,90 @@
#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 //Logo D-Star 128x16 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
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),
@ -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,151 +183,176 @@ 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();
} }
void COLED::writeDMRInt(unsigned int slotNo, const std::string& src, bool group, const std::string& dst, const char* type) void COLED::writeDMRInt(unsigned int slotNo,const std::string& src,bool group,const std::string& dst,const char* type)
{ {
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()); display.printf("%i %s %s",slotNo,type,src.c_str());
} else {
display.fillRect(0, OLED_LINE3, display.width(), 10, BLACK);
display.setCursor(0,OLED_LINE3); display.setCursor(0,OLED_LINE3);
display.printf("%i %s %s", slotNo, type, src.c_str()); display.printf("%s%s",group ? "TG" : "",dst.c_str());
display.fillRect(0, OLED_LINE4, display.width(), 10, BLACK); }
else
{
display.fillRect(0,OLED_LINE4,display.width(),20,BLACK);
display.setCursor(0,OLED_LINE4); 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()); 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();