HAL_F4Light: fixed RSSI issue on OSD

This commit is contained in:
night-ghost 2018-05-07 11:00:07 +05:00 committed by Andrew Tridgell
parent 0b3514c519
commit f6ea053f19
1 changed files with 57 additions and 1 deletions

View File

@ -333,7 +333,7 @@ static bool diff_done;
extern void heartBeat();
extern void writePanels();
void On100ms() {}
void On100ms();
void On20ms() {}
void osd_loop();
void vsync_ISR();
@ -975,7 +975,63 @@ void osd_loop() {
}
}
float avgRSSI(uint16_t d){
static uint8_t ind = -1;
static uint16_t RSSI_rawArray[8];
RSSI_rawArray[(++ind)%8] = d;
d=0;
for (uint8_t i=8;i!=0;)
d += RSSI_rawArray[--i];
return d/8.0;
}
void On100ms() {
byte ch = sets.RSSI_raw / 2;
uint16_t d;
//DBG_PRINTF("\n RSSI ch=%d ", ch);
switch(ch) {
case 1: // analog RSSI from pin
case 2: // digital RSSI from pin
case 0:
d=osd_rssi; // mavlink
goto case_4;
case 3: // 3dr modem rssi
d=telem_rssi;
goto case_4;
case 4:
default:
d = chan_raw[7]; // ch 8
//DBG_PRINTF("ch8_rssi=%d\n", d );
case_4:
rssi_in = avgRSSI(d);
// RSSI source is not pin so we can read it for sensor
#if defined(USE_SENSORS)
if(SENSOR4_ON) {
if(fPulseSensor[3])
d=pulseIn(RssiPin,HIGH,10000);
else
d=analogRead(RssiPin);
sensorData[3] = (sensorData[3]*7 + d) /8;
}
#endif
break;
}
}
void vsync_ISR(){