|
QGroundControl
Ground Control Station for MAVLink Drones
|
Owns MAVLink signing state and the deferred-confirmation state machine for one LinkInterface. More...
#include <SigningController.h>
Inheritance diagram for SigningController:
Collaboration diagram for SigningController:Public Types | |
| using | FailReason = SigningFailure::Reason |
| using | State = SigningStatus::State |
Signals | |
| void | stateChanged () |
| void | keyAutoDetected (const QString &keyName) |
| void | alertRaised (const QString &detail) |
| void | signingConfirmed (const QString &keyName) |
| Emitted exactly once per begin*() on success. keyName is the enabled key, or empty for disable. | |
| void | signingFailed (SigningFailure failure) |
| Emitted exactly once per begin*() on failure (timeout, init error, cancel, re-entry). | |
Public Member Functions | |
| SigningController (mavlink_channel_t channel, QObject *parent=nullptr) | |
| ~SigningController () override | |
| State | state () const |
| SigningStatus | status () const |
| bool | isEnabled () const |
| QString | keyName () const |
| int | streamCount () const |
| QString | statusText () const |
| std::optional< SigningFailure > | tryBeginEnable (uint8_t expectedSysId, const QString &keyName, const MAVLinkSigning::SigningKey &keyBytes) |
| Begin pending-enable. Caller must send SETUP_SIGNING only on nullopt; outcome arrives via signingConfirmed/signingFailed. | |
| std::optional< SigningFailure > | tryBeginDisable (uint8_t expectedSysId) |
| Atomic check-and-commit for disable; same contract as tryBeginEnable. | |
| void | cancelPending (const QString &detail={}) |
| bool | clearSigning () |
| bool | initSigningImmediate (QByteArrayView key, MAVLinkSigning::UnsignedAcceptancePolicy policy, const QString &keyNameHint={}) |
| Bypasses the FSM; used by tests and auto-detect. Non-empty keyNameHint seeds the persisted timestamp. | |
| const SigningChannel & | channel () const |
| void | recordDetectMiss () |
| void | clearDetectCooldown () |
| bool | processFrame (bool framingOk, const mavlink_message_t &message) |
| Per-frame entry point; drives burst alerts, auto-detect, and the FSM. Returns true on auto-detect. | |
| void | resetBadSigBurst () |
Owns MAVLink signing state and the deferred-confirmation state machine for one LinkInterface.
Definition at line 19 of file SigningController.h.
Definition at line 23 of file SigningController.h.
Definition at line 24 of file SigningController.h.
|
explicit |
Definition at line 23 of file SigningController.cc.
|
override |
Definition at line 32 of file SigningController.cc.
References SigningChannel::init(), and QGC::secureZero().
|
signal |
Referenced by processFrame().
| void SigningController::cancelPending | ( | const QString & | detail = {} | ) |
Abort any in-flight operation. Emits signingFailed if pending. No-op if Idle. detail overrides the default ("primary link changed before vehicle confirmation").
Definition at line 391 of file SigningController.cc.
|
inline |
Definition at line 56 of file SigningController.h.
Referenced by MAVLinkSigningKeys::tryDetectKey().
|
inline |
Definition at line 60 of file SigningController.h.
References SigningChannel::clearDetectCooldown().
Referenced by MAVLinkSigningKeys::tryDetectKey().
| bool SigningController::clearSigning | ( | ) |
Definition at line 137 of file SigningController.cc.
References SigningChannel::clearDetectCooldown(), SigningChannel::currentTimestampAndName(), SigningChannel::init(), MAVLinkSigningKeys::instance(), SigningChannel::isEnabled(), and MAVLinkSigningKeys::recordTimestamp().
| bool SigningController::initSigningImmediate | ( | QByteArrayView | key, |
| MAVLinkSigning::UnsignedAcceptancePolicy | policy, | ||
| const QString & | keyNameHint = {} |
||
| ) |
Bypasses the FSM; used by tests and auto-detect. Non-empty keyNameHint seeds the persisted timestamp.
Definition at line 150 of file SigningController.cc.
References MAVLinkSigning::callbackForPolicy(), SigningChannel::init(), MAVLinkSigningKeys::instance(), and MAVLinkSigningKeys::lastTimestamp().
Referenced by MAVLinkSigningKeys::tryDetectKey().
| bool SigningController::isEnabled | ( | ) | const |
Definition at line 86 of file SigningController.cc.
References state().
Referenced by MAVLinkSigningKeys::tryDetectKey().
|
signal |
Referenced by processFrame().
| QString SigningController::keyName | ( | ) | const |
Definition at line 93 of file SigningController.cc.
References SigningChannel::keyHint().
| bool SigningController::processFrame | ( | bool | framingOk, |
| const mavlink_message_t & | message | ||
| ) |
Per-frame entry point; drives burst alerts, auto-detect, and the FSM. Returns true on auto-detect.
Definition at line 223 of file SigningController.cc.
References alertRaised(), SigningChannel::consumeStatusTransition(), QGC::EdgeTriggeredCounter< CountT >::count(), MAVLinkSigningKeys::instance(), SigningChannel::isEnabled(), MAVLinkSigning::isMessageSigned(), keyAutoDetected(), MAVLinkSigning::logSigningFailure(), QGC::EdgeTriggeredCounter< CountT >::record(), QGC::EdgeTriggeredCounter< CountT >::reset(), stateChanged(), and MAVLinkSigningKeys::tryDetectKey().
|
inline |
Definition at line 58 of file SigningController.h.
References SigningChannel::recordDetectMiss().
Referenced by MAVLinkSigningKeys::tryDetectKey().
| void SigningController::resetBadSigBurst | ( | ) |
Definition at line 279 of file SigningController.cc.
References QGC::EdgeTriggeredCounter< CountT >::reset().
|
signal |
Emitted exactly once per begin*() on success. keyName is the enabled key, or empty for disable.
Referenced by VehicleSigningController::disable(), and VehicleSigningController::enable().
|
signal |
Emitted exactly once per begin*() on failure (timeout, init error, cancel, re-entry).
Referenced by VehicleSigningController::disable(), and VehicleSigningController::enable().
| SigningController::State SigningController::state | ( | ) | const |
Definition at line 55 of file SigningController.cc.
References SigningChannel::isEnabled().
Referenced by isEnabled(), status(), and statusText().
|
signal |
Referenced by processFrame().
| SigningStatus SigningController::status | ( | ) | const |
Definition at line 73 of file SigningController.cc.
References SigningStatus::enabled, SigningChannel::keyHint(), SigningStatus::keyName, state(), SigningStatus::state, statusText(), SigningStatus::statusText, SigningChannel::streamCount(), and SigningStatus::streamCount.
Referenced by statusText().
| QString SigningController::statusText | ( | ) | const |
Definition at line 103 of file SigningController.cc.
References SigningChannel::isEnabled(), mavlink_get_channel_status(), state(), and status().
Referenced by status().
| int SigningController::streamCount | ( | ) | const |
Definition at line 98 of file SigningController.cc.
References SigningChannel::streamCount().
| std::optional< SigningFailure > SigningController::tryBeginDisable | ( | uint8_t | expectedSysId | ) |
Atomic check-and-commit for disable; same contract as tryBeginEnable.
Definition at line 194 of file SigningController.cc.
References MAVLinkSigning::callbackForPolicy(), MAVLinkSigning::Pending, and SigningChannel::setAcceptUnsignedCallback().
| std::optional< SigningFailure > SigningController::tryBeginEnable | ( | uint8_t | expectedSysId, |
| const QString & | keyName, | ||
| const MAVLinkSigning::SigningKey & | keyBytes | ||
| ) |
Begin pending-enable. Caller must send SETUP_SIGNING only on nullopt; outcome arrives via signingConfirmed/signingFailed.
Definition at line 157 of file SigningController.cc.
References MAVLinkSigning::callbackForPolicy(), SigningChannel::init(), MAVLinkSigningKeys::instance(), MAVLinkSigningKeys::lastTimestamp(), MAVLinkSigning::Pending, and SigningChannel::suspendAutoDetect().