diff --git a/lib/obp60task/OBP60Extensions.cpp b/lib/obp60task/OBP60Extensions.cpp index 146f3c9..153ecbb 100644 --- a/lib/obp60task/OBP60Extensions.cpp +++ b/lib/obp60task/OBP60Extensions.cpp @@ -328,16 +328,11 @@ void displayHeader(CommonData &commonData, GwApi::BoatValue *date, GwApi::BoatVa // Display key lock status if (commonData.keylock) { - getdisplay().drawXBitmap(150, 1, lock_bits, icon_width, icon_height, commonData.fgcolor); + getdisplay().drawXBitmap(170, 1, lock_bits, icon_width, icon_height, commonData.fgcolor); } else { - getdisplay().drawXBitmap(150, 1, swipe_bits, icon_width, icon_height, commonData.fgcolor); + getdisplay().drawXBitmap(166, 1, swipe_bits, swipe_width, swipe_height, commonData.fgcolor); } - // Current page number in a small box - getdisplay().setFont(&Ubuntu_Bold8pt7b); - getdisplay().drawRect(170, 2, 20, 15, commonData.fgcolor); - drawTextCenter(179, 9, String(commonData.data.actpage)); - // Heartbeat as dot getdisplay().setTextColor(commonData.fgcolor); getdisplay().setFont(&Ubuntu_Bold32pt7b); @@ -382,13 +377,21 @@ void displayFooter(CommonData &commonData) { getdisplay().setTextColor(commonData.fgcolor); // Frame around key icon area - getdisplay().drawLine(0, 280, 399, 280, commonData.fgcolor); if (! commonData.keylock) { - getdisplay().drawLine(68, 280, 68, 299, commonData.fgcolor); - getdisplay().drawLine(134, 280, 134, 299, commonData.fgcolor); - getdisplay().drawLine(200, 280, 200, 299, commonData.fgcolor); - getdisplay().drawLine(266, 280, 266, 299, commonData.fgcolor); - getdisplay().drawLine(332, 280, 332, 299, commonData.fgcolor); + // horizontal elements + const uint16_t top = 280; + const uint16_t bottom = 299; + getdisplay().drawLine(commonData.keydata[0].x, top, commonData.keydata[0].x+10, top, commonData.fgcolor); + getdisplay().drawLine(commonData.keydata[1].x-10, top, commonData.keydata[1].x+10, top, commonData.fgcolor); + getdisplay().drawLine(commonData.keydata[2].x-10, top, commonData.keydata[2].x+10, top, commonData.fgcolor); + getdisplay().drawLine(commonData.keydata[4].x-10, top, commonData.keydata[4].x+10, top, commonData.fgcolor); + getdisplay().drawLine(commonData.keydata[5].x-10, top, commonData.keydata[5].x+10, top, commonData.fgcolor); + getdisplay().drawLine(commonData.keydata[5].x + commonData.keydata[5].w - 10, top, commonData.keydata[5].x + commonData.keydata[5].w + 1, top, commonData.fgcolor); + // vertical key separators + getdisplay().drawLine(commonData.keydata[0].x + commonData.keydata[0].w, top, commonData.keydata[0].x + commonData.keydata[0].w, bottom, commonData.fgcolor); + getdisplay().drawLine(commonData.keydata[1].x + commonData.keydata[1].w, top, commonData.keydata[1].x + commonData.keydata[1].w, bottom, commonData.fgcolor); + getdisplay().drawLine(commonData.keydata[3].x + commonData.keydata[3].w, top, commonData.keydata[3].x + commonData.keydata[3].w, bottom, commonData.fgcolor); + getdisplay().drawLine(commonData.keydata[4].x + commonData.keydata[4].w, top, commonData.keydata[4].x + commonData.keydata[4].w, bottom, commonData.fgcolor); for (int i = 0; i < 6; i++) { uint16_t x, y; if (commonData.keydata[i].label.length() > 0) { @@ -412,6 +415,9 @@ void displayFooter(CommonData &commonData) { } } } + // Current page number in a small box + getdisplay().drawRect(190, 280, 23, 19, commonData.fgcolor); + drawTextCenter(200, 289, String(commonData.data.actpage)); } else { getdisplay().setCursor(65, 295); getdisplay().print("Press 1 and 6 fast to unlock keys"); diff --git a/lib/obp60task/OBP60Extensions.h b/lib/obp60task/OBP60Extensions.h index 6665dc3..a529da7 100644 --- a/lib/obp60task/OBP60Extensions.h +++ b/lib/obp60task/OBP60Extensions.h @@ -114,11 +114,6 @@ static unsigned char right_bits[] PROGMEM = { 0xfe, 0x7f, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfe, 0x3f, 0x80, 0x1f, 0x80, 0x0f, 0x80, 0x07, 0x80, 0x03, 0x00, 0x00 }; -static unsigned char swipe_bits[] = { - 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0xc8, 0x05, 0x48, 0x0e, - 0x4a, 0x12, 0x4d, 0x32, 0x09, 0x50, 0x41, 0x44, 0x62, 0x4c, 0xf2, 0x5f, - 0x64, 0x2c, 0x48, 0x24, 0x10, 0x10, 0xe0, 0x0f }; - static unsigned char lock_bits[] PROGMEM = { 0xc0, 0x03, 0x60, 0x06, 0x30, 0x0c, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0xfc, 0x3f, 0x04, 0x20, 0x04, 0x20, 0x84, 0x21, 0x84, 0x21, 0x84, 0x21, @@ -139,19 +134,38 @@ static unsigned char fram_bits[] PROGMEM = { 0xff, 0xff, 0xf8, 0x1f, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f }; +static unsigned char ap_bits[] = { + 0xe0, 0x03, 0x18, 0x0c, 0x04, 0x10, 0xc2, 0x21, 0x30, 0x06, 0x08, 0x08, + 0xc0, 0x01, 0x20, 0x02, 0x00, 0x00, 0x80, 0x00, 0xc0, 0x01, 0xc0, 0x01, + 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00 }; + +static unsigned char dish_bits[] PROGMEM= { + 0x3c, 0x00, 0x42, 0x18, 0xfa, 0x1b, 0x02, 0x04, 0x02, 0x0a, 0x02, 0x09, + 0x82, 0x08, 0x06, 0x0a, 0x0e, 0x1b, 0x9c, 0x2b, 0x38, 0x2b, 0x74, 0x20, + 0xec, 0x1f, 0x1c, 0x00, 0xf4, 0x00, 0xfe, 0x03 }; + static std::map iconmap = { {"LEFT", left_bits}, {"RIGHT", right_bits}, - {"SWIPE", swipe_bits}, {"LOCK", lock_bits}, {"PLUS", plus_bits}, - {"MINUS", minus_bits} + {"MINUS", minus_bits}, + {"DISH", dish_bits}, + {"AP", ap_bits} }; // Other symbols +#define swipe_width 24 +#define swipe_height 16 +static unsigned char swipe_bits[] PROGMEM = { + 0x00, 0x06, 0x00, 0x24, 0x09, 0x24, 0x12, 0x09, 0x48, 0x7f, 0x09, 0xfe, + 0x12, 0xb9, 0x48, 0x24, 0xc9, 0x25, 0x40, 0x49, 0x02, 0xa0, 0x49, 0x06, + 0x20, 0x01, 0x0a, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, + 0x80, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0xfc, 0x01 }; + #define exclamation_width 32 #define exclamation_height 32 -static unsigned char exclamation_bits[] = { +static unsigned char exclamation_bits[] PROGMEM = { 0x00, 0xc0, 0x03, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0xb0, 0x0d, 0x00, 0x00, 0xd8, 0x1b, 0x00, 0x00, 0xec, 0x37, 0x00, 0x00, 0xf6, 0x6f, 0x00, 0x00, 0x3b, 0xdc, 0x00, 0x80, 0x3d, 0xbc, 0x01, 0xc0, 0x3e, 0x7c, 0x03, diff --git a/lib/obp60task/OBP60Keypad.h b/lib/obp60task/OBP60Keypad.h index c06c163..5c2f928 100644 --- a/lib/obp60task/OBP60Keypad.h +++ b/lib/obp60task/OBP60Keypad.h @@ -22,35 +22,40 @@ long starttime = 0; // Start time point for pressed key void initKeys(CommonData &commonData) { // coordinates for virtual keyboard keys - commonData.keydata[0].x = 1; - commonData.keydata[0].y = 281; - commonData.keydata[0].w = 67; - commonData.keydata[0].h = 18; - commonData.keydata[1].x = 69; - commonData.keydata[1].y = 281; - commonData.keydata[1].w = 66; - commonData.keydata[1].h = 18; + static uint16_t top = 281; + static uint16_t width = 65; + static uint16_t height = 18; - commonData.keydata[2].x = 135; - commonData.keydata[2].y = 281; - commonData.keydata[2].w = 66; - commonData.keydata[2].h = 18; + commonData.keydata[0].x = 0; + commonData.keydata[0].y = top; + commonData.keydata[0].w = width + 1; + commonData.keydata[0].h = height; - commonData.keydata[3].x = 201; - commonData.keydata[3].y = 281; - commonData.keydata[3].w = 66; - commonData.keydata[3].h = 18; + commonData.keydata[1].x = commonData.keydata[0].x + commonData.keydata[0].w + 1; + commonData.keydata[1].y = top; + commonData.keydata[1].w = width; + commonData.keydata[1].h = height; - commonData.keydata[4].x = 267; - commonData.keydata[4].y = 281; - commonData.keydata[4].w = 66; - commonData.keydata[4].h = 18; + commonData.keydata[2].x = commonData.keydata[1].x + commonData.keydata[1].w + 1; + commonData.keydata[2].y = top; + commonData.keydata[2].w = width; + commonData.keydata[2].h = height; - commonData.keydata[5].x = 333; - commonData.keydata[5].y = 281; - commonData.keydata[5].w = 66; - commonData.keydata[5].h = 18; + commonData.keydata[3].x = commonData.keydata[2].x + commonData.keydata[2].w + 1; + commonData.keydata[3].y = top; + commonData.keydata[3].w = width; + commonData.keydata[3].h = height; + + commonData.keydata[4].x = commonData.keydata[3].x + commonData.keydata[3].w + 1; + commonData.keydata[4].y = top; + commonData.keydata[4].w = width; + commonData.keydata[4].h = height; + + commonData.keydata[5].x = commonData.keydata[4].x + commonData.keydata[4].w + 1; + commonData.keydata[5].y = top; + commonData.keydata[5].w = width; + commonData.keydata[5].h = height; } #ifdef HARDWARE_V21