kopia lustrzana https://github.com/Hamlib/Hamlib
Fix IC-905 10Ghz+ set/get freq and lower frequencies too
https://github.com/Hamlib/Hamlib/issues/1375pull/1389/head
rodzic
6e7aec3077
commit
5d12e5f8bd
|
@ -1347,7 +1347,6 @@ int icom_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
|||
{
|
||||
// 10Hz resolution and > 5.85MHz is 6 bytes
|
||||
if (freq > 5.85e9) { freq_len = 6; }
|
||||
freq /= 10;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1799,8 +1798,6 @@ int icom_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
|
|||
|
||||
if (freq_len == 3) { *freq *= 10000; } // 3-byte freq for ID5100 is in 10000Hz units so convert to Hz
|
||||
|
||||
if (RIG_IS_IC905) { *freq *= 10; }
|
||||
|
||||
if (vfo == RIG_VFO_MEM && civ_731_mode) { priv->civ_731_mode = 1; }
|
||||
|
||||
switch (vfo)
|
||||
|
|
|
@ -540,9 +540,8 @@ case 0x26:
|
|||
|
||||
frame[6] = frame[5] == 0 ? modeA : modeB;
|
||||
frame[7] = frame[5] == 0 ? datamodeA : datamodeB;
|
||||
frame[8] = 0xfb;
|
||||
frame[9] = 0xfd;
|
||||
n = write(fd, frame, 10);
|
||||
frame[8] = 0xfd;
|
||||
n = write(fd, frame, 9);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -33,10 +33,12 @@ int split = 0;
|
|||
// we make B different from A to ensure we see a difference at startup
|
||||
float freqA = 14074000;
|
||||
float freqB = 14074500;
|
||||
mode_t modeA = RIG_MODE_PKTUSB;
|
||||
mode_t modeB = RIG_MODE_PKTUSB;
|
||||
int datamodeA = 0;
|
||||
int datamodeB = 0;
|
||||
mode_t modeA = 1;
|
||||
mode_t modeB = 0;
|
||||
int datamodeA = 2;
|
||||
int datamodeB = 1;
|
||||
int filterA = 3;
|
||||
int filterB = 2;
|
||||
pbwidth_t widthA = 0;
|
||||
pbwidth_t widthB = 1;
|
||||
ant_t ant_curr = 0;
|
||||
|
@ -49,8 +51,9 @@ int powerstat = 1;
|
|||
int datamode = 0;
|
||||
int keyspd = 130; // 130=20WPM
|
||||
int attenuator;
|
||||
int filterA = 2;
|
||||
int filterB = 3;
|
||||
int notch = 0;
|
||||
int speechcompressor = 0;
|
||||
int vox = 0;
|
||||
|
||||
void dumphex(unsigned char *buf, int n)
|
||||
{
|
||||
|
@ -75,7 +78,8 @@ again:
|
|||
|
||||
if (c == 0xfd)
|
||||
{
|
||||
dumphex(buf, i);
|
||||
// printf("Read: ");
|
||||
// dumphex(buf, i);
|
||||
return i;
|
||||
}
|
||||
|
||||
|
@ -105,7 +109,7 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
double freq;
|
||||
int n = 0;
|
||||
|
||||
dumphex(frame, len);
|
||||
//dumphex(frame, len);
|
||||
|
||||
if (frame[0] != 0xfe && frame[1] != 0xfe)
|
||||
{
|
||||
|
@ -114,7 +118,7 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
return;
|
||||
}
|
||||
|
||||
int echo = 1;
|
||||
int echo = 0;
|
||||
|
||||
if (echo)
|
||||
{
|
||||
|
@ -131,12 +135,12 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
//from_bcd(frameackbuf[2], (civ_731_mode ? 4 : 5) * 2);
|
||||
if (current_vfo == RIG_VFO_A || current_vfo == RIG_VFO_MAIN)
|
||||
{
|
||||
printf("get_freqA\n");
|
||||
//printf("get_freqA\n");
|
||||
to_bcd(&frame[5], (long long)freqA, (civ_731_mode ? 4 : 5) * 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("get_freqB\n");
|
||||
//printf("get_freqB\n");
|
||||
to_bcd(&frame[5], (long long)freqB, (civ_731_mode ? 4 : 5) * 2);
|
||||
}
|
||||
|
||||
|
@ -152,13 +156,13 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
case 0x04:
|
||||
if (current_vfo == RIG_VFO_A || current_vfo == RIG_VFO_MAIN)
|
||||
{
|
||||
printf("get_modeA\n");
|
||||
//printf("get_modeA\n");
|
||||
frame[5] = modeA;
|
||||
frame[6] = widthA;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("get_modeB\n");
|
||||
//printf("get_modeB\n");
|
||||
frame[5] = modeB;
|
||||
frame[6] = widthB;
|
||||
}
|
||||
|
@ -169,7 +173,7 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
|
||||
case 0x05:
|
||||
freq = from_bcd(&frame[5], (civ_731_mode ? 4 : 5) * 2);
|
||||
printf("set_freq to %.0f\n", freq);
|
||||
//printf("set_freq to %.0f\n", freq);
|
||||
|
||||
if (current_vfo == RIG_VFO_A || current_vfo == RIG_VFO_MAIN) { freqA = freq; }
|
||||
else { freqB = freq; }
|
||||
|
@ -190,12 +194,12 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
|
||||
case 0x07:
|
||||
|
||||
printf("******* [5] = 0x07\n");
|
||||
//printf("******* [5] = 0x07\n");
|
||||
|
||||
switch (frame[5])
|
||||
{
|
||||
case 0xd2:
|
||||
printf("******* [6] = 0x07\n");
|
||||
//printf("******* [6] = 0x07\n");
|
||||
|
||||
switch (frame[6])
|
||||
{
|
||||
|
@ -205,11 +209,11 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
}
|
||||
}
|
||||
|
||||
printf("set_vfo to %s\n", rig_strvfo(current_vfo));
|
||||
//printf("set_vfo to %s\n", rig_strvfo(current_vfo));
|
||||
|
||||
frame[4] = 0xfb;
|
||||
frame[5] = 0xfd;
|
||||
printf("0x07 0xd2 answer: \n");
|
||||
//printf("0x07 0xd2 answer: \n");
|
||||
dump_hex(frame, 6);
|
||||
n = write(fd, frame, 6);
|
||||
break;
|
||||
|
@ -221,13 +225,13 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
|
||||
if (frame[5] == 0xfd)
|
||||
{
|
||||
printf("get split %d\n", 1);
|
||||
//printf("get split %d\n", 1);
|
||||
frame[7] = 0xfd;
|
||||
n = write(fd, frame, 8);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("set split %d\n", 1);
|
||||
//printf("set split %d\n", 1);
|
||||
frame[4] = 0xfb;
|
||||
frame[5] = 0xfd;
|
||||
n = write(fd, frame, 6);
|
||||
|
@ -245,37 +249,36 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
}
|
||||
else
|
||||
{
|
||||
frame[6] = attenuator;
|
||||
frame[7] = 0xfd;
|
||||
n = write(fd, frame, 8);
|
||||
frame[5] = attenuator;
|
||||
frame[6] = 0xfd;
|
||||
n = write(fd, frame, 7);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case 0x12: // we're simulating the 3-byte version -- not the 2-byte
|
||||
if (frame[5] != 0xfd)
|
||||
{
|
||||
printf("Set ant %d\n", -1);
|
||||
//printf("Set ant %d\n", -1);
|
||||
ant_curr = frame[5];
|
||||
ant_option = frame[6];
|
||||
dump_hex(frame, 8);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Get ant\n");
|
||||
//printf("Get ant\n");
|
||||
}
|
||||
|
||||
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);
|
||||
break;
|
||||
|
||||
case 0x14:
|
||||
printf("******** 0x14 received frame[5]=0x%02x\n", frame[5]);
|
||||
//printf("******** 0x14 received frame[5]=0x%02x\n", frame[5]);
|
||||
|
||||
switch (frame[5])
|
||||
{
|
||||
|
@ -285,28 +288,28 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
case 0x08:
|
||||
if (frame[6] != 0xfd)
|
||||
{
|
||||
printf("DEBUG#1\n");
|
||||
//printf("DEBUG#1\n");
|
||||
frame[4] = 0xfb;
|
||||
frame[5] = 0xfd;
|
||||
dumphex(frame, 6);
|
||||
n = write(fd, frame, 6);
|
||||
printf("ACK x14 x08\n");
|
||||
//printf("ACK x14 x08\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("DEBUG#2\n");
|
||||
//printf("DEBUG#2\n");
|
||||
to_bcd(&frame[6], (long long)128, 2);
|
||||
frame[8] = 0xfb;
|
||||
frame[9] = 0xfd;
|
||||
dumphex(frame, 10);
|
||||
n = write(fd, frame, 10);
|
||||
printf("SEND x14 x08\n");
|
||||
//printf("SEND x14 x08\n");
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 0x0a:
|
||||
printf("Using power level %d\n", power_level);
|
||||
//printf("Using power level %d\n", power_level);
|
||||
power_level += 10;
|
||||
|
||||
if (power_level > 250) { power_level = 0; }
|
||||
|
@ -331,7 +334,7 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
break;
|
||||
|
||||
default:
|
||||
printf("*********** NAK\n");
|
||||
//printf("*********** NAK\n");
|
||||
frame[5] = 0xfa;
|
||||
frame[6] = 0xfd;
|
||||
n = write(fd, frame, 7);
|
||||
|
@ -353,7 +356,7 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
break;
|
||||
|
||||
case 0x11:
|
||||
printf("Using meter level %d\n", meter_level);
|
||||
//printf("Using meter level %d\n", meter_level);
|
||||
meter_level += 10;
|
||||
|
||||
if (meter_level > 250) { meter_level = 0; }
|
||||
|
@ -374,6 +377,51 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
case 0x16:
|
||||
switch (frame[5])
|
||||
{
|
||||
case 0x44:
|
||||
if (frame[6] == 0xfe)
|
||||
{
|
||||
frame[6] = speechcompressor;
|
||||
frame[7] = 0xfd;
|
||||
n = write(fd, frame, 8);
|
||||
}
|
||||
else
|
||||
{
|
||||
speechcompressor = frame[6];
|
||||
frame[4] = 0xfb;
|
||||
frame[5] = 0xfd;
|
||||
n = write(fd, frame, 6);
|
||||
}
|
||||
break;
|
||||
case 0x46:
|
||||
if (frame[6] == 0xfe)
|
||||
{
|
||||
frame[6] = vox;
|
||||
frame[7] = 0xfd;
|
||||
n = write(fd, frame, 8);
|
||||
}
|
||||
else
|
||||
{
|
||||
vox = frame[6];
|
||||
frame[4] = 0xfb;
|
||||
frame[5] = 0xfd;
|
||||
n = write(fd, frame, 6);
|
||||
}
|
||||
break;
|
||||
case 0x48:
|
||||
if (frame[6] == 0xfe)
|
||||
{
|
||||
frame[6] = notch;
|
||||
frame[7] = 0xfd;
|
||||
n = write(fd, frame, 8);
|
||||
}
|
||||
else
|
||||
{
|
||||
notch = frame[6];
|
||||
frame[4] = 0xfb;
|
||||
frame[5] = 0xfd;
|
||||
n = write(fd, frame, 6);
|
||||
}
|
||||
break;
|
||||
case 0x5a:
|
||||
if (frame[6] == 0xfe)
|
||||
{
|
||||
|
@ -415,7 +463,7 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
break;
|
||||
|
||||
case 0x04: // AGC TIME
|
||||
printf("frame[6]==x%02x, frame[7]=0%02x\n", frame[6], frame[7]);
|
||||
//printf("frame[6]==x%02x, frame[7]=0%02x\n", frame[6], frame[7]);
|
||||
|
||||
if (frame[6] == 0xfd) // the we are reading
|
||||
{
|
||||
|
@ -425,7 +473,7 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
}
|
||||
else
|
||||
{
|
||||
printf("AGC_TIME RESPONSE******************************");
|
||||
//printf("AGC_TIME RESPONSE******************************");
|
||||
agc_time = frame[6];
|
||||
frame[4] = 0xfb;
|
||||
frame[5] = 0xfd;
|
||||
|
@ -494,12 +542,12 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
if (frame[5] == 0x00)
|
||||
{
|
||||
to_bcd(&frame[6], (long long)freqA, (civ_731_mode ? 4 : 5) * 2);
|
||||
printf("X25 get_freqA=%.0f\n", freqA);
|
||||
//printf("X25 get_freqA=%.0f\n", freqA);
|
||||
}
|
||||
else
|
||||
{
|
||||
to_bcd(&frame[6], (long long)freqB, (civ_731_mode ? 4 : 5) * 2);
|
||||
printf("X25 get_freqB=%.0f\n", freqB);
|
||||
//printf("X25 get_freqB=%.0f\n", freqB);
|
||||
}
|
||||
|
||||
frame[11] = 0xfd;
|
||||
|
@ -524,7 +572,7 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
else
|
||||
{
|
||||
freq = from_bcd(&frame[6], (civ_731_mode ? 4 : 5) * 2);
|
||||
printf("set_freq to %.0f\n", freq);
|
||||
//printf("set_freq to %.0f\n", freq);
|
||||
|
||||
if (frame[5] == 0x00) { freqA = freq; }
|
||||
else { freqB = freq; }
|
||||
|
@ -548,31 +596,36 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
break;
|
||||
|
||||
case 0x26:
|
||||
for (int i = 0; i < 6; ++i) { printf("%02x:", frame[i]); }
|
||||
for (int i = 0; i < 7; ++i) { printf("%02x:", frame[i]); }
|
||||
|
||||
if (frame[6] == 0xfd) // then a query
|
||||
{
|
||||
for (int i = 0; i < 6; ++i) { printf("%02x:", frame[i]); }
|
||||
|
||||
printf("GET MODE XXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
|
||||
// fe fe e0 8e 26 00 01 00 fd fd
|
||||
frame[6] = frame[5] == 0 ? modeA : modeB;
|
||||
frame[7] = frame[5] == 0 ? datamodeA : datamodeB;
|
||||
frame[8] = frame[5] == 0 ? filterA : filterB;
|
||||
frame[9] = 0xfd;
|
||||
printf("x26 response: ");
|
||||
dumphex(frame, 10);
|
||||
n = write(fd, frame, 10);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("SET MODE YYYYYYYYYYYYYYYYYYYYYYYYYYYYY\n");
|
||||
for (int i = 0; i < 12; ++i) { printf("%02x:", frame[i]); }
|
||||
|
||||
if (frame[6] == 0)
|
||||
if (frame[5] == 0)
|
||||
{
|
||||
modeA = frame[7];
|
||||
datamodeA = frame[8];
|
||||
modeA = frame[6];
|
||||
datamodeA = frame[7];
|
||||
filterA = frame[8];
|
||||
}
|
||||
else
|
||||
{
|
||||
modeB = frame[7];
|
||||
datamodeB = frame[8];
|
||||
modeB = frame[6];
|
||||
datamodeB = frame[7];
|
||||
filterB = frame[8];
|
||||
}
|
||||
|
||||
frame[4] = 0xfb;
|
||||
|
@ -701,7 +754,7 @@ int main(int argc, char **argv)
|
|||
hl_usleep(1000 * 1000);
|
||||
}
|
||||
|
||||
rigStatus();
|
||||
//rigStatus();
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -32,12 +32,14 @@ vfo_t current_vfo = RIG_VFO_A;
|
|||
int split = 0;
|
||||
|
||||
// we make B different from A to ensure we see a difference at startup
|
||||
float freqA = 14074000;
|
||||
float freqB = 14074500;
|
||||
double freqA = 1407400;
|
||||
double freqB = 1407450;
|
||||
mode_t modeA = RIG_MODE_PKTUSB;
|
||||
mode_t modeB = RIG_MODE_PKTUSB;
|
||||
int datamodeA = 0;
|
||||
int datamodeB = 0;
|
||||
int filterA = 1;
|
||||
int filterB = 2;
|
||||
pbwidth_t widthA = 0;
|
||||
pbwidth_t widthB = 1;
|
||||
ant_t ant_curr = 0;
|
||||
|
@ -47,6 +49,7 @@ int satmode = 0;
|
|||
int agc_time = 1;
|
||||
int ovf_status = 0;
|
||||
int powerstat = 1;
|
||||
int keyspd = 25;
|
||||
|
||||
void dumphex(unsigned char *buf, int n)
|
||||
{
|
||||
|
@ -115,18 +118,21 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
case 0x03:
|
||||
|
||||
//from_bcd(frameackbuf[2], (civ_731_mode ? 4 : 5) * 2);
|
||||
int freq_len = 5;
|
||||
if (current_vfo == RIG_VFO_A || current_vfo == RIG_VFO_MAIN)
|
||||
{
|
||||
printf("get_freqA\n");
|
||||
to_bcd(&frame[5], (long long)freqA, (civ_731_mode ? 4 : 5) * 2);
|
||||
if (freqA > 5.85e5) freq_len = 6;
|
||||
printf("get_freqA len=%d\n", freq_len);
|
||||
to_bcd(&frame[5], (long long)freqA, freq_len * 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("get_freqB\n");
|
||||
to_bcd(&frame[5], (long long)freqB, (civ_731_mode ? 4 : 5) * 2);
|
||||
if (freqB > 5.85e5) freq_len = 6;
|
||||
printf("get_freqB len=%d\n", freq_len);
|
||||
to_bcd(&frame[5], (long long)freqB, freq_len * 2);
|
||||
}
|
||||
|
||||
frame[10] = 0xfd;
|
||||
frame[4+freq_len] = 0xfd;
|
||||
|
||||
if (powerstat)
|
||||
{
|
||||
|
@ -182,9 +188,9 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
|
||||
case 0x01: current_vfo = RIG_VFO_B; break;
|
||||
|
||||
case 0xd0: current_vfo = RIG_VFO_MAIN; break;
|
||||
case 0xa0: freqB = freqA;modeB = modeA; break;
|
||||
|
||||
case 0xd1: current_vfo = RIG_VFO_SUB; break;
|
||||
case 0xb0: current_vfo = RIG_VFO_SUB; exit(1);break;
|
||||
}
|
||||
|
||||
printf("set_vfo to %s\n", rig_strvfo(current_vfo));
|
||||
|
@ -195,19 +201,17 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
break;
|
||||
|
||||
case 0x0f:
|
||||
if (frame[5] == 0) { split = 0; }
|
||||
else if (frame[5] == 1) { split = 1; }
|
||||
else { frame[6] = split; }
|
||||
|
||||
if (frame[5] == 0xfd)
|
||||
{
|
||||
printf("get split %d\n", 1);
|
||||
frame[7] = 0xfd;
|
||||
n = write(fd, frame, 8);
|
||||
printf("get split %d\n", split);
|
||||
frame[5] = split;
|
||||
frame[6] = 0xfd;
|
||||
n = write(fd, frame, 7);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("set split %d\n", 1);
|
||||
split = frame[5];
|
||||
frame[4] = 0xfb;
|
||||
frame[5] = 0xfd;
|
||||
n = write(fd, frame, 6);
|
||||
|
@ -271,10 +275,32 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
frame[8] = 0xfd;
|
||||
n = write(fd, frame, 9);
|
||||
break;
|
||||
|
||||
case 0x0c:
|
||||
dumphex(frame, 10);
|
||||
printf("subcmd=0x0c #1\n");
|
||||
|
||||
if (frame[6] != 0xfd) // then we have data
|
||||
{
|
||||
printf("subcmd=0x0c #1\n");
|
||||
keyspd = from_bcd(&frame[6], 2);
|
||||
frame[6] = 0xfb;
|
||||
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);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case 0x15:
|
||||
switch (frame[5])
|
||||
{
|
||||
|
@ -402,20 +428,24 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
case 0x25:
|
||||
if (frame[6] == 0xfd)
|
||||
{
|
||||
int freq_len = 5;
|
||||
if (frame[5] == 0x00)
|
||||
{
|
||||
to_bcd(&frame[6], (long long)freqA, 6 * 2);
|
||||
if (freqA > 5.85e5) freq_len = 6;
|
||||
to_bcd(&frame[6], (long long)freqA, freq_len * 2);
|
||||
printf("X25 get_freqA=%.0f\n", freqA);
|
||||
}
|
||||
else
|
||||
{
|
||||
to_bcd(&frame[6], (long long)freqB, 6 * 2);
|
||||
if (freqB > 5.85e5) freq_len = 6;
|
||||
to_bcd(&frame[6], (long long)freqB, freq_len * 2);
|
||||
printf("X25 get_freqB=%.0f\n", freqB);
|
||||
}
|
||||
|
||||
frame[12] = 0xfd;
|
||||
unsigned char frame2[12];
|
||||
frame[6+freq_len] = 0xfd;
|
||||
//unsigned char frame2[12];
|
||||
|
||||
#if 0
|
||||
frame2[0] = 0xfe;
|
||||
frame2[1] = 0xfe;
|
||||
frame2[2] = 0x00; // send transceive frame
|
||||
|
@ -429,11 +459,14 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
frame2[10] = 0x00;
|
||||
frame2[11] = 0xfd;
|
||||
n = write(fd, frame2, 12);
|
||||
n = write(fd, frame, 13);
|
||||
#endif
|
||||
n = write(fd, frame, 7+freq_len);
|
||||
}
|
||||
else
|
||||
{
|
||||
freq = from_bcd(&frame[6], (civ_731_mode ? 4 : 5) * 2);
|
||||
int freq_len = 5;
|
||||
if (frame[11] != 0xfd) freq_len = 6;
|
||||
freq = from_bcd(&frame[6], freq_len * 2);
|
||||
printf("set_freq to %.0f\n", freq);
|
||||
|
||||
if (frame[5] == 0x00) { freqA = freq; }
|
||||
|
@ -442,6 +475,7 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
frame[4] = 0xfb;
|
||||
frame[5] = 0xfd;
|
||||
n = write(fd, frame, 6);
|
||||
#if 0
|
||||
// send async frame
|
||||
frame[2] = 0x00; // async freq
|
||||
frame[3] = 0xa2;
|
||||
|
@ -453,6 +487,7 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
frame[9] = 0x12;
|
||||
frame[10] = 0xfd;
|
||||
n = write(fd, frame, 11);
|
||||
#endif
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -466,7 +501,7 @@ void frameParse(int fd, unsigned char *frame, int len)
|
|||
|
||||
frame[6] = frame[5] == 0 ? modeA : modeB;
|
||||
frame[7] = frame[5] == 0 ? datamodeA : datamodeB;
|
||||
frame[8] = 0xfb;
|
||||
frame[8] = frame[5] == 0 ? filterA : filterB;
|
||||
frame[9] = 0xfd;
|
||||
n = write(fd, frame, 10);
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue