mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-07-30 04:32:27 -04:00
Merging from trunk:
------------------------------------------------------------------------ r7896 | bsomervi | 2017-07-16 15:32:28 +0100 (Sun, 16 Jul 2017) | 5 lines Improve support for older C++ compilers Some current Linux distributions are still using GCC 4.6 which has no/poor C++11 support. probably more of this needed if we are to support such compilers. ------------------------------------------------------------------------ r7897 | bsomervi | 2017-07-16 15:32:48 +0100 (Sun, 16 Jul 2017) | 3 lines Improved rig control start up behavour Avoid trying to set bogus uninitialized frequency values. ------------------------------------------------------------------------ git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx-1.8@7898 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
7da7fd8e8c
commit
fd2d94cc7e
@ -919,6 +919,35 @@ void HamlibTransceiver::poll ()
|
|||||||
reversed_ = RIG_VFO_B == v;
|
reversed_ = RIG_VFO_B == v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((WSJT_RIG_NONE_CAN_SPLIT || !is_dummy_)
|
||||||
|
&& rig_->caps->get_split_vfo && split_query_works_)
|
||||||
|
{
|
||||||
|
vfo_t v {RIG_VFO_NONE}; // so we can tell if it doesn't get updated :(
|
||||||
|
auto rc = rig_get_split_vfo (rig_.data (), RIG_VFO_CURR, &s, &v);
|
||||||
|
if (-RIG_OK == rc && RIG_SPLIT_ON == s)
|
||||||
|
{
|
||||||
|
TRACE_CAT_POLL ("HamlibTransceiver", "rig_get_split_vfo split = " << s << " VFO = " << rig_strvfo (v));
|
||||||
|
update_split (true);
|
||||||
|
// if (RIG_VFO_A == v)
|
||||||
|
// {
|
||||||
|
// reversed_ = true; // not sure if this helps us here
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
else if (-RIG_OK == rc) // not split
|
||||||
|
{
|
||||||
|
TRACE_CAT_POLL ("HamlibTransceiver", "rig_get_split_vfo split = " << s << " VFO = " << rig_strvfo (v));
|
||||||
|
update_split (false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Some rigs (Icom) don't have a way of reporting SPLIT
|
||||||
|
// mode
|
||||||
|
TRACE_CAT_POLL ("HamlibTransceiver", "rig_get_split_vfo can't do on this rig");
|
||||||
|
// just report how we see it based on prior commands
|
||||||
|
split_query_works_ = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (freq_query_works_)
|
if (freq_query_works_)
|
||||||
{
|
{
|
||||||
// only read if possible and when receiving or simplex
|
// only read if possible and when receiving or simplex
|
||||||
@ -974,35 +1003,6 @@ void HamlibTransceiver::poll ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((WSJT_RIG_NONE_CAN_SPLIT || !is_dummy_)
|
|
||||||
&& rig_->caps->get_split_vfo && split_query_works_)
|
|
||||||
{
|
|
||||||
vfo_t v {RIG_VFO_NONE}; // so we can tell if it doesn't get updated :(
|
|
||||||
auto rc = rig_get_split_vfo (rig_.data (), RIG_VFO_CURR, &s, &v);
|
|
||||||
if (-RIG_OK == rc && RIG_SPLIT_ON == s)
|
|
||||||
{
|
|
||||||
TRACE_CAT_POLL ("HamlibTransceiver", "rig_get_split_vfo split = " << s << " VFO = " << rig_strvfo (v));
|
|
||||||
update_split (true);
|
|
||||||
// if (RIG_VFO_A == v)
|
|
||||||
// {
|
|
||||||
// reversed_ = true; // not sure if this helps us here
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
else if (-RIG_OK == rc) // not split
|
|
||||||
{
|
|
||||||
TRACE_CAT_POLL ("HamlibTransceiver", "rig_get_split_vfo split = " << s << " VFO = " << rig_strvfo (v));
|
|
||||||
update_split (false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Some rigs (Icom) don't have a way of reporting SPLIT
|
|
||||||
// mode
|
|
||||||
TRACE_CAT_POLL ("HamlibTransceiver", "rig_get_split_vfo can't do on this rig");
|
|
||||||
// just report how we see it based on prior commands
|
|
||||||
split_query_works_ = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (RIG_PTT_NONE != rig_->state.pttport.type.ptt && rig_->caps->get_ptt)
|
if (RIG_PTT_NONE != rig_->state.pttport.type.ptt && rig_->caps->get_ptt)
|
||||||
{
|
{
|
||||||
ptt_t p;
|
ptt_t p;
|
||||||
|
@ -86,7 +86,9 @@ void TransceiverBase::set (TransceiverState const& s,
|
|||||||
requested_.frequency (actual_.frequency ());
|
requested_.frequency (actual_.frequency ());
|
||||||
requested_.mode (actual_.mode ());
|
requested_.mode (actual_.mode ());
|
||||||
}
|
}
|
||||||
if (!s.tx_frequency () || s.tx_frequency () > 10000) // ignore bogus startup values
|
if (!s.tx_frequency ()
|
||||||
|
|| (s.tx_frequency () > 10000 // ignore bogus startup values
|
||||||
|
&& s.tx_frequency () < std::numeric_limits<Frequency>::max () - 10000))
|
||||||
{
|
{
|
||||||
if ((s.tx_frequency () != requested_.tx_frequency () // and QSY
|
if ((s.tx_frequency () != requested_.tx_frequency () // and QSY
|
||||||
|| (s.mode () != UNK && s.mode () != requested_.mode ())) // or mode change
|
|| (s.mode () != UNK && s.mode () != requested_.mode ())) // or mode change
|
||||||
|
@ -1,24 +1,31 @@
|
|||||||
#include <boost/crc.hpp>
|
#include <boost/crc.hpp>
|
||||||
|
#include <boost/config.hpp>
|
||||||
extern "C"
|
|
||||||
{
|
extern "C"
|
||||||
short crc10 (unsigned char const * data, int length);
|
{
|
||||||
bool crc10_check (unsigned char const * data, int length);
|
short crc10 (unsigned char const * data, int length);
|
||||||
}
|
bool crc10_check (unsigned char const * data, int length);
|
||||||
|
}
|
||||||
namespace
|
|
||||||
{
|
#define POLY 0x08f
|
||||||
unsigned long constexpr truncated_polynomial = 0x08f;
|
|
||||||
}
|
#ifdef BOOST_NO_CXX11_CONSTEXPR
|
||||||
|
#define TRUNCATED_POLYNOMIAL POLY
|
||||||
// assumes CRC is last 16 bits of the data and is set to zero
|
#else
|
||||||
// caller should assign the returned CRC into the message in big endian byte order
|
namespace
|
||||||
short crc10 (unsigned char const * data, int length)
|
{
|
||||||
{
|
unsigned long constexpr TRUNCATED_POLYNOMIAL = POLY;
|
||||||
return boost::augmented_crc<10, truncated_polynomial> (data, length);
|
}
|
||||||
}
|
#endif
|
||||||
|
|
||||||
bool crc10_check (unsigned char const * data, int length)
|
// assumes CRC is last 16 bits of the data and is set to zero
|
||||||
{
|
// caller should assign the returned CRC into the message in big endian byte order
|
||||||
return !boost::augmented_crc<10, truncated_polynomial> (data, length);
|
short crc10 (unsigned char const * data, int length)
|
||||||
}
|
{
|
||||||
|
return boost::augmented_crc<10, TRUNCATED_POLYNOMIAL> (data, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool crc10_check (unsigned char const * data, int length)
|
||||||
|
{
|
||||||
|
return !boost::augmented_crc<10, TRUNCATED_POLYNOMIAL> (data, length);
|
||||||
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include <boost/crc.hpp>
|
#include <boost/crc.hpp>
|
||||||
|
#include <boost/config.hpp>
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
@ -6,19 +7,25 @@ extern "C"
|
|||||||
bool crc12_check (unsigned char const * data, int length);
|
bool crc12_check (unsigned char const * data, int length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define POLY 0xc06
|
||||||
|
|
||||||
|
#ifdef BOOST_NO_CXX11_CONSTEXPR
|
||||||
|
#define TRUNCATED_POLYNOMIAL POLY
|
||||||
|
#else
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
unsigned long constexpr truncated_polynomial = 0xc06;
|
unsigned long constexpr TRUNCATED_POLYNOMIAL = POLY;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// assumes CRC is last 16 bits of the data and is set to zero
|
// assumes CRC is last 16 bits of the data and is set to zero
|
||||||
// caller should assign the returned CRC into the message in big endian byte order
|
// caller should assign the returned CRC into the message in big endian byte order
|
||||||
short crc12 (unsigned char const * data, int length)
|
short crc12 (unsigned char const * data, int length)
|
||||||
{
|
{
|
||||||
return boost::augmented_crc<12, truncated_polynomial> (data, length);
|
return boost::augmented_crc<12, TRUNCATED_POLYNOMIAL> (data, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool crc12_check (unsigned char const * data, int length)
|
bool crc12_check (unsigned char const * data, int length)
|
||||||
{
|
{
|
||||||
return !boost::augmented_crc<12, truncated_polynomial> (data, length);
|
return !boost::augmented_crc<12, TRUNCATED_POLYNOMIAL> (data, length);
|
||||||
}
|
}
|
||||||
|
@ -5344,6 +5344,8 @@ void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const&
|
|||||||
m_tx_when_ready = false;
|
m_tx_when_ready = false;
|
||||||
}
|
}
|
||||||
m_rigState = s;
|
m_rigState = s;
|
||||||
|
auto old_freqNominal = m_freqNominal;
|
||||||
|
m_freqNominal = s.frequency () - m_astroCorrection.rx;
|
||||||
if (old_state.online () == false && s.online () == true)
|
if (old_state.online () == false && s.online () == true)
|
||||||
{
|
{
|
||||||
// initializing
|
// initializing
|
||||||
@ -5354,9 +5356,7 @@ void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const&
|
|||||||
m_splitMode = s.split ();
|
m_splitMode = s.split ();
|
||||||
if (!s.ptt ()) //!m_transmitting)
|
if (!s.ptt ()) //!m_transmitting)
|
||||||
{
|
{
|
||||||
auto temp = m_freqNominal;
|
if (old_freqNominal != m_freqNominal)
|
||||||
m_freqNominal = s.frequency () - m_astroCorrection.rx;
|
|
||||||
if (temp != m_freqNominal)
|
|
||||||
{
|
{
|
||||||
m_freqTxNominal = m_freqNominal;
|
m_freqTxNominal = m_freqNominal;
|
||||||
genCQMsg ();
|
genCQMsg ();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user