diff --git a/src/call.cpp b/src/call.cpp index d235c1abfcd983dbfe64bcf7686eecc9232519bd..4f38d1e2fcc8258103c2b59f36c5a71c228f8f3a 100644 --- a/src/call.cpp +++ b/src/call.cpp @@ -93,33 +93,47 @@ Call::getState() const bool Call::validStateTransition(CallState newState) { + // Notice to developper: + // - list only permitted transition (return true) + // - let non permitted ones as default case (return false) switch (callState_) { case CallState::INACTIVE: switch (newState) { - case CallState::INACTIVE: - case CallState::HOLD: - return false; - default: + case CallState::ACTIVE: + case CallState::BUSY: + case CallState::MERROR: return true; + default: // INACTIVE, HOLD + return false; } case CallState::ACTIVE: switch (newState) { case CallState::HOLD: + case CallState::MERROR: return true; - default: + default: // INACTIVE, ACTIVE, BUSY return false; } case CallState::HOLD: switch (newState) { case CallState::ACTIVE: + case CallState::MERROR: return true; - default: + default: // INACTIVE, HOLD, BUSY, MERROR return false; } - default: + case CallState::BUSY: + switch (newState) { + case CallState::MERROR: + return true; + default: // INACTIVE, ACTIVE, HOLD, BUSY + return false; + } + + default: // MERROR return false; } } diff --git a/src/call.h b/src/call.h index 1def90ff74aea44008f651e7cd82eb6e9d118133..a9d2af1c01bb9a13f89e4d688f4ea4ccc092eec3 100644 --- a/src/call.h +++ b/src/call.h @@ -77,6 +77,8 @@ class Call : public Recordable, public std::enable_shared_from_this<Call> { * * Audio should be transmitted when ConnectionState = Connected AND * CallState = Active. + * + * \note modify validStateTransition/getStateStr if this enum changes */ enum class ConnectionState : unsigned { DISCONNECTED, TRYING, PROGRESSING, RINGING, CONNECTED, COUNT__ @@ -84,6 +86,8 @@ class Call : public Recordable, public std::enable_shared_from_this<Call> { /** * The Call State. + * + * \note modify validStateTransition/getStateStr if this enum changes */ enum class CallState : unsigned { INACTIVE, ACTIVE, HOLD, BUSY, MERROR, COUNT__