Skip to content

Commit

Permalink
Changes to InvokeResponseMessage to reflect 1.3 spec
Browse files Browse the repository at this point in the history
  • Loading branch information
tehampson committed Nov 24, 2023
1 parent 90f36a4 commit 5dc8f22
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 2 deletions.
24 changes: 24 additions & 0 deletions src/app/MessageDef/InvokeResponseMessage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,15 @@ CHIP_ERROR InvokeResponseMessage::Parser::PrettyPrint() const
ReturnErrorOnFailure(invokeResponses.PrettyPrint());
PRETTY_PRINT_DECDEPTH();
}
break;
case to_underlying(Tag::kMoreChunkedMessages):
#if CHIP_DETAIL_LOGGING
{
bool moreChunkedMessages;
ReturnErrorOnFailure(reader.Get(moreChunkedMessages));
PRETTY_PRINT("\tmoreChunkedMessages = %s, ", moreChunkedMessages ? "true" : "false");
}
#endif // CHIP_DETAIL_LOGGING
break;
case kInteractionModelRevisionTag:
ReturnErrorOnFailure(MessageParser::CheckInteractionModelRevision(reader));
Expand Down Expand Up @@ -98,6 +107,11 @@ CHIP_ERROR InvokeResponseMessage::Parser::GetInvokeResponses(InvokeResponseIBs::
return apStatus->Init(reader);
}

CHIP_ERROR InvokeResponseMessage::Parser::GetMoreChunkedMessages(bool * const apMoreChunkedMessages) const
{
return GetSimpleValue(to_underlying(Tag::kMoreChunkedMessages), TLV::kTLVType_Boolean, apMoreChunkedMessages);
}

InvokeResponseMessage::Builder & InvokeResponseMessage::Builder::SuppressResponse(const bool aSuppressResponse)
{
if (mError == CHIP_NO_ERROR)
Expand All @@ -116,6 +130,16 @@ InvokeResponseIBs::Builder & InvokeResponseMessage::Builder::CreateInvokeRespons
return mInvokeResponses;
}

InvokeResponseMessage::Builder & InvokeResponseMessage::Builder::MoreChunkedMessages(const bool aMoreChunkedMessages)
{
// skip if error has already been set
if (mError == CHIP_NO_ERROR)
{
mError = mpWriter->PutBoolean(TLV::ContextTag(Tag::kMoreChunkedMessages), aMoreChunkedMessages);
}
return *this;
}

CHIP_ERROR InvokeResponseMessage::Builder::EndOfInvokeResponseMessage()
{
if (mError == CHIP_NO_ERROR)
Expand Down
22 changes: 20 additions & 2 deletions src/app/MessageDef/InvokeResponseMessage.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,9 @@ namespace app {
namespace InvokeResponseMessage {
enum class Tag : uint8_t
{
kSuppressResponse = 0,
kInvokeResponses = 1,
kSuppressResponse = 0,
kInvokeResponses = 1,
kMoreChunkedMessages = 2,
};

class Parser : public MessageParser
Expand All @@ -61,6 +62,16 @@ class Parser : public MessageParser
* #CHIP_END_OF_TLV if there is no such element
*/
CHIP_ERROR GetInvokeResponses(InvokeResponseIBs::Parser * const apInvokeResponses) const;

/**
* @brief Get MoreChunkedMessages boolean
*
* @param [out] apMoreChunkedMessages A pointer to apMoreChunkedMessages
*
* @return #CHIP_NO_ERROR on success
* #CHIP_END_OF_TLV if there is no such element
*/
CHIP_ERROR GetMoreChunkedMessages(bool * const apMoreChunkedMessages) const;
};

class Builder : public MessageBuilder
Expand All @@ -86,6 +97,13 @@ class Builder : public MessageBuilder
*/
InvokeResponseIBs::Builder & GetInvokeResponses() { return mInvokeResponses; }

/**
* @brief Set True if the set of InvokeResponseIB have to be sent across multiple packets in a single transaction
* @param [in] aMoreChunkedMessages true if more chunked messaged is needed
* @return A reference to *this
*/
InvokeResponseMessage::Builder & MoreChunkedMessages(const bool aMoreChunkedMessages);

/**
* @brief Mark the end of this InvokeResponseMessage
*
Expand Down

0 comments on commit 5dc8f22

Please sign in to comment.