kopia lustrzana https://github.com/Hamlib/Hamlib
Fix segfault in icom_get_powerstat
rodzic
1ef362a954
commit
2993ca9e62
|
@ -8073,9 +8073,9 @@ int icom_get_powerstat(RIG *rig, powerstat_t *status)
|
||||||
{
|
{
|
||||||
freq_t freq;
|
freq_t freq;
|
||||||
int retrysave = rig->caps->retry;
|
int retrysave = rig->caps->retry;
|
||||||
rig->caps->retry = 0;
|
rig->state.rigport.retry = 0;
|
||||||
int retval = rig_get_freq(rig, RIG_VFO_A, &freq);
|
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;
|
*status = retval==RIG_OK ? RIG_POWER_ON : RIG_POWER_OFF;
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,9 @@
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <hamlib/rig.h>
|
#include <hamlib/rig.h>
|
||||||
#include "../src/misc.h"
|
#include "../src/misc.h"
|
||||||
|
#include <termios.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
|
||||||
#define BUFSIZE 256
|
#define BUFSIZE 256
|
||||||
#define X25
|
#define X25
|
||||||
|
@ -36,7 +39,7 @@ int ptt = 0;
|
||||||
int satmode = 0;
|
int satmode = 0;
|
||||||
int agc_time = 1;
|
int agc_time = 1;
|
||||||
int ovf_status = 0;
|
int ovf_status = 0;
|
||||||
int powerstat = 0;
|
int powerstat = 1;
|
||||||
|
|
||||||
void dumphex(unsigned char *buf, int n)
|
void dumphex(unsigned char *buf, int n)
|
||||||
{
|
{
|
||||||
|
@ -85,6 +88,12 @@ void frameParse(int fd, unsigned char *frame, int len)
|
||||||
|
|
||||||
switch (frame[4])
|
switch (frame[4])
|
||||||
{
|
{
|
||||||
|
case 0xfe:
|
||||||
|
usleep(500 * 1000);
|
||||||
|
tcflush(fd, TCIFLUSH);
|
||||||
|
powerstat = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
case 0x03:
|
case 0x03:
|
||||||
|
|
||||||
//from_bcd(frameackbuf[2], (civ_731_mode ? 4 : 5) * 2);
|
//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;
|
frame[10] = 0xfd;
|
||||||
|
|
||||||
if (powerstat)
|
if (powerstat)
|
||||||
|
{
|
||||||
n = write(fd, frame, 11);
|
n = write(fd, frame, 11);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x04:
|
case 0x04:
|
||||||
|
@ -527,11 +540,14 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (powerstat)
|
if (powerstat)
|
||||||
|
{
|
||||||
frameParse(fd, buf, len);
|
frameParse(fd, buf, len);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
usleep(1000 * 1000);
|
usleep(1000 * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
rigStatus();
|
rigStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue