Fix permit joining duration/remaining signals

* Prevent resetting the duration repeatedly by not calling setPermitJoiningState
in the timer any more
* Added signal emissions for when remaining changes in an unexpected manner.
pull/46/head
Michael Zanetti 2022-04-23 23:27:18 +02:00
parent 187278cf7c
commit 4f63ae01c0
2 changed files with 7 additions and 3 deletions

View File

@ -48,8 +48,6 @@ ZigbeeNetwork::ZigbeeNetwork(const QUuid &networkUuid, QObject *parent) :
if (m_permitJoiningRemaining <= 0) {
m_permitJoinTimer->stop();
setPermitJoining(0);
} else {
setPermitJoiningState(m_permitJoiningRemaining, m_permitJoiningRemaining);
}
});
@ -491,11 +489,13 @@ void ZigbeeNetwork::setPermitJoiningState(bool permitJoiningEnabled, quint8 dura
emit permitJoinDurationChanged(duration);
}
m_permitJoiningRemaining = duration;
emit permitJoinRemainingChanged(m_permitJoiningRemaining);
m_permitJoinTimer->start();
} else {
m_permitJoiningDuration = 0;
emit permitJoinDurationChanged(0);
m_permitJoiningRemaining = 0;
emit permitJoinRemainingChanged(0);
m_permitJoinTimer->stop();
}

View File

@ -245,11 +245,15 @@ signals:
void nodeAdded(ZigbeeNode *node);
void nodeRemoved(ZigbeeNode *node);
// Will be emited when a node joined and starts initializing
// Will be emitted when a node joined and starts initializing
void nodeJoined(ZigbeeNode *node);
void permitJoiningEnabledChanged(bool permitJoiningEnabled);
void permitJoinDurationChanged(quint8 duration);
// Will be emitted when the remaining duration changes in an unexpected
// manner. That means, it will not be emitted repeatedly every second,
// despite calling permitJoinRemainining() returning updated values,
// but it will be emitted for instance when it restarts or is aborted.
void permitJoinRemainingChanged(quint8 remaining);
void errorOccured(Error error);