New "Test" function switch (make DEBUG=YES)

New "Reset" function switch
TimeZone for GPS
BLINK attribute may be used without INVERS
Wrong first frame sent when DSM2=SERIAL (by Cam)
Text in status line blinking when NO DATA on FrSky telemetry screen
This commit is contained in:
bsongis
2012-03-08 18:44:48 +00:00
parent ac83640093
commit 26cdf24ca0
15 changed files with 173 additions and 77 deletions
+9 -2
View File
@@ -107,6 +107,9 @@ SOMO = NO
# Values = en,
TRANSLATIONS = EN
# DEBUG mode
DEBUG = NO
#------- END BUILD OPTIONS ---------------------------
# Define programs and commands.
@@ -192,7 +195,7 @@ OPT = s
# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
# AVR Studio 4.10 requires dwarf-2.
# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
DEBUG = dwarf-2
DBGFMT = dwarf-2
# List any extra directories to look for include files here.
@@ -278,6 +281,10 @@ ifeq ($(EXT), FRSKY)
endif
endif
ifeq ($(DEBUG), YES)
CPPDEFS += -DDEBUG
endif
ifeq ($(PCB), V4)
# V4 PCB, so ...
CPPDEFS += -DPCBV4 -DAUDIO
@@ -352,7 +359,7 @@ endif
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
# -adhlns...: create assembler listing
CPPFLAGS = -g$(DEBUG)
CPPFLAGS = -g$(DBGFMT)
CPPFLAGS += $(CPPDEFS)
CPPFLAGS += -O$(OPT)
#CPPFLAGS += -mint8
+33 -27
View File
@@ -251,6 +251,10 @@ void parseTelemHubByte(uint8_t byte)
}
}
if ((uint8_t)structPos == offsetof(FrskyHubData, hour)) {
frskyHubData.hour = (frskyHubData.hour + g_eeGeneral.timezone + 24) % 24;
}
state = TS_IDLE;
}
#endif
@@ -664,7 +668,7 @@ void displayRssiLine()
lcd_filled_rect(66+36-v, 58, v, 5);
}
else {
lcd_puts(7*FW, 7*FH+1, STR_NODATA);
lcd_putsAtt(7*FW, 7*FH+1, STR_NODATA, BLINK);
lcd_filled_rect(0, DISPLAY_H-8, DISPLAY_W, 8);
}
}
@@ -765,6 +769,10 @@ void menuProcFrsky(uint8_t event)
bars_height += 2;
}
}
if (bars_height == 13) {
// No bars at all!
s_frsky_view = ((event == EVT_KEY_BREAK(KEY_UP)) ? FRSKY_VIEW_MAX : e_frsky_a1a2);
}
displayRssiLine();
}
else if (s_frsky_view == e_frsky_a1a2) {
@@ -834,35 +842,33 @@ void menuProcFrsky(uint8_t event)
// Accelerometer
#define ACC_LINE (7*FH+1)
lcd_putsLeft(ACC_LINE, STR_ACCEL);
// lcd_puts(4*FW, 7*FH, PSTR("x:"));
lcd_outdezNAtt(4*FW, ACC_LINE, (int32_t)frskyHubData.accelX/10, LEFT|PREC2);
// lcd_putc(lcd_lastPos, 7*FH, 'g');
// lcd_puts(11*FW, 7*FH, PSTR("y:"));
lcd_outdezNAtt(10*FW, ACC_LINE, (int32_t)frskyHubData.accelY/10, LEFT|PREC2);
// lcd_putc(lcd_lastPos, 7*FH, 'g');
// lcd_puts(18*FW, 7*FH, PSTR("z:"));
lcd_outdezNAtt(16*FW, ACC_LINE, (int32_t)frskyHubData.accelZ/10, LEFT|PREC2);
// lcd_putc(lcd_lastPos, 7*FH, 'g');
lcd_filled_rect(0, ACC_LINE-1, DISPLAY_W, 8);
if (frskyStreaming > 0) {
lcd_putsLeft(ACC_LINE, STR_ACCEL);
// lcd_puts(4*FW, 7*FH, PSTR("x:"));
lcd_outdezNAtt(4*FW, ACC_LINE, (int32_t)frskyHubData.accelX/10, LEFT|PREC2);
// lcd_putc(lcd_lastPos, 7*FH, 'g');
// lcd_puts(11*FW, 7*FH, PSTR("y:"));
lcd_outdezNAtt(10*FW, ACC_LINE, (int32_t)frskyHubData.accelY/10, LEFT|PREC2);
// lcd_putc(lcd_lastPos, 7*FH, 'g');
// lcd_puts(18*FW, 7*FH, PSTR("z:"));
lcd_outdezNAtt(16*FW, ACC_LINE, (int32_t)frskyHubData.accelZ/10, LEFT|PREC2);
// lcd_putc(lcd_lastPos, 7*FH, 'g');
lcd_filled_rect(0, ACC_LINE-1, DISPLAY_W, 8); // TODO optim function?
}
else {
displayRssiLine();
}
}
else if (s_frsky_view == e_frsky_gps) {
#define DATE_LINE (7*FH+1)
//lcd_putsLeft( DATE_LINE, PSTR("D/T:"));
// Date
lcd_outdezNAtt(3*FW, DATE_LINE, frskyHubData.year+2000, LEFT, 4);
lcd_putc(7*FW-4, DATE_LINE, '-');
lcd_outdezNAtt(8*FW-4, DATE_LINE, frskyHubData.month, LEFT|LEADING0, 2);
lcd_putc(10*FW-6, DATE_LINE, '-');
lcd_outdezNAtt(11*FW-6, DATE_LINE, frskyHubData.day, LEFT|LEADING0, 2);
uint8_t att = (frskyStreaming > 0 ? LEFT|LEADING0 : LEFT|LEADING0|BLINK);
// Time
lcd_outdezNAtt(12*FW+5, DATE_LINE, frskyHubData.hour, LEFT|LEADING0, 2);
lcd_putc(14*FW+2, DATE_LINE, ':');
lcd_outdezNAtt(15*FW+2, DATE_LINE, frskyHubData.min, LEFT|LEADING0, 2);
lcd_putc(17*FW-1, DATE_LINE, ':');
lcd_outdezNAtt(18*FW-1, DATE_LINE, frskyHubData.sec, LEFT|LEADING0, 2);
lcd_filled_rect(0, DATE_LINE-1, DISPLAY_W, 8);
#define TIME_LINE (7*FH+1)
lcd_outdezNAtt(6*FW+5, TIME_LINE, frskyHubData.hour, att, 2);
lcd_putcAtt(8*FW+2, TIME_LINE, ':', att);
lcd_outdezNAtt(9*FW+2, TIME_LINE, frskyHubData.min, att, 2);
lcd_putcAtt(11*FW-1, TIME_LINE, ':', att);
lcd_outdezNAtt(12*FW-1, TIME_LINE, frskyHubData.sec, att, 2);
lcd_filled_rect(0, TIME_LINE-1, DISPLAY_W, 8);
// Latitude
#define LAT_LINE (2*FH-4)
+13 -4
View File
@@ -85,6 +85,7 @@ enum menuProcSetupItems {
#endif
#ifdef FRSKY
ITEM_SETUP_NODATA_ALARM,
ITEM_SETUP_TIMEZONE,
#endif
ITEM_SETUP_MAX
};
@@ -110,7 +111,7 @@ void menuProcSetup(uint8_t event)
#define SPLASH_ZEROS
#endif
#ifdef FRSKY
#define FRSKY_ZEROS 0,
#define FRSKY_ZEROS 0, 0,
#else
#define FRSKY_ZEROS
#endif
@@ -318,6 +319,14 @@ void menuProcSetup(uint8_t event)
}
if((y+=FH)>7*FH) return;
}subN++;
if(s_pgOfs<subN) {
lcd_putsLeft(y, STR_TIMEZONE);
lcd_outdezAtt(PARAM_OFS, y, g_eeGeneral.timezone, LEFT|(sub==subN ? INVERS : 0));
if (sub==subN)
CHECK_INCDEC_GENVAR(event, g_eeGeneral.timezone, -12, 12);
if((y+=FH)>7*FH) return;
}subN++;
#endif
if(s_pgOfs<subN) {
@@ -334,7 +343,7 @@ void menuProcSetup(uint8_t event)
for(uint8_t i=0; i<4; i++) lcd_img((6+4*i)*FW, y, sticks,i,0);
if((y+=FH)>7*FH) return;
lcd_putcAtt( 3*FW, y, '1'+g_eeGeneral.stickMode,(sub==subN+1) ? (s_editMode>0 ? BLINK : INVERS) : 0);
lcd_putcAtt( 3*FW, y, '1'+g_eeGeneral.stickMode,(sub==subN+1) ? (s_editMode>0 ? BLINK|INVERS : INVERS) : 0);
for(uint8_t i=0; i<4; i++) putsChnRaw( (6+4*i)*FW, y, pgm_read_byte(modn12x3 + 4*g_eeGeneral.stickMode + i), 0);
if (sub==subN+1 && s_editMode>0)
@@ -396,7 +405,7 @@ void menuProcTime(uint8_t event)
for(uint8_t j=0; j<3;j++) // 3 settings each for date and time (YMD and HMS)
{
uint8_t attr = (sub==i && subSub==j) ? (s_editMode>0 ? BLINK : INVERS) : 0;
uint8_t attr = (sub==i && subSub==j) ? (s_editMode>0 ? BLINK|INVERS : INVERS) : 0;
switch(i)
{
case 0: // DATE
@@ -456,7 +465,7 @@ void menuProcTrainer(uint8_t event)
lcd_puts(3*FW, 1*FH, STR_MODESRC);
y = 2*FH;
blink = (s_editMode>0) ? BLINK : INVERS ;
blink = (s_editMode>0) ? BLINK|INVERS : INVERS ;
for (uint8_t i=1; i<=NUM_STICKS; i++) {
uint8_t chan = channel_order(i);
+19 -4
View File
@@ -72,7 +72,20 @@ void lcd_putcAtt(uint8_t x, uint8_t y, const unsigned char c, uint8_t mode)
uint8_t *p = &displayBuf[ y / 8 * DISPLAY_W + x ];
const pm_uchar *q = &font_5x8_x20_x7f[ + (c-0x20)*5];
bool inv = (mode & INVERS) ? true : (mode & BLINK ? BLINK_ON_PHASE : false);
bool inv = false;
if (mode & BLINK) {
if (BLINK_ON_PHASE) {
if (mode & INVERS)
inv = true;
else
return;
}
}
else if (mode & INVERS) {
inv = true;
}
if(mode & DBLSIZE)
{
/* each letter consists of ten top bytes followed by
@@ -286,9 +299,11 @@ void lcd_outdezNAtt(uint8_t x, uint8_t y, int16_t val, uint8_t flags, uint8_t le
}
else {
x -= 2;
lcd_plot(x+1, y+6);
if (flags & INVERS || (flags & BLINK && BLINK_ON_PHASE))
lcd_vline(x+1, y, 8);
if ((~flags & BLINK) || (!BLINK_ON_PHASE)) {
lcd_plot(x+1, y+6);
if (flags & INVERS)
lcd_vline(x+1, y, 8);
}
}
}
val = ((uint16_t)val) / 10;
+3 -3
View File
@@ -180,13 +180,13 @@ void menuMainView(uint8_t event)
uint8_t phase = getFlightPhase();
lcd_putsnAtt(6*FW+2, 2*FH, g_model.phaseData[phase].name, sizeof(g_model.phaseData[phase].name), ZCHAR);
uint8_t att = (g_vbat100mV < g_eeGeneral.vBatWarn ? BLINK : 0) | DBLSIZE;
uint8_t att = (g_vbat100mV < g_eeGeneral.vBatWarn ? BLINK|INVERS : 0) | DBLSIZE;
putsModelName(2*FW-2, 0*FH, g_model.name, g_eeGeneral.currModel, DBLSIZE);
putsVBat(6*FW-1, 2*FH, att|NO_UNIT);
lcd_putc(6*FW, 3*FH, 'V');
if (g_model.timers[0].mode) {
uint8_t att = DBLSIZE | (s_timerState[0]==TMR_BEEPING ? BLINK : 0);
uint8_t att = DBLSIZE | (s_timerState[0]==TMR_BEEPING ? BLINK|INVERS : 0);
putsTime(12*FW+3, FH*2, s_timerVal[0], att, att);
putsTmrMode(s_timerVal[0] >= 0 ? 9*FW-FW/2+5 : 9*FW-FW/2-2, FH*3, g_model.timers[0].mode, SWCONDENSED);
}
@@ -205,7 +205,7 @@ void menuMainView(uint8_t event)
int16_t val = getTrimValue(getTrimFlightPhase(i, phase), i);
if (val < -125 || val > 125)
att = BLINK|ROUND;
att = BLINK|INVERS|ROUND;
if (val < -(TL+1)*4)
val = -(TL+1);
+20 -16
View File
@@ -434,10 +434,10 @@ void menuProcModel(uint8_t event)
TimerData *timer = &g_model.timers[i];
if (s_pgOfs<subN) {
putsStrIdx(0*FW, y, STR_TIMER, i+1);
putsTmrMode(PARAM_OFS, y, timer->mode, sub==subN && m_posHorz==0 ? ((s_editMode>0) ? BLINK : INVERS) : 0);
putsTmrMode(PARAM_OFS, y, timer->mode, sub==subN && m_posHorz==0 ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0);
putsTime(14*FW, y, timer->val,
(sub==subN && m_posHorz==1 ? ((s_editMode>0) ? BLINK : INVERS):0),
(sub==subN && m_posHorz==2 ? ((s_editMode>0) ? BLINK : INVERS):0) );
(sub==subN && m_posHorz==1 ? ((s_editMode>0) ? BLINK|INVERS : INVERS):0),
(sub==subN && m_posHorz==2 ? ((s_editMode>0) ? BLINK|INVERS : INVERS):0) );
if (sub==subN && (s_editMode>0 || p1valdiff)) {
uint16_t timer_val = timer->val;
switch (m_posHorz) {
@@ -507,7 +507,7 @@ void menuProcModel(uint8_t event)
if(s_pgOfs<subN) {
lcd_putsLeft( y, STR_BEEPCTR);
for (uint8_t i=0;i<NUM_STICKS+NUM_POTS;i++)
lcd_putsiAtt(PARAM_OFS+i*FW, y, STR_RETA123, i, ((m_posHorz==i) && (sub==subN)) ? BLINK : ((g_model.beepANACenter & (1<<i)) ? INVERS : 0 ) );
lcd_putsiAtt(PARAM_OFS+i*FW, y, STR_RETA123, i, ((m_posHorz==i) && (sub==subN)) ? BLINK|INVERS : ((g_model.beepANACenter & (1<<i)) ? INVERS : 0 ) );
if (sub==subN){
if((event==EVT_KEY_FIRST(KEY_MENU)) || p1valdiff) {
killEvents(event);
@@ -522,11 +522,11 @@ void menuProcModel(uint8_t event)
if(s_pgOfs<subN) {
lcd_putsLeft( y, STR_PROTO);
lcd_putsiAtt(PARAM_OFS, y, STR_VPROTOS, g_model.protocol,
(sub==subN && m_posHorz==0 ? (s_editMode>0 ? BLINK : INVERS):0));
(sub==subN && m_posHorz==0 ? (s_editMode>0 ? BLINK|INVERS : INVERS):0));
if (g_model.protocol == PROTO_PPM) {
lcd_putsiAtt(PARAM_OFS+4*FW, y, STR_NCHANNELS, g_model.ppmNCH+2, (sub==subN && m_posHorz==1) ? ((s_editMode>0) ? BLINK : INVERS) : 0);
lcd_putsiAtt(PARAM_OFS+4*FW, y, STR_NCHANNELS, g_model.ppmNCH+2, (sub==subN && m_posHorz==1) ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0);
lcd_puts(PARAM_OFS+11*FW, y, PSTR("u"));
lcd_outdezAtt(PARAM_OFS+11*FW, y, (g_model.ppmDelay*50)+300, ((sub==subN && m_posHorz==2) ? ((s_editMode>0) ? BLINK : INVERS) : 0));
lcd_outdezAtt(PARAM_OFS+11*FW, y, (g_model.ppmDelay*50)+300, ((sub==subN && m_posHorz==2) ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0));
}
#ifdef DSM2
// TODO optimize that?
@@ -537,7 +537,7 @@ void menuProcModel(uint8_t event)
if ( x < 0 ) x = 0;
if ( x > 2 ) x = 2;
g_model.ppmNCH = x;
lcd_putsiAtt(PARAM_OFS+5*FW, y, STR_DSM2MODE, x, (sub==subN && m_posHorz==1) ? ((s_editMode>0) ? BLINK : INVERS) : 0);
lcd_putsiAtt(PARAM_OFS+5*FW, y, STR_DSM2MODE, x, (sub==subN && m_posHorz==1) ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0);
}
#endif
else if (sub==subN) {
@@ -568,7 +568,7 @@ void menuProcModel(uint8_t event)
if (g_model.protocol == PROTO_PPM) {
lcd_putsLeft( y, STR_PPMFRAME);
lcd_puts(PARAM_OFS+3*FW, y, STR_MS);
lcd_outdezAtt(PARAM_OFS, y, (int16_t)g_model.ppmFrameLength*5 + 225, ((sub==subN && m_posHorz==0) ? (s_editMode>0 ? BLINK : INVERS) : 0) | PREC1|LEFT);
lcd_outdezAtt(PARAM_OFS, y, (int16_t)g_model.ppmFrameLength*5 + 225, ((sub==subN && m_posHorz==0) ? (s_editMode>0 ? BLINK|INVERS : INVERS) : 0) | PREC1|LEFT);
lcd_putsiAtt(PARAM_OFS+6*FW, y, STR_POSNEG, g_model.pulsePol, (sub==subN && m_posHorz==1) ? INVERS : 0);
if(sub==subN && (s_editMode>0 || p1valdiff)) {
switch (m_posHorz) {
@@ -585,7 +585,7 @@ void menuProcModel(uint8_t event)
#if defined(DSM2) || defined(PXX)
else if (g_model.protocol == PROTO_DSM2 || g_model.protocol == PROTO_PXX) {
lcd_putsLeft( y, STR_RXNUM);
lcd_outdezNAtt(PARAM_OFS-3*FW, y, g_model.modelId, ((sub==subN && m_posHorz==0) ? (s_editMode>0 ? BLINK : INVERS) : 0) | LEADING0|LEFT, 2);
lcd_outdezNAtt(PARAM_OFS-(g_model.protocol==PROTO_DSM2 ? 0 : 3*FW), y, g_model.modelId, ((sub==subN && m_posHorz==0) ? (s_editMode>0 ? BLINK|INVERS : INVERS) : 0) | LEADING0|LEFT, 2);
if (sub==subN && (s_editMode>0 || p1valdiff)) {
switch (m_posHorz) {
@@ -643,11 +643,11 @@ void menuProcPhaseOne(uint8_t event)
if (v > TRIM_EXTENDED_MAX) {
uint8_t p = v - TRIM_EXTENDED_MAX - 1;
if (p >= s_currIdx) p++;
lcd_putcAtt((10+t)*FW, y, '0'+p, (attr && m_posHorz==t) ? ((s_editMode>0) ? BLINK : INVERS) : 0);
lcd_putcAtt((10+t)*FW, y, '0'+p, (attr && m_posHorz==t) ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0);
}
else {
v = TRIM_EXTENDED_MAX;
putsChnLetter((10+t)*FW, y, t+1, (attr && m_posHorz==t) ? ((s_editMode>0) ? BLINK : INVERS) : 0);
putsChnLetter((10+t)*FW, y, t+1, (attr && m_posHorz==t) ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0);
}
if (attr && m_posHorz==t && ((s_editMode>0) || p1valdiff)) {
v = checkIncDec(event, v, TRIM_EXTENDED_MAX, TRIM_EXTENDED_MAX+MAX_PHASES-1, EE_MODEL);
@@ -1571,7 +1571,7 @@ void menuProcLimits(uint8_t event)
int8_t limit = (g_model.extendedLimits ? 125 : 100);
for (uint8_t j=0; j<4; j++) {
uint8_t attr = ((sub==k && m_posHorz==j) ? ((s_editMode>0) ? BLINK : INVERS) : 0);
uint8_t attr = ((sub==k && m_posHorz==j) ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0);
uint8_t active = (attr && (s_editMode>0 || p1valdiff)) ;
switch(j)
{
@@ -1669,7 +1669,7 @@ void menuProcCustomSwitches(uint8_t event)
y=(i+1)*FH;
k=i+s_pgOfs;
if(k==NUM_CSW) break;
uint8_t attr = (sub==k ? ((s_editMode>0) ? BLINK : INVERS) : 0);
uint8_t attr = (sub==k ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0);
CustomSwData &cs = g_model.customSw[k];
//write SW names here
@@ -1760,7 +1760,7 @@ void menuProcFunctionSwitches(uint8_t event)
if(k==NUM_CHNOUT) break;
FuncSwData *sd = &g_model.funcSw[k];
for (uint8_t j=0; j<3; j++) {
uint8_t attr = ((sub==k && m_posHorz==j) ? ((s_editMode>0) ? BLINK : INVERS) : 0);
uint8_t attr = ((sub==k && m_posHorz==j) ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0);
uint8_t active = (attr && (s_editMode>0 || p1valdiff));
switch (j) {
case 0:
@@ -1810,6 +1810,10 @@ void menuProcFunctionSwitches(uint8_t event)
lcd_outdezAtt(21*FW, y, val_displayed, attr);
}
#endif
else if (sd->func == FUNC_RESET) {
val_max = 3;
lcd_putsiAtt(15*FW, y, STR_VFSWRESET, sd->param, attr);
}
else if (sd->func <= FUNC_SAFETY_CH16) {
val_displayed = (int16_t)(int8_t)sd->param;
val_min = -125;
@@ -1856,7 +1860,7 @@ void menuProcTelemetry(uint8_t event)
FRSKY_setModelAlarms(); // update Fr-Sky module when edit mode exited
}
blink = (s_editMode>0) ? BLINK : INVERS ;
blink = (s_editMode>0) ? BLINK|INVERS : INVERS ;
uint8_t subN = 1;
uint8_t t;
+5 -3
View File
@@ -98,7 +98,9 @@ PACK(typedef struct t_EEGeneral {
uint8_t spare1:1;
uint8_t disableMemoryWarning:1;
uint8_t disableAlarmWarning:1;
uint8_t stickMode;
uint8_t stickMode:2;
int8_t timezone:5;
uint8_t spare:1;
uint8_t inactivityTimer;
uint8_t throttleReversed:1;
uint8_t minuteBeep:1;
@@ -218,12 +220,12 @@ enum Functions {
#ifdef SOMO
FUNC_PLAY_SOMO,
#endif
// FUNC_RESET,
FUNC_RESET,
#ifdef LOGS
FUNC_LOGS,
#endif
#ifdef DEBUG
// FUNC_TEST,
FUNC_TEST,
#endif
FUNC_MAX
};
+4
View File
@@ -58,6 +58,7 @@ const pm_char STR_OPEN9X[] PROGMEM =
ISTR(VMIXTRIMS)
ISTR(VCSWFUNC)
ISTR(VFSWFUNC)
ISTR(VFSWRESET)
ISTR(FUNCSOUNDS)
#ifdef FRSKY
ISTR(VTELEMBARS)
@@ -173,7 +174,10 @@ const pm_char STR_THROTTLEWARNING[] PROGMEM = TR_THROTTLEWARNING;
const pm_char STR_SWITCHWARNING[] PROGMEM = TR_SWITCHWARNING;
const pm_char STR_MEMORYWARNING[] PROGMEM = TR_MEMORYWARNING;
const pm_char STR_ALARMWARNING[] PROGMEM = TR_ALARMWARNING;
#ifdef FRSKY
const pm_char STR_NODATAALARM[] PROGMEM = TR_NODATAALARM;
const pm_char STR_TIMEZONE[] PROGMEM = TR_TIMEZONE;
#endif
const pm_char STR_RXCHANNELORD[] PROGMEM = TR_RXCHANNELORD;
const pm_char STR_SLAVE[] PROGMEM = TR_SLAVE;
const pm_char STR_MODESRC[] PROGMEM = TR_MODESRC;
+4 -1
View File
@@ -75,7 +75,8 @@ extern const pm_char STR_OPEN9X[];
#define OFS_VMIXTRIMS (OFS_VMLTPX2 + sizeof(TR_VMLTPX2))
#define OFS_VCSWFUNC (OFS_VMIXTRIMS + sizeof(TR_VMIXTRIMS))
#define OFS_VFSWFUNC (OFS_VCSWFUNC + sizeof(TR_VCSWFUNC))
#define OFS_FUNCSOUNDS (OFS_VFSWFUNC + sizeof(TR_VFSWFUNC))
#define OFS_VFSWRESET (OFS_VFSWFUNC + sizeof(TR_VFSWFUNC))
#define OFS_FUNCSOUNDS (OFS_VFSWRESET + sizeof(TR_VFSWRESET))
#ifdef FRSKY
#define OFS_VTELEMBARS (OFS_FUNCSOUNDS + sizeof(TR_FUNCSOUNDS))
#define OFS_VTELEMUNIT (OFS_VTELEMBARS + sizeof(TR_VTELEMBARS))
@@ -137,6 +138,7 @@ extern const pm_char STR_OPEN9X[];
#define STR_VMIXTRIMS (STR_OPEN9X + OFS_VMIXTRIMS)
#define STR_VCSWFUNC (STR_OPEN9X + OFS_VCSWFUNC)
#define STR_VFSWFUNC (STR_OPEN9X + OFS_VFSWFUNC)
#define STR_VFSWRESET (STR_OPEN9X + OFS_VFSWRESET)
#define STR_FUNCSOUNDS (STR_OPEN9X + OFS_FUNCSOUNDS)
#ifdef FRSKY
@@ -255,6 +257,7 @@ extern const pm_char STR_SWITCHWARNING[];
extern const pm_char STR_MEMORYWARNING[];
extern const pm_char STR_ALARMWARNING[];
extern const pm_char STR_NODATAALARM[];
extern const pm_char STR_TIMEZONE[];
extern const pm_char STR_RXCHANNELORD[];
extern const pm_char STR_SLAVE[];
extern const pm_char STR_MODESRC[];
+32 -10
View File
@@ -1083,6 +1083,16 @@ uint8_t evalSticks(uint8_t phase)
return anaCenter;
}
#ifdef DEBUG
/*
* This is a test function for debugging purpose, you may insert there your code and compile with the option DEBUG=YES
*/
void testFunc()
{
printf("testFunc\n"); fflush(stdout);
}
#endif
uint16_t active_functions = 0; // current max = 16 functions
void evalFunctions()
@@ -1111,6 +1121,27 @@ void evalFunctions()
if (sd->func == FUNC_PLAY_SOMO && (~active_functions & mask)) {
somoPushPrompt(sd->param);
}
#endif
if (sd->func == FUNC_RESET && (~active_functions & mask)) {
switch(sd->param) {
case 0:
case 1:
resetTimer(sd->param);
break;
case 2:
resetAll();
break;
#ifdef FRSKY
case 3:
resetTelemetry();
break;
#endif
}
}
#if defined(DEBUG)
if (sd->func == FUNC_TEST && (~active_functions & mask)) {
testFunc();
}
#endif
active_functions |= mask;
}
@@ -1757,10 +1788,6 @@ uint16_t getTmr16KHz()
}
}
#ifdef DEBUG
extern uint16_t g_time_per10; // instantiated in menus.cpp
#endif
#if defined (PCBV4)
ISR(TIMER2_COMPA_vect, ISR_NOBLOCK) //10ms timer
#else
@@ -1912,11 +1939,6 @@ extern uint16_t g_timeMain;
#endif
*/
#ifdef DEBUG
uint16_t DEBUG1 = 0;
uint16_t DEBUG2 = 0;
#endif
#endif
/*
@@ -1938,7 +1960,7 @@ FORCEINLINE void FRSKY_USART0_vect()
#if defined (DSM2_SERIAL)
FORCEINLINE void DSM2_USART0_vect()
{
{
UDR0 = *((uint16_t*)pulses2MHzRPtr);
pulses2MHzRPtr += sizeof(uint16_t);
-3
View File
@@ -140,9 +140,6 @@ extern RlcFile theFile; //used for any file operation
#define OUT_C_LCD_RES 2
#define OUT_C_LCD_CS1 1
extern uint16_t DEBUG1;
extern uint16_t DEBUG2;
#if defined (PCBV4)
# define INP_P_SPARE6 7
+1 -1
View File
@@ -48,7 +48,7 @@ uint8_t s_current_protocol = 255;
inline void DSM2_EnableTXD(void)
{
UCSR0B |= (1 << TXEN0); // enable TX
UCSR0B |= (1 << UDRIE0); // enable UDRE0 interrupt
// UCSR0B |= (1 << UDRIE0); // don't enable UDRE0 interrupt, it will be enabled during next setupPulses
}
#endif
+10 -1
View File
@@ -78,7 +78,15 @@
#else
#define TR_SOUND "Beep\0 "
#endif
#define TR_VFSWFUNC "Security \0 ""Trainer \0 ""Instant Trim " TR_SOUND TR_SOMO TR_SDCLOGGS
#ifdef DEBUG
#define TR_TEST "Test\0 "
#else
#define TR_TEST
#endif
#define TR_VFSWFUNC "Security \0 ""Trainer \0 ""Instant Trim " TR_SOUND TR_SOMO "Reset " TR_SDCLOGGS TR_TEST
#define LEN_VFSWRESET "\006"
#define TR_VFSWRESET "Timer1""Timer2""All ""Telem."
#define LEN_FUNCSOUNDS "\006"
#define TR_FUNCSOUNDS "Warn1 ""Warn2 ""Cheep ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""Siren ""AlmClk""Ratata""Tick ""Haptc1""Haptc2""Haptc3"
@@ -231,6 +239,7 @@
#define TR_MEMORYWARNING "Memory Warning"
#define TR_ALARMWARNING "Alarm Warning"
#define TR_NODATAALARM "NO DATA Alarm"
#define TR_TIMEZONE "Time Zone"
#define TR_RXCHANNELORD "Rx Channel Ord"
#define TR_SLAVE "Slave"
#define TR_MODESRC "mode\003% src"
+10 -1
View File
@@ -78,7 +78,15 @@
#else
#define TR_SOUND "Beep\0 "
#endif
#define TR_VFSWFUNC "Securite \0 ""Ecolage \0 ""Trim instant " TR_SOUND TR_SOMO TR_SDCLOGGS
#ifdef DEBUG
#define TR_TEST "Test\0 "
#else
#define TR_TEST
#endif
#define TR_VFSWFUNC "Securite \0 ""Ecolage \0 ""Trim instant " TR_SOUND TR_SOMO "Reset " TR_SDCLOGGS TR_TEST
#define LEN_VFSWRESET "\006"
#define TR_VFSWRESET "Timer1""Timer2""All ""Telem."
#define LEN_FUNCSOUNDS "\006"
#define TR_FUNCSOUNDS "Warn1 ""Warn2 ""Cheep ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""Siren ""AlmClk""Ratata""Tick ""Haptc1""Haptc2""Haptc3"
@@ -230,6 +238,7 @@
#define TR_MEMORYWARNING "Alerte Memoire"
#define TR_ALARMWARNING "Alerte Alarme"
#define TR_NODATAALARM "Alerte Telem."
#define TR_TIMEZONE "Fuseau Horaire"
#define TR_RXCHANNELORD "Ordre Voies Rx"
#define TR_MODE "Mode"
#define TR_SLAVE "Esclave"
+10 -1
View File
@@ -78,7 +78,15 @@
#else
#define TR_SOUND "Pip \0 "
#endif
#define TR_VFSWFUNC "S\201kerhet \0 ""Trainer \0 ""Instant Trim " TR_SOUND TR_SOMO TR_SDCLOGGS
#ifdef DEBUG
#define TR_TEST "Test\0 "
#else
#define TR_TEST
#endif
#define TR_VFSWFUNC "S\201kerhet \0 ""Trainer \0 ""Instant Trim " TR_SOUND TR_SOMO "Reset " TR_SDCLOGGS TR_TEST
#define LEN_VFSWRESET "\006"
#define TR_VFSWRESET "Timer1""Timer2""All ""Telem."
#define LEN_FUNCSOUNDS "\006"
#define TR_FUNCSOUNDS "Varn1 ""Varn2 ""F\200r ""Ring ""SciFi ""Robot ""Pip ""Tada ""Syrsa ""Siren ""Alarm ""Ratata""Tick ""Vibr1 ""Vibr2 ""Vibr3 "
@@ -231,6 +239,7 @@
#define TR_MEMORYWARNING "Minnesvarning"
#define TR_ALARMWARNING "Alarmvarning"
#define TR_NODATAALARM "NO DATA Varning"
#define TR_TIMEZONE "Time Zone"
#define TR_RXCHANNELORD "Kanalordning RX"
#define TR_SLAVE "Slav"
#define TR_MODESRC "effekt % k\201lla"