Fix segfault in icom_get_powerstat

pull/1148/head
Mike Black W9MDB 2022-11-08 15:09:09 -06:00
rodzic 1ef362a954
commit 2993ca9e62
2 zmienionych plików z 22 dodań i 6 usunięć

Wyświetl plik

@ -8073,9 +8073,9 @@ int icom_get_powerstat(RIG *rig, powerstat_t *status)
{
freq_t freq;
int retrysave = rig->caps->retry;
rig->caps->retry = 0;
rig->state.rigport.retry = 0;
int retval = rig_get_freq(rig, RIG_VFO_A, &freq);
rig->caps->retry = retrysave;
rig->state.rigport.retry = retrysave;
*status = retval==RIG_OK ? RIG_POWER_ON : RIG_POWER_OFF;
return retval;
}

Wyświetl plik

@ -13,6 +13,9 @@
#include <sys/time.h>
#include <hamlib/rig.h>
#include "../src/misc.h"
#include <termios.h>
#include <unistd.h>
#define BUFSIZE 256
#define X25
@ -36,7 +39,7 @@ int ptt = 0;
int satmode = 0;
int agc_time = 1;
int ovf_status = 0;
int powerstat = 0;
int powerstat = 1;
void dumphex(unsigned char *buf, int n)
{
@ -85,6 +88,12 @@ void frameParse(int fd, unsigned char *frame, int len)
switch (frame[4])
{
case 0xfe:
usleep(500 * 1000);
tcflush(fd, TCIFLUSH);
powerstat = 1;
break;
case 0x03:
//from_bcd(frameackbuf[2], (civ_731_mode ? 4 : 5) * 2);
@ -100,8 +109,12 @@ void frameParse(int fd, unsigned char *frame, int len)
}
frame[10] = 0xfd;
if (powerstat)
{
n = write(fd, frame, 11);
}
break;
case 0x04:
@ -233,7 +246,7 @@ void frameParse(int fd, unsigned char *frame, int len)
frame[6] = ovf_status;
frame[7] = 0xfd;
n = write(fd, frame, 8);
ovf_status = ovf_status==0?1:0;
ovf_status = ovf_status == 0 ? 1 : 0;
break;
case 0x11:
@ -527,11 +540,14 @@ int main(int argc, char **argv)
}
if (powerstat)
frameParse(fd, buf, len);
{
frameParse(fd, buf, len);
}
else
{
usleep(1000*1000);
usleep(1000 * 1000);
}
rigStatus();
}