Browse Source

64 bit mask support

QGC4.4
DonLakeFlyer 4 years ago committed by Don Gagne
parent
commit
69f68fed78
  1. 33
      src/qgcunittest/MultiSignalSpyV2.cc
  2. 20
      src/qgcunittest/MultiSignalSpyV2.h

33
src/qgcunittest/MultiSignalSpyV2.cc

@ -70,10 +70,10 @@ bool MultiSignalSpyV2::init(QObject* signalEmitter) @@ -70,10 +70,10 @@ bool MultiSignalSpyV2::init(QObject* signalEmitter)
return true;
}
bool MultiSignalSpyV2::_checkSignalByMaskWorker(quint32 mask, bool multipleSignalsAllowed)
bool MultiSignalSpyV2::_checkSignalByMaskWorker(quint64 mask, bool multipleSignalsAllowed)
{
for (int i=0; i<_rgSignalNames.count(); i++) {
if ((1 << i) & mask) {
if ((1ll << i) & mask) {
QSignalSpy* spy = _rgSpys[i];
Q_ASSERT(spy != nullptr);
@ -88,13 +88,13 @@ bool MultiSignalSpyV2::_checkSignalByMaskWorker(quint32 mask, bool multipleSigna @@ -88,13 +88,13 @@ bool MultiSignalSpyV2::_checkSignalByMaskWorker(quint32 mask, bool multipleSigna
return true;
}
bool MultiSignalSpyV2::_checkOnlySignalByMaskWorker(quint32 mask, bool multipleSignalsAllowed)
bool MultiSignalSpyV2::_checkOnlySignalByMaskWorker(quint64 mask, bool multipleSignalsAllowed)
{
for (int i=0; i<_rgSignalNames.count(); i++) {
QSignalSpy* spy = _rgSpys[i];
Q_ASSERT(spy != nullptr);
if ((1 << i) & mask) {
if ((1ll << i) & mask) {
if ((multipleSignalsAllowed && spy->count() == 0) || (!multipleSignalsAllowed && spy->count() != 1)) {
_printSignalState(mask);
return false;
@ -110,31 +110,31 @@ bool MultiSignalSpyV2::_checkOnlySignalByMaskWorker(quint32 mask, bool multipleS @@ -110,31 +110,31 @@ bool MultiSignalSpyV2::_checkOnlySignalByMaskWorker(quint32 mask, bool multipleS
return true;
}
bool MultiSignalSpyV2::checkSignalByMask(quint32 mask)
bool MultiSignalSpyV2::checkSignalByMask(quint64 mask)
{
return _checkSignalByMaskWorker(mask, false /* multipleSignalsAllowed */);
}
bool MultiSignalSpyV2::checkOnlySignalByMask(quint32 mask)
bool MultiSignalSpyV2::checkOnlySignalByMask(quint64 mask)
{
return _checkOnlySignalByMaskWorker(mask, false /* multipleSignalsAllowed */);
}
bool MultiSignalSpyV2::checkSignalsByMask(quint32 mask)
bool MultiSignalSpyV2::checkSignalsByMask(quint64 mask)
{
return _checkSignalByMaskWorker(mask, true /* multipleSignalsAllowed */);
}
bool MultiSignalSpyV2::checkOnlySignalsByMask(quint32 mask)
bool MultiSignalSpyV2::checkOnlySignalsByMask(quint64 mask)
{
return _checkOnlySignalByMaskWorker(mask, true /* multipleSignalsAllowed */);
}
/// @return true if signal count = 0 for specified signals
bool MultiSignalSpyV2::checkNoSignalByMask(quint32 mask)
bool MultiSignalSpyV2::checkNoSignalByMask(quint64 mask)
{
for (int i=0; i<_rgSignalNames.count(); i++) {
if ((1 << i) & mask) {
if ((1ll << i) & mask) {
QSignalSpy* spy = _rgSpys[i];
Q_ASSERT(spy != nullptr);
@ -174,10 +174,10 @@ void MultiSignalSpyV2::clearSignal(const char* signalName) @@ -174,10 +174,10 @@ void MultiSignalSpyV2::clearSignal(const char* signalName)
}
/// Sets the signal count to 0 for all specified signals
void MultiSignalSpyV2::clearSignalsByMask(quint32 mask)
void MultiSignalSpyV2::clearSignalsByMask(quint64 mask)
{
for (int i=0; i<_rgSignalNames.count(); i++) {
if ((1 << i) & mask) {
if ((1ll << i) & mask) {
QSignalSpy* spy = _rgSpys[i];
Q_ASSERT(spy != nullptr);
@ -234,10 +234,10 @@ bool MultiSignalSpyV2::waitForSignal(const char* signalName, int msecs) @@ -234,10 +234,10 @@ bool MultiSignalSpyV2::waitForSignal(const char* signalName, int msecs)
return spy->count() != 0;
}
void MultiSignalSpyV2::_printSignalState(quint32 mask)
void MultiSignalSpyV2::_printSignalState(quint64 mask)
{
for (int i=0; i<_rgSignalNames.count(); i++) {
bool expected = (1 << i) & mask;
bool expected = (1ll << i) & mask;
QSignalSpy* spy = _rgSpys[i];
Q_ASSERT(spy != nullptr);
@ -263,15 +263,16 @@ QGeoCoordinate MultiSignalSpyV2::pullQGeoCoordinateFromSignal(const char* signal @@ -263,15 +263,16 @@ QGeoCoordinate MultiSignalSpyV2::pullQGeoCoordinateFromSignal(const char* signal
return spy->value(0).value(0).value<QGeoCoordinate>();
}
quint32 MultiSignalSpyV2::signalNameToMask(const char* signalName)
quint64 MultiSignalSpyV2::signalNameToMask(const char* signalName)
{
for (int i=0; i<_rgSignalNames.count(); i++) {
qDebug() << "signalNameToMask" << signalName << _rgSignalNames[i];
if (_rgSignalNames[i] == signalName) {
return 1 << i;
}
}
qDebug() << "MultiSignalSpyV2::signalNameToMask signal not found" << signalName;
qWarning() << "MultiSignalSpyV2::signalNameToMask signal not found" << signalName;
return 0;
}

20
src/qgcunittest/MultiSignalSpyV2.h

@ -27,31 +27,31 @@ public: @@ -27,31 +27,31 @@ public:
bool init(QObject* signalEmitter);
quint32 signalNameToMask(const char* signalName);
quint64 signalNameToMask(const char* signalName);
/// @param mask bit mask specifying which signals to check. The lowest order bit represents
/// index 0 into the rgSignals array and so on up the bit mask.
/// @return true if signal count = 1 for the specified signals
bool checkSignalByMask(quint32 mask);
bool checkSignalByMask(quint64 mask);
/// @return true if signal count = 1 for specified signals and signal count of 0
/// for all other signals
bool checkOnlySignalByMask(quint32 mask);
bool checkOnlySignalByMask(quint64 mask);
/// @param mask bit mask specifying which signals to check. The lowest order bit represents
/// index 0 into the rgSignals array and so on up the bit mask.
/// @return true if signal count >= 1 for the specified signals
bool checkSignalsByMask(quint32 mask);
bool checkSignalsByMask(quint64 mask);
/// @return true if signal count >= 1 for specified signals and signal count of 0
/// for all other signals
bool checkOnlySignalsByMask(quint32 mask);
bool checkOnlySignalsByMask(quint64 mask);
bool checkNoSignalByMask(quint32 mask);
bool checkNoSignalByMask(quint64 mask);
bool checkNoSignals(void);
void clearSignal(const char* signalName);
void clearSignalsByMask(quint32 mask);
void clearSignalsByMask(quint64 mask);
void clearAllSignals(void);
bool waitForSignal(const char* signalName, int msec);
@ -67,9 +67,9 @@ private: @@ -67,9 +67,9 @@ private:
// QObject overrides
void timerEvent(QTimerEvent * event);
void _printSignalState (quint32 mask);
bool _checkSignalByMaskWorker (quint32 mask, bool multipleSignalsAllowed);
bool _checkOnlySignalByMaskWorker (quint32 mask, bool multipleSignalsAllowed);
void _printSignalState (quint64 mask);
bool _checkSignalByMaskWorker (quint64 mask, bool multipleSignalsAllowed);
bool _checkOnlySignalByMaskWorker (quint64 mask, bool multipleSignalsAllowed);
QObject* _signalEmitter = nullptr;
QStringList _rgSignalNames;

Loading…
Cancel
Save