Added support for a 16-char display to be received from the IOP, with a
selectable timeout. Verified the basics of it working. Subsequently updated with better timeout code. This compiles, but has not been tested.
This commit is contained in:
parent
5a6c8308d3
commit
bbf883d3c5
@ -73,8 +73,8 @@ void iopSendMode(char cw_mode, char is_usb, char digi_mode, char is_test)
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsigned int skipTimeCount = 0;
|
unsigned int skipTimeCount = 0;
|
||||||
byte CAT_BUFF[5];
|
byte CAT_BUFF[34];
|
||||||
byte CAT_SNDBUFF[5];
|
byte CAT_SNDBUFF[34];
|
||||||
|
|
||||||
void SendCatData(byte sendCount)
|
void SendCatData(byte sendCount)
|
||||||
{
|
{
|
||||||
@ -812,6 +812,7 @@ byte rxBufferCheckCount = 0;
|
|||||||
byte isProcessCheck_Cat = 0;
|
byte isProcessCheck_Cat = 0;
|
||||||
|
|
||||||
char iopStatusWindow[4] = " "; // may need to move this if it's not visible to ubitx_lcd_1602
|
char iopStatusWindow[4] = " "; // may need to move this if it's not visible to ubitx_lcd_1602
|
||||||
|
char iopMenuDisplay[17] = " ";
|
||||||
|
|
||||||
// KC4UPR - these are used to delay the display of the Smeter, if the
|
// 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.
|
// IOP status has recently been displayed, to give time to see it.
|
||||||
@ -819,6 +820,8 @@ char iopStatusWindow[4] = " "; // may need to move this if it's not visible t
|
|||||||
#define SMETER_DELAY_TIME 5000
|
#define SMETER_DELAY_TIME 5000
|
||||||
bool displaySmeter = true;
|
bool displaySmeter = true;
|
||||||
int delaySmeter;
|
int delaySmeter;
|
||||||
|
int delayTopLine = 0;
|
||||||
|
int stateTopLine = 0;
|
||||||
|
|
||||||
//fromType normal : 0, TX : 1, CW_STRAIGHT : 2, CW_PADDLE : 3, CW_AUTOMODE : 4
|
//fromType normal : 0, TX : 1, CW_STRAIGHT : 2, CW_PADDLE : 3, CW_AUTOMODE : 4
|
||||||
//if cw mode, no delay
|
//if cw mode, no delay
|
||||||
@ -865,16 +868,13 @@ void Check_Cat(byte fromType)
|
|||||||
|
|
||||||
//Arived CAT DATA
|
//Arived CAT DATA
|
||||||
// KC4UPR - IOP update - 6 characters; first character determines mode (CAT or IOP)
|
// KC4UPR - IOP update - 6 characters; first character determines mode (CAT or IOP)
|
||||||
for (i = 0; i < 6; i++) { //5; i++)
|
// Will adjust based on readlength
|
||||||
if (i == 0) {
|
|
||||||
byte first = Serial.read();
|
byte first = Serial.read();
|
||||||
readPrefix = byteToPrefix(first);
|
readPrefix = byteToPrefix(first);
|
||||||
readLength = byteToLength(first);
|
readLength = byteToLength(first);
|
||||||
} else {
|
for (int i = 0; i < readLength; i++) {
|
||||||
CAT_BUFF[i-1] = Serial.read();
|
CAT_BUFF[i] = Serial.read();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// KC4UPR: I don't understand why this is here or how/when it will ever get called, but I will leave
|
// KC4UPR: I don't understand why this is here or how/when it will ever get called, but I will leave
|
||||||
// it alone for now.
|
// it alone for now.
|
||||||
@ -884,7 +884,7 @@ void Check_Cat(byte fromType)
|
|||||||
isProcessCheck_Cat = 1;
|
isProcessCheck_Cat = 1;
|
||||||
|
|
||||||
if (readPrefix == IOP_PREFIX) {
|
if (readPrefix == IOP_PREFIX) {
|
||||||
recvIOPMessage(msg, CAT_BUFF, 5); // not super robust... if IOP ever sends more (or less) than a 5 (6) byte message
|
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...
|
// following assumes it's a status message, 4 chars (including trailing null, which I'm ignoring...
|
||||||
switch(msg.id) {
|
switch(msg.id) {
|
||||||
case IOP_SSB_STATUS_MSG:
|
case IOP_SSB_STATUS_MSG:
|
||||||
@ -901,6 +901,20 @@ void Check_Cat(byte fromType)
|
|||||||
case IOP_MODE_REQUEST:
|
case IOP_MODE_REQUEST:
|
||||||
iopSendMode(cwMode, isUSB, digiMode, isTest);
|
iopSendMode(cwMode, isUSB, digiMode, isTest);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IOP_MENU_DISPLAY_MSG:
|
||||||
|
for (int i = 0; i < 16; i++) {
|
||||||
|
iopMenuDisplay[i] = msg.data[i+1];
|
||||||
|
}
|
||||||
|
if (int8_t(msg.data[0]) == 0) {
|
||||||
|
stateTopLine = 4;
|
||||||
|
} else if (int8_t(msg.data[0]) < 0) {
|
||||||
|
stateTopLine = 0;
|
||||||
|
} else { // > 0
|
||||||
|
delayTopLine = millis() + (int8_t(msg.data[0]) * 1000);
|
||||||
|
stateTopLine = 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (readPrefix == CAT_PREFIX) {
|
} else if (readPrefix == CAT_PREFIX) {
|
||||||
|
@ -530,6 +530,25 @@ int freqScrollPosition = 0;
|
|||||||
void updateLine2Buffer(char displayType)
|
void updateLine2Buffer(char displayType)
|
||||||
{
|
{
|
||||||
unsigned long tmpFreq = 0;
|
unsigned long tmpFreq = 0;
|
||||||
|
|
||||||
|
if ((stateTopLine == 2) || (stateTopLine == 4)) {
|
||||||
|
strcpy(line2Buffer, iopMenuDisplay);
|
||||||
|
if (stateTopLine == 4) {
|
||||||
|
stateTopLine = 3;
|
||||||
|
} else {
|
||||||
|
stateTopLine = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (stateTopLine == 3) {
|
||||||
|
return;
|
||||||
|
} else if (stateTopLine == 1) {
|
||||||
|
if (delayTopLine < millis()) {
|
||||||
|
stateTopLine = 0;
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (ritOn)
|
if (ritOn)
|
||||||
{
|
{
|
||||||
strcpy(line2Buffer, "RitTX:");
|
strcpy(line2Buffer, "RitTX:");
|
||||||
@ -738,7 +757,7 @@ void idle_process()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
//if line2DisplayStatus == 0 <-- this condition is clear Line, you can display any message
|
//if line2DisplayStatus == 0 <-- this condition is clear Line, you can display any message
|
||||||
if (line2DisplayStatus == 0 || (((displayOption1 & 0x04) == 0x04) && line2DisplayStatus == 2)) {
|
if (line2DisplayStatus == 0 || (((displayOption1 & 0x04) == 0x04) && line2DisplayStatus == 2) || stateTopLine > 0) {
|
||||||
if (checkCount++ > 1)
|
if (checkCount++ > 1)
|
||||||
{
|
{
|
||||||
updateLine2Buffer(0); //call by scheduler
|
updateLine2Buffer(0); //call by scheduler
|
||||||
|
Loading…
Reference in New Issue
Block a user