kopia lustrzana https://github.com/Hamlib/Hamlib
rodzic
5d12e5f8bd
commit
5963e149a9
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue