Cleanup IM (#12606)
--Move ConstructCommandPath function into CommandPathIB, update all usage across the codes.
--Use reference delcartion for usages on all Create* functions from IM MessageDef, update all usage across the code.
--Update the missing error-check for IM messageDef.
diff --git a/src/app/AttributeAccessInterface.cpp b/src/app/AttributeAccessInterface.cpp
index 040a199..0e7723b 100644
--- a/src/app/AttributeAccessInterface.cpp
+++ b/src/app/AttributeAccessInterface.cpp
@@ -24,16 +24,16 @@
CHIP_ERROR AttributeReportBuilder::PrepareAttribute(AttributeReportIBs::Builder & aAttributeReportIBsBuilder,
const ConcreteDataAttributePath & aPath, DataVersion aDataVersion)
{
- mAttributeReportIBBuilder = aAttributeReportIBsBuilder.CreateAttributeReport();
+ AttributeReportIB::Builder & attributeReportIBBuilder = aAttributeReportIBsBuilder.CreateAttributeReport();
ReturnErrorOnFailure(aAttributeReportIBsBuilder.GetError());
- mAttributeDataIBBuilder = mAttributeReportIBBuilder.CreateAttributeData();
- ReturnErrorOnFailure(mAttributeReportIBBuilder.GetError());
+ AttributeDataIB::Builder & attributeDataIBBuilder = attributeReportIBBuilder.CreateAttributeData();
+ ReturnErrorOnFailure(attributeReportIBBuilder.GetError());
- mAttributeDataIBBuilder.DataVersion(aDataVersion);
+ attributeDataIBBuilder.DataVersion(aDataVersion);
- auto attributePathIBBuilder = mAttributeDataIBBuilder.CreatePath();
- ReturnErrorOnFailure(mAttributeDataIBBuilder.GetError());
+ AttributePathIB::Builder & attributePathIBBuilder = attributeDataIBBuilder.CreatePath();
+ ReturnErrorOnFailure(attributeDataIBBuilder.GetError());
attributePathIBBuilder.Endpoint(aPath.mEndpointId).Cluster(aPath.mClusterId).Attribute(aPath.mAttributeId);
@@ -46,13 +46,13 @@
ReturnErrorOnFailure(attributePathIBBuilder.EndOfAttributePathIB().GetError());
- return mAttributeDataIBBuilder.GetError();
+ return attributeDataIBBuilder.GetError();
}
-CHIP_ERROR AttributeReportBuilder::FinishAttribute()
+CHIP_ERROR AttributeReportBuilder::FinishAttribute(AttributeReportIBs::Builder & aAttributeReportIBsBuilder)
{
- ReturnErrorOnFailure(mAttributeDataIBBuilder.EndOfAttributeDataIB().GetError());
- return mAttributeReportIBBuilder.EndOfAttributeReportIB().GetError();
+ ReturnErrorOnFailure(aAttributeReportIBsBuilder.GetAttributeReport().GetAttributeData().EndOfAttributeDataIB().GetError());
+ return aAttributeReportIBsBuilder.GetAttributeReport().EndOfAttributeReportIB().GetError();
}
CHIP_ERROR AttributeValueEncoder::EncodeEmptyList()
@@ -70,9 +70,9 @@
AttributeReportBuilder builder;
ReturnErrorOnFailure(builder.PrepareAttribute(mAttributeReportIBsBuilder, mPath, mDataVersion));
- ReturnErrorOnFailure(builder.EncodeValue(DataModel::List<uint8_t>()));
+ ReturnErrorOnFailure(builder.EncodeValue(mAttributeReportIBsBuilder, DataModel::List<uint8_t>()));
- ReturnErrorOnFailure(builder.FinishAttribute());
+ ReturnErrorOnFailure(builder.FinishAttribute(mAttributeReportIBsBuilder));
mEncodeState.mCurrentEncodingListIndex = 0;
}
mCurrentEncodingListIndex = 0;
diff --git a/src/app/AttributeAccessInterface.h b/src/app/AttributeAccessInterface.h
index 9f7cca7..796f7b6 100644
--- a/src/app/AttributeAccessInterface.h
+++ b/src/app/AttributeAccessInterface.h
@@ -68,21 +68,17 @@
/**
* FinishAttribute encodes the "footer" part of an attribute report (it closes the containers opened in PrepareAttribute)
*/
- CHIP_ERROR FinishAttribute();
+ CHIP_ERROR FinishAttribute(AttributeReportIBs::Builder & aAttributeReportIBs);
/**
* EncodeValue encodes the value field of the report, it should be called exactly once.
*/
template <typename... Ts>
- CHIP_ERROR EncodeValue(Ts... aArgs)
+ CHIP_ERROR EncodeValue(AttributeReportIBs::Builder & aAttributeReportIBs, Ts... aArgs)
{
- return DataModel::Encode(*mAttributeDataIBBuilder.GetWriter(), TLV::ContextTag(to_underlying(AttributeDataIB::Tag::kData)),
- std::forward<Ts>(aArgs)...);
+ return DataModel::Encode(*(aAttributeReportIBs.GetAttributeReport().GetAttributeData().GetWriter()),
+ TLV::ContextTag(to_underlying(AttributeDataIB::Tag::kData)), std::forward<Ts>(aArgs)...);
}
-
-private:
- AttributeReportIB::Builder mAttributeReportIBBuilder;
- AttributeDataIB::Builder mAttributeDataIBBuilder;
};
/**
@@ -252,9 +248,9 @@
AttributeReportBuilder builder;
ReturnErrorOnFailure(builder.PrepareAttribute(mAttributeReportIBsBuilder, mPath, mDataVersion));
- ReturnErrorOnFailure(builder.EncodeValue(std::forward<Ts>(aArgs)...));
+ ReturnErrorOnFailure(builder.EncodeValue(mAttributeReportIBsBuilder, std::forward<Ts>(aArgs)...));
- return builder.FinishAttribute();
+ return builder.FinishAttribute(mAttributeReportIBsBuilder);
}
/**
diff --git a/src/app/Command.cpp b/src/app/Command.cpp
index 1d9d14d..b73c074 100644
--- a/src/app/Command.cpp
+++ b/src/app/Command.cpp
@@ -37,17 +37,6 @@
return mCommandMessageWriter.Finalize(&commandPacket);
}
-CHIP_ERROR Command::ConstructCommandPath(const CommandPathParams & aCommandPathParams, CommandPathIB::Builder & aCommandPath)
-{
- if (aCommandPathParams.mFlags.Has(CommandPathFlags::kEndpointIdValid))
- {
- aCommandPath.EndpointId(aCommandPathParams.mEndpointId);
- }
-
- aCommandPath.ClusterId(aCommandPathParams.mClusterId).CommandId(aCommandPathParams.mCommandId).EndOfCommandPathIB();
- return aCommandPath.GetError();
-}
-
void Command::Abort()
{
//
diff --git a/src/app/Command.h b/src/app/Command.h
index 4e3a698..9fbeff7 100644
--- a/src/app/Command.h
+++ b/src/app/Command.h
@@ -101,7 +101,6 @@
void Close();
void MoveToState(const CommandState aTargetState);
- CHIP_ERROR ConstructCommandPath(const CommandPathParams & aCommandPathParams, CommandPathIB::Builder & aCommandPath);
const char * GetStateStr() const;
Messaging::ExchangeContext * mpExchangeCtx = nullptr;
diff --git a/src/app/CommandHandler.cpp b/src/app/CommandHandler.cpp
index 96dbdf4..66324e0 100644
--- a/src/app/CommandHandler.cpp
+++ b/src/app/CommandHandler.cpp
@@ -295,17 +295,11 @@
const Protocols::InteractionModel::Status aStatus,
const Optional<ClusterStatus> & aClusterStatus)
{
- StatusIB::Builder statusIBBuilder;
StatusIB statusIB;
-
- CommandPathParams commandPathParams = { aCommandPath.mEndpointId,
- 0, // GroupId
- aCommandPath.mClusterId, aCommandPath.mCommandId,
- chip::app::CommandPathFlags::kEndpointIdValid };
-
- ReturnLogErrorOnFailure(PrepareStatus(commandPathParams));
- statusIBBuilder = mInvokeResponseBuilder.GetInvokeResponses().GetInvokeResponse().GetStatus().CreateErrorStatus();
-
+ ReturnLogErrorOnFailure(PrepareStatus(aCommandPath));
+ CommandStatusIB::Builder & commandStatus = mInvokeResponseBuilder.GetInvokeResponses().GetInvokeResponse().GetStatus();
+ StatusIB::Builder & statusIBBuilder = commandStatus.CreateErrorStatus();
+ ReturnErrorOnFailure(commandStatus.GetError());
//
// TODO: Most of the callers are incorrectly passing SecureChannel as the protocol ID, when in fact, the status code provided
// above is always an IM code. Instead of fixing all the callers (which is a fairly sizeable change), we'll embark on fixing
@@ -314,7 +308,7 @@
statusIB.mStatus = aStatus;
statusIB.mClusterStatus = aClusterStatus;
statusIBBuilder.EncodeStatusIB(statusIB);
- ReturnLogErrorOnFailure(statusIBBuilder.GetError());
+ ReturnErrorOnFailure(statusIBBuilder.GetError());
return FinishStatus();
}
@@ -336,24 +330,22 @@
return AddStatusInternal(aCommandPath, Protocols::InteractionModel::Status::Failure, clusterStatus);
}
-CHIP_ERROR CommandHandler::PrepareResponse(const ConcreteCommandPath & aRequestCommandPath, CommandId aResponseCommand)
-{
- CommandPathParams params = { aRequestCommandPath.mEndpointId,
- 0, // GroupId
- aRequestCommandPath.mClusterId, aResponseCommand, (CommandPathFlags::kEndpointIdValid) };
- return PrepareCommand(params, false /* aStartDataStruct */);
-}
-
-CHIP_ERROR CommandHandler::PrepareCommand(const CommandPathParams & aCommandPathParams, bool aStartDataStruct)
+CHIP_ERROR CommandHandler::PrepareCommand(const ConcreteCommandPath & aCommandPath, bool aStartDataStruct)
{
ReturnErrorOnFailure(AllocateBuffer());
//
// We must not be in the middle of preparing a command, or having prepared or sent one.
//
VerifyOrReturnError(mState == CommandState::Idle, CHIP_ERROR_INCORRECT_STATE);
- CommandDataIB::Builder commandData = mInvokeResponseBuilder.GetInvokeResponses().CreateInvokeResponse().CreateCommand();
+ InvokeResponseIBs::Builder & invokeResponses = mInvokeResponseBuilder.GetInvokeResponses();
+ InvokeResponseIB::Builder & invokeResponse = invokeResponses.CreateInvokeResponse();
+ ReturnErrorOnFailure(invokeResponses.GetError());
+
+ CommandDataIB::Builder & commandData = invokeResponse.CreateCommand();
ReturnErrorOnFailure(commandData.GetError());
- ReturnErrorOnFailure(ConstructCommandPath(aCommandPathParams, commandData.CreatePath()));
+ CommandPathIB::Builder & path = commandData.CreatePath();
+ ReturnErrorOnFailure(commandData.GetError());
+ ReturnErrorOnFailure(path.Encode(aCommandPath));
if (aStartDataStruct)
{
ReturnErrorOnFailure(commandData.GetWriter()->StartContainer(TLV::ContextTag(to_underlying(CommandDataIB::Tag::kData)),
@@ -379,16 +371,21 @@
return CHIP_NO_ERROR;
}
-CHIP_ERROR CommandHandler::PrepareStatus(const CommandPathParams & aCommandPathParams)
+CHIP_ERROR CommandHandler::PrepareStatus(const ConcreteCommandPath & aCommandPath)
{
ReturnErrorOnFailure(AllocateBuffer());
//
// We must not be in the middle of preparing a command, or having prepared or sent one.
//
VerifyOrReturnError(mState == CommandState::Idle, CHIP_ERROR_INCORRECT_STATE);
- CommandStatusIB::Builder commandStatus = mInvokeResponseBuilder.GetInvokeResponses().CreateInvokeResponse().CreateStatus();
+ InvokeResponseIBs::Builder & invokeResponses = mInvokeResponseBuilder.GetInvokeResponses();
+ InvokeResponseIB::Builder & invokeResponse = invokeResponses.CreateInvokeResponse();
+ ReturnErrorOnFailure(invokeResponses.GetError());
+ CommandStatusIB::Builder & commandStatus = invokeResponse.CreateStatus();
ReturnErrorOnFailure(commandStatus.GetError());
- ReturnErrorOnFailure(ConstructCommandPath(aCommandPathParams, commandStatus.CreatePath()));
+ CommandPathIB::Builder & path = commandStatus.CreatePath();
+ ReturnErrorOnFailure(commandStatus.GetError());
+ ReturnErrorOnFailure(path.Encode(aCommandPath));
MoveToState(CommandState::AddingCommand);
return CHIP_NO_ERROR;
}
diff --git a/src/app/CommandHandler.h b/src/app/CommandHandler.h
index 29cc3b6..97bb39b 100644
--- a/src/app/CommandHandler.h
+++ b/src/app/CommandHandler.h
@@ -142,9 +142,9 @@
CHIP_ERROR AddClusterSpecificFailure(const ConcreteCommandPath & aCommandPath, ClusterStatus aClusterStatus) override;
CHIP_ERROR ProcessInvokeRequest(System::PacketBufferHandle && payload, bool isTimedInvoke);
- CHIP_ERROR PrepareCommand(const CommandPathParams & aCommandPathParams, bool aStartDataStruct = true);
+ CHIP_ERROR PrepareCommand(const ConcreteCommandPath & aCommandPath, bool aStartDataStruct = true);
CHIP_ERROR FinishCommand(bool aStartDataStruct = true);
- CHIP_ERROR PrepareStatus(const CommandPathParams & aCommandPathParams);
+ CHIP_ERROR PrepareStatus(const ConcreteCommandPath & aCommandPath);
CHIP_ERROR FinishStatus();
TLV::TLVWriter * GetCommandDataIBTLVWriter();
FabricIndex GetAccessingFabricIndex() const;
@@ -162,7 +162,8 @@
template <typename CommandData>
CHIP_ERROR AddResponseData(const ConcreteCommandPath & aRequestCommandPath, const CommandData & aData)
{
- ReturnErrorOnFailure(PrepareResponse(aRequestCommandPath, CommandData::GetCommandId()));
+ ConcreteCommandPath path = { aRequestCommandPath.mEndpointId, aRequestCommandPath.mClusterId, CommandData::GetCommandId() };
+ ReturnErrorOnFailure(PrepareCommand(path, false));
TLV::TLVWriter * writer = GetCommandDataIBTLVWriter();
VerifyOrReturnError(writer != nullptr, CHIP_ERROR_INCORRECT_STATE);
ReturnErrorOnFailure(DataModel::Encode(*writer, TLV::ContextTag(to_underlying(CommandDataIB::Tag::kData)), aData));
@@ -210,7 +211,6 @@
CHIP_ERROR ProcessCommandDataIB(CommandDataIB::Parser & aCommandElement);
CHIP_ERROR SendCommandResponse();
- CHIP_ERROR PrepareResponse(const ConcreteCommandPath & aRequestCommandPath, CommandId aResponseCommand);
CHIP_ERROR AddStatusInternal(const ConcreteCommandPath & aCommandPath, const Protocols::InteractionModel::Status aStatus,
const Optional<ClusterStatus> & aClusterStatus);
diff --git a/src/app/CommandSender.cpp b/src/app/CommandSender.cpp
index fa6a2e5..894cb30 100644
--- a/src/app/CommandSender.cpp
+++ b/src/app/CommandSender.cpp
@@ -298,23 +298,23 @@
CHIP_ERROR CommandSender::PrepareCommand(const CommandPathParams & aCommandPathParams, bool aStartDataStruct)
{
- CommandDataIB::Builder commandData;
ReturnLogErrorOnFailure(AllocateBuffer());
//
// We must not be in the middle of preparing a command, or having prepared or sent one.
//
VerifyOrReturnError(mState == CommandState::Idle, CHIP_ERROR_INCORRECT_STATE);
-
- commandData = mInvokeRequestBuilder.GetInvokeRequests().CreateCommandData();
- ReturnLogErrorOnFailure(commandData.GetError());
-
- ReturnLogErrorOnFailure(ConstructCommandPath(aCommandPathParams, commandData.CreatePath()));
+ InvokeRequests::Builder & invokeRequests = mInvokeRequestBuilder.GetInvokeRequests();
+ CommandDataIB::Builder & invokeRequest = invokeRequests.CreateCommandData();
+ ReturnErrorOnFailure(invokeRequests.GetError());
+ CommandPathIB::Builder & path = invokeRequest.CreatePath();
+ ReturnErrorOnFailure(invokeRequest.GetError());
+ ReturnErrorOnFailure(path.Encode(aCommandPathParams));
if (aStartDataStruct)
{
- ReturnLogErrorOnFailure(commandData.GetWriter()->StartContainer(TLV::ContextTag(to_underlying(CommandDataIB::Tag::kData)),
- TLV::kTLVType_Structure, mDataElementContainerType));
+ ReturnLogErrorOnFailure(invokeRequest.GetWriter()->StartContainer(TLV::ContextTag(to_underlying(CommandDataIB::Tag::kData)),
+ TLV::kTLVType_Structure, mDataElementContainerType));
}
MoveToState(CommandState::AddingCommand);
diff --git a/src/app/EventManagement.cpp b/src/app/EventManagement.cpp
index 481234b..a84d694 100644
--- a/src/app/EventManagement.cpp
+++ b/src/app/EventManagement.cpp
@@ -289,10 +289,20 @@
ctxt.mCurrentEventNumber = GetPriorityBuffer(apOptions->mpEventSchema->mPriority)->GetLastEventNumber();
ctxt.mCurrentTime.mValue = GetPriorityBuffer(apOptions->mpEventSchema->mPriority)->GetLastEventTimestamp();
- err = ConstructEvent(&ctxt, apDelegate, apOptions);
- if (CHIP_NO_ERROR == err)
+
+ TLVWriter checkpoint = ctxt.mWriter;
+ err = ConstructEvent(&ctxt, apDelegate, apOptions);
+ if (err != CHIP_NO_ERROR)
{
- requiredSize = writer.GetLengthWritten();
+ ctxt.mWriter = checkpoint;
+ }
+ else
+ {
+ // update these variables since ConstructEvent can be used to track the
+ // state of a set of events over multiple calls.
+ ctxt.mCurrentEventNumber++;
+ ctxt.mCurrentTime = apOptions->mTimestamp;
+ requiredSize = writer.GetLengthWritten();
}
return err;
}
@@ -300,27 +310,22 @@
CHIP_ERROR EventManagement::ConstructEvent(EventLoadOutContext * apContext, EventLoggingDelegate * apDelegate,
const EventOptions * apOptions)
{
-
- CHIP_ERROR err = CHIP_NO_ERROR;
- TLVWriter checkpoint = apContext->mWriter;
TLV::TLVType dataContainerType;
- EventReportIB::Builder eventReportBuilder;
- EventDataIB::Builder eventDataIBBuilder;
- EventPathIB::Builder eventPathBuilder;
uint64_t deltatime = 0;
- VerifyOrExit(apContext->mCurrentEventNumber >= apContext->mStartingEventNumber,
- /* no-op: don't write event, but advance current event Number */);
+ VerifyOrReturnError(apContext->mCurrentEventNumber >= apContext->mStartingEventNumber, CHIP_NO_ERROR
+ /* no-op: don't write event, but advance current event Number */);
- VerifyOrExit(apOptions != nullptr, err = CHIP_ERROR_INVALID_ARGUMENT);
+ VerifyOrReturnError(apOptions != nullptr, CHIP_ERROR_INVALID_ARGUMENT);
+ EventReportIB::Builder eventReportBuilder;
eventReportBuilder.Init(&(apContext->mWriter));
// TODO: Update IsUrgent, issue 11386
// TODO: Update statusIB, issue 11388
- eventDataIBBuilder = eventReportBuilder.CreateEventData();
- eventPathBuilder = eventDataIBBuilder.CreatePath();
- err = eventDataIBBuilder.GetError();
- SuccessOrExit(err);
+ EventDataIB::Builder & eventDataIBBuilder = eventReportBuilder.CreateEventData();
+ ReturnErrorOnFailure(eventReportBuilder.GetError());
+ EventPathIB::Builder & eventPathBuilder = eventDataIBBuilder.CreatePath();
+ ReturnErrorOnFailure(eventDataIBBuilder.GetError());
// TODO: Revisit NodeId since the the encoding spec and the IM seem to disagree on how this stuff works
eventPathBuilder.Node(apOptions->mpEventSchema->mNodeId)
@@ -329,10 +334,9 @@
.Event(apOptions->mpEventSchema->mEventId)
.IsUrgent(false)
.EndOfEventPathIB();
- err = eventPathBuilder.GetError();
- SuccessOrExit(err);
-
+ ReturnErrorOnFailure(eventPathBuilder.GetError());
eventDataIBBuilder.Priority(chip::to_underlying(apContext->mPriority));
+ ReturnErrorOnFailure(eventDataIBBuilder.GetError());
deltatime = apOptions->mTimestamp.mValue - apContext->mCurrentTime.mValue;
if (apOptions->mTimestamp.IsSystem())
@@ -344,42 +348,20 @@
eventDataIBBuilder.DeltaEpochTimestamp(deltatime);
}
- err = eventDataIBBuilder.GetError();
- SuccessOrExit(err);
+ ReturnErrorOnFailure(eventDataIBBuilder.GetError());
- err = apContext->mWriter.StartContainer(ContextTag(chip::to_underlying(EventDataIB::Tag::kData)), TLV::kTLVType_Structure,
- dataContainerType);
- SuccessOrExit(err);
+ ReturnErrorOnFailure(apContext->mWriter.StartContainer(ContextTag(chip::to_underlying(EventDataIB::Tag::kData)),
+ TLV::kTLVType_Structure, dataContainerType));
// Callback to write the EventData
- err = apDelegate->WriteEvent(apContext->mWriter);
- SuccessOrExit(err);
-
- err = apContext->mWriter.EndContainer(dataContainerType);
- SuccessOrExit(err);
-
+ ReturnErrorOnFailure(apDelegate->WriteEvent(apContext->mWriter));
+ ReturnErrorOnFailure(apContext->mWriter.EndContainer(dataContainerType));
eventDataIBBuilder.EndOfEventDataIB();
- SuccessOrExit(err = eventDataIBBuilder.GetError());
+ ReturnErrorOnFailure(eventDataIBBuilder.GetError());
eventReportBuilder.EndOfEventReportIB();
- SuccessOrExit(err = eventReportBuilder.GetError());
-
- err = apContext->mWriter.Finalize();
- SuccessOrExit(err);
-
+ ReturnErrorOnFailure(eventReportBuilder.GetError());
+ ReturnErrorOnFailure(apContext->mWriter.Finalize());
apContext->mFirst = false;
-
-exit:
- if (err != CHIP_NO_ERROR)
- {
- apContext->mWriter = checkpoint;
- }
- else
- {
- // update these variables since ConstructEvent can be used to track the
- // state of a set of events over multiple calls.
- apContext->mCurrentEventNumber++;
- apContext->mCurrentTime = apOptions->mTimestamp;
- }
- return err;
+ return CHIP_NO_ERROR;
}
void EventManagement::CreateEventManagement(Messaging::ExchangeManager * apExchangeManager, uint32_t aNumBuffers,
diff --git a/src/app/MessageDef/AttributeReportIB.h b/src/app/MessageDef/AttributeReportIB.h
index d5f4718..f237fb6 100644
--- a/src/app/MessageDef/AttributeReportIB.h
+++ b/src/app/MessageDef/AttributeReportIB.h
@@ -91,6 +91,7 @@
*/
AttributeDataIB::Builder & CreateAttributeData();
+ AttributeDataIB::Builder & GetAttributeData() { return mAttributeData; }
/**
* @brief Initialize a StatusIB::Builder for writing into the TLV stream
*
diff --git a/src/app/MessageDef/AttributeReportIBs.h b/src/app/MessageDef/AttributeReportIBs.h
index 88630f7..3f241ce 100644
--- a/src/app/MessageDef/AttributeReportIBs.h
+++ b/src/app/MessageDef/AttributeReportIBs.h
@@ -68,6 +68,8 @@
*/
AttributeReportIB::Builder & CreateAttributeReport();
+ AttributeReportIB::Builder & GetAttributeReport() { return mAttributeReport; }
+
/**
* @brief Mark the end of this AttributeReportIBs
*
diff --git a/src/app/MessageDef/CommandPathIB.cpp b/src/app/MessageDef/CommandPathIB.cpp
index d0fe5e8..cb99837 100644
--- a/src/app/MessageDef/CommandPathIB.cpp
+++ b/src/app/MessageDef/CommandPathIB.cpp
@@ -169,5 +169,25 @@
return *this;
}
+CHIP_ERROR CommandPathIB::Builder::Encode(const CommandPathParams & aCommandPathParams)
+{
+ if (aCommandPathParams.mFlags.Has(CommandPathFlags::kEndpointIdValid))
+ {
+ EndpointId(aCommandPathParams.mEndpointId);
+ }
+
+ ClusterId(aCommandPathParams.mClusterId).CommandId(aCommandPathParams.mCommandId).EndOfCommandPathIB();
+ return GetError();
+}
+
+CHIP_ERROR CommandPathIB::Builder::Encode(const ConcreteCommandPath & aConcreteCommandPath)
+{
+ EndpointId(aConcreteCommandPath.mEndpointId)
+ .ClusterId(aConcreteCommandPath.mClusterId)
+ .CommandId(aConcreteCommandPath.mCommandId)
+ .EndOfCommandPathIB();
+ return GetError();
+}
+
}; // namespace app
}; // namespace chip
diff --git a/src/app/MessageDef/CommandPathIB.h b/src/app/MessageDef/CommandPathIB.h
index 62296b5..35d0bad 100644
--- a/src/app/MessageDef/CommandPathIB.h
+++ b/src/app/MessageDef/CommandPathIB.h
@@ -22,6 +22,8 @@
#include "ListParser.h"
#include <app/AppBuildConfig.h>
+#include <app/CommandPathParams.h>
+#include <app/ConcreteCommandPath.h>
#include <app/util/basic-types.h>
#include <lib/core/CHIPCore.h>
#include <lib/core/CHIPTLV.h>
@@ -128,6 +130,9 @@
* @return A reference to *this
*/
CommandPathIB::Builder & EndOfCommandPathIB();
+
+ CHIP_ERROR Encode(const CommandPathParams & aCommandPathParams);
+ CHIP_ERROR Encode(const ConcreteCommandPath & aConcreteCommandPath);
};
} // namespace CommandPathIB
} // namespace app
diff --git a/src/app/ReadClient.cpp b/src/app/ReadClient.cpp
index 0c2dd35..2110044 100644
--- a/src/app/ReadClient.cpp
+++ b/src/app/ReadClient.cpp
@@ -142,8 +142,8 @@
if (aReadPrepareParams.mAttributePathParamsListSize != 0 && aReadPrepareParams.mpAttributePathParamsList != nullptr)
{
- AttributePathIBs::Builder attributePathListBuilder = request.CreateAttributeRequests();
- SuccessOrExit(err = attributePathListBuilder.GetError());
+ AttributePathIBs::Builder & attributePathListBuilder = request.CreateAttributeRequests();
+ SuccessOrExit(err = request.GetError());
err = GenerateAttributePathList(attributePathListBuilder, aReadPrepareParams.mpAttributePathParamsList,
aReadPrepareParams.mAttributePathParamsListSize);
SuccessOrExit(err);
@@ -152,16 +152,17 @@
if (aReadPrepareParams.mEventPathParamsListSize != 0 && aReadPrepareParams.mpEventPathParamsList != nullptr)
{
EventPathIBs::Builder & eventPathListBuilder = request.CreateEventRequests();
- SuccessOrExit(err = eventPathListBuilder.GetError());
+ SuccessOrExit(err = request.GetError());
err = GenerateEventPaths(eventPathListBuilder, aReadPrepareParams.mpEventPathParamsList,
aReadPrepareParams.mEventPathParamsListSize);
SuccessOrExit(err);
if (aReadPrepareParams.mEventNumber != 0)
{
// EventFilter is optional
- EventFilterIBs::Builder eventFilters = request.CreateEventFilters();
+ EventFilterIBs::Builder & eventFilters = request.CreateEventFilters();
SuccessOrExit(err = request.GetError());
- EventFilterIB::Builder eventFilter = eventFilters.CreateEventFilter();
+ EventFilterIB::Builder & eventFilter = eventFilters.CreateEventFilter();
+ SuccessOrExit(err = eventFilters.GetError());
eventFilter.EventMin(aReadPrepareParams.mEventNumber).EndOfEventFilterIB();
SuccessOrExit(err = eventFilter.GetError());
eventFilters.EndOfEventFilters();
@@ -205,7 +206,9 @@
for (size_t index = 0; index < aEventPathParamsListSize; ++index)
{
VerifyOrReturnError(apEventPathParamsList[index].IsValidEventPath(), CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH);
- ReturnErrorOnFailure(aEventPathsBuilder.CreatePath().Encode(apEventPathParamsList[index]));
+ EventPathIB::Builder & path = aEventPathsBuilder.CreatePath();
+ ReturnErrorOnFailure(aEventPathsBuilder.GetError());
+ ReturnErrorOnFailure(path.Encode(apEventPathParamsList[index]));
}
aEventPathsBuilder.EndOfEventPaths();
@@ -219,7 +222,9 @@
for (size_t index = 0; index < aAttributePathParamsListSize; index++)
{
VerifyOrReturnError(apAttributePathParamsList[index].IsValidAttributePath(), CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH);
- ReturnErrorOnFailure(aAttributePathIBsBuilder.CreatePath().Encode(apAttributePathParamsList[index]));
+ AttributePathIB::Builder path = aAttributePathIBsBuilder.CreatePath();
+ ReturnErrorOnFailure(aAttributePathIBsBuilder.GetError());
+ ReturnErrorOnFailure(path.Encode(apAttributePathParamsList[index]));
}
aAttributePathIBsBuilder.EndOfAttributePathIBs();
return aAttributePathIBsBuilder.GetError();
@@ -662,9 +667,10 @@
if (aReadPrepareParams.mEventNumber != 0)
{
// EventNumber is optional
- EventFilterIBs::Builder eventFilters = request.CreateEventFilters();
+ EventFilterIBs::Builder & eventFilters = request.CreateEventFilters();
SuccessOrExit(err = request.GetError());
- EventFilterIB::Builder eventFilter = eventFilters.CreateEventFilter();
+ EventFilterIB::Builder & eventFilter = eventFilters.CreateEventFilter();
+ SuccessOrExit(err = eventFilters.GetError());
eventFilter.EventMin(aReadPrepareParams.mEventNumber).EndOfEventFilterIB();
SuccessOrExit(err = eventFilter.GetError());
eventFilters.EndOfEventFilters();
diff --git a/src/app/WriteClient.cpp b/src/app/WriteClient.cpp
index 50d6f71..270ced5 100644
--- a/src/app/WriteClient.cpp
+++ b/src/app/WriteClient.cpp
@@ -36,7 +36,6 @@
VerifyOrReturnError(mpExchangeMgr == nullptr, CHIP_ERROR_INCORRECT_STATE);
VerifyOrReturnError(mpExchangeCtx == nullptr, CHIP_ERROR_INCORRECT_STATE);
- AttributeDataIBs::Builder attributeDataIBsBuilder;
System::PacketBufferHandle packet = System::PacketBufferHandle::New(chip::app::kMaxSecureSduLengthBytes);
VerifyOrReturnError(!packet.IsNull(), CHIP_ERROR_NO_MEMORY);
@@ -45,8 +44,8 @@
ReturnErrorOnFailure(mWriteRequestBuilder.Init(&mMessageWriter));
mWriteRequestBuilder.TimedRequest(false);
ReturnErrorOnFailure(mWriteRequestBuilder.GetError());
- attributeDataIBsBuilder = mWriteRequestBuilder.CreateWriteRequests();
- ReturnErrorOnFailure(attributeDataIBsBuilder.GetError());
+ mWriteRequestBuilder.CreateWriteRequests();
+ ReturnErrorOnFailure(mWriteRequestBuilder.GetError());
ClearExistingExchangeContext();
mpExchangeMgr = apExchangeMgr;
mpCallback = apCallback;
@@ -136,12 +135,14 @@
CHIP_ERROR WriteClient::PrepareAttribute(const AttributePathParams & attributePathParams)
{
VerifyOrReturnError(attributePathParams.IsValidAttributePath(), CHIP_ERROR_INVALID_PATH_LIST);
- AttributeDataIB::Builder attributeDataIB = mWriteRequestBuilder.GetWriteRequests().CreateAttributeDataIBBuilder();
- ReturnErrorOnFailure(attributeDataIB.GetError());
+ AttributeDataIBs::Builder & writeRequests = mWriteRequestBuilder.GetWriteRequests();
+ AttributeDataIB::Builder & attributeDataIB = writeRequests.CreateAttributeDataIBBuilder();
+ ReturnErrorOnFailure(writeRequests.GetError());
// TODO: Add attribute version support
attributeDataIB.DataVersion(0);
ReturnErrorOnFailure(attributeDataIB.GetError());
- ReturnErrorOnFailure(attributeDataIB.CreatePath().Encode(attributePathParams));
+ AttributePathIB::Builder & path = attributeDataIB.CreatePath();
+ ReturnErrorOnFailure(path.Encode(attributePathParams));
return CHIP_NO_ERROR;
}
diff --git a/src/app/WriteHandler.cpp b/src/app/WriteHandler.cpp
index e1b5518..8b76d2a 100644
--- a/src/app/WriteHandler.cpp
+++ b/src/app/WriteHandler.cpp
@@ -32,16 +32,16 @@
CHIP_ERROR WriteHandler::Init(InteractionModelDelegate * apDelegate)
{
IgnoreUnusedVariable(apDelegate);
- VerifyOrReturnLogError(mpExchangeCtx == nullptr, CHIP_ERROR_INCORRECT_STATE);
+ VerifyOrReturnError(mpExchangeCtx == nullptr, CHIP_ERROR_INCORRECT_STATE);
System::PacketBufferHandle packet = System::PacketBufferHandle::New(chip::app::kMaxSecureSduLengthBytes);
- VerifyOrReturnLogError(!packet.IsNull(), CHIP_ERROR_NO_MEMORY);
+ VerifyOrReturnError(!packet.IsNull(), CHIP_ERROR_NO_MEMORY);
mMessageWriter.Init(std::move(packet));
- ReturnLogErrorOnFailure(mWriteResponseBuilder.Init(&mMessageWriter));
+ ReturnErrorOnFailure(mWriteResponseBuilder.Init(&mMessageWriter));
- AttributeStatusIBs::Builder attributeStatusesBuilder = mWriteResponseBuilder.CreateWriteResponses();
- ReturnLogErrorOnFailure(attributeStatusesBuilder.GetError());
+ mWriteResponseBuilder.CreateWriteResponses();
+ ReturnErrorOnFailure(mWriteResponseBuilder.GetError());
MoveToState(State::Initialized);
@@ -263,29 +263,25 @@
CHIP_ERROR WriteHandler::AddStatus(const AttributePathParams & aAttributePathParams,
const Protocols::InteractionModel::Status aStatus)
{
- CHIP_ERROR err = CHIP_NO_ERROR;
- StatusIB::Builder statusIBBuilder;
+ AttributeStatusIBs::Builder & writeResponses = mWriteResponseBuilder.GetWriteResponses();
+ AttributeStatusIB::Builder & attributeStatusIB = writeResponses.CreateAttributeStatus();
+ ReturnErrorOnFailure(writeResponses.GetError());
+
+ AttributePathIB::Builder & path = attributeStatusIB.CreatePath();
+ ReturnErrorOnFailure(attributeStatusIB.GetError());
+ ReturnErrorOnFailure(path.Encode(aAttributePathParams));
+
StatusIB statusIB;
- AttributeStatusIB::Builder attributeStatusIB = mWriteResponseBuilder.GetWriteResponses().CreateAttributeStatus();
- err = attributeStatusIB.GetError();
- SuccessOrExit(err);
-
- err = attributeStatusIB.CreatePath().Encode(aAttributePathParams);
- SuccessOrExit(err);
-
- statusIB.mStatus = aStatus;
- statusIBBuilder = attributeStatusIB.CreateErrorStatus();
+ statusIB.mStatus = aStatus;
+ StatusIB::Builder & statusIBBuilder = attributeStatusIB.CreateErrorStatus();
+ ReturnErrorOnFailure(attributeStatusIB.GetError());
statusIBBuilder.EncodeStatusIB(statusIB);
- err = statusIBBuilder.GetError();
- SuccessOrExit(err);
-
+ ReturnErrorOnFailure(statusIBBuilder.GetError());
attributeStatusIB.EndOfAttributeStatusIB();
- err = attributeStatusIB.GetError();
- SuccessOrExit(err);
- MoveToState(State::AddStatus);
+ ReturnErrorOnFailure(attributeStatusIB.GetError());
-exit:
- return err;
+ MoveToState(State::AddStatus);
+ return CHIP_NO_ERROR;
}
FabricIndex WriteHandler::GetAccessingFabricIndex() const
diff --git a/src/app/clusters/account-login-server/account-login-server.cpp b/src/app/clusters/account-login-server/account-login-server.cpp
index 7b6b847..117cb46 100644
--- a/src/app/clusters/account-login-server/account-login-server.cpp
+++ b/src/app/clusters/account-login-server/account-login-server.cpp
@@ -36,11 +36,10 @@
void sendResponse(app::CommandHandler * command, const char * responseSetupPin)
{
- CHIP_ERROR err = CHIP_NO_ERROR;
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, AccountLogin::Id,
- Commands::GetSetupPINResponse::Id, (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = command->PrepareCommand(cmdParams));
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), AccountLogin::Id, Commands::GetSetupPINResponse::Id };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = command->PrepareCommand(path));
VerifyOrExit((writer = command->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->PutString(TLV::ContextTag(0), responseSetupPin));
SuccessOrExit(err = command->FinishCommand());
diff --git a/src/app/clusters/application-launcher-server/application-launcher-server.cpp b/src/app/clusters/application-launcher-server/application-launcher-server.cpp
index f7b892b..4f8da04 100644
--- a/src/app/clusters/application-launcher-server/application-launcher-server.cpp
+++ b/src/app/clusters/application-launcher-server/application-launcher-server.cpp
@@ -47,11 +47,10 @@
void sendResponse(app::CommandHandler * command, ApplicationLauncherResponse response)
{
- CHIP_ERROR err = CHIP_NO_ERROR;
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, ApplicationLauncher::Id,
- Commands::LaunchAppResponse::Id, (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = command->PrepareCommand(cmdParams));
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), ApplicationLauncher::Id, Commands::LaunchAppResponse::Id };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = command->PrepareCommand(path));
VerifyOrExit((writer = command->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), response.status));
SuccessOrExit(err = writer->PutString(TLV::ContextTag(1), reinterpret_cast<const char *>(response.data)));
diff --git a/src/app/clusters/door-lock-server/door-lock-server-logging.cpp b/src/app/clusters/door-lock-server/door-lock-server-logging.cpp
index df42d8d..c13b2b2 100644
--- a/src/app/clusters/door-lock-server/door-lock-server-logging.cpp
+++ b/src/app/clusters/door-lock-server/door-lock-server-logging.cpp
@@ -140,11 +140,10 @@
else
{
{
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, ZCL_DOOR_LOCK_CLUSTER_ID,
- ZCL_GET_LOG_RECORD_RESPONSE_COMMAND_ID,
- (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), ZCL_DOOR_LOCK_CLUSTER_ID,
+ ZCL_GET_LOG_RECORD_RESPONSE_COMMAND_ID };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), entry.logEntryId));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), entry.timestamp));
diff --git a/src/app/clusters/door-lock-server/door-lock-server-schedule.cpp b/src/app/clusters/door-lock-server/door-lock-server-schedule.cpp
index fea472f..0952b3c 100644
--- a/src/app/clusters/door-lock-server/door-lock-server-schedule.cpp
+++ b/src/app/clusters/door-lock-server/door-lock-server-schedule.cpp
@@ -197,10 +197,9 @@
}
{
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, ::Id,
- Commands::GetWeekDayScheduleResponse::Id, (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), ::Id, Commands::GetWeekDayScheduleResponse::Id };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), scheduleId));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), userId));
@@ -302,10 +301,9 @@
}
{
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, ::Id,
- Commands::GetYearDayScheduleResponse::Id, (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), ::Id, Commands::GetYearDayScheduleResponse::Id };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), scheduleId));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), userId));
@@ -407,10 +405,9 @@
}
{
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, ::Id,
- Commands::GetHolidayScheduleResponse::Id, (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), ::Id, Commands::GetHolidayScheduleResponse::Id };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), holidayScheduleId));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), zclStatus));
diff --git a/src/app/clusters/door-lock-server/door-lock-server-user.cpp b/src/app/clusters/door-lock-server/door-lock-server-user.cpp
index ea5a8cf..48c3c02 100644
--- a/src/app/clusters/door-lock-server/door-lock-server-user.cpp
+++ b/src/app/clusters/door-lock-server/door-lock-server-user.cpp
@@ -236,10 +236,10 @@
EmberAfPluginDoorLockServerUser * user = &pinUserTable[userId];
{
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, ZCL_DOOR_LOCK_CLUSTER_ID,
- ZCL_GET_USER_TYPE_RESPONSE_COMMAND_ID, (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), ZCL_DOOR_LOCK_CLUSTER_ID,
+ ZCL_GET_USER_TYPE_RESPONSE_COMMAND_ID };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), userId));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), user->type));
@@ -350,10 +350,9 @@
if (getUser(userId, pinUserTable, EMBER_AF_PLUGIN_DOOR_LOCK_SERVER_PIN_USER_TABLE_SIZE, &user))
{
{
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, ::Id, Commands::GetPINCodeResponse::Id,
- (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), ::Id, Commands::GetPINCodeResponse::Id };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), userId));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), user.status));
@@ -472,10 +471,10 @@
if (getUser(userId, rfidUserTable, EMBER_AF_PLUGIN_DOOR_LOCK_SERVER_RFID_USER_TABLE_SIZE, &user))
{
{
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, ZCL_DOOR_LOCK_CLUSTER_ID,
- Commands::GetRFIDCodeResponse::Id, (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), ZCL_DOOR_LOCK_CLUSTER_ID,
+ Commands::GetRFIDCodeResponse::Id };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), userId));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), user.status));
diff --git a/src/app/clusters/groups-server/groups-server.cpp b/src/app/clusters/groups-server/groups-server.cpp
index 452813c..9ad7ead 100644
--- a/src/app/clusters/groups-server/groups-server.cpp
+++ b/src/app/clusters/groups-server/groups-server.cpp
@@ -171,10 +171,9 @@
}
{
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, Groups::Id, Commands::AddGroupResponse::Id,
- (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), Groups::Id, Commands::AddGroupResponse::Id };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), status));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), groupId));
@@ -230,10 +229,9 @@
}
{
- app::CommandPathParams cmdParams = { endpointId, /* group id */ 0, Groups::Id, Commands::ViewGroupResponse::Id,
- (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ app::ConcreteCommandPath path = { endpointId, Groups::Id, Commands::ViewGroupResponse::Id };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), status));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), groupId));
@@ -380,10 +378,9 @@
emberAfScenesClusterRemoveScenesInGroupCallback(endpointId, groupId);
#endif
{
- app::CommandPathParams cmdParams = { endpointId, /* group id */ 0, Groups::Id, Commands::RemoveGroupResponse::Id,
- (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ app::ConcreteCommandPath path = { endpointId, Groups::Id, Commands::RemoveGroupResponse::Id };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), status));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), groupId));
diff --git a/src/app/clusters/identify-server/identify-server.cpp b/src/app/clusters/identify-server/identify-server.cpp
index d01a8ec..c2f0fa4 100644
--- a/src/app/clusters/identify-server/identify-server.cpp
+++ b/src/app/clusters/identify-server/identify-server.cpp
@@ -261,13 +261,12 @@
emberAfIdentifyClusterPrintln("Identifying for %u more seconds", identifyTime);
{
- app::CommandPathParams cmdParams = { endpoint, /* group id */ 0, Clusters::Identify::Id,
- ZCL_IDENTIFY_QUERY_RESPONSE_COMMAND_ID, (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
+ app::ConcreteCommandPath path = { endpoint, Clusters::Identify::Id, ZCL_IDENTIFY_QUERY_RESPONSE_COMMAND_ID };
+ TLV::TLVWriter * writer = nullptr;
VerifyOrExit(commandObj != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), identifyTime));
SuccessOrExit(err = commandObj->FinishCommand());
diff --git a/src/app/clusters/keypad-input-server/keypad-input-server.cpp b/src/app/clusters/keypad-input-server/keypad-input-server.cpp
index 21602da..026eca5 100644
--- a/src/app/clusters/keypad-input-server/keypad-input-server.cpp
+++ b/src/app/clusters/keypad-input-server/keypad-input-server.cpp
@@ -38,13 +38,12 @@
static void sendResponse(app::CommandHandler * command, EmberAfKeypadInputStatus keypadInputStatus)
{
- CHIP_ERROR err = CHIP_NO_ERROR;
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, KeypadInput::Id,
- KeypadInput::Commands::SendKeyResponse::Id, (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), KeypadInput::Id, KeypadInput::Commands::SendKeyResponse::Id };
+ TLV::TLVWriter * writer = nullptr;
VerifyOrExit(command != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
- SuccessOrExit(err = command->PrepareCommand(cmdParams));
+ SuccessOrExit(err = command->PrepareCommand(path));
VerifyOrExit((writer = command->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), keypadInputStatus));
SuccessOrExit(err = command->FinishCommand());
diff --git a/src/app/clusters/media-playback-server/media-playback-server.cpp b/src/app/clusters/media-playback-server/media-playback-server.cpp
index 6fadc47..3574f78 100644
--- a/src/app/clusters/media-playback-server/media-playback-server.cpp
+++ b/src/app/clusters/media-playback-server/media-playback-server.cpp
@@ -74,13 +74,12 @@
static void sendResponse(app::CommandHandler * command, const char * responseName, CommandId commandId,
EmberAfMediaPlaybackStatus mediaPlaybackStatus)
{
- CHIP_ERROR err = CHIP_NO_ERROR;
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, MediaPlayback::Id, commandId,
- (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), MediaPlayback::Id, commandId };
+ TLV::TLVWriter * writer = nullptr;
VerifyOrExit(command != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
- SuccessOrExit(err = command->PrepareCommand(cmdParams));
+ SuccessOrExit(err = command->PrepareCommand(path));
VerifyOrExit((writer = command->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), mediaPlaybackStatus));
SuccessOrExit(err = command->FinishCommand());
diff --git a/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp b/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp
index 0133a29..e915169 100644
--- a/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp
+++ b/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp
@@ -362,13 +362,12 @@
CHIP_ERROR SendNOCResponse(app::CommandHandler * commandObj, EmberAfNodeOperationalCertStatus status, uint8_t index,
CharSpan debug_text)
{
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, OperationalCredentials::Id,
- Commands::NOCResponse::Id, (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), OperationalCredentials::Id, Commands::NOCResponse::Id };
+ TLV::TLVWriter * writer = nullptr;
VerifyOrReturnError(commandObj != nullptr, CHIP_ERROR_INCORRECT_STATE);
- ReturnErrorOnFailure(commandObj->PrepareCommand(cmdParams));
+ ReturnErrorOnFailure(commandObj->PrepareCommand(path));
writer = commandObj->GetCommandDataIBTLVWriter();
ReturnErrorOnFailure(writer->Put(TLV::ContextTag(0), status));
if (status == EMBER_ZCL_NODE_OPERATIONAL_CERT_STATUS_SUCCESS)
diff --git a/src/app/clusters/scenes/scenes.cpp b/src/app/clusters/scenes/scenes.cpp
index 3a7fca8..126a17f 100644
--- a/src/app/clusters/scenes/scenes.cpp
+++ b/src/app/clusters/scenes/scenes.cpp
@@ -289,10 +289,10 @@
if (emberAfCurrentCommand()->type == EMBER_INCOMING_UNICAST || emberAfCurrentCommand()->type == EMBER_INCOMING_UNICAST_REPLY)
{
{
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, ZCL_SCENES_CLUSTER_ID,
- ZCL_REMOVE_SCENE_RESPONSE_COMMAND_ID, (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), ZCL_SCENES_CLUSTER_ID,
+ ZCL_REMOVE_SCENE_RESPONSE_COMMAND_ID };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), status));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), groupId));
@@ -342,11 +342,10 @@
if (emberAfCurrentCommand()->type == EMBER_INCOMING_UNICAST || emberAfCurrentCommand()->type == EMBER_INCOMING_UNICAST_REPLY)
{
{
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, ZCL_SCENES_CLUSTER_ID,
- ZCL_REMOVE_ALL_SCENES_RESPONSE_COMMAND_ID,
- (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), ZCL_SCENES_CLUSTER_ID,
+ ZCL_REMOVE_ALL_SCENES_RESPONSE_COMMAND_ID };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), status));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), groupId));
@@ -378,10 +377,10 @@
if (emberAfCurrentCommand()->type == EMBER_INCOMING_UNICAST || emberAfCurrentCommand()->type == EMBER_INCOMING_UNICAST_REPLY)
{
{
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, ZCL_SCENES_CLUSTER_ID,
- ZCL_STORE_SCENE_RESPONSE_COMMAND_ID, (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), ZCL_SCENES_CLUSTER_ID,
+ ZCL_STORE_SCENE_RESPONSE_COMMAND_ID };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), status));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), groupId));
@@ -474,11 +473,10 @@
}
{
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, ZCL_SCENES_CLUSTER_ID,
- ZCL_GET_SCENE_MEMBERSHIP_RESPONSE_COMMAND_ID,
- (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), ZCL_SCENES_CLUSTER_ID,
+ ZCL_GET_SCENE_MEMBERSHIP_RESPONSE_COMMAND_ID };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), status));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1),
@@ -1078,14 +1076,13 @@
return true;
}
{
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, ZCL_SCENES_CLUSTER_ID,
- ZCL_ADD_SCENE_RESPONSE_COMMAND_ID, (app::CommandPathFlags::kEndpointIdValid) };
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), ZCL_SCENES_CLUSTER_ID, ZCL_ADD_SCENE_RESPONSE_COMMAND_ID };
if (enhanced)
{
- cmdParams.mCommandId = ZCL_ENHANCED_ADD_SCENE_RESPONSE_COMMAND_ID;
+ path = { emberAfCurrentEndpoint(), ZCL_SCENES_CLUSTER_ID, ZCL_ENHANCED_ADD_SCENE_RESPONSE_COMMAND_ID };
}
TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), status));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), groupId));
@@ -1135,14 +1132,13 @@
// The status, group id, and scene id are always included in the response, but
// the transition time, name, and extension fields are only included if the
// scene was found.
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, ZCL_SCENES_CLUSTER_ID,
- ZCL_VIEW_SCENE_RESPONSE_COMMAND_ID, (app::CommandPathFlags::kEndpointIdValid) };
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), ZCL_SCENES_CLUSTER_ID, ZCL_VIEW_SCENE_RESPONSE_COMMAND_ID };
if (enhanced)
{
- cmdParams.mCommandId = ZCL_ENHANCED_VIEW_SCENE_RESPONSE_COMMAND_ID;
+ path = { emberAfCurrentEndpoint(), ZCL_SCENES_CLUSTER_ID, ZCL_ENHANCED_VIEW_SCENE_RESPONSE_COMMAND_ID };
}
TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = commandObj->PrepareCommand(cmdParams));
+ SuccessOrExit(err = commandObj->PrepareCommand(path));
VerifyOrExit((writer = commandObj->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), status));
SuccessOrExit(err = writer->Put(TLV::ContextTag(1), groupId));
diff --git a/src/app/clusters/target-navigator-server/target-navigator-server.cpp b/src/app/clusters/target-navigator-server/target-navigator-server.cpp
index 9b5f420..1250cc5 100644
--- a/src/app/clusters/target-navigator-server/target-navigator-server.cpp
+++ b/src/app/clusters/target-navigator-server/target-navigator-server.cpp
@@ -36,12 +36,11 @@
void sendResponse(app::CommandHandler * command, TargetNavigatorResponse response)
{
- CHIP_ERROR err = CHIP_NO_ERROR;
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, TargetNavigator::Id,
- TargetNavigator::Commands::NavigateTargetResponse::Id,
- (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = command->PrepareCommand(cmdParams));
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), TargetNavigator::Id,
+ TargetNavigator::Commands::NavigateTargetResponse::Id };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = command->PrepareCommand(path));
VerifyOrExit((writer = command->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
SuccessOrExit(err = writer->Put(TLV::ContextTag(0), response.status));
SuccessOrExit(err = writer->PutString(TLV::ContextTag(1), reinterpret_cast<const char *>(response.data)));
diff --git a/src/app/clusters/tv-channel-server/tv-channel-server.cpp b/src/app/clusters/tv-channel-server/tv-channel-server.cpp
index 9c81fc2..5068015 100644
--- a/src/app/clusters/tv-channel-server/tv-channel-server.cpp
+++ b/src/app/clusters/tv-channel-server/tv-channel-server.cpp
@@ -54,11 +54,10 @@
void sendResponse(app::CommandHandler * command, ::TvChannelInfo channelInfo)
{
- CHIP_ERROR err = CHIP_NO_ERROR;
- app::CommandPathParams cmdParams = { emberAfCurrentEndpoint(), /* group id */ 0, TvChannel::Id,
- Commands::ChangeChannelResponse::Id, (app::CommandPathFlags::kEndpointIdValid) };
- TLV::TLVWriter * writer = nullptr;
- SuccessOrExit(err = command->PrepareCommand(cmdParams));
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ app::ConcreteCommandPath path = { emberAfCurrentEndpoint(), TvChannel::Id, Commands::ChangeChannelResponse::Id };
+ TLV::TLVWriter * writer = nullptr;
+ SuccessOrExit(err = command->PrepareCommand(path));
VerifyOrExit((writer = command->GetCommandDataIBTLVWriter()) != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
// TODO: Enable this once struct as param is supported
// SuccessOrExit(err = writer->Put(TLV::ContextTag(0), channelInfo));
diff --git a/src/app/reporting/Engine.cpp b/src/app/reporting/Engine.cpp
index 36d8cf2..2aa1dfc 100644
--- a/src/app/reporting/Engine.cpp
+++ b/src/app/reporting/Engine.cpp
@@ -64,24 +64,12 @@
Engine::RetrieveClusterData(FabricIndex aAccessingFabricIndex, AttributeReportIBs::Builder & aAttributeReportIBs,
const ConcreteReadAttributePath & aPath, AttributeValueEncoder::AttributeEncodeState * aEncoderState)
{
- CHIP_ERROR err = CHIP_NO_ERROR;
-
ChipLogDetail(DataManagement, "<RE:Run> Cluster %" PRIx32 ", Attribute %" PRIx32 " is dirty", aPath.mClusterId,
aPath.mAttributeId);
-
MatterPreAttributeReadCallback(aPath);
- err = ReadSingleClusterData(aAccessingFabricIndex, aPath, aAttributeReportIBs, aEncoderState);
+ ReturnErrorOnFailure(ReadSingleClusterData(aAccessingFabricIndex, aPath, aAttributeReportIBs, aEncoderState));
MatterPostAttributeReadCallback(aPath);
- SuccessOrExit(err);
-
-exit:
- if (err != CHIP_NO_ERROR)
- {
- ChipLogError(DataManagement, "Error retrieving data from clusterId: " ChipLogFormatMEI ", err = %" CHIP_ERROR_FORMAT,
- ChipLogValueMEI(aPath.mClusterId), err.Format());
- }
-
- return err;
+ return CHIP_NO_ERROR;
}
CHIP_ERROR Engine::BuildSingleReportDataAttributeReportIBs(ReportDataMessage::Builder & aReportDataBuilder,
@@ -95,8 +83,9 @@
const uint32_t kReservedSizeEndOfReportIBs = 1;
aReportDataBuilder.Checkpoint(backup);
- auto attributeReportIBs = aReportDataBuilder.CreateAttributeReportIBs();
- size_t emptyReportDataLength = 0;
+
+ AttributeReportIBs::Builder & attributeReportIBs = aReportDataBuilder.CreateAttributeReportIBs();
+ size_t emptyReportDataLength = 0;
SuccessOrExit(err = aReportDataBuilder.GetError());
@@ -144,6 +133,10 @@
err = RetrieveClusterData(apReadHandler->GetAccessingFabricIndex(), attributeReportIBs, pathForRetrieval, &encodeState);
if (err != CHIP_NO_ERROR)
{
+ ChipLogError(DataManagement,
+ "Error retrieving data from clusterId: " ChipLogFormatMEI ", err = %" CHIP_ERROR_FORMAT,
+ ChipLogValueMEI(pathForRetrieval.mClusterId), err.Format());
+
if (encodeState.AllowPartialData())
{
// Encoding is aborted but partial data is allowed, then we don't rollback and save the state for next chunk.
@@ -245,20 +238,16 @@
ClusterInfo * clusterInfoList = apReadHandler->GetEventClusterInfolist();
EventNumber * eventNumberList = apReadHandler->GetVendedEventNumberList();
EventManagement & eventManager = EventManagement::GetInstance();
- EventReportIBs::Builder EventReportIBs;
- bool hasMoreChunks = false;
+ bool hasMoreChunks = false;
aReportDataBuilder.Checkpoint(backup);
VerifyOrExit(clusterInfoList != nullptr, );
- VerifyOrExit(apReadHandler != nullptr, err = CHIP_ERROR_INVALID_ARGUMENT);
+
// If the eventManager is not valid or has not been initialized,
// skip the rest of processing
VerifyOrExit(eventManager.IsValid(), ChipLogError(DataManagement, "EventManagement has not yet initialized"));
- EventReportIBs = aReportDataBuilder.CreateEventReports();
- SuccessOrExit(err = EventReportIBs.GetError());
-
memcpy(initialEvents, eventNumberList, sizeof(initialEvents));
for (size_t index = 0; index < kNumPriorityLevel; index++)
@@ -278,57 +267,60 @@
ExitNow(); // Read clean, move along
}
- while (apReadHandler->GetCurrentPriority() != PriorityLevel::Invalid)
{
- uint8_t priorityIndex = static_cast<uint8_t>(apReadHandler->GetCurrentPriority());
- err = eventManager.FetchEventsSince(*(EventReportIBs.GetWriter()), clusterInfoList, apReadHandler->GetCurrentPriority(),
- eventNumberList[priorityIndex], eventCount);
+ EventReportIBs::Builder & eventReportIBs = aReportDataBuilder.CreateEventReports();
+ SuccessOrExit(err = aReportDataBuilder.GetError());
+ while (apReadHandler->GetCurrentPriority() != PriorityLevel::Invalid)
+ {
+ uint8_t priorityIndex = static_cast<uint8_t>(apReadHandler->GetCurrentPriority());
+ err = eventManager.FetchEventsSince(*(eventReportIBs.GetWriter()), clusterInfoList, apReadHandler->GetCurrentPriority(),
+ eventNumberList[priorityIndex], eventCount);
- if ((err == CHIP_END_OF_TLV) || (err == CHIP_ERROR_TLV_UNDERRUN) || (err == CHIP_NO_ERROR))
- {
- // We have successfully reached the end of the log for
- // the current priority. Advance to the next
- // priority level.
- err = CHIP_NO_ERROR;
- apReadHandler->MoveToNextScheduledDirtyPriority();
- hasMoreChunks = false;
- }
- else if ((err == CHIP_ERROR_BUFFER_TOO_SMALL) || (err == CHIP_ERROR_NO_MEMORY))
- {
- // when first cluster event is too big to fit in the packet, ignore that cluster event.
- if (eventCount == 0)
+ if ((err == CHIP_END_OF_TLV) || (err == CHIP_ERROR_TLV_UNDERRUN) || (err == CHIP_NO_ERROR))
{
- eventNumberList[priorityIndex]++;
- ChipLogDetail(DataManagement, "<RE:Run> first cluster event is too big so that it fails to fit in the packet!");
+ // We have successfully reached the end of the log for
+ // the current priority. Advance to the next
+ // priority level.
err = CHIP_NO_ERROR;
+ apReadHandler->MoveToNextScheduledDirtyPriority();
+ hasMoreChunks = false;
+ }
+ else if ((err == CHIP_ERROR_BUFFER_TOO_SMALL) || (err == CHIP_ERROR_NO_MEMORY))
+ {
+ // when first cluster event is too big to fit in the packet, ignore that cluster event.
+ if (eventCount == 0)
+ {
+ eventNumberList[priorityIndex]++;
+ ChipLogDetail(DataManagement, "<RE:Run> first cluster event is too big so that it fails to fit in the packet!");
+ err = CHIP_NO_ERROR;
+ }
+ else
+ {
+ // `FetchEventsSince` has filled the available space
+ // within the allowed buffer before it fit all the
+ // available events. This is an expected condition,
+ // so we do not propagate the error to higher levels;
+ // instead, we terminate the event processing for now
+ // (we will get another chance immediately afterwards,
+ // with a ew buffer) and do not advance the processing
+ // to the next priority level.
+ err = CHIP_NO_ERROR;
+ break;
+ }
+ hasMoreChunks = true;
}
else
{
- // `FetchEventsSince` has filled the available space
- // within the allowed buffer before it fit all the
- // available events. This is an expected condition,
- // so we do not propagate the error to higher levels;
- // instead, we terminate the event processing for now
- // (we will get another chance immediately afterwards,
- // with a ew buffer) and do not advance the processing
- // to the next priority level.
- err = CHIP_NO_ERROR;
- break;
+ // All other errors are propagated to higher level.
+ // Exiting here and returning an error will lead to
+ // abandoning subscription.
+ ExitNow();
}
- hasMoreChunks = true;
}
- else
- {
- // All other errors are propagated to higher level.
- // Exiting here and returning an error will lead to
- // abandoning subscription.
- ExitNow();
- }
+
+ eventReportIBs.EndOfEventReports();
+ SuccessOrExit(err = eventReportIBs.GetError());
}
-
- EventReportIBs.EndOfEventReports();
- SuccessOrExit(err = EventReportIBs.GetError());
-
ChipLogDetail(DataManagement, "Fetched %zu events", eventCount);
exit:
@@ -367,6 +359,7 @@
// Reserved size for the end of report message, which is an end-of-container (i.e 1 byte for the control tag).
const uint32_t kReservedSizeForEndOfReportMessage = 1;
+ VerifyOrExit(apReadHandler != nullptr, err = CHIP_ERROR_INVALID_ARGUMENT);
VerifyOrExit(!bufHandle.IsNull(), err = CHIP_ERROR_NO_MEMORY);
if (bufHandle->AvailableDataLength() > kMaxSecureSduLengthBytes)
diff --git a/src/app/tests/TestCommandInteraction.cpp b/src/app/tests/TestCommandInteraction.cpp
index 34a2705..23a54ec 100644
--- a/src/app/tests/TestCommandInteraction.cpp
+++ b/src/app/tests/TestCommandInteraction.cpp
@@ -93,10 +93,7 @@
}
else
{
- CommandPathParams responseParams = { aCommandPath.mEndpointId, /* groupId */ 0, aCommandPath.mClusterId,
- aCommandPath.mCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) };
-
- apCommandObj->PrepareCommand(responseParams);
+ apCommandObj->PrepareCommand(aCommandPath);
chip::TLV::TLVWriter * writer = apCommandObj->GetCommandDataIBTLVWriter();
writer->PutBoolean(chip::TLV::ContextTag(1), true);
apCommandObj->FinishCommand();
@@ -232,13 +229,13 @@
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
invokeRequestMessageBuilder.SuppressResponse(true).TimedRequest(aIsTimedRequest);
- InvokeRequests::Builder invokeRequests = invokeRequestMessageBuilder.CreateInvokeRequests();
+ InvokeRequests::Builder & invokeRequests = invokeRequestMessageBuilder.CreateInvokeRequests();
NL_TEST_ASSERT(apSuite, invokeRequestMessageBuilder.GetError() == CHIP_NO_ERROR);
- CommandDataIB::Builder commandDataIBBuilder = invokeRequests.CreateCommandData();
+ CommandDataIB::Builder & commandDataIBBuilder = invokeRequests.CreateCommandData();
NL_TEST_ASSERT(apSuite, invokeRequests.GetError() == CHIP_NO_ERROR);
- CommandPathIB::Builder commandPathBuilder = commandDataIBBuilder.CreatePath();
+ CommandPathIB::Builder & commandPathBuilder = commandDataIBBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, commandDataIBBuilder.GetError() == CHIP_NO_ERROR);
commandPathBuilder.EndpointId(aEndpointId).ClusterId(aClusterId).CommandId(aCommandId).EndOfCommandPathIB();
@@ -286,16 +283,16 @@
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
invokeResponseMessageBuilder.SuppressResponse(true);
- InvokeResponseIBs::Builder invokeResponses = invokeResponseMessageBuilder.CreateInvokeResponses();
+ InvokeResponseIBs::Builder & invokeResponses = invokeResponseMessageBuilder.CreateInvokeResponses();
NL_TEST_ASSERT(apSuite, invokeResponseMessageBuilder.GetError() == CHIP_NO_ERROR);
- InvokeResponseIB::Builder invokeResponseIBBuilder = invokeResponses.CreateInvokeResponse();
+ InvokeResponseIB::Builder & invokeResponseIBBuilder = invokeResponses.CreateInvokeResponse();
NL_TEST_ASSERT(apSuite, invokeResponses.GetError() == CHIP_NO_ERROR);
- CommandDataIB::Builder commandDataIBBuilder = invokeResponseIBBuilder.CreateCommand();
+ CommandDataIB::Builder & commandDataIBBuilder = invokeResponseIBBuilder.CreateCommand();
NL_TEST_ASSERT(apSuite, commandDataIBBuilder.GetError() == CHIP_NO_ERROR);
- CommandPathIB::Builder commandPathBuilder = commandDataIBBuilder.CreatePath();
+ CommandPathIB::Builder & commandPathBuilder = commandDataIBBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, commandDataIBBuilder.GetError() == CHIP_NO_ERROR);
commandPathBuilder.EndpointId(aEndpointId).ClusterId(aClusterId).CommandId(aCommandId).EndOfCommandPathIB();
@@ -353,8 +350,7 @@
void TestCommandInteraction::AddInvokeResponseData(nlTestSuite * apSuite, void * apContext, CommandHandler * apCommandHandler,
bool aNeedStatusCode, CommandId aCommandId)
{
- CHIP_ERROR err = CHIP_NO_ERROR;
- auto commandPathParams = MakeTestCommandPath(aCommandId);
+ CHIP_ERROR err = CHIP_NO_ERROR;
if (aNeedStatusCode)
{
@@ -366,7 +362,8 @@
}
else
{
- err = apCommandHandler->PrepareCommand(commandPathParams);
+ ConcreteCommandPath path = { kTestEndpointId, kTestClusterId, aCommandId };
+ err = apCommandHandler->PrepareCommand(path);
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
chip::TLV::TLVWriter * writer = apCommandHandler->GetCommandDataIBTLVWriter();
@@ -393,13 +390,13 @@
void TestCommandInteraction::TestCommandHandlerWithWrongState(nlTestSuite * apSuite, void * apContext)
{
- TestContext & ctx = *static_cast<TestContext *>(apContext);
- CHIP_ERROR err = CHIP_NO_ERROR;
- auto commandPathParams = MakeTestCommandPath();
+ TestContext & ctx = *static_cast<TestContext *>(apContext);
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ ConcreteCommandPath path = { kTestEndpointId, kTestClusterId, kTestCommandId };
app::CommandHandler commandHandler(&mockCommandHandlerDelegate);
- err = commandHandler.PrepareCommand(commandPathParams);
+ err = commandHandler.PrepareCommand(path);
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
TestExchangeDelegate delegate;
@@ -429,16 +426,17 @@
void TestCommandInteraction::TestCommandHandlerWithSendEmptyCommand(nlTestSuite * apSuite, void * apContext)
{
- TestContext & ctx = *static_cast<TestContext *>(apContext);
- CHIP_ERROR err = CHIP_NO_ERROR;
- auto commandPathParams = MakeTestCommandPath();
+ TestContext & ctx = *static_cast<TestContext *>(apContext);
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ ConcreteCommandPath path = { kTestEndpointId, kTestClusterId, kTestCommandId };
app::CommandHandler commandHandler(&mockCommandHandlerDelegate);
System::PacketBufferHandle commandDatabuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize);
TestExchangeDelegate delegate;
commandHandler.mpExchangeCtx = ctx.NewExchangeToAlice(&delegate);
- err = commandHandler.PrepareCommand(commandPathParams);
+
+ err = commandHandler.PrepareCommand(path);
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
err = commandHandler.FinishCommand();
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
diff --git a/src/app/tests/TestMessageDef.cpp b/src/app/tests/TestMessageDef.cpp
index b984621..cef6860 100644
--- a/src/app/tests/TestMessageDef.cpp
+++ b/src/app/tests/TestMessageDef.cpp
@@ -128,7 +128,7 @@
void BuildEventFilters(nlTestSuite * apSuite, EventFilterIBs::Builder & aEventFiltersBuilder)
{
- EventFilterIB::Builder eventFilterBuilder = aEventFiltersBuilder.CreateEventFilter();
+ EventFilterIB::Builder & eventFilterBuilder = aEventFiltersBuilder.CreateEventFilter();
NL_TEST_ASSERT(apSuite, aEventFiltersBuilder.GetError() == CHIP_NO_ERROR);
BuildEventFilterIB(apSuite, eventFilterBuilder);
aEventFiltersBuilder.EndOfEventFilters();
@@ -201,7 +201,7 @@
void BuildAttributePathList(nlTestSuite * apSuite, AttributePathIBs::Builder & aAttributePathListBuilder)
{
- AttributePathIB::Builder attributePathBuilder = aAttributePathListBuilder.CreatePath();
+ AttributePathIB::Builder & attributePathBuilder = aAttributePathListBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, attributePathBuilder.GetError() == CHIP_NO_ERROR);
BuildAttributePathIB(apSuite, attributePathBuilder);
@@ -263,7 +263,7 @@
void BuildEventPaths(nlTestSuite * apSuite, EventPathIBs::Builder & aEventPathsBuilder)
{
- EventPathIB::Builder eventPathBuilder = aEventPathsBuilder.CreatePath();
+ EventPathIB::Builder & eventPathBuilder = aEventPathsBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, eventPathBuilder.GetError() == CHIP_NO_ERROR);
BuildEventPath(apSuite, eventPathBuilder);
@@ -319,7 +319,7 @@
{
CHIP_ERROR err = CHIP_NO_ERROR;
- EventPathIB::Builder eventPathBuilder = aEventDataIBBuilder.CreatePath();
+ EventPathIB::Builder & eventPathBuilder = aEventDataIBBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, eventPathBuilder.GetError() == CHIP_NO_ERROR);
BuildEventPath(apSuite, eventPathBuilder);
@@ -400,11 +400,11 @@
void BuildEventStatusIB(nlTestSuite * apSuite, EventStatusIB::Builder & aEventStatusIBBuilder)
{
- EventPathIB::Builder eventPathBuilder = aEventStatusIBBuilder.CreatePath();
+ EventPathIB::Builder & eventPathBuilder = aEventStatusIBBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, aEventStatusIBBuilder.GetError() == CHIP_NO_ERROR);
BuildEventPath(apSuite, eventPathBuilder);
- StatusIB::Builder statusIBBuilder = aEventStatusIBBuilder.CreateErrorStatus();
+ StatusIB::Builder & statusIBBuilder = aEventStatusIBBuilder.CreateErrorStatus();
NL_TEST_ASSERT(apSuite, statusIBBuilder.GetError() == CHIP_NO_ERROR);
BuildStatusIB(apSuite, statusIBBuilder);
@@ -430,7 +430,7 @@
void BuildEventReportIB(nlTestSuite * apSuite, EventReportIB::Builder & aEventReportIBBuilder)
{
- EventDataIB::Builder eventDataIBBuilder = aEventReportIBBuilder.CreateEventData();
+ EventDataIB::Builder & eventDataIBBuilder = aEventReportIBBuilder.CreateEventData();
NL_TEST_ASSERT(apSuite, aEventReportIBBuilder.GetError() == CHIP_NO_ERROR);
BuildEventDataIB(apSuite, eventDataIBBuilder);
@@ -455,7 +455,7 @@
void BuildEventReports(nlTestSuite * apSuite, EventReportIBs::Builder & aEventReportsBuilder)
{
- EventReportIB::Builder eventReportIBBuilder = aEventReportsBuilder.CreateEventReport();
+ EventReportIB::Builder & eventReportIBBuilder = aEventReportsBuilder.CreateEventReport();
NL_TEST_ASSERT(apSuite, aEventReportsBuilder.GetError() == CHIP_NO_ERROR);
BuildEventReportIB(apSuite, eventReportIBBuilder);
@@ -478,11 +478,11 @@
void BuildAttributeStatusIB(nlTestSuite * apSuite, AttributeStatusIB::Builder & aAttributeStatusIBBuilder)
{
- AttributePathIB::Builder attributePathBuilder = aAttributeStatusIBBuilder.CreatePath();
+ AttributePathIB::Builder & attributePathBuilder = aAttributeStatusIBBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, attributePathBuilder.GetError() == CHIP_NO_ERROR);
BuildAttributePathIB(apSuite, attributePathBuilder);
- StatusIB::Builder statusIBBuilder = aAttributeStatusIBBuilder.CreateErrorStatus();
+ StatusIB::Builder & statusIBBuilder = aAttributeStatusIBBuilder.CreateErrorStatus();
NL_TEST_ASSERT(apSuite, statusIBBuilder.GetError() == CHIP_NO_ERROR);
BuildStatusIB(apSuite, statusIBBuilder);
@@ -509,7 +509,7 @@
void BuildAttributeStatuses(nlTestSuite * apSuite, AttributeStatusIBs::Builder & aAttributeStatusesBuilder)
{
- AttributeStatusIB::Builder aAttributeStatusIBBuilder = aAttributeStatusesBuilder.CreateAttributeStatus();
+ AttributeStatusIB::Builder & aAttributeStatusIBBuilder = aAttributeStatusesBuilder.CreateAttributeStatus();
NL_TEST_ASSERT(apSuite, aAttributeStatusesBuilder.GetError() == CHIP_NO_ERROR);
BuildAttributeStatusIB(apSuite, aAttributeStatusIBBuilder);
@@ -536,7 +536,7 @@
CHIP_ERROR err = CHIP_NO_ERROR;
aAttributeDataIBBuilder.DataVersion(2);
- AttributePathIB::Builder attributePathBuilder = aAttributeDataIBBuilder.CreatePath();
+ AttributePathIB::Builder & attributePathBuilder = aAttributeDataIBBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, aAttributeDataIBBuilder.GetError() == CHIP_NO_ERROR);
BuildAttributePathIB(apSuite, attributePathBuilder);
@@ -597,9 +597,9 @@
void BuildAttributeDataIBs(nlTestSuite * apSuite, AttributeDataIBs::Builder & aAttributeDataIBsBuilder)
{
- AttributeDataIB::Builder AttributeDataIBBuilder = aAttributeDataIBsBuilder.CreateAttributeDataIBBuilder();
+ AttributeDataIB::Builder & attributeDataIBBuilder = aAttributeDataIBsBuilder.CreateAttributeDataIBBuilder();
NL_TEST_ASSERT(apSuite, aAttributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
- BuildAttributeDataIB(apSuite, AttributeDataIBBuilder);
+ BuildAttributeDataIB(apSuite, attributeDataIBBuilder);
aAttributeDataIBsBuilder.EndOfAttributeDataIBs();
NL_TEST_ASSERT(apSuite, aAttributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
@@ -620,7 +620,7 @@
void BuildAttributeReportIB(nlTestSuite * apSuite, AttributeReportIB::Builder & aAttributeReportIBBuilder)
{
- AttributeDataIB::Builder attributeDataIBBuilder = aAttributeReportIBBuilder.CreateAttributeData();
+ AttributeDataIB::Builder & attributeDataIBBuilder = aAttributeReportIBBuilder.CreateAttributeData();
NL_TEST_ASSERT(apSuite, aAttributeReportIBBuilder.GetError() == CHIP_NO_ERROR);
BuildAttributeDataIB(apSuite, attributeDataIBBuilder);
@@ -644,7 +644,7 @@
void BuildAttributeReportIBs(nlTestSuite * apSuite, AttributeReportIBs::Builder & aAttributeReportIBsBuilder)
{
- AttributeReportIB::Builder attributeReportIBBuilder = aAttributeReportIBsBuilder.CreateAttributeReport();
+ AttributeReportIB::Builder & attributeReportIBBuilder = aAttributeReportIBsBuilder.CreateAttributeReport();
NL_TEST_ASSERT(apSuite, aAttributeReportIBsBuilder.GetError() == CHIP_NO_ERROR);
BuildAttributeReportIB(apSuite, attributeReportIBBuilder);
@@ -693,7 +693,7 @@
{
CHIP_ERROR err = CHIP_NO_ERROR;
- CommandPathIB::Builder commandPathBuilder = aCommandDataIBBuilder.CreatePath();
+ CommandPathIB::Builder & commandPathBuilder = aCommandDataIBBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, aCommandDataIBBuilder.GetError() == CHIP_NO_ERROR);
BuildCommandPath(apSuite, commandPathBuilder);
@@ -748,11 +748,11 @@
void BuildCommandStatusIB(nlTestSuite * apSuite, CommandStatusIB::Builder & aCommandStatusIBBuilder)
{
- CommandPathIB::Builder commandPathBuilder = aCommandStatusIBBuilder.CreatePath();
+ CommandPathIB::Builder & commandPathBuilder = aCommandStatusIBBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, aCommandStatusIBBuilder.GetError() == CHIP_NO_ERROR);
BuildCommandPath(apSuite, commandPathBuilder);
- StatusIB::Builder statusIBBuilder = aCommandStatusIBBuilder.CreateErrorStatus();
+ StatusIB::Builder & statusIBBuilder = aCommandStatusIBBuilder.CreateErrorStatus();
NL_TEST_ASSERT(apSuite, statusIBBuilder.GetError() == CHIP_NO_ERROR);
BuildStatusIB(apSuite, statusIBBuilder);
@@ -778,10 +778,10 @@
void BuildWrongInvokeResponseIB(nlTestSuite * apSuite, InvokeResponseIB::Builder & aInvokeResponseIBBuilder)
{
- CommandDataIB::Builder commandDataBuilder = aInvokeResponseIBBuilder.CreateCommand();
+ CommandDataIB::Builder & commandDataBuilder = aInvokeResponseIBBuilder.CreateCommand();
NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
BuildCommandDataIB(apSuite, commandDataBuilder);
- CommandStatusIB::Builder commandStatusBuilder = aInvokeResponseIBBuilder.CreateStatus();
+ CommandStatusIB::Builder & commandStatusBuilder = aInvokeResponseIBBuilder.CreateStatus();
NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
BuildCommandStatusIB(apSuite, commandStatusBuilder);
aInvokeResponseIBBuilder.EndOfInvokeResponseIB();
@@ -790,7 +790,7 @@
void BuildInvokeResponseIBWithCommandDataIB(nlTestSuite * apSuite, InvokeResponseIB::Builder & aInvokeResponseIBBuilder)
{
- CommandDataIB::Builder commandDataBuilder = aInvokeResponseIBBuilder.CreateCommand();
+ CommandDataIB::Builder & commandDataBuilder = aInvokeResponseIBBuilder.CreateCommand();
NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
BuildCommandDataIB(apSuite, commandDataBuilder);
aInvokeResponseIBBuilder.EndOfInvokeResponseIB();
@@ -799,7 +799,7 @@
void BuildInvokeResponseIBWithCommandStatusIB(nlTestSuite * apSuite, InvokeResponseIB::Builder & aInvokeResponseIBBuilder)
{
- CommandStatusIB::Builder commandStatusBuilder = aInvokeResponseIBBuilder.CreateStatus();
+ CommandStatusIB::Builder & commandStatusBuilder = aInvokeResponseIBBuilder.CreateStatus();
NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
BuildCommandStatusIB(apSuite, commandStatusBuilder);
aInvokeResponseIBBuilder.EndOfInvokeResponseIB();
@@ -844,7 +844,7 @@
void BuildInvokeRequests(nlTestSuite * apSuite, InvokeRequests::Builder & aInvokeRequestsBuilder)
{
- CommandDataIB::Builder aCommandDataIBBuilder = aInvokeRequestsBuilder.CreateCommandData();
+ CommandDataIB::Builder & aCommandDataIBBuilder = aInvokeRequestsBuilder.CreateCommandData();
NL_TEST_ASSERT(apSuite, aInvokeRequestsBuilder.GetError() == CHIP_NO_ERROR);
BuildCommandDataIB(apSuite, aCommandDataIBBuilder);
@@ -867,7 +867,7 @@
void BuildInvokeResponses(nlTestSuite * apSuite, InvokeResponseIBs::Builder & aInvokeResponsesBuilder)
{
- InvokeResponseIB::Builder invokeResponseIBBuilder = aInvokeResponsesBuilder.CreateInvokeResponse();
+ InvokeResponseIB::Builder & invokeResponseIBBuilder = aInvokeResponsesBuilder.CreateInvokeResponse();
NL_TEST_ASSERT(apSuite, aInvokeResponsesBuilder.GetError() == CHIP_NO_ERROR);
BuildInvokeResponseIBWithCommandDataIB(apSuite, invokeResponseIBBuilder);
@@ -896,7 +896,7 @@
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
invokeRequestMessageBuilder.SuppressResponse(true);
invokeRequestMessageBuilder.TimedRequest(true);
- InvokeRequests::Builder invokeRequestsBuilder = invokeRequestMessageBuilder.CreateInvokeRequests();
+ InvokeRequests::Builder & invokeRequestsBuilder = invokeRequestMessageBuilder.CreateInvokeRequests();
NL_TEST_ASSERT(apSuite, invokeRequestsBuilder.GetError() == CHIP_NO_ERROR);
BuildInvokeRequests(apSuite, invokeRequestsBuilder);
@@ -931,7 +931,7 @@
err = invokeResponseMessageBuilder.Init(&aWriter);
invokeResponseMessageBuilder.SuppressResponse(true);
- InvokeResponseIBs::Builder invokeResponsesBuilder = invokeResponseMessageBuilder.CreateInvokeResponses();
+ InvokeResponseIBs::Builder & invokeResponsesBuilder = invokeResponseMessageBuilder.CreateInvokeResponses();
NL_TEST_ASSERT(apSuite, invokeResponseMessageBuilder.GetError() == CHIP_NO_ERROR);
BuildInvokeResponses(apSuite, invokeResponsesBuilder);
@@ -967,13 +967,13 @@
reportDataMessageBuilder.SubscriptionId(2);
NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
- AttributeReportIBs::Builder AttributeReportIBs = reportDataMessageBuilder.CreateAttributeReportIBs();
+ AttributeReportIBs::Builder & attributeReportIBs = reportDataMessageBuilder.CreateAttributeReportIBs();
NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
- BuildAttributeReportIBs(apSuite, AttributeReportIBs);
+ BuildAttributeReportIBs(apSuite, attributeReportIBs);
- EventReportIBs::Builder EventReportIBs = reportDataMessageBuilder.CreateEventReports();
+ EventReportIBs::Builder & eventReportIBs = reportDataMessageBuilder.CreateEventReports();
NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
- BuildEventReports(apSuite, EventReportIBs);
+ BuildEventReports(apSuite, eventReportIBs);
reportDataMessageBuilder.MoreChunkedMessages(true).SuppressResponse(true);
NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
@@ -1022,15 +1022,15 @@
err = readRequestBuilder.Init(&aWriter);
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
- AttributePathIBs::Builder AttributePathIBs = readRequestBuilder.CreateAttributeRequests();
+ AttributePathIBs::Builder & attributePathIBs = readRequestBuilder.CreateAttributeRequests();
NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
- BuildAttributePathList(apSuite, AttributePathIBs);
+ BuildAttributePathList(apSuite, attributePathIBs);
- EventPathIBs::Builder eventPathList = readRequestBuilder.CreateEventRequests();
+ EventPathIBs::Builder & eventPathList = readRequestBuilder.CreateEventRequests();
NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
BuildEventPaths(apSuite, eventPathList);
- EventFilterIBs::Builder eventFilters = readRequestBuilder.CreateEventFilters();
+ EventFilterIBs::Builder & eventFilters = readRequestBuilder.CreateEventFilters();
NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
BuildEventFilters(apSuite, eventFilters);
@@ -1084,9 +1084,9 @@
writeRequestBuilder.TimedRequest(true);
NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
- AttributeDataIBs::Builder AttributeDataIBs = writeRequestBuilder.CreateWriteRequests();
+ AttributeDataIBs::Builder & attributeDataIBs = writeRequestBuilder.CreateWriteRequests();
NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
- BuildAttributeDataIBs(apSuite, AttributeDataIBs);
+ BuildAttributeDataIBs(apSuite, attributeDataIBs);
writeRequestBuilder.MoreChunkedMessages(true);
NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
@@ -1139,7 +1139,7 @@
err = writeResponseBuilder.Init(&aWriter);
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
- AttributeStatusIBs::Builder attributeStatuses = writeResponseBuilder.CreateWriteResponses();
+ AttributeStatusIBs::Builder & attributeStatuses = writeResponseBuilder.CreateWriteResponses();
NL_TEST_ASSERT(apSuite, writeResponseBuilder.GetError() == CHIP_NO_ERROR);
BuildAttributeStatuses(apSuite, attributeStatuses);
@@ -1180,15 +1180,15 @@
subscribeRequestBuilder.MaxIntervalCeilingSeconds(3);
NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
- AttributePathIBs::Builder attributePathIBs = subscribeRequestBuilder.CreateAttributeRequests();
+ AttributePathIBs::Builder & attributePathIBs = subscribeRequestBuilder.CreateAttributeRequests();
NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
BuildAttributePathList(apSuite, attributePathIBs);
- EventPathIBs::Builder eventPathList = subscribeRequestBuilder.CreateEventRequests();
+ EventPathIBs::Builder & eventPathList = subscribeRequestBuilder.CreateEventRequests();
NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
BuildEventPaths(apSuite, eventPathList);
- EventFilterIBs::Builder eventFilters = subscribeRequestBuilder.CreateEventFilters();
+ EventFilterIBs::Builder & eventFilters = subscribeRequestBuilder.CreateEventFilters();
NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
BuildEventFilters(apSuite, eventFilters);
@@ -2104,24 +2104,24 @@
AttributeDataIBs::Parser AttributeDataIBsParser;
chip::TLV::TLVWriter checkpoint;
writer.Init(chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSize));
- AttributeDataIBs::Builder AttributeDataIBsBuilder;
- AttributeDataIBsBuilder.Init(&writer);
+ AttributeDataIBs::Builder attributeDataIBsBuilder;
+ attributeDataIBsBuilder.Init(&writer);
// encode one attribute element
- AttributeDataIB::Builder AttributeDataIBBuilder1 = AttributeDataIBsBuilder.CreateAttributeDataIBBuilder();
- NL_TEST_ASSERT(apSuite, AttributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
- BuildAttributeDataIB(apSuite, AttributeDataIBBuilder1);
+ AttributeDataIB::Builder & attributeDataIBBuilder1 = attributeDataIBsBuilder.CreateAttributeDataIBBuilder();
+ NL_TEST_ASSERT(apSuite, attributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
+ BuildAttributeDataIB(apSuite, attributeDataIBBuilder1);
// checkpoint
- AttributeDataIBsBuilder.Checkpoint(checkpoint);
+ attributeDataIBsBuilder.Checkpoint(checkpoint);
// encode another attribute element
- AttributeDataIB::Builder AttributeDataIBBuilder2 = AttributeDataIBsBuilder.CreateAttributeDataIBBuilder();
- NL_TEST_ASSERT(apSuite, AttributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
- BuildAttributeDataIB(apSuite, AttributeDataIBBuilder2);
+ AttributeDataIB::Builder & attributeDataIBBuilder2 = attributeDataIBsBuilder.CreateAttributeDataIBBuilder();
+ NL_TEST_ASSERT(apSuite, attributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
+ BuildAttributeDataIB(apSuite, attributeDataIBBuilder2);
// rollback to previous checkpoint
- AttributeDataIBsBuilder.Rollback(checkpoint);
+ attributeDataIBsBuilder.Rollback(checkpoint);
- AttributeDataIBsBuilder.EndOfAttributeDataIBs();
- NL_TEST_ASSERT(apSuite, AttributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
+ attributeDataIBsBuilder.EndOfAttributeDataIBs();
+ NL_TEST_ASSERT(apSuite, attributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
chip::System::PacketBufferHandle buf;
err = writer.Finalize(&buf);
diff --git a/src/app/tests/TestReadInteraction.cpp b/src/app/tests/TestReadInteraction.cpp
index e8a3f58..d9ec63d 100644
--- a/src/app/tests/TestReadInteraction.cpp
+++ b/src/app/tests/TestReadInteraction.cpp
@@ -233,18 +233,21 @@
if (!(aPath.mClusterId == kTestClusterId && aPath.mEndpointId == kTestEndpointId))
{
- AttributeReportIB::Builder attributeReport = aAttributeReports.CreateAttributeReport();
- AttributeDataIB::Builder attributeData;
- AttributePathIB::Builder attributePath;
+ AttributeReportIB::Builder & attributeReport = aAttributeReports.CreateAttributeReport();
+ ReturnErrorOnFailure(aAttributeReports.GetError());
ChipLogDetail(DataManagement, "TEST Cluster %" PRIx32 ", Field %" PRIx32 " is dirty", aPath.mClusterId, aPath.mAttributeId);
- AttributeStatusIB::Builder attributeStatus;
- attributeStatus = attributeReport.CreateAttributeStatus();
- attributePath = attributeStatus.CreatePath();
+ AttributeStatusIB::Builder & attributeStatus = attributeReport.CreateAttributeStatus();
+ ReturnErrorOnFailure(attributeReport.GetError());
+ AttributePathIB::Builder & attributePath = attributeStatus.CreatePath();
+ ReturnErrorOnFailure(attributeStatus.GetError());
+
attributePath.Endpoint(aPath.mEndpointId).Cluster(aPath.mClusterId).Attribute(aPath.mAttributeId).EndOfAttributePathIB();
ReturnErrorOnFailure(attributePath.GetError());
- StatusIB::Builder errorStatus = attributeStatus.CreateErrorStatus();
+ StatusIB::Builder & errorStatus = attributeStatus.CreateErrorStatus();
+ ReturnErrorOnFailure(attributeStatus.GetError());
errorStatus.EncodeStatusIB(StatusIB(Protocols::InteractionModel::Status::UnsupportedAttribute));
+ ReturnErrorOnFailure(errorStatus.GetError());
attributeStatus.EndOfAttributeStatusIB();
ReturnErrorOnFailure(attributeStatus.GetError());
return attributeReport.EndOfAttributeReportIB().GetError();
@@ -294,20 +297,20 @@
err = reportDataMessageBuilder.Init(&writer);
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
- AttributeReportIBs::Builder attributeReportIBsBuilder = reportDataMessageBuilder.CreateAttributeReportIBs();
+ AttributeReportIBs::Builder & attributeReportIBsBuilder = reportDataMessageBuilder.CreateAttributeReportIBs();
NL_TEST_ASSERT(apSuite, reportDataMessageBuilder.GetError() == CHIP_NO_ERROR);
- AttributeReportIB::Builder attributeReportIBBuilder = attributeReportIBsBuilder.CreateAttributeReport();
+ AttributeReportIB::Builder & attributeReportIBBuilder = attributeReportIBsBuilder.CreateAttributeReport();
NL_TEST_ASSERT(apSuite, attributeReportIBsBuilder.GetError() == CHIP_NO_ERROR);
- AttributeDataIB::Builder attributeDataIBBuilder = attributeReportIBBuilder.CreateAttributeData();
+ AttributeDataIB::Builder & attributeDataIBBuilder = attributeReportIBBuilder.CreateAttributeData();
NL_TEST_ASSERT(apSuite, attributeReportIBBuilder.GetError() == CHIP_NO_ERROR);
attributeDataIBBuilder.DataVersion(2);
err = attributeDataIBBuilder.GetError();
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
- AttributePathIB::Builder attributePathBuilder = attributeDataIBBuilder.CreatePath();
+ AttributePathIB::Builder & attributePathBuilder = attributeDataIBBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, attributeDataIBBuilder.GetError() == CHIP_NO_ERROR);
if (aNeedInvalidReport)
@@ -404,10 +407,10 @@
err = readRequestBuilder.Init(&writer);
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
- AttributePathIBs::Builder attributePathListBuilder = readRequestBuilder.CreateAttributeRequests();
+ AttributePathIBs::Builder & attributePathListBuilder = readRequestBuilder.CreateAttributeRequests();
NL_TEST_ASSERT(apSuite, attributePathListBuilder.GetError() == CHIP_NO_ERROR);
- AttributePathIB::Builder attributePathBuilder = attributePathListBuilder.CreatePath();
+ AttributePathIB::Builder & attributePathBuilder = attributePathListBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, attributePathListBuilder.GetError() == CHIP_NO_ERROR);
attributePathBuilder.Node(1).Endpoint(2).Cluster(3).Attribute(4).EndOfAttributePathIB();
@@ -536,7 +539,7 @@
AttributePathIBs::Builder attributePathListBuilder = readRequestBuilder.CreateAttributeRequests();
NL_TEST_ASSERT(apSuite, attributePathListBuilder.GetError() == CHIP_NO_ERROR);
- AttributePathIB::Builder attributePathBuilder = attributePathListBuilder.CreatePath();
+ AttributePathIB::Builder & attributePathBuilder = attributePathListBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, attributePathListBuilder.GetError() == CHIP_NO_ERROR);
attributePathBuilder.Node(1).Endpoint(2).Cluster(3).ListIndex(5).EndOfAttributePathIB();
@@ -944,10 +947,10 @@
subscribeRequestBuilder.MaxIntervalCeilingSeconds(3);
NL_TEST_ASSERT(apSuite, subscribeRequestBuilder.GetError() == CHIP_NO_ERROR);
- AttributePathIBs::Builder attributePathListBuilder = subscribeRequestBuilder.CreateAttributeRequests();
+ AttributePathIBs::Builder & attributePathListBuilder = subscribeRequestBuilder.CreateAttributeRequests();
NL_TEST_ASSERT(apSuite, attributePathListBuilder.GetError() == CHIP_NO_ERROR);
- AttributePathIB::Builder attributePathBuilder = attributePathListBuilder.CreatePath();
+ AttributePathIB::Builder & attributePathBuilder = attributePathListBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, attributePathListBuilder.GetError() == CHIP_NO_ERROR);
attributePathBuilder.Node(1).Endpoint(2).Cluster(3).Attribute(4).ListIndex(5).EndOfAttributePathIB();
diff --git a/src/app/tests/TestReportingEngine.cpp b/src/app/tests/TestReportingEngine.cpp
index 1607042..dac8018 100644
--- a/src/app/tests/TestReportingEngine.cpp
+++ b/src/app/tests/TestReportingEngine.cpp
@@ -73,8 +73,6 @@
System::PacketBufferTLVWriter writer;
System::PacketBufferHandle readRequestbuf = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSize);
ReadRequestMessage::Builder readRequestBuilder;
- AttributePathIBs::Builder attributePathListBuilder;
- AttributePathIB::Builder attributePathBuilder;
err = InteractionModelEngine::GetInstance()->Init(&ctx.GetExchangeManager(), nullptr);
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
@@ -85,25 +83,25 @@
writer.Init(std::move(readRequestbuf));
err = readRequestBuilder.Init(&writer);
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
- attributePathListBuilder = readRequestBuilder.CreateAttributeRequests();
+ AttributePathIBs::Builder & attributePathListBuilder = readRequestBuilder.CreateAttributeRequests();
NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
- attributePathBuilder = attributePathListBuilder.CreatePath();
+ AttributePathIB::Builder & attributePathBuilder1 = attributePathListBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, attributePathListBuilder.GetError() == CHIP_NO_ERROR);
- attributePathBuilder = attributePathBuilder.Node(1)
- .Endpoint(kTestEndpointId)
- .Cluster(kTestClusterId)
- .Attribute(kTestFieldId1)
- .EndOfAttributePathIB();
- NL_TEST_ASSERT(apSuite, attributePathBuilder.GetError() == CHIP_NO_ERROR);
+ attributePathBuilder1 = attributePathBuilder1.Node(1)
+ .Endpoint(kTestEndpointId)
+ .Cluster(kTestClusterId)
+ .Attribute(kTestFieldId1)
+ .EndOfAttributePathIB();
+ NL_TEST_ASSERT(apSuite, attributePathBuilder1.GetError() == CHIP_NO_ERROR);
- attributePathBuilder = attributePathListBuilder.CreatePath();
+ AttributePathIB::Builder & attributePathBuilder2 = attributePathListBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, attributePathListBuilder.GetError() == CHIP_NO_ERROR);
- attributePathBuilder = attributePathBuilder.Node(1)
- .Endpoint(kTestEndpointId)
- .Cluster(kTestClusterId)
- .Attribute(kTestFieldId2)
- .EndOfAttributePathIB();
- NL_TEST_ASSERT(apSuite, attributePathBuilder.GetError() == CHIP_NO_ERROR);
+ attributePathBuilder2 = attributePathBuilder2.Node(1)
+ .Endpoint(kTestEndpointId)
+ .Cluster(kTestClusterId)
+ .Attribute(kTestFieldId2)
+ .EndOfAttributePathIB();
+ NL_TEST_ASSERT(apSuite, attributePathBuilder2.GetError() == CHIP_NO_ERROR);
attributePathListBuilder.EndOfAttributePathIBs();
NL_TEST_ASSERT(apSuite, readRequestBuilder.GetError() == CHIP_NO_ERROR);
diff --git a/src/app/tests/TestWriteInteraction.cpp b/src/app/tests/TestWriteInteraction.cpp
index c850a4b..bfb9bf3 100644
--- a/src/app/tests/TestWriteInteraction.cpp
+++ b/src/app/tests/TestWriteInteraction.cpp
@@ -128,14 +128,14 @@
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
writeRequestBuilder.TimedRequest(aIsTimedWrite);
NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
- AttributeDataIBs::Builder attributeDataIBsBuilder = writeRequestBuilder.CreateWriteRequests();
+ AttributeDataIBs::Builder & attributeDataIBsBuilder = writeRequestBuilder.CreateWriteRequests();
NL_TEST_ASSERT(apSuite, writeRequestBuilder.GetError() == CHIP_NO_ERROR);
- AttributeDataIB::Builder attributeDataIBBuilder = attributeDataIBsBuilder.CreateAttributeDataIBBuilder();
+ AttributeDataIB::Builder & attributeDataIBBuilder = attributeDataIBsBuilder.CreateAttributeDataIBBuilder();
NL_TEST_ASSERT(apSuite, attributeDataIBsBuilder.GetError() == CHIP_NO_ERROR);
attributeDataIBBuilder.DataVersion(0);
NL_TEST_ASSERT(apSuite, attributeDataIBBuilder.GetError() == CHIP_NO_ERROR);
- AttributePathIB::Builder attributePathBuilder = attributeDataIBBuilder.CreatePath();
+ AttributePathIB::Builder & attributePathBuilder = attributeDataIBBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, attributePathBuilder.GetError() == CHIP_NO_ERROR);
attributePathBuilder.Node(1).Endpoint(2).Cluster(3).Attribute(4).ListIndex(5).EndOfAttributePathIB();
err = attributePathBuilder.GetError();
@@ -177,18 +177,18 @@
WriteResponseMessage::Builder writeResponseBuilder;
err = writeResponseBuilder.Init(&writer);
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
- AttributeStatusIBs::Builder attributeStatusesBuilder = writeResponseBuilder.CreateWriteResponses();
+ AttributeStatusIBs::Builder & attributeStatusesBuilder = writeResponseBuilder.CreateWriteResponses();
NL_TEST_ASSERT(apSuite, attributeStatusesBuilder.GetError() == CHIP_NO_ERROR);
- AttributeStatusIB::Builder attributeStatusIBBuilder = attributeStatusesBuilder.CreateAttributeStatus();
+ AttributeStatusIB::Builder & attributeStatusIBBuilder = attributeStatusesBuilder.CreateAttributeStatus();
NL_TEST_ASSERT(apSuite, attributeStatusIBBuilder.GetError() == CHIP_NO_ERROR);
- AttributePathIB::Builder attributePathBuilder = attributeStatusIBBuilder.CreatePath();
+ AttributePathIB::Builder & attributePathBuilder = attributeStatusIBBuilder.CreatePath();
NL_TEST_ASSERT(apSuite, attributePathBuilder.GetError() == CHIP_NO_ERROR);
attributePathBuilder.Node(1).Endpoint(2).Cluster(3).Attribute(4).ListIndex(5).EndOfAttributePathIB();
err = attributePathBuilder.GetError();
NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
- StatusIB::Builder statusIBBuilder = attributeStatusIBBuilder.CreateErrorStatus();
+ StatusIB::Builder & statusIBBuilder = attributeStatusIBBuilder.CreateErrorStatus();
StatusIB statusIB;
statusIB.mStatus = chip::Protocols::InteractionModel::Status::InvalidSubscription;
NL_TEST_ASSERT(apSuite, statusIBBuilder.GetError() == CHIP_NO_ERROR);
diff --git a/src/app/tests/integration/chip_im_initiator.cpp b/src/app/tests/integration/chip_im_initiator.cpp
index 32f6dfc..5b1d07f 100644
--- a/src/app/tests/integration/chip_im_initiator.cpp
+++ b/src/app/tests/integration/chip_im_initiator.cpp
@@ -630,13 +630,17 @@
AttributeReportIBs::Builder & aAttributeReports,
AttributeValueEncoder::AttributeEncodeState * apEncoderState)
{
- AttributeReportIB::Builder attributeReport = aAttributeReports.CreateAttributeReport();
- AttributeStatusIB::Builder attributeStatus = attributeReport.CreateAttributeStatus();
- AttributePathIB::Builder attributePath = attributeStatus.CreatePath();
+ AttributeReportIB::Builder & attributeReport = aAttributeReports.CreateAttributeReport();
+ ReturnErrorOnFailure(aAttributeReports.GetError());
+ AttributeStatusIB::Builder & attributeStatus = attributeReport.CreateAttributeStatus();
+ ReturnErrorOnFailure(attributeReport.GetError());
+ AttributePathIB::Builder & attributePath = attributeStatus.CreatePath();
+ ReturnErrorOnFailure(attributeStatus.GetError());
attributePath.Endpoint(aPath.mEndpointId).Cluster(aPath.mClusterId).Attribute(aPath.mAttributeId).EndOfAttributePathIB();
ReturnErrorOnFailure(attributePath.GetError());
- StatusIB::Builder errorStatus = attributeStatus.CreateErrorStatus();
+ StatusIB::Builder & errorStatus = attributeStatus.CreateErrorStatus();
errorStatus.EncodeStatusIB(StatusIB(Protocols::InteractionModel::Status::UnsupportedAttribute));
+ ReturnErrorOnFailure(errorStatus.GetError());
attributeStatus.EndOfAttributeStatusIB();
ReturnErrorOnFailure(attributeStatus.GetError());
return attributeReport.EndOfAttributeReportIB().GetError();
diff --git a/src/app/tests/integration/chip_im_responder.cpp b/src/app/tests/integration/chip_im_responder.cpp
index fcbf7c4..84ff656 100644
--- a/src/app/tests/integration/chip_im_responder.cpp
+++ b/src/app/tests/integration/chip_im_responder.cpp
@@ -67,21 +67,17 @@
chip::TLV::Debug::Dump(aReader, TLVPrettyPrinter);
}
- chip::app::CommandPathParams commandPathParams = { kTestEndpointId, // Endpoint
- kTestGroupId, // GroupId
- kTestClusterId, // ClusterId
- kTestCommandId, // CommandId
- (chip::app::CommandPathFlags::kEndpointIdValid) };
+ chip::app::ConcreteCommandPath path = {
+ kTestEndpointId, // Endpoint
+ kTestClusterId, // ClusterId
+ kTestCommandId, // CommandId
+ };
// Add command data here
if (statusCodeFlipper)
{
- chip::app::ConcreteCommandPath commandPath(kTestEndpointId, // Endpoint
- kTestClusterId, // ClusterId
- kTestCommandId // CommandId
- );
printf("responder constructing status code in command");
- apCommandObj->AddStatus(commandPath, Protocols::InteractionModel::Status::Success);
+ apCommandObj->AddStatus(path, Protocols::InteractionModel::Status::Success);
}
else
{
@@ -89,7 +85,7 @@
chip::TLV::TLVWriter * writer;
- ReturnOnFailure(apCommandObj->PrepareCommand(commandPathParams));
+ ReturnOnFailure(apCommandObj->PrepareCommand(path));
writer = apCommandObj->GetCommandDataIBTLVWriter();
ReturnOnFailure(writer->Put(chip::TLV::ContextTag(kTestFieldId1), kTestFieldValue1));
diff --git a/src/app/util/ember-compatibility-functions.cpp b/src/app/util/ember-compatibility-functions.cpp
index 7433fe2..cf196dd 100644
--- a/src/app/util/ember-compatibility-functions.cpp
+++ b/src/app/util/ember-compatibility-functions.cpp
@@ -231,14 +231,18 @@
{
aAttributeReport.Rollback(*aReportCheckpoint);
}
- AttributeStatusIB::Builder attributeStatusIBBuilder = aAttributeReport.CreateAttributeStatus();
- AttributePathIB::Builder attributePathIBBuilder = attributeStatusIBBuilder.CreatePath();
+ AttributeStatusIB::Builder & attributeStatusIBBuilder = aAttributeReport.CreateAttributeStatus();
+ ReturnErrorOnFailure(aAttributeReport.GetError());
+ AttributePathIB::Builder & attributePathIBBuilder = attributeStatusIBBuilder.CreatePath();
+ ReturnErrorOnFailure(attributeStatusIBBuilder.GetError());
+
attributePathIBBuilder.Endpoint(aPath.mEndpointId)
.Cluster(aPath.mClusterId)
.Attribute(aPath.mAttributeId)
.EndOfAttributePathIB();
ReturnErrorOnFailure(attributePathIBBuilder.GetError());
- StatusIB::Builder statusIBBuilder = attributeStatusIBBuilder.CreateErrorStatus();
+ StatusIB::Builder & statusIBBuilder = attributeStatusIBBuilder.CreateErrorStatus();
+ ReturnErrorOnFailure(attributeStatusIBBuilder.GetError());
statusIBBuilder.EncodeStatusIB(StatusIB(aStatus));
ReturnErrorOnFailure(statusIBBuilder.GetError());
@@ -306,13 +310,14 @@
attributeReport.Checkpoint(backup);
// We have verified that the attribute exists.
- AttributeDataIB::Builder attributeDataIBBuilder = attributeReport.CreateAttributeData();
+ AttributeDataIB::Builder & attributeDataIBBuilder = attributeReport.CreateAttributeData();
+
ReturnErrorOnFailure(attributeDataIBBuilder.GetError());
attributeDataIBBuilder.DataVersion(kTemporaryDataVersion);
ReturnErrorOnFailure(attributeDataIBBuilder.GetError());
- AttributePathIB::Builder attributePathIBBuilder = attributeDataIBBuilder.CreatePath();
+ AttributePathIB::Builder & attributePathIBBuilder = attributeDataIBBuilder.CreatePath();
ReturnErrorOnFailure(attributeDataIBBuilder.GetError());
attributePathIBBuilder.Endpoint(aPath.mEndpointId)
diff --git a/src/app/util/mock/attribute-storage.cpp b/src/app/util/mock/attribute-storage.cpp
index ec5a1b6..6966b0c 100644
--- a/src/app/util/mock/attribute-storage.cpp
+++ b/src/app/util/mock/attribute-storage.cpp
@@ -224,16 +224,18 @@
if (!dataExists)
{
- AttributeReportIB::Builder attributeReport = aAttributeReports.CreateAttributeReport();
- AttributeDataIB::Builder attributeData;
- AttributePathIB::Builder attributePath;
- AttributeStatusIB::Builder attributeStatus;
- attributeStatus = attributeReport.CreateAttributeStatus();
- attributePath = attributeStatus.CreatePath();
+ AttributeReportIB::Builder & attributeReport = aAttributeReports.CreateAttributeReport();
+ ReturnErrorOnFailure(aAttributeReports.GetError());
+ AttributeStatusIB::Builder & attributeStatus = attributeReport.CreateAttributeStatus();
+ ReturnErrorOnFailure(attributeReport.GetError());
+ AttributePathIB::Builder & attributePath = attributeStatus.CreatePath();
+ ReturnErrorOnFailure(attributeStatus.GetError());
attributePath.Endpoint(aPath.mEndpointId).Cluster(aPath.mClusterId).Attribute(aPath.mAttributeId).EndOfAttributePathIB();
ReturnErrorOnFailure(attributePath.GetError());
- StatusIB::Builder errorStatus = attributeStatus.CreateErrorStatus();
+ StatusIB::Builder & errorStatus = attributeStatus.CreateErrorStatus();
+ ReturnErrorOnFailure(attributeStatus.GetError());
errorStatus.EncodeStatusIB(StatusIB(Protocols::InteractionModel::Status::UnsupportedAttribute));
+ ReturnErrorOnFailure(errorStatus.GetError());
attributeStatus.EndOfAttributeStatusIB();
ReturnErrorOnFailure(attributeStatus.GetError());
return attributeReport.EndOfAttributeReportIB().GetError();
@@ -261,13 +263,13 @@
return err;
}
- AttributeReportIB::Builder attributeReport = aAttributeReports.CreateAttributeReport();
- AttributeDataIB::Builder attributeData;
- AttributePathIB::Builder attributePath;
-
- attributeData = attributeReport.CreateAttributeData();
+ AttributeReportIB::Builder & attributeReport = aAttributeReports.CreateAttributeReport();
+ ReturnErrorOnFailure(aAttributeReports.GetError());
+ AttributeDataIB::Builder & attributeData = attributeReport.CreateAttributeData();
+ ReturnErrorOnFailure(attributeReport.GetError());
attributeData.DataVersion(0);
- attributePath = attributeData.CreatePath();
+ AttributePathIB::Builder & attributePath = attributeData.CreatePath();
+ ReturnErrorOnFailure(attributeData.GetError());
attributePath.Endpoint(aPath.mEndpointId).Cluster(aPath.mClusterId).Attribute(aPath.mAttributeId).EndOfAttributePathIB();
ReturnErrorOnFailure(attributePath.GetError());