Mike Black W9MDB 2023-08-28 23:34:28 -05:00
rodzic 5d12e5f8bd
commit 5963e149a9
2 zmienionych plików z 79 dodań i 43 usunięć

Wyświetl plik

@ -1345,7 +1345,7 @@ int icom_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
if (RIG_IS_IC905)
{
// 10Hz resolution and > 5.85MHz is 6 bytes
// > 5.85GHz is 6 bytes
if (freq > 5.85e9) { freq_len = 6; }
}
@ -2241,6 +2241,7 @@ int icom_set_mode_with_data(RIG *rig, vfo_t vfo, rmode_t mode,
|| RIG_IS_IC9100
|| RIG_IS_IC9700
|| RIG_IS_IC705
|| RIG_IS_IC905
|| RIG_IS_X6100;
ENTERFUNC;

Wyświetl plik

@ -32,7 +32,7 @@ vfo_t current_vfo = RIG_VFO_A;
int split = 0;
// we make B different from A to ensure we see a difference at startup
double freqA = 1407400;
double freqA = 145123456;
double freqB = 1407450;
mode_t modeA = RIG_MODE_PKTUSB;
mode_t modeB = RIG_MODE_PKTUSB;
@ -50,6 +50,14 @@ int agc_time = 1;
int ovf_status = 0;
int powerstat = 1;
int keyspd = 25;
int datamode = 0;
int filter = 0;
int WRITE(int fd, unsigned char* buf, int buflen)
{
dump_hex(buf,buflen);
return write(fd,buf,buflen);
}
void dumphex(unsigned char *buf, int n)
{
@ -121,22 +129,22 @@ void frameParse(int fd, unsigned char *frame, int len)
int freq_len = 5;
if (current_vfo == RIG_VFO_A || current_vfo == RIG_VFO_MAIN)
{
if (freqA > 5.85e5) freq_len = 6;
if (freqA > 5.85e9) freq_len = 6;
printf("get_freqA len=%d\n", freq_len);
to_bcd(&frame[5], (long long)freqA, freq_len * 2);
}
else
{
if (freqB > 5.85e5) freq_len = 6;
if (freqB > 5.85e9) freq_len = 6;
printf("get_freqB len=%d\n", freq_len);
to_bcd(&frame[5], (long long)freqB, freq_len * 2);
}
frame[4+freq_len] = 0xfd;
frame[5+freq_len] = 0xfd;
if (powerstat)
{
n = write(fd, frame, 11);
n = WRITE(fd, frame, 11);
}
break;
@ -156,7 +164,7 @@ void frameParse(int fd, unsigned char *frame, int len)
}
frame[7] = 0xfd;
n = write(fd, frame, 8);
n = WRITE(fd, frame, 8);
break;
case 0x05:
@ -168,7 +176,7 @@ void frameParse(int fd, unsigned char *frame, int len)
frame[4] = 0xfb;
frame[5] = 0xfd;
n = write(fd, frame, 6);
n = WRITE(fd, frame, 6);
break;
case 0x06:
@ -177,7 +185,7 @@ void frameParse(int fd, unsigned char *frame, int len)
frame[4] = 0xfb;
frame[5] = 0xfd;
n = write(fd, frame, 6);
n = WRITE(fd, frame, 6);
break;
case 0x07:
@ -197,7 +205,7 @@ void frameParse(int fd, unsigned char *frame, int len)
frame[4] = 0xfb;
frame[5] = 0xfd;
n = write(fd, frame, 6);
n = WRITE(fd, frame, 6);
break;
case 0x0f:
@ -206,7 +214,7 @@ void frameParse(int fd, unsigned char *frame, int len)
printf("get split %d\n", split);
frame[5] = split;
frame[6] = 0xfd;
n = write(fd, frame, 7);
n = WRITE(fd, frame, 7);
}
else
{
@ -214,7 +222,7 @@ void frameParse(int fd, unsigned char *frame, int len)
split = frame[5];
frame[4] = 0xfb;
frame[5] = 0xfd;
n = write(fd, frame, 6);
n = WRITE(fd, frame, 6);
}
break;
@ -235,9 +243,9 @@ void frameParse(int fd, unsigned char *frame, int len)
frame[5] = ant_curr;
frame[6] = ant_option;
frame[7] = 0xfd;
printf("write 8 bytes\n");
printf("WRITE 8 bytes\n");
dump_hex(frame, 8);
n = write(fd, frame, 8);
n = WRITE(fd, frame, 8);
break;
case 0x14:
@ -251,7 +259,7 @@ void frameParse(int fd, unsigned char *frame, int len)
{
frame[6] = 0xfb;
dumphex(frame, 7);
n = write(fd, frame, 7);
n = WRITE(fd, frame, 7);
printf("ACK x14 x08\n");
}
else
@ -259,7 +267,7 @@ void frameParse(int fd, unsigned char *frame, int len)
to_bcd(&frame[6], (long long)128, 2);
frame[8] = 0xfb;
dumphex(frame, 9);
n = write(fd, frame, 9);
n = WRITE(fd, frame, 9);
printf("SEND x14 x08\n");
}
@ -273,7 +281,7 @@ void frameParse(int fd, unsigned char *frame, int len)
to_bcd(&frame[6], (long long)power_level, 2);
frame[8] = 0xfd;
n = write(fd, frame, 9);
n = WRITE(fd, frame, 9);
break;
case 0x0c:
@ -285,14 +293,14 @@ void frameParse(int fd, unsigned char *frame, int len)
printf("subcmd=0x0c #1\n");
keyspd = from_bcd(&frame[6], 2);
frame[6] = 0xfb;
n = write(fd, frame, 7);
n = WRITE(fd, frame, 7);
}
else
{
printf("subcmd=0x0c #1\n");
to_bcd(&frame[6], keyspd, 2);
frame[8] = 0xfd;
n = write(fd, frame, 9);
n = WRITE(fd, frame, 9);
}
break;
@ -309,7 +317,7 @@ void frameParse(int fd, unsigned char *frame, int len)
case 0x07:
frame[6] = ovf_status;
frame[7] = 0xfd;
n = write(fd, frame, 8);
n = WRITE(fd, frame, 8);
ovf_status = ovf_status == 0 ? 1 : 0;
break;
@ -321,7 +329,7 @@ void frameParse(int fd, unsigned char *frame, int len)
to_bcd(&frame[6], (long long)meter_level, 2);
frame[8] = 0xfd;
n = write(fd, frame, 9);
n = WRITE(fd, frame, 9);
break;
}
@ -337,7 +345,7 @@ void frameParse(int fd, unsigned char *frame, int len)
{
frame[6] = satmode;
frame[7] = 0xfd;
n = write(fd, frame, 8);
n = WRITE(fd, frame, 8);
}
break;
@ -348,13 +356,13 @@ void frameParse(int fd, unsigned char *frame, int len)
case 0x18: // miscellaneous things
frame[5] = 1;
frame[6] = 0xfd;
n = write(fd, frame, 7);
n = WRITE(fd, frame, 7);
break;
case 0x19: // miscellaneous things
frame[5] = 0x94;
frame[6] = 0xfd;
n = write(fd, frame, 7);
n = WRITE(fd, frame, 7);
break;
case 0x1a: // miscellaneous things
@ -365,7 +373,7 @@ void frameParse(int fd, unsigned char *frame, int len)
else { frame[6] = widthB; }
frame[7] = 0xfd;
n = write(fd, frame, 8);
n = WRITE(fd, frame, 8);
break;
case 0x04: // AGC TIME
@ -375,7 +383,7 @@ void frameParse(int fd, unsigned char *frame, int len)
{
frame[6] = agc_time;
frame[7] = 0xfd;
n = write(fd, frame, 8);
n = WRITE(fd, frame, 8);
}
else
{
@ -383,15 +391,31 @@ void frameParse(int fd, unsigned char *frame, int len)
agc_time = frame[6];
frame[4] = 0xfb;
frame[5] = 0xfd;
n = write(fd, frame, 6);
n = WRITE(fd, frame, 6);
}
break;
case 0x06: // datamode
if (frame[5] == 0xfd)
{
frame[6] = datamode;
frame[7] = filter;
frame[8] = 0xfd;
n = WRITE(fd, frame, 9);
}
else
{
datamode = frame[6];
filter = frame[7];
frame[4] = 0xfb;
frame[5] = 0xfd;
n = WRITE(fd, frame, 6);
}
case 0x07: // satmode
frame[4] = 0;
frame[7] = 0xfd;
n = write(fd, frame, 8);
n = WRITE(fd, frame, 8);
break;
}
@ -404,16 +428,22 @@ void frameParse(int fd, unsigned char *frame, int len)
case 0:
if (frame[6] == 0xfd)
{
int tmp = frame[2];
frame[2] = frame[3];
frame[3] = tmp;
frame[6] = ptt;
frame[7] = 0xfd;
n = write(fd, frame, 8);
n = WRITE(fd, frame, 8);
}
else
{
ptt = frame[6];
frame[7] = 0xfb;
frame[8] = 0xfd;
n = write(fd, frame, 9);
int tmp = frame[2];
frame[2] = frame[3];
frame[3] = tmp;
frame[4] = 0xfb;
frame[5] = 0xfd;
n = WRITE(fd, frame, 6);
}
break;
@ -431,18 +461,21 @@ void frameParse(int fd, unsigned char *frame, int len)
int freq_len = 5;
if (frame[5] == 0x00)
{
if (freqA > 5.85e5) freq_len = 6;
if (freqA > 5.85e9) freq_len = 6;
to_bcd(&frame[6], (long long)freqA, freq_len * 2);
printf("X25 get_freqA=%.0f\n", freqA);
frame[6+freq_len] = 0xfd;
n = WRITE(fd, frame, 7+freq_len);
}
else
{
if (freqB > 5.85e5) freq_len = 6;
if (freqB > 5.85e9) freq_len = 6;
to_bcd(&frame[6], (long long)freqB, freq_len * 2);
printf("X25 get_freqB=%.0f\n", freqB);
frame[6+freq_len] = 0xfd;
n = WRITE(fd, frame, 7+freq_len);
}
frame[6+freq_len] = 0xfd;
//unsigned char frame2[12];
#if 0
@ -458,9 +491,8 @@ void frameParse(int fd, unsigned char *frame, int len)
frame2[9] = 0x00;
frame2[10] = 0x00;
frame2[11] = 0xfd;
n = write(fd, frame2, 12);
n = WRITE(fd, frame2, 12);
#endif
n = write(fd, frame, 7+freq_len);
}
else
{
@ -472,9 +504,12 @@ void frameParse(int fd, unsigned char *frame, int len)
if (frame[5] == 0x00) { freqA = freq; }
else { freqB = freq; }
int tmp = frame[2];
frame[2] = frame[3];
frame[3] = tmp;
frame[4] = 0xfb;
frame[5] = 0xfd;
n = write(fd, frame, 6);
n = WRITE(fd, frame, 6);
#if 0
// send async frame
frame[2] = 0x00; // async freq
@ -486,7 +521,7 @@ void frameParse(int fd, unsigned char *frame, int len)
frame[8] = 0x96;
frame[9] = 0x12;
frame[10] = 0xfd;
n = write(fd, frame, 11);
n = WRITE(fd, frame, 11);
#endif
}
@ -503,7 +538,7 @@ void frameParse(int fd, unsigned char *frame, int len)
frame[7] = frame[5] == 0 ? datamodeA : datamodeB;
frame[8] = frame[5] == 0 ? filterA : filterB;
frame[9] = 0xfd;
n = write(fd, frame, 10);
n = WRITE(fd, frame, 10);
}
else
{
@ -522,7 +557,7 @@ void frameParse(int fd, unsigned char *frame, int len)
frame[4] = 0xfb;
frame[5] = 0xfd;
n = write(fd, frame, 6);
n = WRITE(fd, frame, 6);
}
printf("\n");
@ -533,14 +568,14 @@ void frameParse(int fd, unsigned char *frame, int len)
printf("x25 send nak\n");
frame[4] = 0xfa;
frame[5] = 0xfd;
n = write(fd, frame, 6);
n = WRITE(fd, frame, 6);
break;
case 0x26:
printf("x26 send nak\n");
frame[4] = 0xfa;
frame[5] = 0xfd;
n = write(fd, frame, 6);
n = WRITE(fd, frame, 6);
break;
#endif