diff --git a/src/frsky.cpp b/src/frsky.cpp index fb753d897..a22a64bf5 100644 --- a/src/frsky.cpp +++ b/src/frsky.cpp @@ -741,8 +741,6 @@ void putsTelemetryValue(uint8_t x, uint8_t y, int16_t val, uint8_t unit, uint8_t } const pm_uint8_t bchunit_ar[] = { - UNIT_VOLTS, // A1 // TODO needed? - UNIT_VOLTS, // A2 // TODO needed? UNIT_METERS, // Alt UNIT_RAW, // Rpm UNIT_PERCENT, // Fuel @@ -750,7 +748,6 @@ const pm_uint8_t bchunit_ar[] = { UNIT_DEGREES, // T2 UNIT_KMH, // Speed UNIT_METERS, // Dist - UNIT_VOLTS, // Cell // TODO needed? }; void putsTelemetryChannel(uint8_t x, uint8_t y, uint8_t channel, int16_t val, uint8_t att) @@ -783,7 +780,7 @@ void putsTelemetryChannel(uint8_t x, uint8_t y, uint8_t channel, int16_t val, ui break; default: - putsTelemetryValue(x, y, val, pgm_read_byte(bchunit_ar+channel), att); + putsTelemetryValue(x, y, val, pgm_read_byte(bchunit_ar+channel-2), att); break; } } @@ -832,8 +829,8 @@ void displayGpsTime() uint8_t getTelemCustomField(uint8_t line, uint8_t col) { - uint8_t result = (col==0 ? (g_model.frskyLines[line] & 0x0f) : ((g_model.frskyLines[line] & 0xf0) >> 4)) << 1; - result += ((g_model.frskyLinesXtra >> (2*line+col)) & 0x01); + uint8_t result = (col==0 ? (g_model.frskyLines[line] & 0x0f) : ((g_model.frskyLines[line] & 0xf0) / 16)); + result += (((g_model.frskyLinesXtra >> (4*line+2*col)) & 0x03) * 16); return result; } diff --git a/src/model_menus.cpp b/src/model_menus.cpp index cbb39b2b9..a99194f74 100644 --- a/src/model_menus.cpp +++ b/src/model_menus.cpp @@ -2007,13 +2007,11 @@ void menuProcTelemetry(uint8_t event) if (sub==subN && m_posHorz==k && (s_editMode>0 || p1valdiff)) { CHECK_INCDEC_MODELVAR(event, value, 0, (j==3 && k==0) ? TELEM_STATUS_MAX : TELEM_DISPLAY_MAX); if (checkIncDec_Ret) { - uint8_t mask = 1 << (2*j+k); - if (value & 1) - g_model.frskyLinesXtra |= mask; - else - g_model.frskyLinesXtra &= ~mask; - value >>= 1; - g_model.frskyLines[j] = (k==0 ? ((g_model.frskyLines[j] & 0xf0) + value) : (g_model.frskyLines[j] & 0x0f) + (value << 4)); + g_model.frskyLines[j] = (k==0 ? ((g_model.frskyLines[j] & 0xf0) + (value & 0x0f)) : (g_model.frskyLines[j] & 0x0f) + ((value & 0x0f) << 4)); + uint16_t mask = 0x3 << (4*j+2*k); + g_model.frskyLinesXtra &= ~mask; + mask = (value / 16) << (4*j+2*k); + g_model.frskyLinesXtra |= mask; } } } diff --git a/src/myeeprom.h b/src/myeeprom.h index cc0f52371..a0fd68fad 100644 --- a/src/myeeprom.h +++ b/src/myeeprom.h @@ -300,7 +300,6 @@ enum TelemetrySource { TELEM_TM2, TELEM_ACC, TELEM_GPS_TIME, - TELEM_BAR_MAX = TELEM_CELL, TELEM_CSW_MAX = TELEM_CELL, TELEM_DISPLAY_MAX = TELEM_TM2, @@ -417,7 +416,7 @@ PACK(typedef struct t_ModelData { uint8_t thrTraceSrc; uint8_t modelId; uint8_t frskyLines[4]; - uint8_t frskyLinesXtra; + uint16_t frskyLinesXtra; }) ModelData; extern EEGeneral g_eeGeneral;