diff --git a/dummy/netrigctl.c b/dummy/netrigctl.c index 389fa8995..457e001d8 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"%"SCNXll"%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"%"SCNXll"%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, "%"SCNXll"%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, "%"SCNXll"%ld", &rs->filters[i].modes, &rs->filters[i].width); if (ret != 2) diff --git a/icom/ic706.c b/icom/ic706.c index eaf719ce7..6ffc22662 100644 --- a/icom/ic706.c +++ b/icom/ic706.c @@ -176,6 +176,7 @@ const struct rig_caps ic706_caps = { .max_xit = Hz(0), .max_ifshift = Hz(0), .targetable_vfo = 0, +.vfo_ops = IC706_VFO_OPS, .transceive = RIG_TRN_RIG, .bank_qty = 0, .chan_desc_sz = 0, @@ -309,6 +310,7 @@ const struct rig_caps ic706mkii_caps = { .max_xit = Hz(0), .max_ifshift = Hz(0), .targetable_vfo = 0, +.vfo_ops = IC706_VFO_OPS, .transceive = RIG_TRN_RIG, .bank_qty = 0, .chan_desc_sz = 0, diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index ba66fa48e..95230ff53 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -26,6 +26,7 @@ #include #include +#include /* Rig list is in a separate file so as not to mess up w/ this one */ #include @@ -760,7 +761,7 @@ enum rig_parm_e { * This can be a func, a level or a parm. * Each bit designates one of them. */ -typedef unsigned long setting_t; +typedef uint64_t setting_t; /** * \brief Tranceive mode @@ -790,39 +791,71 @@ typedef unsigned long setting_t; * initialize the func_str.func members. TNX KA6MAL, AC6SL. - N0NB */ #define RIG_FUNC_NONE 0 /*!< '' -- No Function */ -#define RIG_FUNC_FAGC (1UL<<0) /*!< \c FAGC -- Fast AGC */ -#define RIG_FUNC_NB (1UL<<1) /*!< \c NB -- Noise Blanker */ -#define RIG_FUNC_COMP (1UL<<2) /*!< \c COMP -- Speech Compression */ -#define RIG_FUNC_VOX (1UL<<3) /*!< \c VOX -- Voice Operated Relay */ -#define RIG_FUNC_TONE (1UL<<4) /*!< \c TONE -- CTCSS Tone */ -#define RIG_FUNC_TSQL (1UL<<5) /*!< \c TSQL -- CTCSS Activate/De-activate */ -#define RIG_FUNC_SBKIN (1UL<<6) /*!< \c SBKIN -- Semi Break-in (CW mode) */ -#define RIG_FUNC_FBKIN (1UL<<7) /*!< \c FBKIN -- Full Break-in (CW mode) */ -#define RIG_FUNC_ANF (1UL<<8) /*!< \c ANF -- Automatic Notch Filter (DSP) */ -#define RIG_FUNC_NR (1UL<<9) /*!< \c NR -- Noise Reduction (DSP) */ -#define RIG_FUNC_AIP (1UL<<10) /*!< \c AIP -- RF pre-amp (AIP on Kenwood, IPO on Yaesu, etc.) */ -#define RIG_FUNC_APF (1UL<<11) /*!< \c APF -- Auto Passband/Audio Peak Filter */ -#define RIG_FUNC_MON (1UL<<12) /*!< \c MON -- Monitor transmitted signal */ -#define RIG_FUNC_MN (1UL<<13) /*!< \c MN -- Manual Notch */ -#define RIG_FUNC_RF (1UL<<14) /*!< \c RF -- RTTY Filter */ -#define RIG_FUNC_ARO (1UL<<15) /*!< \c ARO -- Auto Repeater Offset */ -#define RIG_FUNC_LOCK (1UL<<16) /*!< \c LOCK -- Lock */ -#define RIG_FUNC_MUTE (1UL<<17) /*!< \c MUTE -- Mute */ -#define RIG_FUNC_VSC (1UL<<18) /*!< \c VSC -- Voice Scan Control */ -#define RIG_FUNC_REV (1UL<<19) /*!< \c REV -- Reverse transmit and receive frequencies */ -#define RIG_FUNC_SQL (1UL<<20) /*!< \c SQL -- Turn Squelch Monitor on/off */ -#define RIG_FUNC_ABM (1UL<<21) /*!< \c ABM -- Auto Band Mode */ -#define RIG_FUNC_BC (1UL<<22) /*!< \c BC -- Beat Canceller */ -#define RIG_FUNC_MBC (1UL<<23) /*!< \c MBC -- Manual Beat Canceller */ -#define RIG_FUNC_RIT (1UL<<24) /*!< \c RIT -- Receiver Incremental Tuning */ -#define RIG_FUNC_AFC (1UL<<25) /*!< \c AFC -- Auto Frequency Control ON/OFF */ -#define RIG_FUNC_SATMODE (1UL<<26) /*!< \c SATMODE -- Satellite mode ON/OFF */ -#define RIG_FUNC_SCOPE (1UL<<27) /*!< \c SCOPE -- Simple bandscope ON/OFF */ -#define RIG_FUNC_RESUME (1UL<<28) /*!< \c RESUME -- Scan auto-resume */ -#define RIG_FUNC_TBURST (1UL<<29) /*!< \c TBURST -- 1750 Hz tone burst */ -#define RIG_FUNC_TUNER (1UL<<30) /*!< \c TUNER -- Enable automatic tuner */ -#define RIG_FUNC_XIT (1UL<<31) /*!< \c XIT -- Transmitter Incremental Tuning */ - +#define RIG_FUNC_FAGC (1ULL<<0) /*!< \c FAGC -- Fast AGC */ +#define RIG_FUNC_NB (1ULL<<1) /*!< \c NB -- Noise Blanker */ +#define RIG_FUNC_COMP (1ULL<<2) /*!< \c COMP -- Speech Compression */ +#define RIG_FUNC_VOX (1ULL<<3) /*!< \c VOX -- Voice Operated Relay */ +#define RIG_FUNC_TONE (1ULL<<4) /*!< \c TONE -- CTCSS Tone */ +#define RIG_FUNC_TSQL (1ULL<<5) /*!< \c TSQL -- CTCSS Activate/De-activate */ +#define RIG_FUNC_SBKIN (1ULL<<6) /*!< \c SBKIN -- Semi Break-in (CW mode) */ +#define RIG_FUNC_FBKIN (1ULL<<7) /*!< \c FBKIN -- Full Break-in (CW mode) */ +#define RIG_FUNC_ANF (1ULL<<8) /*!< \c ANF -- Automatic Notch Filter (DSP) */ +#define RIG_FUNC_NR (1ULL<<9) /*!< \c NR -- Noise Reduction (DSP) */ +#define RIG_FUNC_AIP (1ULL<<10) /*!< \c AIP -- RF pre-amp (AIP on Kenwood, IPO on Yaesu, etc.) */ +#define RIG_FUNC_APF (1ULL<<11) /*!< \c APF -- Auto Passband/Audio Peak Filter */ +#define RIG_FUNC_MON (1ULL<<12) /*!< \c MON -- Monitor transmitted signal */ +#define RIG_FUNC_MN (1ULL<<13) /*!< \c MN -- Manual Notch */ +#define RIG_FUNC_RF (1ULL<<14) /*!< \c RF -- RTTY Filter */ +#define RIG_FUNC_ARO (1ULL<<15) /*!< \c ARO -- Auto Repeater Offset */ +#define RIG_FUNC_LOCK (1ULL<<16) /*!< \c LOCK -- Lock */ +#define RIG_FUNC_MUTE (1ULL<<17) /*!< \c MUTE -- Mute */ +#define RIG_FUNC_VSC (1ULL<<18) /*!< \c VSC -- Voice Scan Control */ +#define RIG_FUNC_REV (1ULL<<19) /*!< \c REV -- Reverse transmit and receive frequencies */ +#define RIG_FUNC_SQL (1ULL<<20) /*!< \c SQL -- Turn Squelch Monitor on/off */ +#define RIG_FUNC_ABM (1ULL<<21) /*!< \c ABM -- Auto Band Mode */ +#define RIG_FUNC_BC (1ULL<<22) /*!< \c BC -- Beat Canceller */ +#define RIG_FUNC_MBC (1ULL<<23) /*!< \c MBC -- Manual Beat Canceller */ +#define RIG_FUNC_RIT (1ULL<<24) /*!< \c RIT -- Receiver Incremental Tuning */ +#define RIG_FUNC_AFC (1ULL<<25) /*!< \c AFC -- Auto Frequency Control ON/OFF */ +#define RIG_FUNC_SATMODE (1ULL<<26) /*!< \c SATMODE -- Satellite mode ON/OFF */ +#define RIG_FUNC_SCOPE (1ULL<<27) /*!< \c SCOPE -- Simple bandscope ON/OFF */ +#define RIG_FUNC_RESUME (1ULL<<28) /*!< \c RESUME -- Scan auto-resume */ +#define RIG_FUNC_TBURST (1ULL<<29) /*!< \c TBURST -- 1750 Hz tone burst */ +#define RIG_FUNC_TUNER (1ULL<<30) /*!< \c TUNER -- Enable automatic tuner */ +#define RIG_FUNC_XIT (1ULL<<31) /*!< \c XIT -- Transmitter Incremental Tuning */ +#define RIG_FUNC_NB2 (1ULL<<32) /*!< \c NB2 -- 2nd Noise Blanker */ +#define RIG_FUNC_BIT33 (1ULL<<33) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT34 (1ULL<<34) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT35 (1ULL<<35) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT36 (1ULL<<36) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT37 (1ULL<<37) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT38 (1ULL<<38) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT39 (1ULL<<39) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT40 (1ULL<<40) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT41 (1ULL<<41) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT42 (1ULL<<42) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT43 (1ULL<<43) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT44 (1ULL<<44) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT45 (1ULL<<45) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT46 (1ULL<<46) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT47 (1ULL<<47) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT48 (1ULL<<48) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT49 (1ULL<<49) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT50 (1ULL<<50) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT51 (1ULL<<51) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT52 (1ULL<<52) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT53 (1ULL<<53) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT54 (1ULL<<54) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT55 (1ULL<<55) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT56 (1ULL<<56) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT57 (1ULL<<57) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT58 (1ULL<<58) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT59 (1ULL<<59) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT60 (1ULL<<60) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT61 (1ULL<<61) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT62 (1ULL<<62) /* available for future RIG_FUNC items */ +#define RIG_FUNC_BIT63 (1ULL<<63) /* available for future RIG_FUNC items */ +/* 63 is this highest bit number that can be used */ /** * \brief power unit macros @@ -845,40 +878,73 @@ typedef unsigned long setting_t; * \sa rig_parse_mode(), rig_strrmode() * TODO: Add new 8600 modes to rig2icom_mode() and icom2rig_mode() in frame.c */ -typedef enum { - RIG_MODE_NONE = 0, /*!< '' -- None */ - RIG_MODE_AM = (1 << 0), /*!< \c AM -- Amplitude Modulation */ - RIG_MODE_CW = (1 << 1), /*!< \c CW -- CW "normal" sideband */ - RIG_MODE_USB = (1 << 2), /*!< \c USB -- Upper Side Band */ - RIG_MODE_LSB = (1 << 3), /*!< \c LSB -- Lower Side Band */ - RIG_MODE_RTTY = (1 << 4), /*!< \c RTTY -- Radio Teletype */ - RIG_MODE_FM = (1 << 5), /*!< \c FM -- "narrow" band FM */ - RIG_MODE_WFM = (1 << 6), /*!< \c WFM -- broadcast wide FM */ - RIG_MODE_CWR = (1 << 7), /*!< \c CWR -- CW "reverse" sideband */ - RIG_MODE_RTTYR = (1 << 8), /*!< \c RTTYR -- RTTY "reverse" sideband */ - RIG_MODE_AMS = (1 << 9), /*!< \c AMS -- Amplitude Modulation Synchronous */ - RIG_MODE_PKTLSB = (1 << 10), /*!< \c PKTLSB -- Packet/Digital LSB mode (dedicated port) */ - RIG_MODE_PKTUSB = (1 << 11), /*!< \c PKTUSB -- Packet/Digital USB mode (dedicated port) */ - RIG_MODE_PKTFM = (1 << 12), /*!< \c PKTFM -- Packet/Digital FM mode (dedicated port) */ - RIG_MODE_ECSSUSB = (1 << 13), /*!< \c ECSSUSB -- Exalted Carrier Single Sideband USB */ - RIG_MODE_ECSSLSB = (1 << 14), /*!< \c ECSSLSB -- Exalted Carrier Single Sideband LSB */ - RIG_MODE_FAX = (1 << 15), /*!< \c FAX -- Facsimile Mode */ - RIG_MODE_SAM = (1 << 16), /*!< \c SAM -- Synchronous AM double sideband */ - RIG_MODE_SAL = (1 << 17), /*!< \c SAL -- Synchronous AM lower sideband */ - RIG_MODE_SAH = (1 << 18), /*!< \c SAH -- Synchronous AM upper (higher) sideband */ - 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_P25 = (1 << 23), /*!< \c P25 -- APCO/P25 VHF,UHF digital mode IC-R8600 */ - RIG_MODE_DSTAR = (1 << 24), /*!< \c D-Star -- VHF,UHF digital mode IC-R8600 */ - RIG_MODE_DPMR = (1 << 25), /*!< \c dPMR -- digital PMR, VHF,UHF digital mode IC-R8600 */ - RIG_MODE_NXDNVN = (1 << 26), /*!< \c NXDN-VN -- VHF,UHF digital mode IC-R8600 */ - RIG_MODE_NXDN_N = (1 << 27), /*!< \c NXDN-N -- VHF,UHF digital mode IC-R8600 */ - RIG_MODE_DCR = (1 << 28), /*!< \c DCR -- VHF,UHF digital mode IC-R8600 */ - RIG_MODE_AMN = (1 << 29), /*!< \c AM-N -- Narrow band AM mode IC-R30 */ - RIG_MODE_TESTS_MAX /*!< \c MUST ALWAYS BE LAST, Max Count for dumpcaps.c */ -} rmode_t; +#define ULL (uint64_t) +typedef uint64_t rmode_t; +#define RIG_MODE_NONE 0 /*!< '' -- None */ +#define RIG_MODE_AM (1ULL << 0) /*!< \c AM -- Amplitude Modulation */ +#define RIG_MODE_CW (1ULL << 1) /*!< \c CW -- CW "normal" sideband */ +#define RIG_MODE_USB (1ULL << 2) /*!< \c USB -- Upper Side Band */ +#define RIG_MODE_LSB (1ULL << 3) /*!< \c LSB -- Lower Side Band */ +#define RIG_MODE_RTTY (1ULL << 4) /*!< \c RTTY -- Radio Teletype */ +#define RIG_MODE_FM (1ULL << 5) /*!< \c FM -- "narrow" band FM */ +#define RIG_MODE_WFM (1ULL << 6) /*!< \c WFM -- broadcast wide FM */ +#define RIG_MODE_CWR (1ULL << 7) /*!< \c CWR -- CW "reverse" sideband */ +#define RIG_MODE_RTTYR (1ULL << 8) /*!< \c RTTYR -- RTTY "reverse" sideband */ +#define RIG_MODE_AMS (1ULL << 9) /*!< \c AMS -- Amplitude Modulation Synchronous */ +#define RIG_MODE_PKTLSB (1ULL << 10) /*!< \c PKTLSB -- Packet/Digital LSB mode (dedicated port) */ +#define RIG_MODE_PKTUSB (1ULL << 11) /*!< \c PKTUSB -- Packet/Digital USB mode (dedicated port) */ +#define RIG_MODE_PKTFM (1ULL << 12) /*!< \c PKTFM -- Packet/Digital FM mode (dedicated port) */ +#define RIG_MODE_ECSSUSB (1ULL << 13) /*!< \c ECSSUSB -- Exalted Carrier Single Sideband USB */ +#define RIG_MODE_ECSSLSB (1ULL << 14) /*!< \c ECSSLSB -- Exalted Carrier Single Sideband LSB */ +#define RIG_MODE_FAX (1ULL << 15) /*!< \c FAX -- Facsimile Mode */ +#define RIG_MODE_SAM (1ULL << 16) /*!< \c SAM -- Synchronous AM double sideband */ +#define RIG_MODE_SAL (1ULL << 17) /*!< \c SAL -- Synchronous AM lower sideband */ +#define RIG_MODE_SAH (1ULL << 18) /*!< \c SAH -- Synchronous AM upper (higher) sideband */ +#define RIG_MODE_DSB (1ULL << 19) /*!< \c DSB -- Double sideband suppressed carrier */ +#define RIG_MODE_FMN (1ULL << 21) /*!< \c FMN -- FM Narrow Kenwood ts990s */ +#define RIG_MODE_PKTAM (1ULL << 22) /*!< \c PKTAM -- Packet/Digital AM mode e.g. IC7300 */ +#define RIG_MODE_P25 (1ULL << 23) /*!< \c P25 -- APCO/P25 VHF,UHF digital mode IC-R8600 */ +#define RIG_MODE_DSTAR (1ULL << 24) /*!< \c D-Star -- VHF,UHF digital mode IC-R8600 */ +#define RIG_MODE_DPMR (1ULL << 25) /*!< \c dPMR -- digital PMR, VHF,UHF digital mode IC-R8600 */ +#define RIG_MODE_NXDNVN (1ULL << 26) /*!< \c NXDN-VN -- VHF,UHF digital mode IC-R8600 */ +#define RIG_MODE_NXDN_N (1ULL << 27) /*!< \c NXDN-N -- VHF,UHF digital mode IC-R8600 */ +#define RIG_MODE_DCR (1ULL << 28) /*!< \c DCR -- VHF,UHF digital mode IC-R8600 */ +#define RIG_MODE_AMN (1ULL << 29) /*!< \c AM-N -- Narrow band AM mode IC-R30 */ +#define RIG_MODE_PSK (1ULL << 30) /* PSK - Kenwood PSK and others */ +#define RIG_MODE_PSKR (1ULL << 31) /* PSKR - Kenwood PSKR and others */ +#define RIG_MODE_BIT32 (1ULL << 32) /* reserved for future expansion */ +#define RIG_MODE_BIT33 (1ULL << 33) /* reserved for future expansion */ +#define RIG_MODE_BIT34 (1ULL << 34) /* reserved for future expansion */ +#define RIG_MODE_BIT35 (1ULL << 35) /* reserved for future expansion */ +#define RIG_MODE_BIT36 (1ULL << 36) /* reserved for future expansion */ +#define RIG_MODE_BIT37 (1ULL << 37) /* reserved for future expansion */ +#define RIG_MODE_BIT38 (1ULL << 38) /* reserved for future expansion */ +#define RIG_MODE_BIT39 (1ULL << 39) /* reserved for future expansion */ +#define RIG_MODE_BIT40 (1ULL << 40) /* reserved for future expansion */ +#define RIG_MODE_BIT41 (1ULL << 41) /* reserved for future expansion */ +#define RIG_MODE_BIT42 (1ULL << 42) /* reserved for future expansion */ +#define RIG_MODE_BIT43 (1ULL << 43) /* reserved for future expansion */ +#define RIG_MODE_BIT44 (1ULL << 44) /* reserved for future expansion */ +#define RIG_MODE_BIT45 (1ULL << 45) /* reserved for future expansion */ +#define RIG_MODE_BIT46 (1ULL << 46) /* reserved for future expansion */ +#define RIG_MODE_BIT47 (1ULL << 47) /* reserved for future expansion */ +#define RIG_MODE_BIT48 (1ULL << 48) /* reserved for future expansion */ +#define RIG_MODE_BIT49 (1ULL << 49) /* reserved for future expansion */ +#define RIG_MODE_BIT50 (1ULL << 50) /* reserved for future expansion */ +#define RIG_MODE_BIT51 (1ULL << 51) /* reserved for future expansion */ +#define RIG_MODE_BIT52 (1ULL << 52) /* reserved for future expansion */ +#define RIG_MODE_BIT53 (1ULL << 53) /* reserved for future expansion */ +#define RIG_MODE_BIT54 (1ULL << 54) /* reserved for future expansion */ +#define RIG_MODE_BIT55 (1ULL << 55) /* reserved for future expansion */ +#define RIG_MODE_BIT56 (1ULL << 56) /* reserved for future expansion */ +#define RIG_MODE_BIT57 (1ULL << 57) /* reserved for future expansion */ +#define RIG_MODE_BIT58 (1ULL << 58) /* reserved for future expansion */ +#define RIG_MODE_BIT59 (1ULL << 59) /* reserved for future expansion */ +#define RIG_MODE_BIT60 (1ULL << 60) /* reserved for future expansion */ +#define RIG_MODE_BIT61 (1ULL << 61) /* reserved for future expansion */ +#define RIG_MODE_BIT62 (1ULL << 62) /* reserved for future expansion */ +#define RIG_MODE_TESTS_MAX (1ULL << 63) /*!< \c last bit available for 64-bit enum MUST ALWAYS BE LAST, Max Count for dumpcaps.c */ /** * \brief macro for backends, not to be used by rig_set_mode et al. @@ -2187,7 +2253,7 @@ rigerror HAMLIB_PARAMS((int errnum)); extern HAMLIB_EXPORT(int) rig_setting2idx HAMLIB_PARAMS((setting_t s)); -#define rig_idx2setting(i) (1UL<<(i)) +#define rig_idx2setting(i) (1ULL<<(i)) /* * Even if these functions are prefixed with "rig_", they are not rig specific diff --git a/include/hamlib/riglist.h b/include/hamlib/riglist.h index a1f1a8673..a167a81f2 100644 --- a/include/hamlib/riglist.h +++ b/include/hamlib/riglist.h @@ -153,6 +153,7 @@ #define RIG_MODEL_XG3 RIG_MAKE_MODEL(RIG_KENWOOD, 38) /* Elecraft XG-3 signal generator */ #define RIG_MODEL_TS990S RIG_MAKE_MODEL(RIG_KENWOOD, 39) #define RIG_MODEL_HPSDR RIG_MAKE_MODEL(RIG_KENWOOD, 40) /* OpenHPSDR, PiHPSDR */ +#define RIG_MODEL_TS890S RIG_MAKE_MODEL(RIG_KENWOOD, 41) /* diff --git a/kenwood/kenwood.c b/kenwood/kenwood.c index d9b0ba198..8a8010062 100644 --- a/kenwood/kenwood.c +++ b/kenwood/kenwood.c @@ -86,6 +86,7 @@ static const struct kenwood_id kenwood_id_list[] = { { RIG_MODEL_TS590S, 21 }, { RIG_MODEL_TS990S, 22 }, { RIG_MODEL_TS590SG, 23 }, + { RIG_MODEL_TS890S, 24 }, { RIG_MODEL_NONE, UNKNOWN_ID }, /* end marker */ }; @@ -132,7 +133,13 @@ rmode_t kenwood_mode_table[KENWOOD_MODE_TABLE_MAX] = { [6] = RIG_MODE_RTTY, [7] = RIG_MODE_CWR, [8] = RIG_MODE_NONE, /* TUNE mode */ - [9] = RIG_MODE_RTTYR + [9] = RIG_MODE_RTTYR, + [10] = RIG_MODE_PSK, + [11] = RIG_MODE_PSKR, + [12] = RIG_MODE_PKTLSB, + [13] = RIG_MODE_PKTUSB, + [14] = RIG_MODE_PKTFM, + [15] = RIG_MODE_PKTAM }; /* @@ -1442,6 +1449,16 @@ int kenwood_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) return -RIG_EINVAL; } + char c; + if (kmode <= 9) + { + c = '0' + kmode; + } + else + { + c = 'A' + kmode - 10; + } + if (RIG_MODEL_TS990S == rig->caps->rig_model) { /* The TS990s has targetable read mode but can only set the mode @@ -1450,18 +1467,9 @@ int kenwood_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) setting caps.targetable_vfo to not include RIG_TARGETABLE_MODE since the toggle is not required for reading the mode. */ - char c; vfo_t curr_vfo; err = kenwood_get_vfo_main_sub (rig, &curr_vfo); if (err != RIG_OK) return err; - if (kmode <= 9) - { - c = '0' + kmode; - } - else - { - c = 'A' + kmode - 10; - } if (vfo != RIG_VFO_CURR && vfo != curr_vfo) { err = kenwood_set_vfo_main_sub (rig, vfo); @@ -1477,7 +1485,7 @@ int kenwood_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) } else { - snprintf(buf, sizeof (buf), "MD%c", '0' + kmode); + snprintf(buf, sizeof (buf), "MD%c", c); err = kenwood_transaction(rig, buf, NULL, 0); } if (err != RIG_OK) return err; @@ -2019,11 +2027,28 @@ int kenwood_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) if (!rig) return -RIG_EINVAL; - char buf[6]; /* longest cmd is GTxxx */ + char buf[10]; /* longest cmd is GTxxx */ switch (func) { case RIG_FUNC_NB: - snprintf(buf, sizeof (buf), "NB%c", (status == 0) ? '0' : '1'); + case RIG_FUNC_NB2: + /* newer Kenwoods have a second noise blanker */ + if (RIG_MODEL_TS890S == rig->caps->rig_model) { + switch(func) { + case RIG_FUNC_NB: + snprintf(buf, sizeof (buf), "NB1%c", (status == 0) ? '0' : '1'); + break; + case RIG_FUNC_NB2: + snprintf(buf, sizeof (buf), "NB2%c", (status == 0) ? '0' : '1'); + break; + default: + rig_debug(RIG_DEBUG_ERR, "%s: expected 0,1, or 2 and got %d\n", __func__, status); + return -RIG_EINVAL; + } + } + else { + snprintf(buf, sizeof (buf), "NB%c", (status == 0) ? '0' : '1'); + } return kenwood_transaction(rig, buf, NULL, 0); case RIG_FUNC_ABM: @@ -2134,6 +2159,9 @@ int kenwood_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) case RIG_FUNC_NB: return get_kenwood_func(rig, "NB", status); + case RIG_FUNC_NB2: + return get_kenwood_func(rig, "NB2", status); + case RIG_FUNC_ABM: return get_kenwood_func(rig, "AM", status); @@ -3437,6 +3465,7 @@ DECLARE_INITRIG_BACKEND(kenwood) rig_register(&f6k_caps); rig_register(&pihpsdr_caps); + rig_register(&ts890s_caps); return RIG_OK; } diff --git a/kenwood/kenwood.h b/kenwood/kenwood.h index e93e06881..c1ca29a0f 100644 --- a/kenwood/kenwood.h +++ b/kenwood/kenwood.h @@ -27,7 +27,7 @@ #include #include "token.h" -#define BACKEND_VER "1.0" +#define BACKEND_VER "1.1" #define EOM_KEN ';' #define EOM_TH '\r' @@ -203,6 +203,7 @@ extern const struct rig_caps transfox_caps; extern const struct rig_caps f6k_caps; extern const struct rig_caps pihpsdr_caps; +extern const struct rig_caps ts890s_caps; /* use when not interested in the answer, but want to check its len */ static int inline kenwood_simple_transaction(RIG *rig, const char *cmd, size_t expected) diff --git a/kenwood/ts480.c b/kenwood/ts480.c index 167b074a3..2f3a02ecb 100644 --- a/kenwood/ts480.c +++ b/kenwood/ts480.c @@ -1,5 +1,6 @@ /* * Hamlib Kenwood backend - TS480 description + * Hamlib Kenwood backend - TS890s description * Copyright (c) 2000-2004 by Stephane Fillod and Juergen Rinas * * @@ -31,6 +32,8 @@ #include "kenwood.h" #define TS480_ALL_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_FM|RIG_MODE_RTTY|RIG_MODE_RTTYR) +#define TS890_ALL_MODES (RIG_MODE_LSB|RIG_MODE_USB|RIG_MODE_CW|RIG_MODE_FM|RIG_MODE_AM|RIG_MODE_RTTY|RIG_MODE_CWR|RIG_MODE_RTTYR|RIG_MODE_PSK|RIG_MODE_PSKR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|RIG_MODE_PKTAM) + #define TS480_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_FM|RIG_MODE_RTTY) #define TS480_AM_TX_MODES RIG_MODE_AM #define TS480_VFO (RIG_VFO_A|RIG_VFO_B) @@ -252,6 +255,10 @@ static struct kenwood_priv_caps ts480_priv_caps = { .cmdtrm = EOM_KEN, }; +static struct kenwood_priv_caps ts890s_priv_caps = { + .cmdtrm = EOM_KEN, +}; + /* * ts480 rig capabilities. @@ -405,6 +412,160 @@ const struct rig_caps ts480_caps = { .get_func = kenwood_get_func, }; +/* + * ts890s rig capabilities. + * Copied from ts480_caps + * Where you see TS480 in this the values have not been verified + * Notice that some rigs share the same functions. + * Also this struct is READONLY! + */ +const struct rig_caps ts890s_caps = { + .rig_model = RIG_MODEL_TS890S, + .model_name = "TS-890S", + .mfg_name = "Kenwood", + .version = BACKEND_VER ".2", + .copyright = "LGPL", + .status = RIG_STATUS_BETA, + .rig_type = RIG_TYPE_TRANSCEIVER, + .ptt_type = RIG_PTT_RIG_MICDATA, + .dcd_type = RIG_DCD_RIG, + .port_type = RIG_PORT_SERIAL, + .serial_rate_min = 4800, + .serial_rate_max = 115200, + .serial_data_bits = 8, + .serial_stop_bits = 1, + .serial_parity = RIG_PARITY_NONE, + .serial_handshake = RIG_HANDSHAKE_NONE, + .write_delay = 0, + .post_write_delay = 0, + .timeout = 200, + .retry = 10, + .preamp = {12, RIG_DBLST_END,}, + .attenuator = {12, RIG_DBLST_END,}, + .max_rit = kHz (9.99), + .max_xit = kHz (9.99), + .max_ifshift = Hz (0), + .targetable_vfo = RIG_TARGETABLE_FREQ, + .transceive = RIG_TRN_RIG, + + + .rx_range_list1 = { + {kHz(100), Hz(59999999), TS890_ALL_MODES, -1, -1, TS480_VFO}, + RIG_FRNG_END, + }, /*!< Receive frequency range list for ITU region 1 */ + .tx_range_list1 = { + {kHz(1810), kHz(1850), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, /* 100W class */ + {kHz(1810), kHz(1850), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, /* 25W class */ + {kHz(3500), kHz(3800), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(3500), kHz(3800), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(7), kHz(7200), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(7), kHz(7200), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {kHz(10100), kHz(10150), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(10100), kHz(10150), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(14), kHz(14350), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(14), kHz(14350), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {kHz(18068), kHz(18168), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(18068), kHz(18168), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(21), kHz(21450), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(21), kHz(21450), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {kHz(24890), kHz(24990), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(24890), kHz(24990), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(28), kHz(29700), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(28), kHz(29700), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(50), kHz(52000), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(50), kHz(52000), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + RIG_FRNG_END, + }, /*!< Transmit frequency range list for ITU region 1 */ + .rx_range_list2 = { + {kHz(100), Hz(59999999), TS890_ALL_MODES, -1, -1, TS480_VFO}, + RIG_FRNG_END, + }, /*!< Receive frequency range list for ITU region 2 */ + .tx_range_list2 = { + {kHz(1800), MHz(2) - 1, TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, /* 100W class */ + {kHz(1800), MHz(2) - 1, TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, /* 25W class */ + {kHz(3500), MHz(4) - 1, TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(3500), MHz(4) - 1, TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {kHz(5250), kHz(5450), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(5250), kHz(5450), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(7), kHz(7300), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(7), kHz(7300), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {kHz(10100), kHz(10150), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(10100), kHz(10150), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(14), kHz(14350), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(14), kHz(14350), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {kHz(18068), kHz(18168), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(18068), kHz(18168), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(21), kHz(21450), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(21), kHz(21450), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {kHz(24890), kHz(24990), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(24890), kHz(24990), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(28), kHz(29700), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(28), kHz(29700), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(50), kHz(52000), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(50), kHz(52000), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + RIG_FRNG_END, + }, /*!< Transmit frequency range list for ITU region 2 */ + .tuning_steps = { + {TS890_ALL_MODES,kHz(1)}, + {TS890_ALL_MODES,Hz(2500)}, + {TS890_ALL_MODES,kHz(5)}, + {TS890_ALL_MODES,Hz(6250)}, + {TS890_ALL_MODES,kHz(10)}, + {TS890_ALL_MODES,Hz(12500)}, + {TS890_ALL_MODES,kHz(15)}, + {TS890_ALL_MODES,kHz(20)}, + {TS890_ALL_MODES,kHz(25)}, + {TS890_ALL_MODES,kHz(30)}, + {TS890_ALL_MODES,kHz(100)}, + {TS890_ALL_MODES,kHz(500)}, + {TS890_ALL_MODES,MHz(1)}, + {TS890_ALL_MODES,0}, /* any tuning step */ + RIG_TS_END, + }, + /* mode/filter list, remember: order matters! */ + .filters = { + {RIG_MODE_SSB, kHz(2.4)}, + {RIG_MODE_CW, Hz(200)}, + {RIG_MODE_RTTY, Hz(500)}, + {RIG_MODE_AM, kHz(9)}, + {RIG_MODE_FM, kHz(14)}, + RIG_FLT_END, + }, + .priv = (void *) &ts890s_priv_caps, + .rig_init = kenwood_init, + .rig_cleanup = kenwood_cleanup, + .set_freq = kenwood_set_freq, + .get_freq = kenwood_get_freq, + .set_rit = kenwood_set_rit, /* FIXME should this switch to rit mode or just set the frequency? */ + .get_rit = kenwood_get_rit, + .set_xit = kenwood_set_xit, /* FIXME should this switch to xit mode or just set the frequency? */ + .get_xit = kenwood_get_xit, + .set_mode = kenwood_set_mode, + .get_mode = kenwood_get_mode, + .set_vfo = kenwood_set_vfo, + .get_vfo = kenwood_get_vfo_if, + .set_split_vfo = kenwood_set_split_vfo, + .get_split_vfo = kenwood_get_split_vfo_if, + .get_ptt = kenwood_get_ptt, + .set_ptt = kenwood_set_ptt, + .get_dcd = kenwood_get_dcd, + .set_powerstat = kenwood_set_powerstat, + .get_powerstat = kenwood_get_powerstat, + .get_info = kenwood_ts480_get_info, + .reset = kenwood_reset, + .set_ant = kenwood_set_ant, + .get_ant = kenwood_get_ant, + .scan = kenwood_scan, /* not working, invalid arguments using rigctl; kenwood_scan does only support on/off and not tone and CTCSS scan */ + .has_set_level = TS480_LEVEL_ALL, + .has_get_level = TS480_LEVEL_ALL, + .set_level = kenwood_ts480_set_level, + .get_level = kenwood_ts480_get_level, + .has_get_func = TS480_FUNC_ALL, + .has_set_func = TS480_FUNC_ALL, + .set_func = kenwood_set_func, + .get_func = kenwood_get_func, +}; + /* * my notes: diff --git a/src/misc.c b/src/misc.c index 51140abcd..8dd268a45 100644 --- a/src/misc.c +++ b/src/misc.c @@ -319,7 +319,6 @@ static struct { RIG_MODE_LSB, "LSB" }, { RIG_MODE_RTTY, "RTTY" }, { RIG_MODE_FM, "FM" }, - { RIG_MODE_FMN, "FMN" }, { RIG_MODE_WFM, "WFM" }, { RIG_MODE_CWR, "CWR" }, { RIG_MODE_RTTYR, "RTTYR" }, @@ -334,13 +333,17 @@ static struct { RIG_MODE_SAL, "SAL" }, { RIG_MODE_SAH, "SAH" }, { RIG_MODE_DSB, "DSB"}, - { RIG_MODE_AMN, "AM-N"}, + { RIG_MODE_FMN, "FMN" }, + { RIG_MODE_PKTAM, "PKTAM"}, { RIG_MODE_P25, "P25"}, { RIG_MODE_DSTAR, "D-STAR"}, - { RIG_MODE_DPMR, "dPMR"}, + { RIG_MODE_DPMR, "DPMR"}, { RIG_MODE_NXDNVN, "NXDN-VN"}, { RIG_MODE_NXDN_N, "NXDN-N"}, { RIG_MODE_DCR, "DCR"}, + { RIG_MODE_AMN, "AMN"}, + { RIG_MODE_PSK, "PSK"}, + { RIG_MODE_PSKR, "PSKR"}, { RIG_MODE_NONE, "" }, }; @@ -381,7 +384,7 @@ const char * HAMLIB_API rig_strrmode(rmode_t mode) { int i; - rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); + rig_debug(RIG_DEBUG_VERBOSE, "%s called mode=0x%"PRXll"\n", __func__, mode); if (mode == RIG_MODE_NONE) { diff --git a/src/misc.h b/src/misc.h index c8f853192..19605f417 100644 --- a/src/misc.h +++ b/src/misc.h @@ -100,22 +100,28 @@ extern HAMLIB_EXPORT(void) rig_force_cache_timeout(struct timeval *tv); #ifdef PRId64 /** \brief printf(3) format to be used for long long (64bits) type */ # define PRIll PRId64 +# define PRXll PRIx64 #else # ifdef FBSD4 # define PRIll "qd" +# define PRXll "qx" # else # define PRIll "lld" +# define PRXll "lld" # endif #endif #ifdef SCNd64 /** \brief scanf(3) format to be used for long long (64bits) type */ # define SCNll SCNd64 +# define SCNXll SCNx64 #else # ifdef FBSD4 # define SCNll "qd" +# define SCNXll "qx" # else # define SCNll "lld" +# define SCNXll "llx" # endif #endif diff --git a/tests/memcsv.c b/tests/memcsv.c index fe3a0920c..094d6dd44 100644 --- a/tests/memcsv.c +++ b/tests/memcsv.c @@ -669,7 +669,7 @@ int dump_csv_chan(RIG *rig, if (mem_caps->funcs) { - fprintf(f, "%lx%c", chan.funcs, csv_sep); + fprintf(f, "%"PRXll"%c", chan.funcs, csv_sep); } if (mem_caps->ctcss_tone) @@ -940,7 +940,7 @@ int set_channel_data(RIG *rig, if (i >= 0) { - sscanf(line_data_list[i], "%lx", &chan->funcs); + sscanf(line_data_list[i], "%"SCNXll, &chan->funcs); } } diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index b6b5a949c..57cf414cd 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%"PRXll" %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%"PRXll" %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%"PRXll" %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%"PRXll" %ld\n", rs->filters[i].modes, rs->filters[i].width); } @@ -3858,12 +3858,12 @@ declare_proto_rig(dump_state) fprintf(fout, "\n"); - fprintf(fout, "0x%lx\n", rs->has_get_func); - fprintf(fout, "0x%lx\n", rs->has_set_func); - fprintf(fout, "0x%lx\n", rs->has_get_level); - fprintf(fout, "0x%lx\n", rs->has_set_level); - fprintf(fout, "0x%lx\n", rs->has_get_parm); - fprintf(fout, "0x%lx\n", rs->has_set_parm); + fprintf(fout, "0x%"PRXll"\n", rs->has_get_func); + fprintf(fout, "0x%"PRXll"\n", rs->has_set_func); + fprintf(fout, "0x%"PRXll"\n", rs->has_get_level); + fprintf(fout, "0x%"PRXll"\n", rs->has_set_level); + fprintf(fout, "0x%"PRXll"\n", rs->has_get_parm); + fprintf(fout, "0x%"PRXll"\n", rs->has_set_parm); #if 0 gran_t level_gran[RIG_SETTING_MAX]; /*!< level granularity */ diff --git a/tests/sprintflst.c b/tests/sprintflst.c index fdec2c739..256277d5f 100644 --- a/tests/sprintflst.c +++ b/tests/sprintflst.c @@ -103,7 +103,7 @@ int sprintf_vfo(char *str, vfo_t vfo) int sprintf_mode(char *str, rmode_t mode) { - int i, len = 0; + uint64_t i, len = 0; *str = '\0'; @@ -112,9 +112,9 @@ 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)); + const char *ms = rig_strrmode(mode & (1ULL << i)); if (!ms || !ms[0]) { @@ -132,7 +132,7 @@ int sprintf_mode(char *str, rmode_t mode) int sprintf_func(char *str, setting_t func) { - int i, len = 0; + uint64_t i, len = 0; *str = '\0'; diff --git a/tests/testrig.c b/tests/testrig.c index 250b7e25a..d92a83e14 100644 --- a/tests/testrig.c +++ b/tests/testrig.c @@ -9,6 +9,8 @@ #include +#include "misc.h" + #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -401,7 +403,7 @@ int main(int argc, char *argv[]) if (retcode == RIG_OK) { - printf("rig_get_mode: mode = %i \n", rmode); + printf("rig_get_mode: mode = %"PRIll"\n", rmode); } else { diff --git a/winradio/g313-posix.c b/winradio/g313-posix.c index 367d3ba9b..465472162 100644 --- a/winradio/g313-posix.c +++ b/winradio/g313-posix.c @@ -501,19 +501,28 @@ int g313_get_conf(RIG *rig, token_t token, char *val) static void g313_audio_callback(short* buffer, int count, void* arg) { struct g313_priv_data *priv = (struct g313_priv_data*)arg; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-result" write(priv->audio_buf.fd, buffer, count*sizeof(short)); +#pragma GCC diagnostic pop } static void g313_if_callback(short* buffer, int count, void* arg) { struct g313_priv_data *priv = (struct g313_priv_data*)arg; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-result" write(priv->if_buf.fd, buffer, count*sizeof(short)); +#pragma GCC diagnostic pop } static void g313_spectrum_callback(float* buffer, int count, void* arg) { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-result" struct g313_priv_data *priv = (struct g313_priv_data*)arg; write(priv->spectrum_buf.fd, buffer, count*sizeof(float)); +#pragma GCC diagnostic pop } const struct rig_caps g313_caps =