Further functioning, but with bugs. Top line is working, but clear

there is messed up interplay between between how IOP updates its menu
and sends it to the Raduino, and how the Raduino updates its display.
Needs to be worked on.

Issues:
- After deselecting the I/O menu (i.e. should go back to normal Raduino
top line), it never does.  But the I/O menu is frozen.  So clearly the
top line never gets updated again by the Raduino.  Need to understand
the logic it uses to actually refresh the display.
- Random garbage (black boxes) on the top line--intermittently.
This commit is contained in:
Rob French 2020-06-06 22:25:11 -05:00
parent bbf883d3c5
commit 10926b54ec
2 changed files with 12 additions and 8 deletions

View File

@ -817,9 +817,9 @@ char iopMenuDisplay[17] = " ";
// KC4UPR - these are used to delay the display of the Smeter, if the
// IOP status has recently been displayed, to give time to see it.
// Put these here because of how Arduino IDE puts .ino files together.
#define SMETER_DELAY_TIME 5000
bool displaySmeter = true;
int delaySmeter;
//#define SMETER_DELAY_TIME 5000
//bool displaySmeter = true;
//int delaySmeter;
int delayTopLine = 0;
int stateTopLine = 0;
@ -887,7 +887,7 @@ void Check_Cat(byte fromType)
recvIOPMessage(msg, CAT_BUFF, readLength); // not super robust... if IOP ever sends more (or less) than a 5 (6) byte message
// following assumes it's a status message, 4 chars (including trailing null, which I'm ignoring...
switch(msg.id) {
case IOP_SSB_STATUS_MSG:
/*case IOP_SSB_STATUS_MSG:
case IOP_DGT_STATUS_MSG:
case IOP_CW_STATUS_MSG:
case IOP_TEST_STATUS_MSG:
@ -896,7 +896,7 @@ void Check_Cat(byte fromType)
iopStatusWindow[2] = msg.data[2];
displaySmeter = false;
delaySmeter = millis() + SMETER_DELAY_TIME;
break;
break;*/
case IOP_MODE_REQUEST:
iopSendMode(cwMode, isUSB, digiMode, isTest);

View File

@ -767,14 +767,18 @@ void idle_process()
}
}
if (!displaySmeter) {
if (stateTopLine > 0) {
return;
}
/*if (!displaySmeter) {
if (delaySmeter < millis()) {
displaySmeter = true;
}
}
}*/
//S-Meter Display
if (((displayOption1 & 0x08) == 0x08 && (sdrModeOn == 0)) && (++checkCountSMeter > SMeterLatency) && displaySmeter)
if (((displayOption1 & 0x08) == 0x08 && (sdrModeOn == 0)) && (++checkCountSMeter > SMeterLatency))
{
int newSMeter;