diff --git a/OLED.cpp b/OLED.cpp index d90c0b2..db059cf 100644 --- a/OLED.cpp +++ b/OLED.cpp @@ -18,63 +18,90 @@ #include "OLED.h" +//Logo MMDVM for Idle Screen static unsigned char logo_glcd_bmp[] = - { 0b00101011, 0b11010100, - 0b01010111, 0b11101010, - 0b01010111, 0b11101010, - 0b00101011, 0b11010100, - 0b00000001, 0b10000000, - 0b00000001, 0b10000000, - 0b00000001, 0b10000000, - 0b00000001, 0b10000000, - 0b00000001, 0b10000000, - 0b00000001, 0b10000000, - 0b00000001, 0b10000000, - 0b00000001, 0b10000000, - 0b00000001, 0b10000000, - 0b00000001, 0b10000000, - 0b00000001, 0b10000000, - 0b00000000, 0b00000000 }; +{ +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFE, 0x01, 0xFF, 0x3F, 0xC0, 0x1F, 0xE7, 0xFF, 0xFC, 0xF8, 0x00, 0xF9, 0xFC, 0x03, 0xFE, +0x00, 0xFE, 0x01, 0xFF, 0x3F, 0xE0, 0x3F, 0xE4, 0x00, 0x02, 0x48, 0x00, 0x91, 0xFC, 0x03, 0xFE, +0x01, 0xFF, 0x03, 0xFF, 0x3F, 0xE0, 0x3F, 0xE5, 0xFF, 0xF1, 0x24, 0x01, 0x33, 0xFE, 0x07, 0xFE, +0x03, 0xEF, 0x03, 0xCF, 0x3D, 0xF0, 0x7D, 0xE5, 0x00, 0x09, 0x24, 0x01, 0x27, 0xDE, 0x07, 0x9E, +0x03, 0xCF, 0x87, 0xCF, 0x3C, 0xF0, 0x79, 0xE5, 0x00, 0x05, 0x12, 0x02, 0x47, 0x9F, 0x0F, 0x9E, +0x07, 0xC7, 0x87, 0x8F, 0x3C, 0xF8, 0xF9, 0xE5, 0x00, 0x05, 0x12, 0x02, 0x4F, 0x8F, 0x0F, 0x1E, +0x07, 0x83, 0xCF, 0x8F, 0x3C, 0x78, 0xF1, 0xE5, 0x00, 0x05, 0x09, 0x04, 0x8F, 0x07, 0x9F, 0x1E, +0x0F, 0x83, 0xCF, 0x0F, 0x3C, 0x7D, 0xF1, 0xE5, 0x00, 0x05, 0x09, 0x04, 0x9F, 0x07, 0x9E, 0x1E, +0x0F, 0x01, 0xFF, 0x0F, 0x3C, 0x3F, 0xE1, 0xE5, 0x00, 0x05, 0x04, 0x89, 0x1E, 0x03, 0xFE, 0x1E, +0x1F, 0x01, 0xFE, 0x0F, 0x3C, 0x1F, 0xE1, 0xE5, 0x00, 0x09, 0x04, 0x89, 0x3E, 0x03, 0xFC, 0x1E, +0x1E, 0x00, 0xFE, 0x0F, 0x3C, 0x1F, 0xC1, 0xE5, 0xFF, 0xF1, 0x02, 0x52, 0x3C, 0x01, 0xFC, 0x1E, +0x3C, 0x00, 0xFC, 0x0F, 0x3C, 0x0F, 0x81, 0xE4, 0x00, 0x02, 0x02, 0x22, 0x78, 0x01, 0xF8, 0x1E, +0x7C, 0x00, 0x7C, 0x0F, 0x3C, 0x0F, 0x81, 0xE7, 0xFF, 0xFC, 0x01, 0xFC, 0xF8, 0x00, 0xF8, 0x1E, +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[] = - { 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, - 0b10000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000001, - 0b10000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000001, - 0b10000001, 0b11111100, 0b00000000, 0b00111100, 0b00000000, 0b00000000, 0b00000000, 0b01000001, - 0b10000001, 0b00000010, 0b00000000, 0b01000010, 0b01000000, 0b00000000, 0b00000000, 0b01000001, - 0b10000001, 0b00000010, 0b00000000, 0b01000000, 0b01000000, 0b00000000, 0b00000000, 0b01000001, - 0b10000001, 0b00000010, 0b00000000, 0b01000000, 0b01000000, 0b00000000, 0b00000000, 0b01000001, - 0b10000001, 0b00000010, 0b01111111, 0b00111100, 0b01111000, 0b00111100, 0b00111100, 0b01000001, - 0b10000001, 0b00000010, 0b00000000, 0b00000010, 0b01000000, 0b00000010, 0b01000010, 0b01000001, - 0b10000001, 0b00000010, 0b00000000, 0b00000010, 0b01000000, 0b00111110, 0b01000000, 0b01000001, - 0b10000001, 0b00000010, 0b00000000, 0b00000010, 0b01000000, 0b01000010, 0b01000000, 0b00000001, - 0b10000001, 0b00000010, 0b00000000, 0b01000010, 0b01000010, 0b01000010, 0b01000000, 0b01000001, - 0b10000001, 0b11111100, 0b00000000, 0b00111100, 0b00111100, 0b00111100, 0b01000000, 0b01000001, - 0b10000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000001, - 0b10000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000001, - 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111 - }; +{ +0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x60, 0x03, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xF0, 0xFF, 0xFE, 0x07, 0x80, 0x3F, 0xF8, +0x00, 0x00, 0xC0, 0x07, 0xC1, 0xE0, 0x00, 0x00, 0x78, 0x7C, 0xFF, 0xFE, 0x0F, 0xC0, 0x3F, 0xFC, +0x00, 0x01, 0xC0, 0x07, 0x80, 0xF0, 0x00, 0x00, 0xE0, 0x3C, 0x07, 0x80, 0x0F, 0xC0, 0x78, 0x0E, +0x00, 0x03, 0xC0, 0x07, 0x80, 0x70, 0x00, 0x00, 0xE0, 0x38, 0x07, 0x00, 0x1B, 0xC0, 0x78, 0x0E, +0x00, 0x07, 0xC0, 0x07, 0x80, 0x70, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x00, 0x33, 0xC0, 0x70, 0x1E, +0x07, 0xFF, 0xFE, 0x07, 0x00, 0x70, 0x00, 0x01, 0xF8, 0x00, 0x07, 0x00, 0x63, 0xC0, 0x70, 0x3C, +0x01, 0xFF, 0xF8, 0x0F, 0x00, 0x71, 0xFF, 0xE0, 0xFF, 0xF0, 0x0E, 0x00, 0xE1, 0xE0, 0xFF, 0xE0, +0x00, 0x7F, 0xE0, 0x0F, 0x00, 0x60, 0x00, 0x00, 0x03, 0xF8, 0x0E, 0x00, 0xC1, 0xE0, 0xFF, 0xE0, +0x00, 0x3F, 0x80, 0x0E, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xF0, 0x0E, 0x01, 0xFF, 0xE0, 0xE0, 0x70, +0x00, 0x7F, 0x00, 0x1E, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x70, 0x0C, 0x03, 0xFC, 0xE0, 0xE0, 0x30, +0x00, 0xFF, 0x00, 0x1E, 0x01, 0xC0, 0x00, 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE1, 0xE0, 0x38, +0x01, 0xEF, 0x00, 0x1C, 0x07, 0x80, 0x00, 0x07, 0xC1, 0xE0, 0x1C, 0x06, 0x00, 0xF1, 0xC0, 0x38, +0x03, 0x87, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x1C, 0x0C, 0x00, 0xF3, 0xC0, 0x38, +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) : m_displayType(displayType), @@ -127,12 +154,14 @@ void COLED::setIdleInt() display.clearDisplay(); OLED_statusbar(); - display.setCursor(0,display.height()/2); - display.setTextSize(2); + + display.setCursor(0,30); + display.setTextSize(3); display.print("Idle"); + display.setTextSize(1); + display.startscrollleft(0x02,0x0f); display.display(); - display.startscrollright(0x02,0x0f); } void COLED::setErrorInt(const char* text) @@ -141,8 +170,10 @@ void COLED::setErrorInt(const char* text) display.clearDisplay(); OLED_statusbar(); + display.setCursor(0,OLED_LINE1); - display.printf("%s\n", text); + display.printf("%s\n",text); + display.display(); } @@ -152,151 +183,176 @@ void COLED::setLockoutInt() display.clearDisplay(); OLED_statusbar(); - display.setCursor(0,OLED_LINE1); + + display.setCursor(0,30); + display.setTextSize(3); display.print("Lockout"); + + display.setTextSize(1); display.display(); } void COLED::writeDStarInt(const char* my1, const char* my2, const char* your, const char* type, const char* reflector) { m_mode = MODE_DSTAR; - display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK); - display.setCursor(0,OLED_LINE1); - display.printf("%s %.8s/%4.4s", type, my1, my2); - display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK); + + display.clearDisplay(); + display.fillRect(0,OLED_LINE1,display.width(),display.height(),BLACK); //clear everything under logo + display.setCursor(0,OLED_LINE2); - display.printf("via %.8s", reflector); - display.fillRect(0, OLED_LINE3, display.width(), 10, BLACK); + display.printf("%s %.8s/%4.4s",type,my1,my2); + 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(); display.display(); } void COLED::clearDStarInt() { - display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK); - display.setCursor(0,OLED_LINE1); + display.clearDisplay(); + display.fillRect(0,OLED_LINE2, display.width(),display.height(),BLACK); //clear everything under logo + + display.setCursor(40,38); display.print("Listening"); - display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK); - display.fillRect(0, OLED_LINE3, display.width(), 10, BLACK); + OLED_statusbar(); 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) { - display.clearDisplay(); + + display.clearDisplay(); + m_mode = MODE_DMR; + if (slotNo == 1U) - { - display.fillRect(0, OLED_LINE3, display.width(), 10, BLACK); - display.setCursor(0,OLED_LINE3); + { + display.fillRect(0,OLED_LINE4,display.width(),20,BLACK); //20=> clear 2 lines + display.setCursor(0,OLED_LINE4); display.print("2 Listening"); - display.fillRect(0, OLED_LINE4, display.width(), 10, BLACK); - } + } else - { - display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK); - display.setCursor(0,OLED_LINE1); + { + display.fillRect(0,OLED_LINE2,display.width(),20,BLACK); //20=> clear 2 lines + display.setCursor(0,OLED_LINE2); display.print("1 Listening"); - display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK); + } } - if (slotNo == 1U) { - display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK); - display.setCursor(0,OLED_LINE1); - display.printf("%i %s %s", slotNo, type, src.c_str()); - display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK); + if (slotNo == 1U) + { + display.fillRect(0,OLED_LINE2,display.width(),20,BLACK); 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.printf("%i %s %s",slotNo,type,src.c_str()); display.setCursor(0,OLED_LINE3); - display.printf("%i %s %s", slotNo, type, src.c_str()); - display.fillRect(0, OLED_LINE4, display.width(), 10, BLACK); + 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(); display.display(); } void COLED::clearDMRInt(unsigned int slotNo) { - OLED_statusbar(); 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.setCursor(0,OLED_LINE2); display.print("1 Listening"); - display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK); - } + } else - { - display.fillRect(0, OLED_LINE3, display.width(), 10, BLACK); - display.setCursor(0,OLED_LINE3); + { + display.fillRect(0, OLED_LINE4, display.width(), 20, BLACK); + display.setCursor(0, OLED_LINE4); display.print("2 Listening"); - display.fillRect(0, OLED_LINE4, display.width(), 10, BLACK); - } + } + display.display(); } void COLED::writeFusionInt(const char* source, const char* dest, const char* type, const char* origin) { + m_mode = MODE_YSF; - display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK); - display.setCursor(0,OLED_LINE1); - display.printf("%s %.10s", type, source); - display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK); + + display.clearDisplay(); + display.fillRect(0,OLED_LINE1,display.width(),display.height(),BLACK); + display.setCursor(0,OLED_LINE2); + display.printf("%s %.10s", type, source); + + display.setCursor(0,OLED_LINE3); display.printf(" %.10s", dest); + OLED_statusbar(); display.display(); } void COLED::clearFusionInt() { - display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK); - display.setCursor(0,OLED_LINE1); + display.fillRect(0, OLED_LINE1, display.width(), display.height(), BLACK); + + display.setCursor(40,38); display.print("Listening"); - display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK); - OLED_statusbar(); + display.display(); } void COLED::writeP25Int(const char* source, bool group, unsigned int dest, const char* type) { m_mode = MODE_P25; - display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK); - display.setCursor(0,OLED_LINE1); - display.printf("%s %.10s", type, source); - display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK); + + display.clearDisplay(); + display.fillRect(0, OLED_LINE2, display.width(), display.height(), BLACK); + display.setCursor(0,OLED_LINE2); + display.printf("%s %.10s", type, source); + + display.setCursor(0,OLED_LINE3); display.printf(" %s%u", group ? "TG" : "", dest); + OLED_statusbar(); display.display(); } void COLED::clearP25Int() { - display.fillRect(0, OLED_LINE1, display.width(), 10, BLACK); - display.setCursor(0,OLED_LINE1); + display.clearDisplay(); + display.fillRect(0, OLED_LINE2, display.width(), display.height(), BLACK); + + display.setCursor(40,38); display.print("Listening"); - display.fillRect(0, OLED_LINE2, display.width(), 10, BLACK); - OLED_statusbar(); + display.display(); } void COLED::writeCWInt() { display.clearDisplay(); - display.setCursor(0,display.height()/2); + + display.setCursor(0,30); display.setTextSize(3); display.print("CW TX"); + display.setTextSize(1); display.display(); display.startscrollright(0x02,0x0f); @@ -305,12 +361,14 @@ void COLED::writeCWInt() void COLED::clearCWInt() { display.clearDisplay(); - display.setCursor(0,display.height()/2); - display.setTextSize(2); + + display.setCursor(0,30); + display.setTextSize(3); display.print("Idle"); + display.setTextSize(1); display.display(); - display.startscrollright(0x02,0x0f); + display.startscrollleft(0x02,0x0f); } void COLED::close() @@ -323,15 +381,19 @@ void COLED::OLED_statusbar() display.stopscroll(); display.fillRect(0, 0, display.width(), 16, BLACK); display.setTextColor(WHITE); + display.setCursor(0,0); 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) - 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) - display.print("Fusion"); + display.drawBitmap(0, 0, logo_fusion_bmp, 128, 16, WHITE); else if (m_mode == MODE_P25) display.print("P25"); 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 + } diff --git a/OLED.h b/OLED.h index baeb8f2..2b8cd53 100644 --- a/OLED.h +++ b/OLED.h @@ -24,6 +24,7 @@ #define OLED_LINE2 26 #define OLED_LINE3 36 #define OLED_LINE4 46 +#define OLED_LINE5 56 #include "Display.h" #include "Defines.h" @@ -71,6 +72,7 @@ private: unsigned char m_displayType; unsigned char m_displayBrightness; bool m_displayInvert; +; ArduiPi_OLED display; void OLED_statusbar();