From d6543f6c553fdeb25898c6ac926f630e84da64a8 Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 11 Mar 2013 13:46:40 +0000 Subject: [PATCH] [all] New helper for filling MixData::weight in templates --- src/bmp.cpp | 20 ++++++++++++++------ src/frsky.cpp | 3 ++- src/model_menus.cpp | 18 ++++-------------- src/myeeprom.h | 31 +++++++++++++++++-------------- src/templates.cpp | 2 +- 5 files changed, 38 insertions(+), 36 deletions(-) diff --git a/src/bmp.cpp b/src/bmp.cpp index d1bddf23a..35c6b8b29 100644 --- a/src/bmp.cpp +++ b/src/bmp.cpp @@ -212,7 +212,7 @@ const pm_char * bmpLoad(uint8_t *dest, const char *filename, const xcoord_t widt return 0; } -void lcd_bmp(xcoord_t x, uint8_t y, const pm_uchar * img) +void lcd_bmp(xcoord_t x, uint8_t y, const pm_uchar * img, uint8_t offset, uint8_t width) { const pm_uchar *q = img; #if LCD_W >= 260 @@ -221,14 +221,22 @@ void lcd_bmp(xcoord_t x, uint8_t y, const pm_uchar * img) #else uint8_t w = pgm_read_byte(q++); #endif + if (!width) width = w; uint8_t hb = (pgm_read_byte(q++)+7)/8; + q += 4*offset; for (uint8_t yb = 0; yb < hb; yb++) { uint8_t *p = &displayBuf[ (y / 8 + yb) * LCD_W + x ]; - for (xcoord_t i=0; i> (8-ym8)), b >> (8-ym8)); + } + } p++; } } diff --git a/src/frsky.cpp b/src/frsky.cpp index f791b82b0..db3b33f3b 100644 --- a/src/frsky.cpp +++ b/src/frsky.cpp @@ -941,7 +941,8 @@ void resetTelemetry() #ifdef SIMU frskyData.analog[0].set(120, UNIT_VOLTS); frskyData.analog[1].set(240, UNIT_VOLTS); - frskyData.rssi[0].set(75); + frskyData.rssi[0].value = 75; + frskyData.rssi[1].value = 75; frskyData.hub.fuelLevel = 75; frskyData.hub.rpm = 12000; diff --git a/src/model_menus.cpp b/src/model_menus.cpp index 385c2ad7e..5ecf46ed4 100644 --- a/src/model_menus.cpp +++ b/src/model_menus.cpp @@ -2157,15 +2157,10 @@ enum MixFields { void gvarWeightItem(xcoord_t x, uint8_t y, MixData *md, uint8_t attr, uint8_t event) { -// #if defined(CPUARM) || !defined(GVARS) -// md->weight = gvarMenuItem(x, y, md->weight, -125, 125, attr, event); -// #else - // @@@ open.20.fsguruh u_int8int16_t weight; - MD_GETWEIGHT(weight,md); + MD_WEIGHT_TO_UNION(md, weight); weight.word = gvarMenuItem(x, y, weight.word, GV_RANGELARGE_NEG, GV_RANGELARGE, attr, event); - MD_SETWEIGHT(weight,md); -//#endif + MD_UNION_TO_WEIGHT(weight, md); } void menuModelMixOne(uint8_t event) @@ -2240,15 +2235,10 @@ void menuModelMixOne(uint8_t event) case MIX_FIELD_OFFSET: { lcd_putsColumnLeft(COLUMN_X, y, NO_INDENT(STR_OFFSET)); -// #if defined(GVARS) - // @@@ open.20.fsguruh u_int8int16_t offset; - MD_GETOFFSET(offset,md2); + MD_OFFSET_TO_UNION(md2, offset); offset.word = gvarMenuItem(COLUMN_X+MIXES_2ND_COLUMN, y, offset.word, GV_RANGELARGE_NEG, GV_RANGELARGE, attr|LEFT, event); - MD_SETOFFSET(offset,md2); -// #else -// md2->offset = gvarMenuItem(COLUMN_X+MIXES_2ND_COLUMN, y, md2->offset, -125, 125, attr|LEFT, event); -// #endif + MD_UNION_TO_OFFSET(offset, md2); break; } case MIX_FIELD_TRIM: diff --git a/src/myeeprom.h b/src/myeeprom.h index 1659c96b3..6a8f13340 100644 --- a/src/myeeprom.h +++ b/src/myeeprom.h @@ -113,6 +113,7 @@ PACK(typedef struct t_FrSkyRSSIAlarm { #if defined(PCBX9D) || defined(PCBACT) enum MainViews { + VIEW_TIMERS, VIEW_INPUTS, VIEW_SWITCHES, VIEW_COUNT @@ -318,21 +319,22 @@ PACK(typedef struct t_MixData { }) MixData; #define MD_WEIGHT(md) (md->weight) -#define MD_GETWEIGHT(var,md) var.word=md->weight -#define MD_SETWEIGHT(var,md) md->weight=var.word +#define MD_WEIGHT_TO_UNION(md, var) var.word = md->weight +#define MD_UNION_TO_WEIGHT(var, md) md->weight = var.word +#define MD_SETWEIGHT(md, val) md->weight = val PACK( union u_int8int16_t { struct { int8_t lo; - uint8_t hi; + uint8_t hi; } bytes_t; int16_t word; }); - #define MD_OFFSET(md) (md->offset) -#define MD_GETOFFSET(var,md) var.word=md->offset; -#define MD_SETOFFSET(var,md) md->offset=var.word; +#define MD_OFFSET_TO_UNION(md, var) var.word = md->offset +#define MD_UNION_TO_OFFSET(var, md) md->offset = var.word +#define MD_SETOFFSET(md, val) md->offset = val #else #define DELAY_STEP 2 @@ -379,18 +381,19 @@ private: PACK( union u_int8int16_t { struct { int8_t lo; - uint8_t hi; + uint8_t hi; } bytes_t; int16_t word; }); -#define MD_GETWEIGHT(var,md) var.bytes_t.lo=md->weight; var.bytes_t.hi=md->weightMode?255:0 -#define MD_SETWEIGHT(var,md) md->weight = var.bytes_t.lo; \ - if (var.word<0) md->weightMode=1; else md->weightMode=0 // set negative sign - + +#define MD_WEIGHT_TO_UNION(md, var) var.bytes_t.lo=md->weight; var.bytes_t.hi=md->weightMode?255:0 +#define MD_UNION_TO_WEIGHT(var, md) md->weight=var.bytes_t.lo; md->weightMode=(var.word<0) /* set negative sign */ +#define MD_SETWEIGHT(md, val) md->weight=val; md->weightMode=(val<0) + #define MD_OFFSET(md) (u_gvarint_t(md->offset,md->offsetMode).word) -#define MD_GETOFFSET(var,md) var.bytes_t.lo=md->offset; var.bytes_t.hi=md->offsetMode?255:0 -#define MD_SETOFFSET(var,md) md->offset = var.bytes_t.lo; \ - if (var.word<0) md->offsetMode=1; else md->offsetMode=0 // set negative sign +#define MD_OFFSET_TO_UNION(var, md) var.bytes_t.lo=md->offset; var.bytes_t.hi=md->offsetMode?255:0 +#define MD_UNION_TO_OFFSET(md, var) md->offset=var.bytes_t.lo; md->offsetMode=(var.word<0) /* set negative sign */ +#define MD_SETOFFSET(md, val) md->offset=val; md->offsetMode=(val<0) #endif diff --git a/src/templates.cpp b/src/templates.cpp index 485216fba..b60b1adf0 100644 --- a/src/templates.cpp +++ b/src/templates.cpp @@ -150,7 +150,7 @@ void applyTemplate(uint8_t idx) // Sticky-T-Cut case TMPL_STI_THR_CUT: - md=setDest(ICC(STK_THR), MIXSRC_MAX); md->weight=-100; md->swtch=SWSRC_SWC; md->mltpx=MLTPX_REP; + md=setDest(ICC(STK_THR), MIXSRC_MAX); MD_SETWEIGHT(md, -100); md->swtch=SWSRC_SWC; md->mltpx=MLTPX_REP; md=setDest(13, MIXSRC_CH14); md->weight= 100; md=setDest(13, MIXSRC_MAX); md->weight=-100; md->swtch=SWSRC_SWB; md->mltpx=MLTPX_REP; md=setDest(13, MIXSRC_MAX); md->weight= 100; md->swtch=SWSRC_THR; md->mltpx=MLTPX_REP;