weight and offset range extension change (flash code cost 22bytes)
This change makes both weight and offset range bigger for all 32 possible mixers. Instead of -125 to 125 now -245 to 245 is allowed for weight and offset in mixer. No additional EEPROM is needed. Conversion of EEPROM follow soon...
This commit is contained in:
+45
-2
@@ -311,14 +311,57 @@ PACK(typedef struct t_MixData {
|
||||
int8_t offset;
|
||||
}) MixData;
|
||||
#if defined(GVARS)
|
||||
#define MD_WEIGHT(md) (md->weightMode ? (int16_t)GV1_LARGE+md->weight : md->weight)
|
||||
// @@@ open.20.fsguruh
|
||||
PACK( union u_gvarint_t {
|
||||
struct {
|
||||
int8_t lo;
|
||||
uint8_t hi;
|
||||
} bytes_t;
|
||||
int16_t word;
|
||||
|
||||
u_gvarint_t(int8_t l, uint8_t h) {bytes_t.lo=l; bytes_t.hi=h?255:0;} // hi bit is negativ sign
|
||||
|
||||
private:
|
||||
// prevent unwanted constructors, also saves program
|
||||
u_gvarint_t() {}
|
||||
u_gvarint_t(const u_gvarint_t&) {}
|
||||
});
|
||||
#define MD_WEIGHT(md) (u_gvarint_t(md->weight,md->weightMode).word)
|
||||
|
||||
PACK( union u_int8int16_t {
|
||||
struct {
|
||||
int8_t lo;
|
||||
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_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
|
||||
#else
|
||||
#define MD_WEIGHT(md) (md->weight)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(GVARS)
|
||||
#define MD_OFFSET(md) (md->offsetMode ? (int16_t)GV1_LARGE+md->offset : md->offset)
|
||||
// @@@ open.20.fsguruh
|
||||
#ifndef MD_OFFSET
|
||||
PACK( union u_int8int16_t {
|
||||
struct {
|
||||
int8_t lo;
|
||||
uint8_t hi;
|
||||
} bytes_t;
|
||||
int16_t word;
|
||||
});
|
||||
#define MD_OFFSET(md) (md->offsetMode ? (int16_t)GV1_LARGE+md->offset : md->offset)
|
||||
#define MD_GETOFFSET(var,md) var.word=md->offset
|
||||
#define MD_SETOFFSET(var,md) md->offset=var.word
|
||||
#endif
|
||||
#else
|
||||
#define MD_OFFSET(md) (md->offset)
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user