pull/75/head
Malcolm Herring 2018-12-24 11:22:35 +00:00
commit 8decf6fd89
15 zmienionych plików z 399 dodań i 74 usunięć

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"%"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)

Wyświetl plik

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

Wyświetl plik

@ -84,8 +84,8 @@ const struct rig_caps icr6_caps = {
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},
.parm_gran = {},
.ctcss_list = NULL,
.dcs_list = NULL,
.ctcss_list = static_common_ctcss_list,
.dcs_list = common_dcs_list,
.preamp = { RIG_DBLST_END, },
.attenuator = { RIG_DBLST_END, },
.max_rit = Hz(0),

Wyświetl plik

@ -26,6 +26,7 @@
#include <stdio.h>
#include <stdarg.h>
#include <inttypes.h>
/* Rig list is in a separate file so as not to mess up w/ this one */
#include <hamlib/riglist.h>
@ -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,6 +878,7 @@ 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
*/
<<<<<<< HEAD
typedef enum {
RIG_MODE_NONE = 0, /*!< '' -- None */
RIG_MODE_AM = (1 << 0), /*!< \c AM -- Amplitude Modulation */
@ -880,6 +914,75 @@ typedef enum {
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 */
>>>>>>> master
/**
* \brief macro for backends, not to be used by rig_set_mode et al.
@ -2188,7 +2291,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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

@ -27,7 +27,7 @@
#include <string.h>
#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)

Wyświetl plik

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

Wyświetl plik

@ -319,8 +319,11 @@ static struct
{ RIG_MODE_LSB, "LSB" },
{ RIG_MODE_RTTY, "RTTY" },
{ RIG_MODE_FM, "FM" },
<<<<<<< HEAD
{ RIG_MODE_FMN, "FMN" },
{ RIG_MODE_FM_N, "FM-N" },
=======
>>>>>>> master
{ RIG_MODE_WFM, "WFM" },
{ RIG_MODE_CWR, "CWR" },
{ RIG_MODE_RTTYR, "RTTYR" },
@ -335,13 +338,21 @@ static struct
{ RIG_MODE_SAL, "SAL" },
{ RIG_MODE_SAH, "SAH" },
{ RIG_MODE_DSB, "DSB"},
<<<<<<< HEAD
{ RIG_MODE_AM_N, "AM-N"},
=======
{ RIG_MODE_FMN, "FMN" },
{ RIG_MODE_PKTAM, "PKTAM"},
>>>>>>> master
{ 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, "" },
};
@ -382,7 +393,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)
{

Wyświetl plik

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

Wyświetl plik

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

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%"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 */

Wyświetl plik

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

Wyświetl plik

@ -9,6 +9,8 @@
#include <hamlib/rig.h>
#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
{

Wyświetl plik

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