diff --git a/radio/src/gui/128x64/radio_spectrum.cpp b/radio/src/gui/128x64/radio_spectrum.cpp index 5a5ad318f..df09b151a 100644 --- a/radio/src/gui/128x64/radio_spectrum.cpp +++ b/radio/src/gui/128x64/radio_spectrum.cpp @@ -2,7 +2,7 @@ * Copyright (C) OpenTX * * Based on code named - * th9x - http://code.google.com/p/th9x + * th9x - http://code.google.com/p/th9x * er9x - http://code.google.com/p/er9x * gruvin9x - http://code.google.com/p/gruvin9x * @@ -32,8 +32,24 @@ void menuRadioSpectrum(event_t event) moduleSettings[INTERNAL_MODULE].mode = MODULE_MODE_SPECTRUM_ANALYSER; } + uint8_t peak=1; + uint32_t peak_x=0; for (uint8_t i=0; i> 2; + uint8_t h = reusableBuffer.spectrum.bars[i]; + if(h > peak) { + peak_x = i; + peak=h; + } lcdDrawSolidVerticalLine(i, LCD_H - h, h); } + lcdDrawText(1,10, "F:", 0); + lcdDrawNumber(lcdLastRightPos, 10, reusableBuffer.spectrum.fq/10000000,PREC2); + lcdDrawText(lcdLastRightPos, 10, "GHz"); + lcdDrawText(1,10+FH, "S:", 0); + lcdDrawNumber(lcdLastRightPos, 10+FH, reusableBuffer.spectrum.span/1000000,0); + lcdDrawText(lcdLastRightPos, 10+FH, "MHz"); + + lcdDrawText(80,10, "P:", 0); + lcdDrawNumber(lcdLastRightPos, 10, ((reusableBuffer.spectrum.fq - reusableBuffer.spectrum.span/2) + peak_x * (reusableBuffer.spectrum.span / 128)) / 10000000,PREC2); + lcdDrawText(lcdLastRightPos, 10, "GHz"); } diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 10b9f92f1..4fca02dee 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1161,6 +1161,9 @@ union ReusableBuffer struct { uint8_t bars[128]; + uint32_t fq; + uint32_t span; + uint32_t step; } spectrum; #if defined(STM32) diff --git a/radio/src/pulses/pxx2.cpp b/radio/src/pulses/pxx2.cpp index e3ce031c6..e75c339e5 100644 --- a/radio/src/pulses/pxx2.cpp +++ b/radio/src/pulses/pxx2.cpp @@ -104,23 +104,23 @@ bool Pxx2Pulses::setupSpectrumAnalyser(uint8_t module) addFrameType(PXX2_TYPE_C_POWER_METER, PXX2_TYPE_ID_SPECTRUM); Pxx2Transport::addByte(0x00); - uint32_t fq = 2440000000; // 2440MHz - Pxx2Transport::addByte(fq); - Pxx2Transport::addByte(fq >> 8); - Pxx2Transport::addByte(fq >> 16); - Pxx2Transport::addByte(fq >> 24); + reusableBuffer.spectrum.fq = 2440000000; // 2440MHz + Pxx2Transport::addByte(reusableBuffer.spectrum.fq); + Pxx2Transport::addByte(reusableBuffer.spectrum.fq >> 8); + Pxx2Transport::addByte(reusableBuffer.spectrum.fq >> 16); + Pxx2Transport::addByte(reusableBuffer.spectrum.fq >> 24); - uint32_t span = 40000000; // 40MHz - Pxx2Transport::addByte(span); - Pxx2Transport::addByte(span >> 8); - Pxx2Transport::addByte(span >> 16); - Pxx2Transport::addByte(span >> 24); + reusableBuffer.spectrum.span = 40000000; // 40MHz + Pxx2Transport::addByte(reusableBuffer.spectrum.span); + Pxx2Transport::addByte(reusableBuffer.spectrum.span >> 8); + Pxx2Transport::addByte(reusableBuffer.spectrum.span >> 16); + Pxx2Transport::addByte(reusableBuffer.spectrum.span >> 24); - uint32_t step = 100000; // 100KHz - Pxx2Transport::addByte(step); - Pxx2Transport::addByte(step >> 8); - Pxx2Transport::addByte(step >> 16); - Pxx2Transport::addByte(step >> 24); + reusableBuffer.spectrum.step = 100000; // 100KHz + Pxx2Transport::addByte(reusableBuffer.spectrum.step); + Pxx2Transport::addByte(reusableBuffer.spectrum.step >> 8); + Pxx2Transport::addByte(reusableBuffer.spectrum.step >> 16); + Pxx2Transport::addByte(reusableBuffer.spectrum.step >> 24); return true; }