Some interface improvements. The filter bars now work, and the characters for the filter values are now better. This also improves the performance of navigating the interface. Also, added a basic volume display.
This commit is contained in:
parent
0d13c419cc
commit
3bdb147fdf
4 changed files with 241 additions and 32 deletions
Binary file not shown.
Before Width: | Height: | Size: 875 B After Width: | Height: | Size: 2.2 KiB |
|
@ -31,3 +31,16 @@ extern const unsigned short bitmapWebSdrGradient[];
|
|||
extern const unsigned short bitmapFilter[];
|
||||
extern const unsigned short bitmapHadLogo[];
|
||||
extern const unsigned short bitmapSMeter[];
|
||||
|
||||
const unsigned short oneSmall[];
|
||||
const unsigned short twoSmall[];
|
||||
const unsigned short threeSmall[];
|
||||
const unsigned short fourSmall[];
|
||||
const unsigned short fiveSmall[];
|
||||
const unsigned short sixSmall[];
|
||||
const unsigned short sevenSmall[];
|
||||
const unsigned short eightSmall[];
|
||||
const unsigned short nineSmall[];
|
||||
const unsigned short zeroSmall[];
|
||||
const unsigned short hyphenSmall[];
|
||||
const unsigned short tildeSmall[];
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
#include "images.h"
|
||||
|
||||
//This site seems to generate output that is correct
|
||||
// http://www.henningkarlsen.com/electronics/t_imageconverter565.php
|
||||
//http://www.rinkydinkelectronics.com/t_imageconverter565.php
|
||||
//BUT it will round down to the nearest 16 words, so you need to pad the image, and then delete the excess!!
|
||||
|
||||
//I don't remember what font I used. Something that was on my work computer,
|
||||
//and I don't think there are too many extra fonts installed on it. I'll figure it out later.
|
||||
//Looks like it's Aerial Black. The mode icon's are 9pt.
|
||||
|
||||
//Also, I wonder if I want to encode the height and width in the first two bytes or something? That seems like that's not a bad idea.
|
||||
|
||||
//86x20
|
||||
const const unsigned short psdrLogo[]={
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0336, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) pixels
|
||||
|
@ -752,3 +758,88 @@ const unsigned short bitmapSMeter[]={
|
|||
0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0x7BEF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x05F0 (1520) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0x7BEF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0600 (1536) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x7BEF, 0x0000, 0xFFFF, 0xFFFF, 0x7BEF};
|
||||
|
||||
//8x9
|
||||
const unsigned short oneSmall[] ={
|
||||
0x0000, 0x0000, 0x0000, 0x0418, 0xFFFF, 0xFFF8, 0x8000, 0x0000, 0x0000, 0x0000, 0x863F, 0xFFFF, 0xFFFF, 0xFFF8, 0x8000, 0x0000, // 0x0010 (16) pixels
|
||||
0x0010, 0xC7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFF8, 0x8000, 0x0000, 0x0010, 0xC7FF, 0xC400, 0x553C, 0xFFFF, 0xFFF8, 0x8000, 0x0000, // 0x0020 (32) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x553C, 0xFFFF, 0xFFF8, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x553C, 0xFFFF, 0xFFF8, 0x8000, 0x0000, // 0x0030 (48) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x553C, 0xFFFF, 0xFFF8, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x553C, 0xFFFF, 0xFFF8, 0x8000, 0x0000, // 0x0040 (64) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x553C, 0xFFFF, 0xFFF8, 0x8000, 0x0000};
|
||||
|
||||
const unsigned short twoSmall[] ={
|
||||
0x0000, 0x0418, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC400, 0x0000, 0x02B4, 0xE7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFC, 0xA2A0, // 0x0010 (16) pixels
|
||||
0x553C, 0xFFFF, 0xFFF8, 0x8000, 0x0010, 0xC7FF, 0xFFFF, 0xE52A, 0x0000, 0x0000, 0x0000, 0x0000, 0x02B4, 0xE7FF, 0xFFFF, 0xC400, // 0x0020 (32) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x02B4, 0xE7FF, 0xFFFF, 0xFF14, 0x5000, 0x0000, 0x0000, 0x553C, 0xFFFF, 0xFFFF, 0xFE30, 0x0000, 0x0000, // 0x0030 (48) pixels
|
||||
0x0000, 0x553C, 0xFFFF, 0xFFFF, 0xC400, 0x0000, 0x0000, 0x0000, 0x02B4, 0xE7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE52A, // 0x0040 (64) pixels
|
||||
0x863F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE52A};
|
||||
|
||||
const unsigned short threeSmall[] ={
|
||||
0x0000, 0x02B4, 0xE7FF, 0xFFFF, 0xFFFF, 0xFFF8, 0x8000, 0x0000, 0x0010, 0xC7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF14, 0x5000, // 0x0010 (16) pixels
|
||||
0x0418, 0xFFFF, 0xFFF8, 0x8000, 0x0418, 0xFFFF, 0xFFF8, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x553C, 0xFFFF, 0xFF14, 0x5000, // 0x0020 (32) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x863F, 0xFFFF, 0xFFFC, 0xA2A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0xC7FF, 0xFFFF, 0xC400, // 0x0030 (48) pixels
|
||||
0x553C, 0xFFFF, 0xFFF8, 0x8000, 0x0010, 0xC7FF, 0xFFFF, 0xE52A, 0x0010, 0xC7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFC, 0xA2A0, // 0x0040 (64) pixels
|
||||
0x0000, 0x02B4, 0xE7FF, 0xFFFF, 0xFFFF, 0xFFFC, 0xA2A0, 0x0000};
|
||||
|
||||
const unsigned short fourSmall[] ={
|
||||
0x0000, 0x0000, 0x0000, 0x000A, 0xA71F, 0xFFFF, 0xFE30, 0x0000, 0x0000, 0x0000, 0x0000, 0x863F, 0xFFFF, 0xFFFF, 0xFE30, 0x0000, // 0x0010 (16) pixels
|
||||
0x0000, 0x0000, 0x553C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFE30, 0x0000, 0x0000, 0x0418, 0xFFFF, 0xFFF8, 0x8418, 0xFFFF, 0xFE30, 0x0000, // 0x0020 (32) pixels
|
||||
0x0418, 0xFFFF, 0xFFFC, 0xA2A0, 0x0418, 0xFFFF, 0xFE30, 0x0000, 0xA71F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF14, // 0x0030 (48) pixels
|
||||
0xA71F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF14, 0x0000, 0x0000, 0x0000, 0x0000, 0x0418, 0xFFFF, 0xFE30, 0x0000, // 0x0040 (64) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0418, 0xFFFF, 0xFE30, 0x0000};
|
||||
|
||||
const unsigned short fiveSmall[] ={
|
||||
0x0000, 0x863F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFC, 0xA2A0, 0x000A, 0xA71F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFC, 0xA2A0, // 0x0010 (16) pixels
|
||||
0x0010, 0xC7FF, 0xFFFC, 0xA2A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0xC7FF, 0xFFFC, 0xE71F, 0xFFFF, 0xFFFF, 0xC400, 0x0000, // 0x0020 (32) pixels
|
||||
0x02B4, 0xE7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0xC7FF, 0xFFFF, 0xE52A, // 0x0030 (48) pixels
|
||||
0x553C, 0xFFFF, 0xFFF8, 0x8000, 0x0010, 0xC7FF, 0xFFFF, 0xE52A, 0x02B4, 0xE7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFC, 0xA2A0, // 0x0040 (64) pixels
|
||||
0x0000, 0x02B4, 0xE7FF, 0xFFFF, 0xFFFF, 0xFFFC, 0xA2A0, 0x0000};
|
||||
|
||||
const unsigned short sixSmall[] ={
|
||||
0x0000, 0x000A, 0xA71F, 0xFFFF, 0xFFFF, 0xFFFF, 0xC400, 0x0000, 0x000A, 0xA71F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFC, 0xA2A0, // 0x0010 (16) pixels
|
||||
0x0418, 0xFFFF, 0xFFFF, 0xC400, 0x0000, 0x0000, 0x0000, 0x0000, 0x553C, 0xFFFF, 0xFFF8, 0xA53C, 0xFFFF, 0xFFFF, 0xC400, 0x0000, // 0x0020 (32) pixels
|
||||
0x553C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFC, 0xA2A0, 0x553C, 0xFFFF, 0xFFFC, 0xA2A0, 0x000A, 0xA71F, 0xFFFF, 0xE52A, // 0x0030 (48) pixels
|
||||
0x0418, 0xFFFF, 0xFFFC, 0xA2A0, 0x000A, 0xA71F, 0xFFFF, 0xE52A, 0x000A, 0xA71F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFC, 0xA2A0, // 0x0040 (64) pixels
|
||||
0x0000, 0x000A, 0xA71F, 0xFFFF, 0xFFFF, 0xFFFF, 0xC400, 0x0000};
|
||||
|
||||
const unsigned short sevenSmall[] ={
|
||||
0x553C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE52A, 0x553C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE52A, // 0x0010 (16) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x553C, 0xFFFF, 0xFE30, 0x0000, 0x0000, 0x0000, 0x0000, 0x02B4, 0xE7FF, 0xFFF8, 0x8000, 0x0000, // 0x0020 (32) pixels
|
||||
0x0000, 0x0000, 0x000A, 0xA71F, 0xFFFF, 0xE52A, 0x0000, 0x0000, 0x0000, 0x0000, 0x02B4, 0xE7FF, 0xFFF8, 0x8000, 0x0000, 0x0000, // 0x0030 (48) pixels
|
||||
0x0000, 0x0000, 0x553C, 0xFFFF, 0xFF14, 0x5000, 0x0000, 0x0000, 0x0000, 0x000A, 0xA71F, 0xFFFF, 0xE52A, 0x0000, 0x0000, 0x0000, // 0x0040 (64) pixels
|
||||
0x0000, 0x0010, 0xC7FF, 0xFFFF, 0xC400, 0x0000, 0x0000, 0x0000};
|
||||
|
||||
const unsigned short eightSmall[] ={
|
||||
0x0000, 0x02B4, 0xE7FF, 0xFFFF, 0xFFFF, 0xFFFC, 0xA2A0, 0x0000, 0x02B4, 0xE7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFC, 0xA2A0, // 0x0010 (16) pixels
|
||||
0x02B4, 0xE7FF, 0xFFF8, 0x8000, 0x0010, 0xC7FF, 0xFFFC, 0xA2A0, 0x000A, 0xA71F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFE30, 0x0000, // 0x0020 (32) pixels
|
||||
0x000A, 0xA71F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF14, 0x5000, 0x553C, 0xFFFF, 0xFFF8, 0x8000, 0x0010, 0xC7FF, 0xFFFF, 0xC400, // 0x0030 (48) pixels
|
||||
0x553C, 0xFFFF, 0xFFF8, 0x8000, 0x0010, 0xC7FF, 0xFFFF, 0xE52A, 0x02B4, 0xE7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFC, 0xA2A0, // 0x0040 (64) pixels
|
||||
0x0000, 0x0418, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC400, 0x0000};
|
||||
|
||||
const unsigned short nineSmall[] ={
|
||||
0x0000, 0x0418, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF14, 0x5000, 0x0000, 0x02B4, 0xE7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF14, 0x5000, // 0x0010 (16) pixels
|
||||
0x553C, 0xFFFF, 0xFF14, 0x5000, 0x02B4, 0xE7FF, 0xFFFF, 0xC400, 0x553C, 0xFFFF, 0xFF14, 0x5000, 0x02B4, 0xE7FF, 0xFFFF, 0xE52A, // 0x0020 (32) pixels
|
||||
0x02B4, 0xE7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE52A, 0x0000, 0x0418, 0xFFFF, 0xFFFF, 0xC410, 0xC7FF, 0xFFFF, 0xE52A, // 0x0030 (48) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0418, 0xFFFF, 0xFFFF, 0xC400, 0x02B4, 0xE7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF14, 0x5000, // 0x0040 (64) pixels
|
||||
0x0000, 0x0418, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF14, 0x5000, 0x0000};
|
||||
|
||||
const unsigned short zeroSmall[] ={
|
||||
0x0000, 0x000A, 0xA71F, 0xFFFF, 0xFFFF, 0xFF14, 0x5000, 0x0000, 0x0010, 0xC7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF14, 0x5000, // 0x0010 (16) pixels
|
||||
0x0418, 0xFFFF, 0xFFFC, 0xA2A0, 0x02B4, 0xE7FF, 0xFFFF, 0xC400, 0x553C, 0xFFFF, 0xFF14, 0x5000, 0x0010, 0xC7FF, 0xFFFF, 0xE52A, // 0x0020 (32) pixels
|
||||
0x553C, 0xFFFF, 0xFF14, 0x5000, 0x000A, 0xA71F, 0xFFFF, 0xE52A, 0x553C, 0xFFFF, 0xFFF8, 0x8000, 0x000A, 0xA71F, 0xFFFF, 0xE52A, // 0x0030 (48) pixels
|
||||
0x0418, 0xFFFF, 0xFFFC, 0xA2A0, 0x02B4, 0xE7FF, 0xFFFF, 0xC400, 0x000A, 0xA71F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF14, 0x5000, // 0x0040 (64) pixels
|
||||
0x0000, 0x000A, 0xA71F, 0xFFFF, 0xFFFF, 0xFF14, 0x5000, 0x0000};
|
||||
|
||||
const unsigned short hyphenSmall[] ={
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0010 (16) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0020 (32) pixels
|
||||
0x0000, 0x0000, 0xA71F, 0xFFFF, 0xFFFF, 0xFF14, 0x5000, 0x0000, 0x0000, 0x0000, 0xA71F, 0xFFFF, 0xFFFF, 0xFF14, 0x5000, 0x0000, // 0x0030 (48) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0040 (64) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000};
|
||||
|
||||
const unsigned short tildeSmall[] ={
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0010 (16) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000A, 0xA71F, 0xFFFF, 0xFFFC, 0xA2A0, 0x0000, 0x0418, 0xC400, // 0x0020 (32) pixels
|
||||
0x553C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC400, 0x5538, 0xA2A0, 0x0000, 0x02B4, 0xE7FF, 0xFFFF, 0xFE30, 0x0000, // 0x0030 (48) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0040 (64) pixels
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000};
|
||||
|
|
|
@ -904,39 +904,54 @@ void drawSMeter()
|
|||
lastSMeterBarWidth = width;
|
||||
}
|
||||
|
||||
enum menuItems
|
||||
{
|
||||
oneMhzPlace = 0,
|
||||
hundredKhzPlace = 1,
|
||||
tenKhzPlace = 2,
|
||||
oneKhzPlace = 3,
|
||||
hundredHzPlace = 4,
|
||||
tenHzPlace = 5,
|
||||
oneHzPlace = 6,
|
||||
filterLower = 7,
|
||||
filterUpper = 8,
|
||||
modeMenu = 9,
|
||||
volumeMenu = 10,
|
||||
};
|
||||
|
||||
void updateMenu()
|
||||
{
|
||||
switch(menuPos)
|
||||
{
|
||||
case 0: //1,000,000 place
|
||||
case oneMhzPlace:
|
||||
frequencyDialMultiplier = 1000000;
|
||||
updateVfo();
|
||||
break;
|
||||
case 1: //100,000 place
|
||||
case hundredKhzPlace:
|
||||
frequencyDialMultiplier = 100000;
|
||||
updateVfo();
|
||||
break;
|
||||
case 2: //10,000 place
|
||||
case tenKhzPlace:
|
||||
frequencyDialMultiplier = 10000;
|
||||
updateVfo();
|
||||
break;
|
||||
case 3: //1,000 place
|
||||
case oneKhzPlace:
|
||||
frequencyDialMultiplier = 1000;
|
||||
updateVfo();
|
||||
break;
|
||||
case 4: //100 place
|
||||
case hundredHzPlace:
|
||||
frequencyDialMultiplier = 100;
|
||||
updateVfo();
|
||||
break;
|
||||
case 5: //10 place
|
||||
case tenHzPlace:
|
||||
frequencyDialMultiplier = 10;
|
||||
updateVfo();
|
||||
break;
|
||||
case 6: //1 place
|
||||
case oneHzPlace:
|
||||
frequencyDialMultiplier = 1;
|
||||
updateVfo();
|
||||
break;
|
||||
case 7: //Filter Lower Limit
|
||||
case filterLower:
|
||||
encoderPos = getPos();
|
||||
if(encoderPos != encoderLastPos)
|
||||
{
|
||||
|
@ -948,7 +963,7 @@ void updateMenu()
|
|||
populateCoeficients(filterUpperLimit - filterLowerLimit, mode, filterLowerLimit);
|
||||
}
|
||||
break;
|
||||
case 8: //Filter Upper
|
||||
case filterUpper:
|
||||
encoderPos = getPos();
|
||||
if(encoderPos != encoderLastPos)
|
||||
{
|
||||
|
@ -960,7 +975,7 @@ void updateMenu()
|
|||
populateCoeficients(filterUpperLimit - filterLowerLimit, mode, filterLowerLimit);
|
||||
}
|
||||
break;
|
||||
case 9: //Mode
|
||||
case modeMenu:
|
||||
encoderPos = getPos();
|
||||
if(encoderPos != encoderLastPos)
|
||||
{
|
||||
|
@ -972,7 +987,7 @@ void updateMenu()
|
|||
//Right now all this does is turns the AM decoder on and off, I guess.
|
||||
}
|
||||
break;
|
||||
case 10: //Volume
|
||||
case volumeMenu:
|
||||
encoderPos = getPos();
|
||||
if(encoderPos != encoderLastPos)
|
||||
{
|
||||
|
@ -1010,6 +1025,12 @@ float calculateRmsOfSample(float* samples, int length)
|
|||
//TODO: Should I make a menuItem struct? Would that be helpful? The menus are a pain right now...
|
||||
uint8_t redItems[30];
|
||||
|
||||
enum modes
|
||||
{
|
||||
LSB = 0,
|
||||
USB = 1,
|
||||
AM = 2
|
||||
};
|
||||
|
||||
void updateDisplay(uint8_t force)
|
||||
{
|
||||
|
@ -1017,6 +1038,7 @@ void updateDisplay(uint8_t force)
|
|||
static char freqChar[14];
|
||||
static char lastFreqChar[] = {'$','$','$','$','$','$','$','$','$','$','$','$','$','$',};
|
||||
|
||||
//Draw elements that don't normally change. Static icons, etc.
|
||||
if(force)
|
||||
{
|
||||
//Adafruit_GFX_drawColorBitmap(180, 2, psdrLogo, 86,20, MASKWHITE);
|
||||
|
@ -1026,7 +1048,7 @@ void updateDisplay(uint8_t force)
|
|||
drawNumber('.', freqHOffset + 16*2, freqVOffset + 0, MASKWHITE);
|
||||
drawNumber('.', freqHOffset + 16*6, freqVOffset + 0, MASKWHITE);
|
||||
Adafruit_GFX_drawColorBitmap(142, 162, bitmapSMeter, 155, 10, MASKWHITE);
|
||||
Adafruit_GFX_drawColorBitmap(320 - 45 - 2, 240 - 46 - 2, bitmapHadLogo, 45, 46, MASKWHITE);
|
||||
//Adafruit_GFX_drawColorBitmap(320 - 45 - 2, 240 - 46 - 2, bitmapHadLogo, 45, 46, MASKWHITE);
|
||||
}
|
||||
|
||||
sprintf(&freqChar, "%8d", vfoAFrequency);
|
||||
|
@ -1068,55 +1090,93 @@ void updateDisplay(uint8_t force)
|
|||
vfoALastFreq = vfoAFrequency;
|
||||
strcpy(lastFreqChar, freqChar);
|
||||
|
||||
if(filterLowerLimit != filterLastLowerLimit || force || (menuPos != menuLastPos && (menuPos == 7 || menuLastPos == 7)))
|
||||
int redrawFilterBar = 0;
|
||||
|
||||
if(mode != modeLast || filterLowerLimit != filterLastLowerLimit || force || (menuPos != menuLastPos && (menuPos == 7 || menuLastPos == 7)))
|
||||
{
|
||||
sprintf(&freqChar, "%4d", filterLowerLimit * 40);
|
||||
Adafruit_GFX_setTextSize(2);
|
||||
Adafruit_GFX_setTextColor(menuPos == 7 ? ILI9340_RED : ILI9340_WHITE, ILI9340_BLACK);
|
||||
Adafruit_GFX_setCursor(200, 135 );
|
||||
//Adafruit_GFX_setTextSize(2);
|
||||
//Adafruit_GFX_setTextColor(menuPos == 7 ? ILI9340_RED : ILI9340_WHITE, ILI9340_BLACK);
|
||||
//Adafruit_GFX_setCursor(200, 135 );
|
||||
int i;
|
||||
for(i = 0; i < 4; i++)
|
||||
{
|
||||
Adafruit_GFX_write(freqChar[i]);
|
||||
//Adafruit_GFX_write(freqChar[i]);
|
||||
drawNumberSmall(freqChar[i], 205 + (i * 9), 137, menuPos == 7 ? MASKRED : MASKWHITE);
|
||||
}
|
||||
//Adafruit_GFX_setTextSize(3);
|
||||
|
||||
Adafruit_GFX_fillRect(121, 120, 3, 100 , ILI9340_BLACK);
|
||||
Adafruit_GFX_fillRect(121, filterLowerLimit/2 + 120, 3, (filterUpperLimit - filterLowerLimit)/2, ILI9340_WHITE);
|
||||
|
||||
redrawFilterBar = 1;
|
||||
filterLastLowerLimit = filterLowerLimit;
|
||||
}
|
||||
|
||||
if(filterUpperLimit != filterLastUpperLimit || force || (menuPos != menuLastPos && (menuPos == 8 || menuLastPos == 8)))
|
||||
if(mode != modeLast || filterUpperLimit != filterLastUpperLimit || force || (menuPos != menuLastPos && (menuPos == 8 || menuLastPos == 8)))
|
||||
{
|
||||
sprintf(&freqChar, "%-4d", filterUpperLimit * 40);
|
||||
Adafruit_GFX_setTextSize(2);
|
||||
Adafruit_GFX_setTextColor(menuPos == 8 ? ILI9340_RED : ILI9340_WHITE, ILI9340_BLACK);
|
||||
Adafruit_GFX_setCursor(265, 135 );
|
||||
//Adafruit_GFX_setTextSize(2);
|
||||
//Adafruit_GFX_setTextColor(menuPos == 8 ? ILI9340_RED : ILI9340_WHITE, ILI9340_BLACK);
|
||||
//Adafruit_GFX_setCursor(265, 135 );
|
||||
int i;
|
||||
for(i = 0; i < 4; i++)
|
||||
{
|
||||
Adafruit_GFX_write(freqChar[i]);
|
||||
//Adafruit_GFX_write(freqChar[i]);
|
||||
drawNumberSmall(freqChar[i], 250 + (i * 9), 137, menuPos == 8 ? MASKRED : MASKWHITE);
|
||||
}
|
||||
//Adafruit_GFX_setTextSize(3);
|
||||
|
||||
Adafruit_GFX_fillRect(121, 120, 3, 100 , ILI9340_BLACK);
|
||||
Adafruit_GFX_fillRect(121, filterLowerLimit/2 + 120, 3, (filterUpperLimit - filterLowerLimit)/2, ILI9340_WHITE);
|
||||
|
||||
redrawFilterBar = 1;
|
||||
filterLastUpperLimit = filterUpperLimit;
|
||||
}
|
||||
|
||||
|
||||
if(afGainLast != afGain || force || (menuPos != menuLastPos && (menuPos == volumeMenu || menuLastPos == volumeMenu)))
|
||||
{
|
||||
sprintf(&freqChar, "%-4f", afGain * 100);
|
||||
int i;
|
||||
for(i = 0; i < 4; i++)
|
||||
{
|
||||
//Adafruit_GFX_write(freqChar[i]);
|
||||
drawNumberSmall(freqChar[i], 250 + (i * 9), 10, menuPos == volumeMenu ? MASKRED : MASKWHITE);
|
||||
}
|
||||
|
||||
afGainLast = afGain;
|
||||
}
|
||||
|
||||
//I think I want to make this more like the Draw S Meter, where it only draws the parts that have changed. Also, I think I want to do gray pixels when half
|
||||
//way between values.
|
||||
if(redrawFilterBar)
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case LSB:
|
||||
Adafruit_GFX_fillRect(121, 0, 3, 240 , ILI9340_BLACK); //erase the old bar
|
||||
Adafruit_GFX_fillRect(121, filterLowerLimit/2 + 120, 3, (filterUpperLimit/2 - filterLowerLimit/2), ILI9340_WHITE); //draw the new one
|
||||
break;
|
||||
case USB:
|
||||
Adafruit_GFX_fillRect(121, 0, 3, 240 , ILI9340_BLACK);
|
||||
Adafruit_GFX_fillRect(121, 120 - (filterUpperLimit/2), 3, (filterUpperLimit/2 - filterLowerLimit/2), ILI9340_WHITE);
|
||||
break;
|
||||
case AM:
|
||||
Adafruit_GFX_fillRect(121, 0, 3, 240 , ILI9340_BLACK);
|
||||
Adafruit_GFX_fillRect(121, filterLowerLimit/2 + 120, 3, (filterUpperLimit/2 - filterLowerLimit/2), ILI9340_WHITE);
|
||||
Adafruit_GFX_fillRect(121, 120 - (filterUpperLimit/2), 3, (filterUpperLimit/2 - filterLowerLimit/2), ILI9340_WHITE);
|
||||
break;
|
||||
}
|
||||
redrawFilterBar = 0;
|
||||
}
|
||||
|
||||
|
||||
if(mode != modeLast || force || (menuPos != menuLastPos && (menuPos == 9 || menuLastPos == 9)))
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case 0: //LSB
|
||||
case LSB:
|
||||
Adafruit_GFX_drawColorBitmap(196, 91, bitmapLSB, 28, 9, menuPos == 9 ? MASKRED : MASKWHITE);
|
||||
break;
|
||||
case 1: //USB
|
||||
case USB:
|
||||
Adafruit_GFX_drawColorBitmap(196, 91, bitmapUSB, 28, 9, menuPos == 9 ? MASKRED : MASKWHITE);
|
||||
break;
|
||||
case 2: //AM
|
||||
case AM:
|
||||
Adafruit_GFX_drawColorBitmap(196, 91, bitmapAM, 28, 9, menuPos == 9 ? MASKRED : MASKWHITE);
|
||||
break;
|
||||
}
|
||||
|
@ -1412,6 +1472,51 @@ void drawNumber(char c, uint16_t x, uint16_t y, uint16_t tintMask)
|
|||
}
|
||||
}
|
||||
|
||||
void drawNumberSmall(char c, uint16_t x, uint16_t y, uint16_t tintMask)
|
||||
{
|
||||
switch(c)
|
||||
{
|
||||
case '1':
|
||||
Adafruit_GFX_drawColorBitmap(x, y, oneSmall, 8, 9, tintMask);
|
||||
break;
|
||||
case '2':
|
||||
Adafruit_GFX_drawColorBitmap(x, y, twoSmall, 8, 9, tintMask);
|
||||
break;
|
||||
case '3':
|
||||
Adafruit_GFX_drawColorBitmap(x, y, threeSmall, 8, 9, tintMask);
|
||||
break;
|
||||
case '4':
|
||||
Adafruit_GFX_drawColorBitmap(x, y, fourSmall, 8, 9, tintMask);
|
||||
break;
|
||||
case '5':
|
||||
Adafruit_GFX_drawColorBitmap(x, y, fiveSmall, 8, 9, tintMask);
|
||||
break;
|
||||
case '6':
|
||||
Adafruit_GFX_drawColorBitmap(x, y, sixSmall, 8, 9, tintMask);
|
||||
break;
|
||||
case '7':
|
||||
Adafruit_GFX_drawColorBitmap(x, y, sevenSmall, 8, 9, tintMask);
|
||||
break;
|
||||
case '8':
|
||||
Adafruit_GFX_drawColorBitmap(x, y, eightSmall, 8, 9, tintMask);
|
||||
break;
|
||||
case '9':
|
||||
Adafruit_GFX_drawColorBitmap(x, y, nineSmall, 8, 9, tintMask);
|
||||
break;
|
||||
case '0':
|
||||
Adafruit_GFX_drawColorBitmap(x, y, zeroSmall, 8, 9, tintMask);
|
||||
break;
|
||||
case '-':
|
||||
Adafruit_GFX_drawColorBitmap(x, y, hyphenSmall, 8, 9, tintMask);
|
||||
break;
|
||||
case '~':
|
||||
Adafruit_GFX_drawColorBitmap(x, y, tildeSmall, 8, 9, tintMask);
|
||||
break;
|
||||
default:
|
||||
Adafruit_GFX_fillRect(x, y, 8, 9, ILI9340_BLACK);
|
||||
}
|
||||
}
|
||||
|
||||
//TIM_TimeBaseInitTypeDef timeBaseStructure;
|
||||
//
|
||||
//TIM_OC_InitTypeDef tsConfig;
|
||||
|
|
Loading…
Reference in a new issue