diff --git a/radio/src/gui/128x64/radio_spectrum.cpp b/radio/src/gui/128x64/radio_spectrum.cpp index 8ad2b6021..04dd02ab1 100644 --- a/radio/src/gui/128x64/radio_spectrum.cpp +++ b/radio/src/gui/128x64/radio_spectrum.cpp @@ -32,24 +32,26 @@ void menuRadioSpectrum(event_t event) moduleSettings[INTERNAL_MODULE].mode = MODULE_MODE_SPECTRUM_ANALYSER; } - uint8_t peak=1; - uint32_t peak_x=0; + uint8_t peak_y = 1; + uint8_t peak_x = 0; for (uint8_t i=0; i peak) { + if (h > peak_y) { peak_x = i; - peak=h; + peak_y = h; } lcdDrawSolidVerticalLine(i, LCD_H - h, h); } - lcdDrawText(1,10, "F:", 0); - lcdDrawNumber(lcdLastRightPos, 10, reusableBuffer.spectrum.fq/10000000,PREC2); - lcdDrawText(lcdLastRightPos, 10, "GHz", 0); - lcdDrawText(1,10+FH, "S:", 0); - lcdDrawNumber(lcdLastRightPos, 10+FH, reusableBuffer.spectrum.span/1000000, 0); - lcdDrawText(lcdLastRightPos, 10+FH, "MHz", 0); + lcdDrawText(1, 10, "F:", 0); + lcdDrawNumber(lcdLastRightPos + 2, 10, reusableBuffer.spectrum.fq/10000000,PREC2); + lcdDrawText(lcdLastRightPos + 2, 10, "GHz", 0); - lcdDrawNumber(min(int(100), (int)peak_x), max((int) 0 , (int)(LCD_H-peak-FH)), ((reusableBuffer.spectrum.fq - reusableBuffer.spectrum.span/2) + peak_x * (reusableBuffer.spectrum.span / 128)) / 10000000,TINSIZE|PREC2); - lcdDrawText(lcdLastRightPos, max((int) 0 , (int)(LCD_H-peak-FH)), "GHz", TINSIZE); + lcdDrawText(1, 10+FH, "S:", 0); + lcdDrawNumber(lcdLastRightPos + 2, 10+FH, reusableBuffer.spectrum.span/1000000, 0); + lcdDrawText(lcdLastRightPos + 2, 10+FH, "MHz", 0); + + int8_t y = max(FH, LCD_H - peak_y - FH); + lcdDrawNumber(min(100, peak_x), y, ((reusableBuffer.spectrum.fq - reusableBuffer.spectrum.span / 2) + peak_x * (reusableBuffer.spectrum.span / 128)) / 1000000, TINSIZE); + lcdDrawText(lcdLastRightPos, y, "M", TINSIZE); } diff --git a/radio/src/pulses/pxx2.cpp b/radio/src/pulses/pxx2.cpp index e75c339e5..0c3188828 100644 --- a/radio/src/pulses/pxx2.cpp +++ b/radio/src/pulses/pxx2.cpp @@ -105,22 +105,13 @@ bool Pxx2Pulses::setupSpectrumAnalyser(uint8_t module) Pxx2Transport::addByte(0x00); 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); + Pxx2Transport::addWord(reusableBuffer.spectrum.fq); 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); + Pxx2Transport::addWord(reusableBuffer.spectrum.span); 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); + Pxx2Transport::addWord(reusableBuffer.spectrum.step); return true; } diff --git a/radio/src/pulses/pxx2.h b/radio/src/pulses/pxx2.h index 87a831a3a..44c5d103b 100644 --- a/radio/src/pulses/pxx2.h +++ b/radio/src/pulses/pxx2.h @@ -111,6 +111,14 @@ class SportCrcMixin { class Pxx2Transport: public DataBuffer, public PxxCrcMixin { protected: + void addWord(uint32_t word) + { + addByte(word); + addByte(word >> 8); + addByte(word >> 16); + addByte(word >> 24); + } + void addByte(uint8_t byte) { PxxCrcMixin::addToCrc(byte);