[Horus] SD Storage started. UI continued.

+ Some boyscout work on LCD functions
This commit is contained in:
Bertrand Songis
2015-10-22 07:10:19 +02:00
parent d353f3c388
commit c8f77fceec
270 changed files with 2403 additions and 2474 deletions
+45 -26
View File
@@ -59,7 +59,7 @@ void drawPotsBars()
if (IS_POT_AVAILABLE(i)) {
len = ((calibratedStick[i]+RESX)*BAR_HEIGHT/(RESX*2))+1l; // calculate once per loop
// TODO 220 constant
lcdDrawFilledRect(x, 220-FH-len, 5, len, TEXT_COLOR);
lcdDrawSolidFilledRect(x, 220-FH-len, 5, len, TEXT_COLOR);
}
}
}
@@ -79,7 +79,7 @@ void doMainScreenGraphics()
void drawTrimSquare(coord_t x, coord_t y)
{
lcdDrawFilledRect(x-2, y, 15, 15, TITLE_BGCOLOR);
lcdDrawSolidFilledRect(x-2, y, 15, 15, TITLE_BGCOLOR);
lcdDrawBitmapPattern(x-2, y, LBM_TRIM_SHADOW, TEXT_COLOR);
}
@@ -87,13 +87,13 @@ void drawHorizontalTrimPosition(coord_t x, coord_t y, int16_t dir)
{
drawTrimSquare(x, y);
if (dir >= 0) {
lcdDrawVerticalLine(x+8, y+3, 9, TEXT_INVERTED_COLOR);
lcdDrawSolidVerticalLine(x+8, y+3, 9, TEXT_INVERTED_COLOR);
}
if (dir <= 0) {
lcdDrawVerticalLine(x+2, y+3, 9, TEXT_INVERTED_COLOR);
lcdDrawSolidVerticalLine(x+2, y+3, 9, TEXT_INVERTED_COLOR);
}
// if (exttrim) {
// lcdDrawVerticalLine(xm, ym, 9, TEXT_INVERTED_COLOR);
// lcdDrawSolidVerticalLine(xm, ym, 9, TEXT_INVERTED_COLOR);
// }
}
@@ -101,13 +101,13 @@ void drawVerticalTrimPosition(coord_t x, coord_t y, int16_t dir)
{
drawTrimSquare(x, y);
if (dir >= 0) {
lcdDrawHorizontalLine(x+1, y+4, 9, TEXT_INVERTED_COLOR);
lcdDrawSolidHorizontalLine(x+1, y+4, 9, TEXT_INVERTED_COLOR);
}
if (dir <= 0) {
lcdDrawHorizontalLine(x+1, y+10, 9, TEXT_INVERTED_COLOR);
lcdDrawSolidHorizontalLine(x+1, y+10, 9, TEXT_INVERTED_COLOR);
}
// if (exttrim) {
// lcdDrawHorizontalLine(xm-1, ym, 3, TEXT_INVERTED_COLOR);
// lcdDrawSolidHorizontalLine(xm-1, ym, 3, TEXT_INVERTED_COLOR);
// }
}
@@ -115,20 +115,20 @@ void drawHorizontalStick(coord_t x, int val)
{
for (int i=0; i<=160; i+=4) {
if (i==0 || i==80 || i==160)
lcdDrawVerticalLine(x+i, 250, 13, TEXT_COLOR);
lcdDrawSolidVerticalLine(x+i, 250, 13, TEXT_COLOR);
else
lcdDrawVerticalLine(x+i, 252, 9, TEXT_COLOR);
lcdDrawSolidVerticalLine(x+i, 252, 9, TEXT_COLOR);
}
drawHorizontalTrimPosition(x+TRIM_LEN+val*TRIM_LEN/RESX-4, TRIM_H_Y+16, val);
drawHorizontalTrimPosition(x+TRIM_LEN+val*TRIM_LEN/RESX-5, TRIM_H_Y+16, val);
}
void drawVerticalStick(coord_t x, int val)
{
for (int i=0; i<=160; i+=4) {
if (i==0 || i==80 || i==160)
lcdDrawHorizontalLine(x, 56+i, 13, TEXT_COLOR);
lcdDrawSolidHorizontalLine(x, 56+i, 13, TEXT_COLOR);
else
lcdDrawHorizontalLine(x+2, 56+i, 9, TEXT_COLOR);
lcdDrawSolidHorizontalLine(x+2, 56+i, 9, TEXT_COLOR);
}
drawVerticalTrimPosition(x, TRIM_V_Y+val*TRIM_LEN/RESX-6, val);
}
@@ -208,7 +208,7 @@ void displayTimers()
if (timerState.val < 0) {
color = ALARM_COLOR;
}
// TODO lcdDrawFilledRect(TIMERS_MARGIN, y, TIMERS_W, TIMERS_H, SOLID, bgColor);
// TODO lcdDrawSolidFilledRect(TIMERS_MARGIN, y, TIMERS_W, TIMERS_H, SOLID, bgColor);
putsTimer(TIMERS_MARGIN+TIMERS_PADDING, y+12, abs(timerState.val), color|DBLSIZE|LEFT);
if (len > 0)
lcd_putsnAtt(TIMERS_MARGIN+TIMERS_PADDING, y+2, timerData.name, LEN_TIMER_NAME, color|ZCHAR);
@@ -241,7 +241,7 @@ void displayMainTelemetryFields()
att |= PREC1;
}
att |= (item.isOld() ? ALARM_COLOR : TEXT_COLOR);
lcdDrawFilledRect(ALTITUDE_X, VOLTS_Y, ALTITUDE_W, ALTITUDE_H, TEXT_BGCOLOR);
lcdDrawSolidFilledRect(ALTITUDE_X, VOLTS_Y, ALTITUDE_W, ALTITUDE_H, TEXT_BGCOLOR);
lcd_putsAtt(ALTITUDE_X+PADDING, VOLTS_Y+2, "Voltage", att);
putsValueWithUnit(ALTITUDE_X+PADDING, VOLTS_Y+12, value, UNIT_VOLTS, DBLSIZE|LEFT|att);
}
@@ -254,7 +254,7 @@ void displayMainTelemetryFields()
TelemetrySensor & sensor = g_model.telemetrySensors[g_model.frsky.altitudeSource-1];
if (sensor.prec) value /= sensor.prec == 2 ? 100 : 10;
LcdFlags att = (item.isOld() ? ALARM_COLOR : TEXT_COLOR);
lcdDrawFilledRect(ALTITUDE_X, ALTITUDE_Y, ALTITUDE_W, ALTITUDE_H, TEXT_BGCOLOR);
lcdDrawSolidFilledRect(ALTITUDE_X, ALTITUDE_Y, ALTITUDE_W, ALTITUDE_H, TEXT_BGCOLOR);
lcd_putsAtt(ALTITUDE_X+PADDING, ALTITUDE_Y+2, "Alt", att);
putsValueWithUnit(ALTITUDE_X+PADDING, ALTITUDE_Y+12, value, UNIT_METERS, DBLSIZE|LEFT|att);
}
@@ -276,10 +276,10 @@ void displayMainViewIndex()
for (int i=VIEW_COUNT; i>=0; --i) {
if (isViewAvailable(i)) {
if (g_eeGeneral.view == i) {
lcdDrawFilledRect(x, MENU_FOOTER_TOP+17, 9, 9, TEXT_INVERTED_BGCOLOR);
lcdDrawSolidFilledRect(x, MENU_FOOTER_TOP+17, 9, 9, TEXT_INVERTED_BGCOLOR);
}
else {
lcdDrawRect(x+1, MENU_FOOTER_TOP+18, 7, 7, TEXT_COLOR);
lcdDrawSolidRect(x+1, MENU_FOOTER_TOP+18, 7, 7, TEXT_COLOR);
}
x -= 11;
}
@@ -343,11 +343,18 @@ const uint16_t LBM_CORSAIR[] = {
#include "../../bitmaps/Horus/corsair.lbm"
};
const uint8_t LBM_TIMER_BACKGROUND[] = {
#include "../../bitmaps/Horus/mask_timer_bg.lbm"
};
const uint8_t LBM_RSCALE[] = {
#include "../../bitmaps/Horus/mask_rscale.lbm"
};
void menuMainView(evt_t event)
{
// clear the screen
lcdDrawFilledRect(0, 0, LCD_W, LCD_H, TEXT_BGCOLOR);
lcdDrawSolidFilledRect(0, 0, LCD_W, LCD_H, TEXT_BGCOLOR);
switch (event) {
case EVT_ENTRY:
@@ -377,13 +384,13 @@ void menuMainView(evt_t event)
break;
case EVT_KEY_BREAK(KEY_DOWN):
eeDirty(EE_GENERAL);
storageDirty(EE_GENERAL);
g_eeGeneral.view = circularIncDec(g_eeGeneral.view, +1, 0, VIEW_COUNT-1, isViewAvailable);
break;
case EVT_KEY_BREAK(KEY_UP):
killEvents(event);
eeDirty(EE_GENERAL);
storageDirty(EE_GENERAL);
g_eeGeneral.view = circularIncDec(g_eeGeneral.view, -1, 0, VIEW_COUNT-1, isViewAvailable);
break;
@@ -401,14 +408,19 @@ void menuMainView(evt_t event)
// lcdDrawBitmap(0, 0, LBM_MAINVIEW_FLAT);
// Header
lcdDrawFilledRect(0, 0, LCD_W, MENU_HEADER_HEIGHT, HEADER_BGCOLOR);
lcdDrawSolidFilledRect(0, 0, LCD_W, MENU_HEADER_HEIGHT, HEADER_BGCOLOR);
lcdDrawBitmapPattern(0, 0, LBM_TOPMENU_POLYGON, TITLE_BGCOLOR);
lcdDrawBitmapPattern(4, 10, LBM_TOPMENU_OPENTX, MENU_TITLE_COLOR);
lcdDrawTopmenuDatetime();
// Flight Mode Name
int mode = mixerCurrentFlightMode;
lcd_putsnAtt(212, 237, g_model.flightModeData[mode].name, sizeof(g_model.flightModeData[mode].name), ZCHAR|SMLSIZE);
for (int i=0; i<MAX_FLIGHT_MODES; i++) {
lcdDrawSolidVerticalLine(LCD_W/2-20+5*i, 254, 13, TEXT_COLOR);
}
drawTrimSquare(LCD_W/2-25+5*mixerCurrentFlightMode, 253);
lcdDrawChar(LCD_W/2-23+5*mixerCurrentFlightMode, 254, '0'+mixerCurrentFlightMode, SMLSIZE|TEXT_INVERTED_COLOR);
lcd_putsnAtt(LCD_W/2-getTextWidth(g_model.flightModeData[mode].name, sizeof(g_model.flightModeData[mode].name), ZCHAR|SMLSIZE)/2, 237, g_model.flightModeData[mode].name, sizeof(g_model.flightModeData[mode].name), ZCHAR|SMLSIZE);
// Sticks
drawSticks();
@@ -417,12 +429,19 @@ void menuMainView(evt_t event)
displayTrims(mode);
// Model panel
lcdDrawFilledRectWithAttributes(248, 58, 188, 158, SOLID, TEXT_BGCOLOR | (5<<24));
lcdDrawFilledRect(248, 58, 188, 158, SOLID, TEXT_BGCOLOR | OPACITY(5));
lcdDrawBitmapPattern(256, 62, LBM_MODEL_ICON, TITLE_BGCOLOR);
lcd_putsAtt(293, 68, "MyPlane Name", SMLSIZE);
lcdDrawHorizontalLine(287, 85, 140, TITLE_BGCOLOR);
lcd_putsnAtt(293, 68, g_model.header.name, ZCHAR|SMLSIZE, LEN_MODEL_NAME);
lcdDrawSolidHorizontalLine(287, 85, 140, TITLE_BGCOLOR);
lcdDrawBitmap(256, 104, LBM_CORSAIR);
// Timer 1
if (g_model.timers[0].start) {
TimerState & timerState = timersStates[0];
lcdDrawBitmapPattern(58, 61, LBM_TIMER_BACKGROUND, TEXT_BGCOLOR);
lcdDrawBitmapPatternPie(60, 64, LBM_RSCALE, TITLE_BGCOLOR, 0, 360*timerState.val/g_model.timers[0].start);
putsTimer(125, 94, abs(timerState.val), TEXT_COLOR|DBLSIZE|LEFT);
}
#if 0
displayMainViewIndex();