1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-21 15:25:17 +03:00

Issue 93 fixed

Flash saving.
This commit is contained in:
bsongis 2012-08-18 21:10:51 +00:00
parent 08c24d0ffb
commit de18436cda
5 changed files with 19 additions and 23 deletions

View file

@ -82,10 +82,6 @@ void Key::input(bool val, EnumKeys enuk)
if(m_state && m_vals==0){ //gerade eben sprung auf 0
if(m_state!=KSTATE_KILLED) {
putEvent(EVT_KEY_BREAK(enuk));
if(!( m_state == 16 && m_cnt<16)){
m_dblcnt=0;
}
// }
}
m_cnt = 0;
m_state = KSTATE_OFF;
@ -94,7 +90,6 @@ void Key::input(bool val, EnumKeys enuk)
case KSTATE_OFF:
if(m_vals==FFVAL){ //gerade eben sprung auf ff
m_state = KSTATE_START;
if(m_cnt>16) m_dblcnt=0; //pause zu lang fuer double
m_cnt = 0;
}
break;
@ -102,7 +97,6 @@ void Key::input(bool val, EnumKeys enuk)
case KSTATE_START:
putEvent(EVT_KEY_FIRST(enuk));
inacCounter = 0;
m_dblcnt++;
m_state = KSTATE_RPTDELAY;
m_cnt = 0;
break;
@ -142,13 +136,14 @@ void Key::input(bool val, EnumKeys enuk)
void pauseEvents(uint8_t event)
{
event=event & EVT_KEY_MASK;
if(event < (int)DIM(keys)) keys[event].pauseEvents();
event = event & EVT_KEY_MASK;
if (event < (int)DIM(keys)) keys[event].pauseEvents();
}
void killEvents(uint8_t event)
{
event=event & EVT_KEY_MASK;
if(event < (int)DIM(keys)) keys[event].killEvents();
event = event & EVT_KEY_MASK;
if (event < (int)DIM(keys)) keys[event].killEvents();
}
volatile uint16_t g_tmr10ms;

View file

@ -1250,11 +1250,14 @@ void checkTrims()
#endif
if (beepTrim) {
killEvents(event);
if (beepTrim == 1)
if (beepTrim == 1) {
AUDIO_TRIM_MIDDLE(after);
else
pauseEvents(event);
}
else {
AUDIO_TRIM_END(after);
killEvents(event);
}
}
else {
AUDIO_TRIM(event, after);
@ -2759,14 +2762,14 @@ ISR(TIMER0_COMP_vect, ISR_NOBLOCK) //10ms timer
{
cli();
#if defined (PCBV4)
#if defined(PCBV4)
static uint8_t accuracyWarble = 4; // because 16M / 1024 / 100 = 156.25. So bump every 4.
uint8_t bump = (!(accuracyWarble++ & 0x03)) ? 157 : 156;
TIMSK2 &= ~(1<<OCIE2A); // stop reentrance
OCR2A += bump;
#else
TIMSK &= ~(1<<OCIE0); // stop reentrance
#if defined (AUDIO)
#if defined(AUDIO) || defined(VOICE)
OCR0 += 2; // interrupt every 128us
#else
static uint8_t accuracyWarble = 4; // because 16M / 1024 / 100 = 156.25. So bump every 4.

View file

@ -339,20 +339,17 @@ class Key
#endif
#define KSTATE_OFF 0
#define KSTATE_RPTDELAY 95 // gruvin: delay state before key repeating starts
//#define KSTATE_SHORT 96
#define KSTATE_START 97
#define KSTATE_PAUSE 98
#define KSTATE_KILLED 99
uint8_t m_vals:FILTERBITS; // key debounce? 4 = 40ms
uint8_t m_dblcnt:2;
uint8_t m_vals; // key debounce? 4 = 40ms
uint8_t m_cnt;
uint8_t m_state;
public:
void input(bool val, EnumKeys enuk);
bool state() { return m_vals==FFVAL; }
void pauseEvents() { m_state = KSTATE_PAUSE; m_cnt = 0;}
void killEvents() { m_state = KSTATE_KILLED; m_dblcnt=0; }
uint8_t getDbl() { return m_dblcnt; }
bool state() { return m_vals==FFVAL; }
void pauseEvents() { m_state = KSTATE_PAUSE; m_cnt = 0;}
void killEvents() { m_state = KSTATE_KILLED; }
};
extern Key keys[NUM_KEYS];

View file

@ -808,6 +808,7 @@ void setupPulses()
OCR3A = 50000 ;
OCR3B = 5000 ;
set_timer3_ppm() ;
PORTB &= ~(1<<OUT_B_PPM); // Hold PPM output low
break ;
default:

View file

@ -107,7 +107,7 @@ void t_voice::voice_process(void)
VoiceSerial += 260;
}
VoiceTimer = 16;
if ((VoiceSerial & 0x00FF) >= 0xF0) {
if ((VoiceSerial & 0x01F0) == 0xF0) { // Looking for F0-F7 or FF
if (VoiceSerial == 0xFF) {
VoiceShift = 1;
return;