[all] New helper for filling MixData::weight in templates
This commit is contained in:
+14
-6
@@ -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<w; i++){
|
||||
*(p+0*DISPLAY_PLAN_SIZE) = pgm_read_byte(q++);
|
||||
*(p+1*DISPLAY_PLAN_SIZE) = pgm_read_byte(q++);
|
||||
*(p+2*DISPLAY_PLAN_SIZE) = pgm_read_byte(q++);
|
||||
*(p+3*DISPLAY_PLAN_SIZE) = pgm_read_byte(q++);
|
||||
for (xcoord_t i=0; i<width; i++) {
|
||||
for (uint8_t plan=0; plan<4; plan++) {
|
||||
uint8_t b = pgm_read_byte(q++);
|
||||
uint8_t ym8 = (y & 0x07);
|
||||
uint8_t *pp = p + plan*DISPLAY_PLAN_SIZE;
|
||||
LCD_BYTE_FILTER_PLAN(pp, ~(0xff << ym8), b << ym8);
|
||||
if (ym8) {
|
||||
uint8_t *r = pp + LCD_W;
|
||||
LCD_BYTE_FILTER_PLAN(r, ~(0xff >> (8-ym8)), b >> (8-ym8));
|
||||
}
|
||||
}
|
||||
p++;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -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;
|
||||
|
||||
|
||||
+4
-14
@@ -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:
|
||||
|
||||
+17
-14
@@ -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
|
||||
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user