kopia lustrzana https://github.com/Hamlib/Hamlib
allow rmode_t to be 64 bits wide (by mdblack98)
rodzic
9acfe7a882
commit
27041e008b
|
@ -1456,7 +1456,11 @@ static int dummy_mW2power(RIG * rig, float *power, unsigned int mwpower,
|
|||
|
||||
#define DUMMY_MODES (RIG_MODE_AM | RIG_MODE_CW | RIG_MODE_RTTY | \
|
||||
RIG_MODE_SSB | RIG_MODE_FM | RIG_MODE_WFM | \
|
||||
RIG_MODE_CWR | RIG_MODE_RTTYR)
|
||||
RIG_MODE_CWR | RIG_MODE_RTTYR| \
|
||||
RIG_MODE_PKTUSB | RIG_MODE_PKTUSB2 | RIG_MODE_PKTUSB3 |\
|
||||
RIG_MODE_PKTLSB | RIG_MODE_PKTLSB2 | RIG_MODE_PKTLSB3 |\
|
||||
RIG_MODE_AM | RIG_MODE_AM2 | RIG_MODE_AM3 |\
|
||||
RIG_MODE_FM | RIG_MODE_FM2 | RIG_MODE_FM3)
|
||||
|
||||
#define DUMMY_MEM_CAP { \
|
||||
.bank_num = 1, \
|
||||
|
|
|
@ -113,7 +113,7 @@ static int netrigctl_open(RIG *rig)
|
|||
if (ret <= 0)
|
||||
return (ret < 0) ? ret : -RIG_EPROTO;
|
||||
|
||||
ret = num_sscanf(buf, "%"SCNfreq"%"SCNfreq"%x%d%d%x%x",
|
||||
ret = num_sscanf(buf, "%"SCNfreq"%"SCNfreq"""%"SCNmode"%d%d%x%x",
|
||||
&rs->rx_range_list[i].start,
|
||||
&rs->rx_range_list[i].end,
|
||||
&rs->rx_range_list[i].modes,
|
||||
|
@ -132,7 +132,7 @@ static int netrigctl_open(RIG *rig)
|
|||
if (ret <= 0)
|
||||
return (ret < 0) ? ret : -RIG_EPROTO;
|
||||
|
||||
ret = num_sscanf(buf, "%"SCNfreq"%"SCNfreq"%x%d%d%x%x",
|
||||
ret = num_sscanf(buf, "%"SCNfreq"%"SCNfreq"""%"SCNmode"%d%d%x%x",
|
||||
&rs->tx_range_list[i].start,
|
||||
&rs->tx_range_list[i].end,
|
||||
&rs->tx_range_list[i].modes,
|
||||
|
@ -151,7 +151,7 @@ static int netrigctl_open(RIG *rig)
|
|||
if (ret <= 0)
|
||||
return (ret < 0) ? ret : -RIG_EPROTO;
|
||||
|
||||
ret = sscanf(buf, "%x%ld",
|
||||
ret = sscanf(buf, "%"SCNmode"%ld",
|
||||
&rs->tuning_steps[i].modes,
|
||||
&rs->tuning_steps[i].ts);
|
||||
if (ret != 2)
|
||||
|
@ -165,7 +165,7 @@ static int netrigctl_open(RIG *rig)
|
|||
if (ret <= 0)
|
||||
return (ret < 0) ? ret : -RIG_EPROTO;
|
||||
|
||||
ret = sscanf(buf, "%x%ld",
|
||||
ret = sscanf(buf, "%"SCNmode"%ld",
|
||||
&rs->filters[i].modes,
|
||||
&rs->filters[i].width);
|
||||
if (ret != 2)
|
||||
|
|
|
@ -49,8 +49,9 @@
|
|||
|
||||
#define TRXMANAGER_MODES (RIG_MODE_AM | RIG_MODE_CW | RIG_MODE_CWR |\
|
||||
RIG_MODE_RTTY | RIG_MODE_RTTYR |\
|
||||
RIG_MODE_PKTLSB | RIG_MODE_PKTUSB |\
|
||||
RIG_MODE_USB | RIG_MODE_LSB | RIG_MODE_FM)
|
||||
RIG_MODE_PKTLSB | RIG_MODE_PKTUSB | RIG_MODE_PKTLSB2 | RIG_MODE_PKTUSB2 | RIG_MODE_PKTLSB3 | RIG_MODE_PKTUSB3 |\
|
||||
RIG_MODE_USB | RIG_MODE_LSB |\
|
||||
RIG_MODE_FM|RIG_MODE_FM2|RIG_MODE_FM3)
|
||||
|
||||
#define streq(s1,s2) (strcmp(s1,s2)==0)
|
||||
|
||||
|
@ -268,6 +269,7 @@ static int trxmanager_init(RIG *rig)
|
|||
|
||||
strncpy(rig->state.rigport.pathname, DEFAULTPATH,
|
||||
sizeof(rig->state.rigport.pathname));
|
||||
//rig->state.mode_list = modes;
|
||||
|
||||
return RIG_OK;
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#define BACKEND_VER "1.2"
|
||||
#define BACKEND_VER "1.2x"
|
||||
|
||||
#define EOM "\r"
|
||||
#define TRUE 1
|
||||
|
|
|
@ -312,6 +312,30 @@ typedef double freq_t;
|
|||
#define SCNfreq "lf"
|
||||
#define FREQFMT SCNfreq
|
||||
|
||||
/**
|
||||
* \brief scanf(3) format to be used for freq_t type
|
||||
*/
|
||||
// Turn on 64 bit mode types
|
||||
#define RMODE64
|
||||
#ifdef RMODE64
|
||||
#ifdef __LP64__
|
||||
#pragma message "64 bit modes requested, 64 bit compilation"
|
||||
#define SCNmode "lx"
|
||||
#else
|
||||
#ifdef __MINGW32__
|
||||
#pragma message "64 bit modes requested, MINGW32 compilation"
|
||||
#define SCNmode "I64x"
|
||||
#else
|
||||
#pragma message "64 bit modes requested, 32 bit compilation"
|
||||
#define SCNmode "llx"
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#pragma message "34 bit modes requested, 32/64 bit compilation"
|
||||
#define SCNmode "x"
|
||||
#endif
|
||||
#define MODEFMT SCNmode
|
||||
|
||||
|
||||
/**
|
||||
* \brief Short frequency type
|
||||
|
@ -866,10 +890,25 @@ typedef enum {
|
|||
RIG_MODE_DSB = (1 << 19), /*!< \c DSB -- Double sideband suppressed carrier */
|
||||
RIG_MODE_FMN = (1 << 21), /*!< \c FMN -- FM Narrow Kenwood ts990s */
|
||||
RIG_MODE_PKTAM = (1 << 22), /*!< \c PKTAM -- Packet/Digital AM mode e.g. IC7300 */
|
||||
RIG_MODE_TESTS_MAX /*!< \c MUST ALWAYS BE LAST, Max Count for dumpcaps.c */
|
||||
RIG_MODE_MAX = (1 << 23), /* this can never be bigger than 31 or 63 */
|
||||
#ifdef RMODE64
|
||||
/* Force rmode_t to be 64 bit */
|
||||
RIG_MODE_DR = (1ULL << 52),
|
||||
RIG_MODE_DV = (1ULL << 53),
|
||||
RIG_MODE_PKTLSB2 = (1ULL << 54),
|
||||
RIG_MODE_PKTUSB2 = (1ULL << 55),
|
||||
RIG_MODE_FM2 = (1ULL << 56),
|
||||
RIG_MODE_AM2 = (1ULL << 57),
|
||||
RIG_MODE_PKTLSB3 = (1ULL << 58),
|
||||
RIG_MODE_PKTUSB3 = (1ULL << 59),
|
||||
RIG_MODE_FM3 = (1ULL << 60),
|
||||
RIG_MODE_AM3 = (1ULL << 61),
|
||||
RIG_MODE_TESTS_MAX =(1ULL << 63)
|
||||
#else
|
||||
RIG_MODE_TESTS_MAX =(1 << 24) /*!< \c MUST ALWAYS BE LAST, Max Count for dumpcaps.c */
|
||||
#endif
|
||||
} rmode_t;
|
||||
|
||||
|
||||
/**
|
||||
* \brief macro for backends, not to be used by rig_set_mode et al.
|
||||
*/
|
||||
|
@ -1591,7 +1630,7 @@ struct rig_state {
|
|||
rmode_t current_mode; /*!< Mode currently set */
|
||||
pbwidth_t current_width; /*!< Passband width currently set */
|
||||
vfo_t tx_vfo; /*!< Tx VFO currently set */
|
||||
int mode_list; /*!< Complete list of modes for this rig */
|
||||
rmode_t mode_list; /*!< Complete list of modes for this rig */
|
||||
int transmit; /*!< rig should be transmitting i.e. hard
|
||||
wired PTT asserted - used by rigs that
|
||||
don't do CAT while in Tx */
|
||||
|
|
10
src/misc.c
10
src/misc.c
|
@ -334,6 +334,14 @@ static struct
|
|||
{ RIG_MODE_SAL, "SAL" },
|
||||
{ RIG_MODE_SAH, "SAH" },
|
||||
{ RIG_MODE_DSB, "DSB"},
|
||||
{ RIG_MODE_PKTLSB2, "PKTLSB2" },
|
||||
{ RIG_MODE_PKTLSB3, "PKTLSB3" },
|
||||
{ RIG_MODE_PKTUSB2, "PKTUSB2" },
|
||||
{ RIG_MODE_PKTUSB3, "PKTUSB3" },
|
||||
{ RIG_MODE_AM2, "PKTAM2" },
|
||||
{ RIG_MODE_AM3, "PKTAM3" },
|
||||
{ RIG_MODE_FM2, "PKTFM2" },
|
||||
{ RIG_MODE_FM3, "PKTFM3" },
|
||||
{ RIG_MODE_DV, "DV"},
|
||||
{ RIG_MODE_DR, "DR"},
|
||||
{ RIG_MODE_NONE, "" },
|
||||
|
@ -383,7 +391,7 @@ const char * HAMLIB_API rig_strrmode(rmode_t mode)
|
|||
return "";
|
||||
}
|
||||
|
||||
for (i = 0 ; mode_str[i].str[0] != '\0'; i++)
|
||||
for (i = 0 ; mode_str[i].str[0]!='\0' ; i++)
|
||||
{
|
||||
if (mode == mode_str[i].mode)
|
||||
{
|
||||
|
|
|
@ -241,7 +241,7 @@ int network_open(hamlib_port_t *rp, int default_port)
|
|||
{
|
||||
break;
|
||||
}
|
||||
char msg[150];
|
||||
char msg[555];
|
||||
snprintf(msg,sizeof(msg),"connect to %s failed, (trying next interface)",rp->pathname);
|
||||
handle_error(RIG_DEBUG_WARN, msg);
|
||||
|
||||
|
|
|
@ -537,9 +537,10 @@ int dumpcaps(RIG *rig, FILE *fout)
|
|||
|
||||
fprintf(fout, "Bandwidths:");
|
||||
|
||||
for (i = 1; i < RIG_MODE_TESTS_MAX; i <<= 1)
|
||||
for (rmode_t l = 1; l < RIG_MODE_TESTS_MAX; l <<= 1)
|
||||
{
|
||||
pbwidth_t pbnorm = rig_passband_normal(rig, i);
|
||||
if (strlen(rig_strrmode(i)) == 0) continue;
|
||||
pbwidth_t pbnorm = rig_passband_normal(rig, l);
|
||||
|
||||
if (pbnorm == 0)
|
||||
{
|
||||
|
|
|
@ -3788,7 +3788,7 @@ declare_proto_rig(dump_state)
|
|||
for (i = 0; i < FRQRANGESIZ && !RIG_IS_FRNG_END(rs->rx_range_list[i]); i++)
|
||||
{
|
||||
fprintf(fout,
|
||||
"%"FREQFMT" %"FREQFMT" 0x%x %d %d 0x%x 0x%x\n",
|
||||
"%"FREQFMT" %"FREQFMT" 0x%"MODEFMT" %d %d 0x%x 0x%x\n",
|
||||
rs->rx_range_list[i].start,
|
||||
rs->rx_range_list[i].end,
|
||||
rs->rx_range_list[i].modes,
|
||||
|
@ -3803,7 +3803,7 @@ declare_proto_rig(dump_state)
|
|||
for (i = 0; i < FRQRANGESIZ && !RIG_IS_FRNG_END(rs->tx_range_list[i]); i++)
|
||||
{
|
||||
fprintf(fout,
|
||||
"%"FREQFMT" %"FREQFMT" 0x%x %d %d 0x%x 0x%x\n",
|
||||
"%"FREQFMT" %"FREQFMT" 0x%"MODEFMT" %d %d 0x%x 0x%x\n",
|
||||
rs->tx_range_list[i].start,
|
||||
rs->tx_range_list[i].end,
|
||||
rs->tx_range_list[i].modes,
|
||||
|
@ -3818,7 +3818,7 @@ declare_proto_rig(dump_state)
|
|||
for (i = 0; i < TSLSTSIZ && !RIG_IS_TS_END(rs->tuning_steps[i]); i++)
|
||||
{
|
||||
fprintf(fout,
|
||||
"0x%x %ld\n",
|
||||
"0x%"MODEFMT" %ld\n",
|
||||
rs->tuning_steps[i].modes,
|
||||
rs->tuning_steps[i].ts);
|
||||
}
|
||||
|
@ -3828,7 +3828,7 @@ declare_proto_rig(dump_state)
|
|||
for (i = 0; i < FLTLSTSIZ && !RIG_IS_FLT_END(rs->filters[i]); i++)
|
||||
{
|
||||
fprintf(fout,
|
||||
"0x%x %ld\n",
|
||||
"0x%"MODEFMT" %ld\n",
|
||||
rs->filters[i].modes,
|
||||
rs->filters[i].width);
|
||||
}
|
||||
|
|
|
@ -112,9 +112,10 @@ int sprintf_mode(char *str, rmode_t mode)
|
|||
return 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < 30; i++)
|
||||
for (i = 0; i < 63; i++)
|
||||
{
|
||||
const char *ms = rig_strrmode(mode & (1UL << i));
|
||||
rmode_t qmode = (rmode_t)1 << i;
|
||||
const char *ms = rig_strrmode(mode & qmode);
|
||||
|
||||
if (!ms || !ms[0])
|
||||
{
|
||||
|
|
Ładowanie…
Reference in New Issue