diff --git a/dummy/dummy.c b/dummy/dummy.c index 49a6a8fbc..2387c654f 100644 --- a/dummy/dummy.c +++ b/dummy/dummy.c @@ -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, \ diff --git a/dummy/netrigctl.c b/dummy/netrigctl.c index 823c52433..0e09d7c15 100644 --- a/dummy/netrigctl.c +++ b/dummy/netrigctl.c @@ -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) diff --git a/dummy/trxmanager.c b/dummy/trxmanager.c index 70402ea33..b7b84487d 100644 --- a/dummy/trxmanager.c +++ b/dummy/trxmanager.c @@ -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; } diff --git a/dummy/trxmanager.h b/dummy/trxmanager.h index 37fa8f1cf..a78349dca 100644 --- a/dummy/trxmanager.h +++ b/dummy/trxmanager.h @@ -30,7 +30,7 @@ #include #endif -#define BACKEND_VER "1.2" +#define BACKEND_VER "1.2x" #define EOM "\r" #define TRUE 1 diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 354ed7111..6fe3e6fea 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -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 */ diff --git a/src/misc.c b/src/misc.c index b26ddebf6..454cbda64 100644 --- a/src/misc.c +++ b/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) { diff --git a/src/network.c b/src/network.c index fc011fe4c..0bacd7c01 100644 --- a/src/network.c +++ b/src/network.c @@ -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); diff --git a/tests/dumpcaps.c b/tests/dumpcaps.c index 6ed40d55c..f11453731 100644 --- a/tests/dumpcaps.c +++ b/tests/dumpcaps.c @@ -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) { diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index b6b5a949c..94e55e6e1 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -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); } diff --git a/tests/sprintflst.c b/tests/sprintflst.c index fdec2c739..6c318a789 100644 --- a/tests/sprintflst.c +++ b/tests/sprintflst.c @@ -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]) {