[stock / gruvin9x] Issue 164 fixed

[X9D] Calibration menu
[all] 5-pass mixer
[stock] Flash saving
This commit is contained in:
bsongis
2012-12-05 20:48:49 +00:00
parent 209c685f11
commit b80a6dccaa
16 changed files with 122 additions and 148 deletions
+10 -8
View File
@@ -957,11 +957,10 @@ void menuGeneralCalib(uint8_t event)
static uint8_t idxState;
for (uint8_t i=0; i<7; i++) { //get low and high vals for sticks and trims
for (uint8_t i=0; i<NUM_STICKS+NUM_POTS; i++) { //get low and high vals for sticks and trims
int16_t vt = anaIn(i);
reusableBuffer.calib.loVals[i] = min(vt, reusableBuffer.calib.loVals[i]);
reusableBuffer.calib.hiVals[i] = max(vt, reusableBuffer.calib.hiVals[i]);
//if(i>=4) midVals[i] = (loVals[i] + hiVals[i])/2;
}
s_noScroll = idxState; // make sure we don't scroll while calibrating
@@ -972,7 +971,7 @@ void menuGeneralCalib(uint8_t event)
idxState = 0;
break;
case EVT_KEY_BREAK(KEY_MENU):
case EVT_KEY_BREAK(KEY_ENTER):
idxState++;
if (idxState==3) {
STORE_GENERALVARS;
@@ -985,15 +984,15 @@ void menuGeneralCalib(uint8_t event)
switch (idxState) {
case 0:
// START CALIBRATION
lcd_puts(3*FW, 3*FH, STR_MENUTOSTART);
lcd_putsLeft(3*FH, STR_MENUTOSTART);
break;
case 1:
// SET MIDPOINT
lcd_putsAtt(5*FW, 2*FH, STR_SETMIDPOINT, s_noScroll ? INVERS : 0);
lcd_puts(3*FW, 3*FH, STR_MENUWHENDONE);
lcd_putsLeft(3*FH, STR_MENUWHENDONE);
for (uint8_t i=0; i<7; i++) {
for (uint8_t i=0; i<NUM_STICKS+NUM_POTS; i++) {
reusableBuffer.calib.loVals[i] = 15000;
reusableBuffer.calib.hiVals[i] = -15000;
reusableBuffer.calib.midVals[i] = anaIn(i);
@@ -1003,9 +1002,9 @@ void menuGeneralCalib(uint8_t event)
case 2:
// MOVE STICKS/POTS
lcd_putsAtt(3*FW, 2*FH, STR_MOVESTICKSPOTS, s_noScroll ? INVERS : 0);
lcd_puts(3*FW, 3*FH, STR_MENUWHENDONE);
lcd_putsLeft(3*FH, STR_MENUWHENDONE);
for (uint8_t i=0; i<7; i++) {
for (uint8_t i=0; i<NUM_STICKS+NUM_POTS; i++) {
if (abs(reusableBuffer.calib.loVals[i]-reusableBuffer.calib.hiVals[i])>50) {
g_eeGeneral.calibMid[i] = reusableBuffer.calib.midVals[i];
int16_t v = reusableBuffer.calib.midVals[i] - reusableBuffer.calib.loVals[i];
@@ -1020,4 +1019,7 @@ void menuGeneralCalib(uint8_t event)
}
doMainScreenGraphics();
#if defined(PCBX9D)
drawPotsBars();
#endif
}
+11 -8
View File
@@ -85,6 +85,16 @@
#define MARKER_WIDTH 5
#define BOX_LIMIT (BOX_WIDTH-MARKER_WIDTH)
void drawPotsBars()
{
// Optimization by Mike Blandford
uint8_t x, y, len ; // declare temporary variables
for (x=DISPLAY_W/2-5, y=NUM_STICKS; y<NUM_STICKS+NUM_POTS; x+=5, y++) {
len = ((calibratedStick[y]+RESX)*BAR_HEIGHT/(RESX*2))+1l; // calculate once per loop
V_BAR(x, DISPLAY_H-8, len)
}
}
void doMainScreenGraphics()
{
lcd_square(LBOX_CENTERX-BOX_WIDTH/2, LBOX_CENTERY-BOX_WIDTH/2, BOX_WIDTH);
@@ -103,14 +113,7 @@ void doMainScreenGraphics()
lcd_square(RBOX_CENTERX+(calibratedStick[CONVERT_MODE(3+1)-1]*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, RBOX_CENTERY-(calibStickVert*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, MARKER_WIDTH, ROUND);
#if !defined(PCBX9D)
// Optimization by Mike Blandford
{
uint8_t x, y, len ; // declare temporary variables
for (x = -5, y = 4 ; y < 7 ; x += 5, y += 1) {
len = ((calibratedStick[y]+RESX)*BAR_HEIGHT/(RESX*2))+1l; // calculate once per loop
V_BAR(DISPLAY_W/2+x, DISPLAY_H-8, len)
}
}
drawPotsBars();
#endif
}
+1
View File
@@ -312,6 +312,7 @@ bool check(check_event_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t
scrollRE = 0;
if (s_editMode++ > 0) s_editMode = 0;
if (s_editMode > 0 && l_posVert == 0 && menuTab) s_editMode = -1;
if (maxrow == 0) s_editMode = -1;
}
}
#else
+1
View File
@@ -80,6 +80,7 @@ inline MenuFuncP lastPopMenu()
return g_menuStack[g_menuStackPtr+1];
}
void drawPotsBars();
void doMainScreenGraphics();
void menuMainView(uint8_t event);
void menuGeneralDiagAna(uint8_t event);
+1 -1
View File
@@ -2542,7 +2542,7 @@ void perOut(uint8_t mode, uint8_t tick10ms)
tick10ms = 0;
dirtyChannels &= passDirtyChannels;
} while (++pass < 3 && dirtyChannels);
} while (++pass < 5 && dirtyChannels);
mixWarning = lv_mixWarning;
}
+3 -3
View File
@@ -1306,9 +1306,9 @@ union ReusableBuffer
struct
{
int16_t midVals[7];
int16_t loVals[7];
int16_t hiVals[7];
int16_t midVals[NUM_STICKS+NUM_POTS];
int16_t loVals[NUM_STICKS+NUM_POTS];
int16_t hiVals[NUM_STICKS+NUM_POTS];
} calib; // 42 bytes used by menuGeneralCalib
#if defined(SDCARD)
+62 -96
View File
@@ -55,7 +55,7 @@ uint16_t B3_comp_value;
inline void DSM2_EnableTXD(void)
{
UCSR0B |= (1 << TXEN0); // enable TX
// UCSR0B |= (1 << UDRIE0); // don't enable UDRE0 interrupt, it will be enabled during next setupPulses
// don't enable UDRE0 interrupt now, it will be enabled during next setupPulses
}
#endif
@@ -97,8 +97,11 @@ uint8_t *pulses2MHzWPtr = pulses2MHz;
#define CTRL_REP_1CMD -3
#define CTRL_REP_2CMD -6
#ifndef SIMU
#if defined(DSM2_SERIAL)
#define DSM2_SERIAL_INTERRUPT() (s_current_protocol == PROTO_DSM2)
#else
#define DSM2_SERIAL_INTERRUPT() (0)
#endif
// TIMER1_COMPA_vect used for PPM and DSM2=SERIAL
uint8_t g_ppmPulsePolarity = 0;
@@ -106,70 +109,54 @@ ISR(TIMER1_COMPA_vect) //2MHz pulse generation (BLOCKING ISR)
{
uint8_t dt = TCNT1L; // record Timer1 latency for DEBUG stats display
#ifdef DSM2_SERIAL
if (s_current_protocol == PROTO_DSM2) {
setupPulses(); // includes scheduling of next COMPA int. vector (this ISR).
// also re-enables interrupts at and for a safe time. (G: Only if in DSM2_SERIAL mode. Why?)
cli(); // re-disable interrupts to prevent reentrance here. (This ISR will automatically issue sei upon exit.)
UCSR0B |= (1 << UDRIE0); // enable UDRE0 interrupt to start transmitting DSM2 data bytes from buffer
// Call setupPulses only after REST pulse had been sent.
// Must do this before toggle PORTB to keep timing accurate
if (DSM2_SERIAL_INTERRUPT() || *((uint16_t*)pulses2MHzRPtr) == 0) {
setupPulses(); // does not sei() for setupPulsesPPM
heartbeat |= HEART_TIMER_PULSES;
if (IS_PXX_PROTOCOL(s_current_protocol) || IS_DSM2_PROTOCOL(s_current_protocol)) {
// !PPM protocols interrupts don't need COMPA
return;
}
}
else
#endif
{
#if !defined(PCBGRUVIN9X)
// Original bitbang for PPM
if (s_current_protocol != PROTO_NONE) {
if (g_ppmPulsePolarity) {
PORTB |= (1<<OUT_B_PPM); // GCC optimisation should result in a single SBI instruction
g_ppmPulsePolarity = 0;
}
else {
PORTB &= ~(1<<OUT_B_PPM);
g_ppmPulsePolarity = 1;
}
// Original bitbang for PPM
if (s_current_protocol != PROTO_NONE) {
if (g_ppmPulsePolarity) {
PORTB |= (1<<OUT_B_PPM); // GCC optimisation should result in a single SBI instruction
g_ppmPulsePolarity = 0;
}
#else
// PCBGRUVIN9X zero jitter hardware toggled PPM_out
OCR1B = *((uint16_t*)pulses2MHzRPtr); // duplicate capture (Timer1 in CTC mode, so restricted to OCR1A for int vector)
else {
PORTB &= ~(1<<OUT_B_PPM);
g_ppmPulsePolarity = 1;
}
}
#else // defined(PCBGRUVIN9X)
// PCBGRUVIN9X zero jitter hardware toggled PPM_out
OCR1B = *((uint16_t*)pulses2MHzRPtr); // duplicate capture (Timer1 in CTC mode, so restricted to OCR1A for int vector)
// Toggle bit: Can't read PPM_OUT I/O pin when OC1B is connected (on the ATmega2560 -- can on ATmega64A!)
// so need to use pusePol register to keep track of PPM_out polarity.
if (s_current_protocol != PROTO_NONE) {
if (g_ppmPulsePolarity) {
TCCR1A = (3<<COM1B0); // SET the state of PB6(OC1B)/PPM_out on next TCNT1==OCR1B
g_ppmPulsePolarity = 0;
}
else {
TCCR1A = (2<<COM1B0); // CLEAR the state of PB6(OC1B)/PPM_out on next TCNT1==OCR1B
g_ppmPulsePolarity = 1;
}
// Toggle bit: Can't read PPM_OUT I/O pin when OC1B is connected (on the ATmega2560 -- can on ATmega64A!)
// so need to use pusePol register to keep track of PPM_out polarity.
if (s_current_protocol != PROTO_NONE) {
if (g_ppmPulsePolarity) {
TCCR1A = (3<<COM1B0); // SET the state of PB6(OC1B)/PPM_out on next TCNT1==OCR1B
g_ppmPulsePolarity = 0;
}
else {
TCCR1A = (2<<COM1B0); // CLEAR the state of PB6(OC1B)/PPM_out on next TCNT1==OCR1B
g_ppmPulsePolarity = 1;
}
}
#endif
OCR1A = *((uint16_t*)pulses2MHzRPtr); // Schedule next Timer1 interrupt vector (to this function)
pulses2MHzRPtr += sizeof(uint16_t); // non PPM protocols use uint8_t pulse buffer
if (*((uint16_t*)pulses2MHzRPtr) == 0) {
PAUSE_PULSES_INTERRUPT();
setupPulses(); // does not sei() for setupPulsesPPM
// if setupPulses changed protocol to one that doesn't use COMPA then don't re-enable.
if (!IS_PXX_PROTOCOL(s_current_protocol) && !IS_DSM2_PROTOCOL(s_current_protocol)) {
// cli is not needed because for PPM protocols interrupts are not enabled when entering here
RESUME_PULSES_INTERRUPT();
sei();
}
}
} // [else] if (s_current_protocol == PROTO_DSM2)
OCR1A = *((uint16_t*)pulses2MHzRPtr); // Schedule next Timer1 interrupt vector (to this function)
pulses2MHzRPtr += sizeof(uint16_t); // non PPM protocols use uint8_t pulse buffer
if (dt > g_tmr1Latency_max) g_tmr1Latency_max = dt;
if (dt < g_tmr1Latency_min) g_tmr1Latency_min = dt;
heartbeat |= HEART_TIMER_PULSES;
}
#endif
void setupPulsesPPM(uint8_t proto)
{
// Total frame length is a fixed 22.5msec (more than 9 channels is non-standard and requires this to be extended.)
@@ -432,6 +419,8 @@ FORCEINLINE void setupPulsesDsm2()
pulses2MHzWPtr = (uint8_t *)ptr;
pulses2MHzRPtr = pulses2MHz;
UCSR0B |= (1 << UDRIE0); // enable UDRE0 interrupt to start transmitting DSM2 data bytes from buffer
}
// DSM2=SERIAL mode
@@ -754,26 +743,34 @@ void setupPulses()
s_current_protocol = required_protocol;
TCCR1B = 0; // Stop counter
TCNT1 = 0;
#if defined(PCBGRUVIN9X)
TIMSK1 &= ~0x2F; // All Timer1 interrupts off
TIMSK1 &= ~(1<<OCIE1C); // COMPC1 off
TIFR1 = 0x2F;
#else
TIMSK &= ~0x3C ; // All interrupts off
ETIMSK &= ~(1<<OCIE1C) ; // COMPC1 off
TIFR = 0x3C ; // Clear all pending interrupts
ETIFR = 0x3F ; // Clear all pending interrupts
#endif
switch (required_protocol) {
#if defined(DSM2_PPM) // For DSM2=SERIAL, the default: case is executed, below
case PROTO_DSM2:
set_timer3_capture();
TCCR1B = 0; // Stop counter
OCR1C = 200; // 100 uS
TCNT1 = 300; // Past the OCR1C value
ICR1 = 44000; // Next frame starts in 22 mS
#if defined(PCBGRUVIN9X)
TIMSK1 &= ~0x2F; // All Timer1 interrupts off
TIFR1 = 0x2F;
TIMSK1 |= 0x28; // Enable Timer1 COMPC and CAPT interrupts
TCCR1A = (0 << WGM10); // Set output waveform mode to normal, for now. Note that
// WGM will be changed to toggle OCR1B pin on compare capture,
// in next switch(required_protocol) {...}, below
#else
TIMSK &= ~0x3C; // All Timer1 interrupts off
TIFR = 0x3C;
ETIFR = 0x3F;
TIMSK |= 0x20; // Enable CAPT
ETIMSK |= (1<<OCIE1C); // Enable COMPC
TCCR1A = (0 << WGM10);
@@ -785,20 +782,13 @@ void setupPulses()
#if defined(PXX)
case PROTO_PXX:
set_timer3_capture();
TCCR1B = 0; // Stop counter
TCNT1 = 0;
OCR1B = 6000; // Next frame starts in 3 mS
OCR1C = 4000; // Next frame setup in 2 mS
#if defined(PCBGRUVIN9X)
TIMSK1 &= ~0x2F; // All Timer1 interrupts off
TIFR1 = 0x2F;
TIMSK1 |= (1<<OCIE1B); // Enable COMPB
TIMSK1 |= (1<<OCIE1C); // Enable COMPC
TCCR1A = (3 << COM1B0); // Connect OC1B for hardware PPM switching
#else
TIMSK &= ~0x3C; // All Timer1 interrupts off
TIFR = 0x3C;
ETIFR = 0x3F;
TIMSK |= (1<<OCIE1B); // Enable COMPB
ETIMSK |= (1<<OCIE1C); // Enable COMPC
TCCR1A = 0;
@@ -808,20 +798,11 @@ void setupPulses()
#endif
case PROTO_PPM16:
TCCR1B = 0; // Stop counter
OCR1A = 40000; // Next frame starts in 20 mS
TCNT1 = 0;
#if defined(PCBGRUVIN9X)
TIMSK1 &= ~0x2F; // All Timer1 interrupts off
TIMSK1 &= ~(1<<OCIE1C); // COMPC1 off
TIFR1 = 0x2F;
TIMSK1 |= (1<<OCIE1A); // Enable COMPA
TCCR1A = (3 << COM1B0); // Connect OC1B for hardware PPM switching
#else
TIMSK &= ~0x3C; // All Timer1 interrupts off
ETIMSK &= ~(1<<OCIE1C); // COMPC1 off
TIFR = 0x3C; // Clear all pending interrupts
ETIFR = 0x3F; // Clear all pending interrupts
TIMSK |= 0x10; // Enable COMPA
TCCR1A = (0<<WGM10);
#endif
@@ -833,18 +814,8 @@ void setupPulses()
break;
case PROTO_PPMSIM:
TCCR1B = 0; // Stop counter
TCNT1 = 0;
#if defined(PCBGRUVIN9X)
TIMSK1 &= ~0x2F; // All Timer1 interrupts off
TIMSK1 &= ~(1<<OCIE1C); // COMPC1 off
TIFR1 = 0x2F;
TCCR1A = 0; // Disconnect OC1B for bit-bang PPM switching
#else
TIMSK &= ~0x3C; // All Timer1 interrupts off
ETIMSK &= ~(1<<OCIE1C); // COMPC1 off
TIFR = 0x3C; // Clear all pending interrupts
ETIFR = 0x3F; // Clear all pending interrupts
#endif
setupPulsesPPM(PROTO_PPMSIM);
OCR3A = 50000;
@@ -855,8 +826,6 @@ void setupPulses()
default: // PPM and DSM2=SERIAL modes
set_timer3_capture();
TCCR1B = 0; // Stop counter 1
TCNT1 = 0; // Must reset counter first, to prevent possible immediate COMPA int. (sometimes).
OCR1A = 44000; // Next frame starts in 22ms -- DSM mode.
// This is arbitrary and for the first frame only. In fact, ...
// DSM2 mode will set frame timing again at each ISR(TIMER1_COMPC_vect)
@@ -864,15 +833,10 @@ void setupPulses()
// PPM mode will dynamically adjust to the frame rate set in model SETUP menu,
// from within setupPulsesPPM().
#if defined(PCBGRUVIN9X)
TIMSK1 &= ~0x2F; // All Timer1 interrupts off
TIFR1 = 0x2F;
TIMSK1 |= (1<<OCIE1A); // Enable COMPA
TCCR1A = (3 << COM1B0); // Connect OC1B for hardware PPM switching. G: Not needed
// for DSM2=SERIAL. But OK.
#else
TIMSK &= ~0x3C; // All Timer1 interrupts off
TIFR = 0x3C;
ETIFR = 0x3F; // Clear all pending interrupts
TIMSK |= 0x10; // Enable COMPA
TCCR1A = (0 << WGM10);
#endif
@@ -883,7 +847,7 @@ void setupPulses()
switch(required_protocol) {
#ifdef PXX
#if defined(PXX)
case PROTO_PXX:
// schedule next Mixer calculations
SCHEDULE_MIXER_END(20*16);
@@ -892,11 +856,13 @@ void setupPulses()
break;
#endif
#ifdef DSM2
#if defined(DSM2)
case PROTO_DSM2:
// schedule next Mixer calculations
SCHEDULE_MIXER_END(22*16);
#if defined(DSM2_PPM)
sei();
#endif
setupPulsesDsm2(); // Different versions for DSM2=SERIAL vs. DSM2=PPM
#if defined(PCBGRUVIN9X) && defined(DSM2_PPM)
// Ensure each DSM2=PPM serial packet starts out with the correct bit polarity
+1
View File
@@ -199,6 +199,7 @@ extern void rxPdcUsart( void (*pChProcess)(uint8_t x) );
#define COM1B0 dummyport
#define COM0A0 dummyport
#define TCNT1 dummyport16
#define TCNT1L dummyport
#define TCNT5 dummyport16
#define ICR1 dummyport16
#define TIFR dummyport
+4 -4
View File
@@ -234,7 +234,7 @@
#define TR_POPUPS "[MENU]\010[EXIT]"
#define OFS_EXIT 7
#define TR_MENUWHENDONE "\001[MENU] > DAL\207\214"
#define TR_MENUWHENDONE CENTER"\007[MENU] > DAL\207\214"
#define TR_FREE "voln\202:"
#define TR_DELETEMODEL "SMAZAT MODEL"
#define TR_COPYINGMODEL "Kop\204ruji model.."
@@ -327,9 +327,9 @@
#define TR_CAL "Kal."
#define TR_VTRIM "Trim- +"
#define TR_BG "BG:"
#define TR_MENUTOSTART "\001[MENU] = START"
#define TR_SETMIDPOINT "NASTAV ST\215EDY"
#define TR_MOVESTICKSPOTS "H\216BEJ P\213KY/POTY"
#define TR_MENUTOSTART CENTER"\007[MENU] = START"
#define TR_SETMIDPOINT CENTER"NASTAV ST\215EDY"
#define TR_MOVESTICKSPOTS CENTER"H\216BEJ P\213KY/POTY"
#define TR_RXBATT "Rx Bat.:"
#define TR_TXnRX "Tx:\0Rx:"
#define OFS_RX 4
+4 -4
View File
@@ -235,7 +235,7 @@
#define TR_POPUPS "[MENU]\010[EXIT]"
#define OFS_EXIT 7
#define TR_MENUWHENDONE "[MENU] > Weiter"
#define TR_MENUWHENDONE CENTER"\006[MENU] > Weiter"
#define TR_FREE "frei"
#define TR_DELETEMODEL "Modell l\203schen?"
#define TR_COPYINGMODEL "Kopiere Modell"
@@ -328,9 +328,9 @@
#define TR_CAL "Kal."
#define TR_VTRIM "Trim- +"
#define TR_BG "BG:"
#define TR_MENUTOSTART "[MENU] > Starten"
#define TR_SETMIDPOINT "NEUTRALSTELLUNG"
#define TR_MOVESTICKSPOTS "KNPL/POTIS BEWEGEN"
#define TR_MENUTOSTART CENTER"\006[MENU] > Starten"
#define TR_SETMIDPOINT CENTER"NEUTRALSTELLUNG"
#define TR_MOVESTICKSPOTS CENTER"KNPL/POTIS BEWEGEN"
#define TR_RXBATT "Rx Batt:"
#define TR_TXnRX "Tx:\0Rx:"
#define OFS_RX 4
+4 -4
View File
@@ -246,7 +246,7 @@
#define TR_POPUPS "[MENU]\010[EXIT]"
#define OFS_EXIT 7
#define TR_MENUWHENDONE "[MENU] WHEN DONE"
#define TR_MENUWHENDONE CENTER"\006[MENU] WHEN DONE"
#define TR_FREE "free"
#define TR_DELETEMODEL "DELETE MODEL"
#define TR_COPYINGMODEL "Copying model..."
@@ -339,9 +339,9 @@
#define TR_CAL "Cal"
#define TR_VTRIM "Trim- +"
#define TR_BG "BG:"
#define TR_MENUTOSTART "[MENU] TO START"
#define TR_SETMIDPOINT "SET MIDPOINT"
#define TR_MOVESTICKSPOTS "MOVE STICKS/POTS"
#define TR_MENUTOSTART CENTER"\006[MENU] TO START"
#define TR_SETMIDPOINT CENTER"SET MIDPOINT"
#define TR_MOVESTICKSPOTS CENTER"MOVE STICKS/POTS"
#define TR_RXBATT "Rx Batt:"
#define TR_TXnRX "Tx:\0Rx:"
#define OFS_RX 4
+4 -4
View File
@@ -227,7 +227,7 @@
#define TR_POPUPS "[MENU]\010[SALIR]"
#define OFS_EXIT 7
#define TR_MENUWHENDONE "[MENU]AL FINAL"
#define TR_MENUWHENDONE CENTER"\006[MENU]AL FINAL"
#define TR_FREE "Libre"
#define TR_DELETEMODEL "BORRA MODELO"
#define TR_COPYINGMODEL "Copiando modelo."
@@ -322,9 +322,9 @@
#define TR_CAL "Cal"
#define TR_VTRIM "Ajte- +"
#define TR_BG "BG:"
#define TR_MENUTOSTART "[MENU] INICIAR"
#define TR_SETMIDPOINT "AJUSTAR CENTROS"
#define TR_MOVESTICKSPOTS "MOVER STICK/POT"
#define TR_MENUTOSTART CENTER"\006[MENU] INICIAR"
#define TR_SETMIDPOINT CENTER"AJUSTAR CENTROS"
#define TR_MOVESTICKSPOTS CENTER"MOVER STICK/POT"
#define TR_RXBATT "Rx Batt:"
#define TR_TXnRX "Tx:\0Rx:"
#define OFS_RX 4
+4 -4
View File
@@ -235,7 +235,7 @@
#define TR_POPUPS "[MENU]\010[QUIT]"
#define OFS_EXIT 7
#define TR_MENUWHENDONE "[MENU] QUAND PRET"
#define TR_MENUWHENDONE CENTER"\006[MENU] QUAND PRET"
#define TR_FREE "libre"
#define TR_DELETEMODEL "SUPPRIMER MODELE"
#define TR_COPYINGMODEL "Copie..."
@@ -328,9 +328,9 @@
#define TR_CAL "Cal"
#define TR_VTRIM "Trim- +"
#define TR_BG "BG:"
#define TR_MENUTOSTART "[MENU] POUR DEBUT"
#define TR_SETMIDPOINT "REGLER NEUTRES"
#define TR_MOVESTICKSPOTS "BOUGER STICKS/POTS"
#define TR_MENUTOSTART CENTER"\006[MENU] POUR DEBUT"
#define TR_SETMIDPOINT CENTER"REGLER NEUTRES"
#define TR_MOVESTICKSPOTS CENTER"BOUGER STICKS/POTS"
#define TR_RXBATT "Batt.RX"
#define TR_TXnRX "Tx:\0Rx:"
#define OFS_RX 4
+4 -4
View File
@@ -233,7 +233,7 @@
#define TR_POPUPS "[Men\200]\004[Exit]"
#define OFS_EXIT 7
#define TR_MENUWHENDONE "[Men\200] Conferma"
#define TR_MENUWHENDONE CENTER"\006[Men\200] Conferma"
#define TR_FREE " Disp."
#define TR_DELETEMODEL "Elimina modello?"
#define TR_COPYINGMODEL "Copia in corso.."
@@ -326,9 +326,9 @@
#define TR_CAL "Cal"
#define TR_VTRIM "Trim- +"
#define TR_BG "BG:"
#define TR_MENUTOSTART "[Men\200] per Cal."
#define TR_SETMIDPOINT "SETTA CENTRO"
#define TR_MOVESTICKSPOTS "MUOVI STICK/POT"
#define TR_MENUTOSTART CENTER"\006[Men\200] per Cal."
#define TR_SETMIDPOINT CENTER"SETTA CENTRO"
#define TR_MOVESTICKSPOTS CENTER"MUOVI STICK/POT"
#define TR_RXBATT "Rx Batt:"
#define TR_TXnRX "Tx:\0Rx:"
#define OFS_RX 4
+4 -4
View File
@@ -235,7 +235,7 @@
#define TR_POPUPS "[MENU]\010[SAIR] "
#define OFS_EXIT 7
#define TR_MENUWHENDONE "[MENU]QDO PRONTO"
#define TR_MENUWHENDONE CENTER"\006[MENU]QDO PRONTO"
#define TR_FREE "Livre"
#define TR_DELETEMODEL "EXCLUI MODELO"
#define TR_COPYINGMODEL "Copiando modelo"
@@ -328,9 +328,9 @@
#define TR_CAL "Cal"
#define TR_VTRIM "Trim- +"
#define TR_BG "BG:"
#define TR_MENUTOSTART "[MENU] INICIAR"
#define TR_SETMIDPOINT "CENTRAR STICK/POT"
#define TR_MOVESTICKSPOTS "MOVER STICKS/POTs"
#define TR_MENUTOSTART CENTER"\006[MENU] INICIAR"
#define TR_SETMIDPOINT CENTER"CENTRAR STICK/POT"
#define TR_MOVESTICKSPOTS CENTER"MOVER STICKS/POTs"
#define TR_RXBATT "Rx Batt:"
#define TR_TXnRX "Tx:\0Rx:"
#define OFS_RX 4
+4 -4
View File
@@ -238,7 +238,7 @@
#define TR_POPUPS "[MENU]\010[EXIT]"
#define OFS_EXIT 7
#define TR_MENUWHENDONE "[MENU] Avslutar"
#define TR_MENUWHENDONE CENTER"\006[MENU] Avslutar"
#define TR_FREE "Ledigt"
#define TR_DELETEMODEL "Radera Modell"
#define TR_COPYINGMODEL "Kopierar Modell"
@@ -331,9 +331,9 @@
#define TR_CAL "Kalib."
#define TR_VTRIM "Trim- +"
#define TR_BG "BG:"
#define TR_MENUTOSTART "[MENU] Startar"
#define TR_SETMIDPOINT "Centrera Allt"
#define TR_MOVESTICKSPOTS "R\202r Rattar/Spakar"
#define TR_MENUTOSTART CENTER"\006[MENU] Startar"
#define TR_SETMIDPOINT CENTER"Centrera Allt"
#define TR_MOVESTICKSPOTS CENTER"R\202r Rattar/Spakar"
#define TR_RXBATT "Rx Batt:"
#define TR_TXnRX "Tx:\0Rx:"
#define OFS_RX 4