Successful communication between Raduino and IOP. Digi modes working.

Have a high-pitched whine in RX audio, however (IOP problem, not
Raduino).
This commit is contained in:
Rob French
2020-05-08 00:16:59 -05:00
parent 7ba147b06d
commit c8b2110052
5 changed files with 141 additions and 43 deletions

View File

@@ -131,9 +131,9 @@ byte modeToByte(){
if (cwMode == 0)
{
if (isUSB)
return 3;
return 3 + (digiMode > 0 ? 3 + digiMode : 0);
else
return 2;
return 2 + (digiMode > 0 ? 3 + digiMode : 0);
}
else if (cwMode == 1)
{
@@ -149,20 +149,56 @@ byte modeToByte(){
//autoSetModebyFreq : 0
//autoSetModebyFreq : 1, if (modValue is not set, set mode by frequency)
void byteToMode(byte modeValue, byte autoSetModebyFreq){
if (modeValue == 4)
cwMode = 1;
else if (modeValue == 5)
cwMode = 2;
else
{
isUSB = false;
cwMode = 0;
digiMode = 0;
if (autoSetModebyFreq == 1 && (modeValue == 0)) {
isUSB = (frequency > 10000000l) ? true : false;
} else {
switch(modeValue) {
// LSB by default, so we can skip this case
//case 2: // LSB
//break;
case 3: // USB
isUSB = true;
break;
case 4: // CWL
cwMode = 1;
break;
case 5: // CWU
cwMode = 2;
break;
case 6: // DGL
digiMode = 1;
break;
case 7: // DGU
isUSB = true;
digiMode = 1;
break;
}
}
/* if (modeValue == 4) {
cwMode = 1; digiMode = 0;
} else if (modeValue == 5) {
cwMode = 2; digiMode = 0;
} else {
cwMode = 0;
if (modeValue == 3)
isUSB = 1;
if (modeValue == 3) {
isUSB = 1; digiMode = 0;
} else if (modeValue == 6) {
isUSB =
}
else if (autoSetModebyFreq == 1 && (modeValue == 0))
isUSB = (frequency > 10000000l) ? true : false;
else
isUSB = 0;
}
}*/
}
@@ -651,12 +687,19 @@ int getValueByKnob(int valueType, int targetValue, int minKnobValue, int maxKnob
moveDetectStep = 0;
}
strcpy(b, displayTitle);
if (valueType == 11) //Mode Select
{
b[targetValue * 4] = '>';
}
int tmpCol = targetValue * 4;
if (tmpCol >= 16) {
tmpCol -= 16;
strcpy(b, &displayTitle[16]);
} else {
strcpy(b, displayTitle);
}
b[tmpCol] = '>';
} else {
strcpy(b, displayTitle);
/*
else if (valueType == 4) //CW Key Type Select
{
@@ -668,8 +711,6 @@ int getValueByKnob(int valueType, int targetValue, int minKnobValue, int maxKnob
strcat(b, "IAMBICB");
}
*/
else
{
strcat(b, ":");
itoa(targetValue,c, 10);
strcat(b, c);
@@ -932,36 +973,55 @@ void menuSelectMode(int btn){
}
else
{
//LSB, USB, CWL, CWU
if (cwMode == 0 && isUSB == 0)
//LSB, USB, CWL, CWU, DGL, DGU
if (cwMode == 0) {
if (isUSB == 0) {
selectModeType = 0; // LSB
} else {
selectModeType = 1; // USB
}
// modify if digital mode is set
if (digiMode > 0) {
selectModeType += (3 + digiMode);
}
} else if (cwMode == 1) {
selectModeType = 2; // CWL
} else {
selectModeType = 3; // CWU
}
/*if (cwMode == 0 && isUSB == 0)
selectModeType = 0;
else if (cwMode == 0 && isUSB == 1)
selectModeType = 1;
else if (cwMode == 1)
selectModeType = 2;
else
selectModeType = 3;
selectModeType = 3;*/
beforeMode = selectModeType;
selectModeType = getValueByKnob(11, selectModeType, 0, 3, 1, " LSB USB CWL CWU", 4); //3 : Select Mode, targetValue, minKnobValue, maxKnobValue, stepSize
selectModeType = getValueByKnob(11, selectModeType, 0, 5, 1, " LSB USB CWL CWU DGL DGU ", 4); //3 : Select Mode, targetValue, minKnobValue, maxKnobValue, stepSize
if (beforeMode != selectModeType)
{
//printLineF1(F("Changed Mode"));
if (selectModeType == 0) {
cwMode = 0; isUSB = 0;
cwMode = 0; isUSB = 0; digiMode = 0;
}
else if (selectModeType == 1) {
cwMode = 0; isUSB = 1;
cwMode = 0; isUSB = 1; digiMode = 0;
}
else if (selectModeType == 2) {
cwMode = 1;
cwMode = 1; digiMode = 0;
}
else if (selectModeType == 3) {
cwMode = 2;
cwMode = 2; digiMode = 0;
} else if (selectModeType == 4) {
cwMode = 0; isUSB = 0; digiMode = 1;
} else if (selectModeType == 5) {
cwMode = 0; isUSB = 1; digiMode = 1;
}
// KC4UPR: sending mode to IOP
iopSendMode(cwMode, isUSB);
iopSendMode(cwMode, isUSB, digiMode);
FrequencyToVFO(1);
}