Skip to content

Commit 108ae4f

Browse files
Improve DataVersion filter list logging when subscribing.
We logged the encoded filters when doing a re-subscribe with a ClusterStateCache, but not when doing an initial subscribe. This moves the logging into the encoding of the filter list, so it's logged consistently. Also logs the DataVersion that we get back in MTRDevice_Concrete.
1 parent 92cac02 commit 108ae4f

File tree

6 files changed

+30
-25
lines changed

6 files changed

+30
-25
lines changed

src/app/ClusterStateCache.cpp

+1-9
Original file line numberDiff line numberDiff line change
@@ -626,15 +626,7 @@ CHIP_ERROR ClusterStateCacheT<CanEnableDataCaching>::OnUpdateDataVersionFilterLi
626626
continue;
627627
}
628628

629-
DataVersionFilterIB::Builder & filterIB = aDataVersionFilterIBsBuilder.CreateDataVersionFilter();
630-
SuccessOrExit(err = aDataVersionFilterIBsBuilder.GetError());
631-
ClusterPathIB::Builder & filterPath = filterIB.CreatePath();
632-
SuccessOrExit(err = filterIB.GetError());
633-
SuccessOrExit(err = filterPath.Endpoint(filter.first.mEndpointId).Cluster(filter.first.mClusterId).EndOfClusterPathIB());
634-
SuccessOrExit(err = filterIB.DataVersion(filter.first.mDataVersion.Value()).EndOfDataVersionFilterIB());
635-
ChipLogProgress(DataManagement, "Update DataVersionFilter: Endpoint=%u Cluster=" ChipLogFormatMEI " Version=%" PRIu32,
636-
filter.first.mEndpointId, ChipLogValueMEI(filter.first.mClusterId), filter.first.mDataVersion.Value());
637-
629+
SuccessOrExit(err = aDataVersionFilterIBsBuilder.EncodeDataVersionFilterIB(filter.first));
638630
aEncodedDataVersionList = true;
639631
}
640632

src/app/MessageDef/DataVersionFilterIBs.cpp

+15
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,21 @@ DataVersionFilterIB::Builder & DataVersionFilterIBs::Builder::CreateDataVersionF
6969
return mDataVersionFilter;
7070
}
7171

