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:
open.20.fsguruh@xoxy.net
2013-02-21 22:11:33 +00:00
parent 1e3c1d8ce2
commit 2a9160fcab
6 changed files with 100 additions and 74 deletions
+45 -2
View File
@@ -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