1
0
Fork 0
mirror of https://github.com/EdgeTX/edgetx.git synced 2025-07-23 16:25:12 +03:00

Spectrum analyser issues fixed

This commit is contained in:
Bertrand Songis 2019-04-15 10:08:22 +02:00
parent 9122df2f67
commit e2b1d56e3a
2 changed files with 12 additions and 10 deletions

View file

@ -63,16 +63,16 @@ void menuRadioSpectrumAnalyser(event_t event)
}
for (uint8_t i=0; i<SPECTRUM_FIELDS_MAX+1; i++) {
uint8_t blink = ((s_editMode>0) ? BLINK|INVERS : INVERS);
LcdFlags attr = (menuHorizontalPosition == i ? (s_editMode>0 ? INVERS|BLINK : INVERS) : 0);
switch (i) {
case SPECTRUM_FREQUENCY: {
uint16_t frequency = reusableBuffer.spectrumAnalyser.freq / 1000000;
lcdDrawText(1, 10, "F:", 0);
lcdDrawNumber(lcdLastRightPos + 2, 10, frequency, (menuHorizontalPosition == 0 ? blink : 0));
lcdDrawNumber(lcdLastRightPos + 2, 10, frequency, attr);
lcdDrawText(lcdLastRightPos + 2, 10, "MHz", 0);
if (menuHorizontalPosition == 0) {
reusableBuffer.spectrumAnalyser.freq = checkIncDec(event, frequency, 2400, 2485, 0) * 1000000;
if (attr) {
reusableBuffer.spectrumAnalyser.freq = uint32_t(checkIncDec(event, frequency, 2400, 2485, 0)) * 1000000;
}
break;
}
@ -80,14 +80,15 @@ void menuRadioSpectrumAnalyser(event_t event)
case SPECTRUM_SPAN:
uint8_t span = reusableBuffer.spectrumAnalyser.span / 1000000;
lcdDrawText(lcdLastRightPos + 5, 10, "S:", 0);
lcdDrawNumber(lcdLastRightPos + 2, 10, reusableBuffer.spectrumAnalyser.span/1000000, (menuHorizontalPosition==1 ? blink : 0));
lcdDrawNumber(lcdLastRightPos + 2, 10, reusableBuffer.spectrumAnalyser.span/1000000, attr);
lcdDrawText(lcdLastRightPos + 2, 10, "MHz", 0);
if (menuHorizontalPosition == 1) {
if (attr) {
reusableBuffer.spectrumAnalyser.span = checkIncDec(event, span, 1, 80, 0) * 1000000;
}
break;
}
}
uint8_t peak_y = 1;
uint8_t peak_x = 0;
for (uint8_t i=0; i<LCD_W; i++) {

View file

@ -185,12 +185,13 @@ void processSpectrumAnalyserFrame(uint8_t module, uint8_t * frame)
// left = 2440000000 - 20000000
// step = 10000
int32_t D = *frequency - (2440000000 - 40000000 / 2);
// TRACE("Fq=%u, Pw=%d, X=%d, Y=%d", *frequency, int32_t(*power), D * 128 / 40000000, int32_t(127 + *power));
uint8_t x = D * 128 / 40000000;
reusableBuffer.spectrumAnalyser.bars[x] = 127 + *power;
int32_t position = *frequency - reusableBuffer.spectrumAnalyser.freq - (reusableBuffer.spectrumAnalyser.span / 2);
uint8_t x = (position * LCD_W) / reusableBuffer.spectrumAnalyser.span;
if (x < LCD_W) {
reusableBuffer.spectrumAnalyser.bars[x] = 127 + *power;
}
}
void processPowerMeterFrame(uint8_t module, uint8_t * frame)