allow rmode_t to be 64 bits wide (by mdblack98)

pull/19/head
Sebastian Denz 2018-05-17 13:09:25 +02:00
rodzic 9acfe7a882
commit 27041e008b
10 zmienionych plików z 76 dodań i 21 usunięć

Wyświetl plik

@ -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, \

Wyświetl plik

@ -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)

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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

Wyświetl plik

@ -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 */

Wyświetl plik

@ -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)
{

Wyświetl plik

@ -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);

Wyświetl plik

@ -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)
{

Wyświetl plik

@ -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);
}

Wyświetl plik

@ -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])
{