72+
CHIP_ERROR DataVersionFilterIBs::Builder::EncodeDataVersionFilterIB(const DataVersionFilter & aFilter)
73+
{
74+
DataVersionFilterIB::Builder & filterIB = CreateDataVersionFilter();
75+
ReturnErrorOnFailure(GetError());
76+
ClusterPathIB::Builder & path = filterIB.CreatePath();
77+
ReturnErrorOnFailure(filterIB.GetError());
78+
ReturnErrorOnFailure(path.Endpoint(aFilter.mEndpointId).Cluster(aFilter.mClusterId).EndOfClusterPathIB());
79+
ReturnErrorOnFailure(filterIB.DataVersion(aFilter.mDataVersion.Value()).EndOfDataVersionFilterIB());
80+
81+
ChipLogProgress(DataManagement, "Encoded DataVersionFilter: Endpoint=%u Cluster=" ChipLogFormatMEI " Version=%" PRIu32,
82+
aFilter.mEndpointId, ChipLogValueMEI(aFilter.mClusterId), aFilter.mDataVersion.Value());
83+
84+
return CHIP_NO_ERROR;
85+
}
86+
7287
CHIP_ERROR DataVersionFilterIBs::Builder::EndOfDataVersionFilterIBs()
7388
{
7489
EndOfContainer();

src/app/MessageDef/DataVersionFilterIBs.h

+11
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#pragma once
1919

2020
#include <app/AppConfig.h>
21+
#include <app/DataVersionFilter.h>
2122
#include <app/util/basic-types.h>
2223
#include <lib/core/CHIPCore.h>
2324
#include <lib/core/TLV.h>
@@ -54,6 +55,16 @@ class Builder : public ArrayBuilder
5455
*/
5556
DataVersionFilterIB::Builder & GetDataVersionFilter() { return mDataVersionFilter; };
5657

58+
/**
59+
* Add a DataVersionFilter to the list. This is a convenience method
60+
* that will handle calling CreateDataVersionFilter() and then using the
61+
* result to encode the provided DataVersionFilter.
62+
*
63+
* The passed-in DataVersionFilter is assumed to pass the
64+
* IsValidDataVersionFilter() test.
65+
*/
66+
CHIP_ERROR EncodeDataVersionFilterIB(const DataVersionFilter & aFilter);
67+
5768
/**
5869
* @brief Mark the end of this DataVersionFilterIBs
5970
*

src/app/ReadClient.cpp

+1-14
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ CHIP_ERROR ReadClient::BuildDataVersionFilterList(DataVersionFilterIBs::Builder
433433

434434
TLV::TLVWriter backup;
435435
aDataVersionFilterIBsBuilder.Checkpoint(backup);
436-
CHIP_ERROR err = EncodeDataVersionFilter(aDataVersionFilterIBsBuilder, filter);
436+
CHIP_ERROR err = aDataVersionFilterIBsBuilder.EncodeDataVersionFilterIB(filter);
437437
if (err == CHIP_NO_ERROR)
438438
{
439439
#if CHIP_PROGRESS_LOGGING
@@ -464,19 +464,6 @@ CHIP_ERROR ReadClient::BuildDataVersionFilterList(DataVersionFilterIBs::Builder
464464
return CHIP_NO_ERROR;
465465
}
466466

467-
CHIP_ERROR ReadClient::EncodeDataVersionFilter(DataVersionFilterIBs::Builder & aDataVersionFilterIBsBuilder,
468-
DataVersionFilter const & aFilter)
469-
{
470-
// Caller has checked aFilter.IsValidDataVersionFilter()
471-
DataVersionFilterIB::Builder & filterIB = aDataVersionFilterIBsBuilder.CreateDataVersionFilter();
472-
ReturnErrorOnFailure(aDataVersionFilterIBsBuilder.GetError());
473-
ClusterPathIB::Builder & path = filterIB.CreatePath();
474-
ReturnErrorOnFailure(filterIB.GetError());
475-
ReturnErrorOnFailure(path.Endpoint(aFilter.mEndpointId).Cluster(aFilter.mClusterId).EndOfClusterPathIB());
476-
ReturnErrorOnFailure(filterIB.DataVersion(aFilter.mDataVersion.Value()).EndOfDataVersionFilterIB());
477-
return CHIP_NO_ERROR;
478-
}
479-
480467
CHIP_ERROR ReadClient::GenerateDataVersionFilterList(DataVersionFilterIBs::Builder & aDataVersionFilterIBsBuilder,
481468
const Span<AttributePathParams> & aAttributePaths,
482469
const Span<DataVersionFilter> & aDataVersionFilters,

src/app/ReadClient.h

-2
Original file line numberDiff line numberDiff line change
@@ -562,8 +562,6 @@ class ReadClient : public Messaging::ExchangeDelegate
562562
CHIP_ERROR BuildDataVersionFilterList(DataVersionFilterIBs::Builder & aDataVersionFilterIBsBuilder,
563563
const Span<AttributePathParams> & aAttributePaths,
564564
const Span<DataVersionFilter> & aDataVersionFilters, bool & aEncodedDataVersionList);
565-
CHIP_ERROR EncodeDataVersionFilter(DataVersionFilterIBs::Builder & aDataVersionFilterIBsBuilder,
566-
DataVersionFilter const & aFilter);
567565
CHIP_ERROR ReadICDOperatingModeFromAttributeDataIB(TLV::TLVReader && aReader, PeerType & aType);
568566
CHIP_ERROR ProcessAttributeReportIBs(TLV::TLVReader & aAttributeDataIBsReader);
569567
CHIP_ERROR ProcessEventReportIBs(TLV::TLVReader & aEventReportIBsReader);

src/darwin/Framework/CHIP/MTRDevice_Concrete.mm

+2
Original file line numberDiff line numberDiff line change
@@ -3322,6 +3322,8 @@ - (void)_noteDataVersion:(NSNumber *)dataVersion forClusterPath:(MTRClusterPath
33223322
_clusterDataToPersist = [NSMutableDictionary dictionary];
33233323
}
33243324
_clusterDataToPersist[clusterPath] = clusterData;
3325+
3326+
MTR_LOG("%@ updated DataVersion for %@ to %@", self, clusterPath, dataVersion);
33253327
}
33263328
}
33273329

0 commit comments

Comments
 (0)