59
59
#include < protocols/secure_channel/MessageCounterManager.h>
60
60
#include < setup_payload/QRCodeSetupPayloadParser.h>
61
61
#include < tracing/macros.h>
62
+ #include < tracing/metric_event.h>
62
63
63
64
#if CONFIG_NETWORK_LAYER_BLE
64
65
#include < ble/Ble.h>
@@ -79,6 +80,7 @@ using namespace chip::Transport;
79
80
using namespace chip ::Credentials;
80
81
using namespace chip ::app::Clusters;
81
82
using namespace chip ::Crypto;
83
+ using namespace chip ::Tracing;
82
84
83
85
namespace chip {
84
86
namespace Controller {
@@ -666,16 +668,20 @@ CHIP_ERROR DeviceCommissioner::PairDevice(NodeId remoteDeviceId, const char * se
666
668
CHIP_ERROR DeviceCommissioner::PairDevice (NodeId remoteDeviceId, RendezvousParameters & params)
667
669
{
668
670
MATTER_TRACE_SCOPE (" PairDevice" , " DeviceCommissioner" );
669
- ReturnErrorOnFailure (EstablishPASEConnection (remoteDeviceId, params));
670
- return Commission (remoteDeviceId);
671
+ ReturnErrorOnFailureWithMetric (kMetricDeviceCommissionerCommission , EstablishPASEConnection (remoteDeviceId, params));
672
+ auto errorCode = Commission (remoteDeviceId);
673
+ VerifyOrDoWithMetric (kMetricDeviceCommissionerCommission , CHIP_NO_ERROR == errorCode, errorCode);
674
+ return errorCode;
671
675
}
672
676
673
677
CHIP_ERROR DeviceCommissioner::PairDevice (NodeId remoteDeviceId, RendezvousParameters & rendezvousParams,
674
678
CommissioningParameters & commissioningParams)
675
679
{
676
680
MATTER_TRACE_SCOPE (" PairDevice" , " DeviceCommissioner" );
677
- ReturnErrorOnFailure (EstablishPASEConnection (remoteDeviceId, rendezvousParams));
678
- return Commission (remoteDeviceId, commissioningParams);
681
+ ReturnErrorOnFailureWithMetric (kMetricDeviceCommissionerCommission , EstablishPASEConnection (remoteDeviceId, rendezvousParams));
682
+ auto errorCode = Commission (remoteDeviceId, commissioningParams);
683
+ VerifyOrDoWithMetric (kMetricDeviceCommissionerCommission , CHIP_NO_ERROR == errorCode, errorCode);
684
+ return errorCode;
679
685
}
680
686
681
687
CHIP_ERROR DeviceCommissioner::EstablishPASEConnection (NodeId remoteDeviceId, const char * setUpCode, DiscoveryType discoveryType,
@@ -689,6 +695,8 @@ CHIP_ERROR DeviceCommissioner::EstablishPASEConnection(NodeId remoteDeviceId, co
689
695
CHIP_ERROR DeviceCommissioner::EstablishPASEConnection (NodeId remoteDeviceId, RendezvousParameters & params)
690
696
{
691
697
MATTER_TRACE_SCOPE (" EstablishPASEConnection" , " DeviceCommissioner" );
698
+ MATTER_LOG_METRIC_BEGIN (kMetricDeviceCommissionerPASESession );
699
+
692
700
CHIP_ERROR err = CHIP_NO_ERROR;
693
701
CommissioneeDeviceProxy * device = nullptr ;
694
702
CommissioneeDeviceProxy * current = nullptr ;
@@ -736,6 +744,7 @@ CHIP_ERROR DeviceCommissioner::EstablishPASEConnection(NodeId remoteDeviceId, Re
736
744
// We already have an open secure session to this device, call the callback immediately and early return.
737
745
mPairingDelegate ->OnPairingComplete (CHIP_NO_ERROR);
738
746
}
747
+ MATTER_LOG_METRIC_END (kMetricDeviceCommissionerPASESession , CHIP_NO_ERROR);
739
748
return CHIP_NO_ERROR;
740
749
}
741
750
if (current->IsSessionSetupInProgress ())
@@ -818,6 +827,7 @@ CHIP_ERROR DeviceCommissioner::EstablishPASEConnection(NodeId remoteDeviceId, Re
818
827
{
819
828
ReleaseCommissioneeDevice (device);
820
829
}
830
+ MATTER_LOG_METRIC_END (kMetricDeviceCommissionerPASESession , err);
821
831
}
822
832
823
833
return err;
@@ -869,8 +879,10 @@ CHIP_ERROR DeviceCommissioner::Commission(NodeId remoteDeviceId, CommissioningPa
869
879
ChipLogError (Controller, " No default commissioner is specified" );
870
880
return CHIP_ERROR_INCORRECT_STATE;
871
881
}
872
- ReturnErrorOnFailure (mDefaultCommissioner ->SetCommissioningParameters (params));
873
- return Commission (remoteDeviceId);
882
+ ReturnErrorOnFailureWithMetric (kMetricDeviceCommissionerCommission , mDefaultCommissioner ->SetCommissioningParameters (params));
883
+ auto errorCode = Commission (remoteDeviceId);
884
+ VerifyOrDoWithMetric (kMetricDeviceCommissionerCommission , CHIP_NO_ERROR == errorCode, errorCode);
885
+ return errorCode;
874
886
}
875
887
876
888
CHIP_ERROR DeviceCommissioner::Commission (NodeId remoteDeviceId)
@@ -908,6 +920,7 @@ CHIP_ERROR DeviceCommissioner::Commission(NodeId remoteDeviceId)
908
920
mDefaultCommissioner ->SetOperationalCredentialsDelegate (mOperationalCredentialsDelegate );
909
921
if (device->IsSecureConnected ())
910
922
{
923
+ MATTER_LOG_METRIC_BEGIN (kMetricDeviceCommissionerCommission );
911
924
mDefaultCommissioner ->StartCommissioning (this , device);
912
925
}
913
926
else
@@ -1058,6 +1071,8 @@ void DeviceCommissioner::RendezvousCleanup(CHIP_ERROR status)
1058
1071
1059
1072
void DeviceCommissioner::OnSessionEstablishmentError (CHIP_ERROR err)
1060
1073
{
1074
+ MATTER_LOG_METRIC_END (kMetricDeviceCommissionerPASESession , err);
1075
+
1061
1076
if (mPairingDelegate != nullptr )
1062
1077
{
1063
1078
mPairingDelegate ->OnStatusUpdate (DevicePairingDelegate::SecurePairingFailed);
@@ -1086,6 +1101,7 @@ void DeviceCommissioner::OnSessionEstablished(const SessionHandle & session)
1086
1101
1087
1102
ChipLogDetail (Controller, " Remote device completed SPAKE2+ handshake" );
1088
1103
1104
+ MATTER_LOG_METRIC_END (kMetricDeviceCommissionerPASESession , CHIP_NO_ERROR);
1089
1105
if (mPairingDelegate != nullptr )
1090
1106
{
1091
1107
mPairingDelegate ->OnPairingComplete (CHIP_NO_ERROR);
@@ -1094,6 +1110,7 @@ void DeviceCommissioner::OnSessionEstablished(const SessionHandle & session)
1094
1110
if (mRunCommissioningAfterConnection )
1095
1111
{
1096
1112
mRunCommissioningAfterConnection = false ;
1113
+ MATTER_LOG_METRIC_BEGIN (kMetricDeviceCommissionerCommission );
1097
1114
mDefaultCommissioner ->StartCommissioning (this , device);
1098
1115
}
1099
1116
}
@@ -1916,6 +1933,8 @@ void DeviceCommissioner::CleanupDoneAfterError()
1916
1933
1917
1934
void DeviceCommissioner::SendCommissioningCompleteCallbacks (NodeId nodeId, const CompletionStatus & completionStatus)
1918
1935
{
1936
+ MATTER_LOG_METRIC_END (kMetricDeviceCommissionerCommission , completionStatus.err );
1937
+
1919
1938
ChipLogProgress (Controller, " Commissioning complete for node ID 0x" ChipLogFormatX64 " : %s" , ChipLogValueX64 (nodeId),
1920
1939
(completionStatus.err == CHIP_NO_ERROR ? " success" : completionStatus.err .AsString ()));
1921
1940
mCommissioningStage = CommissioningStage::kSecurePairing ;
@@ -1924,6 +1943,7 @@ void DeviceCommissioner::SendCommissioningCompleteCallbacks(NodeId nodeId, const
1924
1943
{
1925
1944
return ;
1926
1945
}
1946
+
1927
1947
mPairingDelegate ->OnCommissioningComplete (nodeId, completionStatus.err );
1928
1948
PeerId peerId (GetCompressedFabricId (), nodeId);
1929
1949
if (completionStatus.err == CHIP_NO_ERROR)
@@ -1943,6 +1963,7 @@ void DeviceCommissioner::CommissioningStageComplete(CHIP_ERROR err, Commissionin
1943
1963
{
1944
1964
// Once this stage is complete, reset mDeviceBeingCommissioned - this will be reset when the delegate calls the next step.
1945
1965
MATTER_TRACE_SCOPE (" CommissioningStageComplete" , " DeviceCommissioner" );
1966
+ MATTER_LOG_METRIC_END (MetricKeyForCommissioningStage (mCommissioningStage ), err);
1946
1967
VerifyOrDie (mDeviceBeingCommissioned );
1947
1968
1948
1969
NodeId nodeId = mDeviceBeingCommissioned ->GetDeviceId ();
@@ -1978,6 +1999,7 @@ void DeviceCommissioner::OnDeviceConnectedFn(void * context, Messaging::Exchange
1978
1999
const SessionHandle & sessionHandle)
1979
2000
{
1980
2001
// CASE session established.
2002
+ MATTER_LOG_METRIC_END (kMetricDeviceCommissioningOperationalSetup , CHIP_NO_ERROR);
1981
2003
DeviceCommissioner * commissioner = static_cast <DeviceCommissioner *>(context);
1982
2004
VerifyOrDie (commissioner->mCommissioningStage == CommissioningStage::kFindOperationalForStayActive ||
1983
2005
commissioner->mCommissioningStage == CommissioningStage::kFindOperationalForCommissioningComplete );
@@ -1992,6 +2014,7 @@ void DeviceCommissioner::OnDeviceConnectedFn(void * context, Messaging::Exchange
1992
2014
void DeviceCommissioner::OnDeviceConnectionFailureFn (void * context, const ScopedNodeId & peerId, CHIP_ERROR error)
1993
2015
{
1994
2016
// CASE session establishment failed.
2017
+ MATTER_LOG_METRIC_END (kMetricDeviceCommissioningOperationalSetup , error);
1995
2018
DeviceCommissioner * commissioner = static_cast <DeviceCommissioner *>(context);
1996
2019
VerifyOrDie (commissioner->mCommissioningStage == CommissioningStage::kFindOperationalForStayActive ||
1997
2020
commissioner->mCommissioningStage == CommissioningStage::kFindOperationalForCommissioningComplete );
@@ -2748,7 +2771,11 @@ void DeviceCommissioner::SendCommissioningReadRequest(DeviceProxy * proxy, Optio
2748
2771
void DeviceCommissioner::PerformCommissioningStep (DeviceProxy * proxy, CommissioningStage step, CommissioningParameters & params,
2749
2772
CommissioningDelegate * delegate, EndpointId endpoint,
2750
2773
Optional<System::Clock::Timeout> timeout)
2774
+
2751
2775
{
2776
+ MATTER_LOG_METRIC (kMetricDeviceCommissionerCommissionStage , step);
2777
+ MATTER_LOG_METRIC_BEGIN (MetricKeyForCommissioningStage (step));
2778
+
2752
2779
if (params.GetCompletionStatus ().err == CHIP_NO_ERROR)
2753
2780
{
2754
2781
ChipLogProgress (Controller, " Performing next commissioning step '%s'" , StageToString (step));
@@ -3385,6 +3412,7 @@ void DeviceCommissioner::PerformCommissioningStep(DeviceProxy * proxy, Commissio
3385
3412
case CommissioningStage::kFindOperationalForCommissioningComplete : {
3386
3413
// If there is an error, CommissioningStageComplete will be called from OnDeviceConnectionFailureFn.
3387
3414
auto scopedPeerId = GetPeerScopedId (proxy->GetDeviceId ());
3415
+ MATTER_LOG_METRIC_BEGIN (kMetricDeviceCommissioningOperationalSetup );
3388
3416
mSystemState ->CASESessionMgr ()->FindOrEstablishSession (scopedPeerId, &mOnDeviceConnectedCallback ,
3389
3417
&mOnDeviceConnectionFailureCallback
3390
3418
#if CHIP_DEVICE_CONFIG_ENABLE_AUTOMATIC_CASE_RETRIES
0 commit comments