diff --git a/simulators/simic7610.c b/simulators/simic7610.c index a319f6233..0640739b3 100644 --- a/simulators/simic7610.c +++ b/simulators/simic7610.c @@ -50,6 +50,9 @@ int ovf_status = 0; int powerstat = 1; int datamode = 0; int keyspd = 130; // 130=20WPM +int ipp = 0; +int tx_inhibit = 0; +int dpp = 0; void dumphex(const unsigned char *buf, int n) { @@ -386,7 +389,7 @@ void frameParse(int fd, unsigned char *frame, int len) switch (frame[5]) { case 0x5a: - if (frame[6] == 0xfe) + if (frame[6] == 0xfd) { satmode = frame[6]; } @@ -395,10 +398,42 @@ void frameParse(int fd, unsigned char *frame, int len) frame[6] = satmode; frame[7] = 0xfd; n = write(fd, frame, 8); - if (n <= 0) { fprintf(stderr, "%s(%d) write error %s\n", __func__, __LINE__, strerror(errno)); } } + break; + case 0x65: + if (frame[6] == 0xfd) + ipp = frame[6]; + else + { + frame[6] = ipp; + frame[7]=0xfd; + n = write(fd, frame, 8); + if (n <= 0) { fprintf(stderr, "%s(%d) write error %s\n", __func__, __LINE__, strerror(errno)); } + } + break; + case 0x66: + if (frame[6] == 0xfd) + tx_inhibit = frame[6]; + else + { + frame[6] = tx_inhibit; + frame[7]=0xfd; + n = write(fd, frame, 8); + if (n <= 0) { fprintf(stderr, "%s(%d) write error %s\n", __func__, __LINE__, strerror(errno)); } + } + break; + case 0x67: + if (frame[6] == 0xfd) + dpp = frame[6]; + else + { + frame[6] = dpp; + frame[7]=0xfd; + n = write(fd, frame, 8); + if (n <= 0) { fprintf(stderr, "%s(%d) write error %s\n", __func__, __LINE__, strerror(errno)); } + } break; } @@ -745,9 +780,10 @@ int main(int argc, char **argv) while (1) { int len = frameGet(fd, buf); - +printf("#1 ========================================"); if (len <= 0) { +printf("#2 ========================================"); close(fd); fd = openPort(argv[1]); } @@ -758,10 +794,12 @@ int main(int argc, char **argv) } else { - hl_usleep(1000 * 1000); + hl_usleep(100 * 1000); } +printf("#3 ========================================"); rigStatus(); +printf("#3 ========================================"); } return 0;