Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[im] Always use interaction model to send commands #5945

Merged
merged 18 commits into from
May 11, 2021

Conversation

erjiaqing
Copy link
Contributor

@erjiaqing erjiaqing commented Apr 12, 2021

Problem

We are now able to make interaction model messages and ember zcl messages co-exist, so we can always use interaction model for supported messages.

For now, interaction model can handle command message, so remove all checks for interaction model in commands (infact this will remove all flags for interaction model).

Summary of Changes

Remove CHIP_ENABLE_INTERACTION_MODEL flag.

This PR requires #5943 and #5944.

Fixes #6532

@erjiaqing
Copy link
Contributor Author

erjiaqing commented Apr 12, 2021

Here is the diff of symbol table

Expand to see diff
--- master/nrfconnect-example-build-7ef91f9f62c09eded392de0b5d1a1e111ac78a3d/master.txt	2021-04-12 16:27:50.242256584 +0800
+++ 5945/nrfconnect-example-build-pull-5945/5945.txt	2021-04-12 16:27:40.954352225 +0800
@@ -299,10 +299,25 @@
 text	00000004	.hidden	MPSL_IRQ_RADIO_Handler	
 text	00000096	.hidden	MPSL_IRQ_RTC0_Handler	
 text	000000f0	.hidden	MPSL_IRQ_TIMER0_Handler	
+text	00000276	.hidden	__adddf3	
+text	00000276	.hidden	__aeabi_dadd	
+text	00000000	.hidden	__aeabi_drsub	
+text	0000027a	.hidden	__aeabi_dsub	
+text	00000042	.hidden	__aeabi_f2d	
+text	00000022	.hidden	__aeabi_i2d	
 text	00000002	.hidden	__aeabi_idiv0	
+text	0000005a	.hidden	__aeabi_l2d	
 text	00000002	.hidden	__aeabi_ldiv0	
 text	00000000	.hidden	__aeabi_ldivmod	
+text	0000001e	.hidden	__aeabi_ui2d	
+text	0000006a	.hidden	__aeabi_ul2d	
 text	00000000	.hidden	__aeabi_uldivmod	
+text	00000042	.hidden	__extendsfdf2	
+text	0000005a	.hidden	__floatdidf	
+text	00000022	.hidden	__floatsidf	
+text	0000006a	.hidden	__floatundidf	
+text	0000001e	.hidden	__floatunsidf	
+text	0000027a	.hidden	__subdf3	
 text	000002be	.hidden	__udivmoddi4	
 text	00000016	.hidden	mpsl_clock_hfclk_release	
 text	00000032	.hidden	mpsl_clock_hfclk_request	
@@ -1019,10 +1034,11 @@
 text	0000002c	_GLOBAL__sub_I__ZN4chip11DeviceLayer24ConfigurationManagerImpl9sInstanceE		
 text	0000003c	_GLOBAL__sub_I__ZN4chip11DeviceLayer8Internal14BLEManagerImpl9sInstanceE		
 text	00000134	_GLOBAL__sub_I__ZN4chip14SessionManagerEv		
+text	00000024	_GLOBAL__sub_I__ZN4chip3app23sInteractionModelEngineE		
 text	00000024	_GLOBAL__sub_I__ZN4chip4Mdns21DiscoveryImplPlatform8sManagerE		
 text	00000028	_GLOBAL__sub_I__ZN4chip6System12PacketBuffer11sBufferPoolE		
 text	00000002	_OffsetAbsSyms		
-text	000002d4	InitServer(AppDelegate*)		
+text	000002e4	InitServer(AppDelegate*)		
 text	00000044	emberAfInit()		
 text	0000001e	emberAfPrint(int, char const*, ...)		
 text	00000070	emAfCallInits()		
@@ -2774,9 +2790,14 @@
 text	00000030	chip::TLV::TLVReader::EnterContainer(chip::TLV::TLVType&)		
 text	0000001c	chip::TLV::TLVReader::ClearElementState()		
 text	00000052	chip::TLV::TLVReader::SkipToEndOfContainer()		
+text	00000020	chip::TLV::TLVReader::Get(bool&)		
+text	00000030	chip::TLV::TLVReader::Get(double&)		
+text	0000001a	chip::TLV::TLVReader::Get(unsigned char&)		
 text	0000001a	chip::TLV::TLVReader::Get(unsigned int&)		
 text	0000001a	chip::TLV::TLVReader::Get(unsigned short&)		
+text	00000022	chip::TLV::TLVReader::Get(long long&)		
 text	0000003c	chip::TLV::TLVReader::Get(unsigned long long&)		
+text	00000042	chip::TLV::TLVReader::Init(chip::TLV::TLVReader const&)		
 text	0000004c	chip::TLV::TLVReader::Init(chip::TLV::TLVBackingStore&, unsigned int)		
 text	00000038	chip::TLV::TLVReader::Next(chip::TLV::TLVType, unsigned long long)		
 text	0000002a	chip::TLV::TLVReader::Next()		
@@ -2785,25 +2806,164 @@
 text	00000042	chip::TLV::TLVReader::GetBytes(unsigned char*, unsigned int)		
 text	00000042	chip::TLV::TLVReader::ReadData(unsigned char*, unsigned int)		
 text	00000024	chip::TLV::TLVReader::SkipData()		
+text	00000048	chip::TLV::TLVReader::GetString(char*, unsigned int)		
+text	00000020	chip::TLV::TLVWriter::PutBoolean(unsigned long long, bool)		
+text	0000003e	chip::TLV::TLVWriter::EndContainer(chip::TLV::TLVType)		
 text	00000088	chip::TLV::TLVWriter::OpenContainer(unsigned long long, chip::TLV::TLVType, chip::TLV::TLVWriter&)		
 text	0000006e	chip::TLV::TLVWriter::CloseContainer(chip::TLV::TLVWriter&)		
+text	00000060	chip::TLV::TLVWriter::StartContainer(unsigned long long, chip::TLV::TLVType, chip::TLV::TLVType&)		
 text	000001ae	chip::TLV::TLVWriter::WriteElementHead(chip::TLV::TLVElementType, unsigned long long, unsigned long long)		
 text	00000044	chip::TLV::TLVWriter::WriteElementWithData(chip::TLV::TLVType, unsigned long long, unsigned char const*, unsigned int)		
+text	00000014	chip::TLV::TLVWriter::Put(unsigned long long, unsigned char)		
 text	00000012	chip::TLV::TLVWriter::Put(unsigned long long, int)		
+text	00000014	chip::TLV::TLVWriter::Put(unsigned long long, unsigned int)		
+text	00000014	chip::TLV::TLVWriter::Put(unsigned long long, unsigned short)		
 text	00000058	chip::TLV::TLVWriter::Put(unsigned long long, long long)		
 text	00000038	chip::TLV::TLVWriter::Put(unsigned long long, unsigned long long)		
 text	00000020	chip::TLV::TLVWriter::Init(unsigned char*, unsigned int)		
+text	0000003c	chip::TLV::TLVWriter::Init(chip::TLV::TLVBackingStore&, unsigned int)		
 text	00000026	chip::TLV::TLVWriter::Finalize()		
 text	00000022	chip::TLV::TLVWriter::PutString(unsigned long long, char const*)		
 text	00000006	chip::TLV::TLVWriter::PutString(unsigned long long, char const*, unsigned int)		
 text	000000a8	chip::TLV::TLVWriter::WriteData(unsigned char const*, unsigned int)		
+text	00000026	chip::app::ListParser::Init(chip::TLV::TLVReader const&)		
+text	0000000c	chip::app::ListParser::ListParser()		
+text	0000000c	chip::app::ListParser::ListParser()		
+text	00000030	chip::app::ReadClient::MoveToState(chip::app::ReadClient::ClientState)		
+text	00000066	chip::app::ReadClient::OnMessageReceived(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+text	0000003c	chip::app::ReadClient::OnResponseTimeout(chip::Messaging::ExchangeContext*)		
+text	000000d8	chip::app::ReadClient::ProcessReportData(chip::System::PacketBufferHandle)		
+text	00000014	chip::app::ReadClient::ClearExistingExchangeContext()		
+text	0000000e	chip::app::ReadClient::~ReadClient()		
+text	00000002	chip::app::ReadClient::~ReadClient()		
+text	00000002	chip::app::ReadClient::~ReadClient()		
+text	00000026	chip::app::ReportData::Parser::Init(chip::TLV::TLVReader const&)		
+text	0000000c	chip::app::ReportData::Builder::EndOfReportData()		
+text	0000001e	chip::app::ReportData::Builder::MoreChunkedMessages(bool)		
+text	00000004	chip::app::ReportData::Builder::Init(chip::TLV::TLVWriter*)		
+text	0000000c	chip::app::CommandList::Builder::EndOfCommandList()		
+text	00000022	chip::app::CommandList::Builder::CreateCommandDataElementBuilder()		
+text	00000026	chip::app::CommandPath::Parser::Init(chip::TLV::TLVReader const&)		
+text	0000001e	chip::app::CommandPath::Builder::EndpointId(unsigned char)		
+text	0000000c	chip::app::CommandPath::Builder::EndOfCommandPath()		
+text	00000008	chip::app::CommandPath::Builder::Init(chip::TLV::TLVWriter*, unsigned char)		
+text	0000001c	chip::app::CommandPath::Builder::_Init(chip::TLV::TLVWriter*, unsigned long long)		
+text	0000001e	chip::app::CommandPath::Builder::GroupId(unsigned short)		
+text	0000001e	chip::app::CommandPath::Builder::ClusterId(unsigned short)		
+text	0000001e	chip::app::CommandPath::Builder::CommandId(unsigned char)		
+text	00000020	chip::app::ListBuilder::Init(chip::TLV::TLVWriter*, unsigned char)		
+text	0000000c	chip::app::ListBuilder::ListBuilder()		
+text	0000000c	chip::app::ListBuilder::ListBuilder()		
+text	0000001c	chip::app::ReadHandler::MoveToState(chip::app::ReadHandler::HandlerState)		
+text	00000032	chip::app::ReadHandler::OnReadRequest(chip::Messaging::ExchangeContext*, chip::System::PacketBufferHandle)		
+text	0000003c	chip::app::ReadHandler::SendReportData(chip::System::PacketBufferHandle)		
+text	000000fc	chip::app::ReadHandler::ProcessReadRequest(chip::System::PacketBufferHandle)		
+text	00000014	chip::app::ReadHandler::ClearExistingExchangeContext()		
+text	00000020	chip::app::ReadHandler::Init(chip::app::InteractionModelDelegate*)		
+text	00000016	chip::app::ReadHandler::Shutdown()		
+text	0000000e	chip::app::ReadHandler::~ReadHandler()		
+text	00000002	chip::app::ReadHandler::~ReadHandler()		
+text	00000002	chip::app::ReadHandler::~ReadHandler()		
+text	00000026	chip::app::ReadRequest::Parser::Init(chip::TLV::TLVReader const&)		
+text	00000026	chip::app::AttributePath::Parser::Init(chip::TLV::TLVReader const&)		
+text	00000066	chip::app::CommandSender::OnMessageReceived(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+text	00000034	chip::app::CommandSender::OnResponseTimeout(chip::Messaging::ExchangeContext*)		
+text	00000104	chip::app::CommandSender::ProcessCommandDataElement(chip::app::CommandDataElement::Parser&)		
+text	00000014	chip::app::CommandSender::~CommandSender()		
+text	00000014	chip::app::CommandSender::~CommandSender()		
+text	00000014	chip::app::CommandSender::~CommandSender()		
 text	00000004	chip::app::Compatibility::IMEmberAfSendDefaultResponseWithCallback(EmberAfStatus)		
+text	00000026	chip::app::InvokeCommand::Parser::Init(chip::TLV::TLVReader const&)		
+text	0000000c	chip::app::InvokeCommand::Builder::EndOfInvokeCommand()		
+text	00000004	chip::app::InvokeCommand::Builder::GetCommandListBuilder()		
+text	00000024	chip::app::InvokeCommand::Builder::CreateCommandListBuilder()		
+text	00000004	chip::app::InvokeCommand::Builder::Init(chip::TLV::TLVWriter*)		
+text	0000002c	chip::app::InvokeCommand::Builder::Builder()		
+text	0000002c	chip::app::InvokeCommand::Builder::Builder()		
+text	00000026	chip::app::StatusElement::Parser::Init(chip::TLV::TLVReader const&)		
+text	0000000c	chip::app::StatusElement::Builder::EndOfStatusElement()		
+text	0000004c	chip::app::StatusElement::Builder::EncodeStatusElement(chip::Protocols::SecureChannel::GeneralStatusCode, unsigned int, unsigned short)		
+text	00000004	chip::app::StatusElement::Builder::Init(chip::TLV::TLVWriter*, unsigned char)		
+text	00000094	chip::app::CommandHandler::AddStatusCode(chip::app::Command::CommandParams const*, chip::Protocols::SecureChannel::GeneralStatusCode, chip::Protocols::Id, unsigned short)		
+text	00000024	chip::app::CommandHandler::OnMessageReceived(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+text	00000054	chip::app::CommandHandler::SendCommandResponse()		
+text	000000a8	chip::app::CommandHandler::ProcessCommandDataElement(chip::app::CommandDataElement::Parser&)		
+text	00000014	chip::app::CommandHandler::~CommandHandler()		
+text	00000014	chip::app::CommandHandler::~CommandHandler()		
+text	00000014	chip::app::CommandHandler::~CommandHandler()		
+text	00000026	chip::app::EventDataElement::Parser::Init(chip::TLV::TLVReader const&)		
+text	00000026	chip::app::CommandDataElement::Parser::Init(chip::TLV::TLVReader const&)		
+text	0000000c	chip::app::CommandDataElement::Builder::EndOfCommandDataElement()		
+text	00000024	chip::app::CommandDataElement::Builder::CreateCommandPathBuilder()		
+text	00000024	chip::app::CommandDataElement::Builder::CreateStatusElementBuilder()		
+text	00000004	chip::app::CommandDataElement::Builder::Init(chip::TLV::TLVWriter*)		
+text	00000026	chip::app::AttributeDataElement::Parser::Init(chip::TLV::TLVReader const&)		
+text	00000026	chip::app::AttributeStatusElement::Parser::Init(chip::TLV::TLVReader const&)		
+text	00000008	chip::app::InteractionModelEngine::GetInstance()		
+text	00000058	chip::app::InteractionModelEngine::OnReadRequest(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+text	00000020	chip::app::InteractionModelEngine::OnUnknownMsgType(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+text	0000007e	chip::app::InteractionModelEngine::OnMessageReceived(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+text	00000014	chip::app::InteractionModelEngine::OnResponseTimeout(chip::Messaging::ExchangeContext*)		
+text	0000004e	chip::app::InteractionModelEngine::OnInvokeCommandRequest(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+text	00000028	chip::app::InteractionModelEngine::Init(chip::Messaging::ExchangeManager*, chip::app::InteractionModelDelegate*)		
+text	000000cc	chip::app::InteractionModelEngine::InteractionModelEngine()		
+text	000000cc	chip::app::InteractionModelEngine::InteractionModelEngine()		
+text	00000016	chip::app::InteractionModelEngine::~InteractionModelEngine()		
+text	00000038	chip::app::InteractionModelEngine::~InteractionModelEngine()		
+text	00000038	chip::app::InteractionModelEngine::~InteractionModelEngine()		
+text	0000002c	chip::app::DispatchSingleClusterCommand(unsigned short, unsigned char, unsigned char, chip::TLV::TLVReader&, chip::app::Command*)		
 text	00000048	chip::app::Mdns::StartServer()		
 text	00000068	chip::app::Mdns::(anonymous namespace)::FillMAC(unsigned char (&) [8])		
 text	00000160	chip::app::Mdns::AdvertiseOperational()		
+text	0000000a	chip::app::Parser::GetReader(chip::TLV::TLVReader*)		
+text	00000008	chip::app::Parser::Parser()		
+text	00000008	chip::app::Parser::Parser()		
+text	00000008	chip::app::Builder::ResetError(int)		
+text	0000001c	chip::app::Builder::EndOfContainer()		
+text	00000028	chip::app::Builder::InitAnonymousStructure(chip::TLV::TLVWriter*)		
+text	00000010	chip::app::Builder::Builder()		
+text	00000010	chip::app::Builder::Builder()		
+text	0000001c	chip::app::Command::MoveToState(chip::app::Command::CommandState)		
+text	0000000a	chip::app::Command::AddStatusCode(chip::app::Command::CommandParams const*, chip::Protocols::SecureChannel::GeneralStatusCode, chip::Protocols::Id, unsigned short)		
+text	00000048	chip::app::Command::ConstructCommandPath(chip::app::Command::CommandParams const&, chip::app::CommandDataElement::Builder&)		
+text	000000e8	chip::app::Command::ProcessCommandMessage(chip::System::PacketBufferHandle&&, chip::app::Command::CommandRoleId)		
+text	0000006a	chip::app::Command::FinalizeCommandsMessage()		
+text	00000014	chip::app::Command::ClearExistingExchangeContext()		
+text	0000001e	chip::app::Command::Init(chip::Messaging::ExchangeManager*, chip::app::InteractionModelDelegate*)		
+text	000000ae	chip::app::Command::Reset()		
+text	00000042	chip::app::Command::Shutdown()		
+text	00000014	chip::app::Command::~Command()		
+text	00000038	chip::app::Command::~Command()		
+text	00000038	chip::app::Command::~Command()		
 text	00000094	chip::app::clusters::NetworkCommissioning::OnEnableNetworkCommandCallbackInternal(chip::app::Command*, unsigned char, chip::Span<unsigned char>, unsigned long long, unsigned int)		
 text	000000bc	chip::app::clusters::NetworkCommissioning::OnAddWiFiNetworkCommandCallbackInternal(chip::app::Command*, unsigned char, chip::Span<unsigned char>, chip::Span<unsigned char>, unsigned long long, unsigned int)		
 text	00000080	chip::app::clusters::NetworkCommissioning::OnAddThreadNetworkCommandCallbackInternal(chip::app::Command*, unsigned char, chip::Span<unsigned char>, unsigned long long, unsigned int)		
+text	00000026	chip::app::EventPath::Parser::Init(chip::TLV::TLVReader const&)		
+text	00000030	chip::app::reporting::Engine::SendReport(chip::app::ReadHandler*, chip::System::PacketBufferHandle&&)		
+text	0000002c	chip::app::reporting::Engine::ScheduleRun()		
+text	00000020	chip::app::reporting::Engine::OnReportConfirm()		
+text	0000019c	chip::app::reporting::Engine::BuildAndSendSingleReportData(chip::app::ReadHandler*)		
+text	00000006	chip::app::reporting::Engine::Run(chip::System::Layer*, void*, int)		
+text	00000036	chip::app::reporting::Engine::Run()		
+text	0000000c	chip::app::reporting::Engine::Init()		
+text	000000a4	chip::app::PrettyPrintIM(bool, char const*, ...)		
+text	000000a4	chip::app::PrettyPrintIM(bool, char const*, ...)		
+text	000000a4	chip::app::PrettyPrintIM(bool, char const*, ...)		
+text	00000060	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
+text	00000060	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
+text	00000060	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
+text	00000060	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
+text	00000060	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
+text	000000a4	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
+text	000000a4	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
+text	000000a4	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
+text	000000a4	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
+text	000000a4	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
+text	000000a4	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
+text	000000a4	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
+text	000000a4	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
+text	000000a4	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
+text	000000a4	chip::app::PrettyPrintIM(bool, char const*, ...) [clone .constprop.0]		
 text	00000020	chip::Inet::UDPEndPoint::HandlePendingIO()		
 text	000000a4	chip::Inet::UDPEndPoint::Bind(chip::Inet::IPAddressType, chip::Inet::IPAddress const&, unsigned short, int)		
 text	00000012	chip::Inet::UDPEndPoint::Free()		
@@ -2950,6 +3110,14 @@
 text	00000014	chip::System::PacketBufferHandle::operator=(decltype(nullptr)) [clone .isra.0]		
 text	00000014	chip::System::PacketBufferHandle::operator=(decltype(nullptr)) [clone .isra.0]		
 text	00000014	chip::System::PacketBufferHandle::operator=(decltype(nullptr)) [clone .isra.0]		
+text	00000014	chip::System::PacketBufferHandle::operator=(decltype(nullptr)) [clone .isra.0]		
+text	00000014	chip::System::PacketBufferHandle::operator=(decltype(nullptr)) [clone .isra.0]		
+text	00000014	chip::System::PacketBufferHandle::operator=(decltype(nullptr)) [clone .isra.0]		
+text	00000014	chip::System::PacketBufferHandle::operator=(decltype(nullptr)) [clone .isra.0]		
+text	00000014	chip::System::PacketBufferHandle::operator=(decltype(nullptr)) [clone .isra.0]		
+text	00000014	chip::System::PacketBufferHandle::operator=(decltype(nullptr)) [clone .isra.0]		
+text	0000001a	chip::System::PacketBufferHandle::operator=(chip::System::PacketBufferHandle&&) [clone .isra.0]		
+text	0000001a	chip::System::PacketBufferHandle::operator=(chip::System::PacketBufferHandle&&) [clone .isra.0]		
 text	0000001a	chip::System::PacketBufferHandle::operator=(chip::System::PacketBufferHandle&&) [clone .isra.0]		
 text	0000001a	chip::System::PacketBufferHandle::operator=(chip::System::PacketBufferHandle&&) [clone .isra.0]		
 text	0000001a	chip::System::PacketBufferHandle::operator=(chip::System::PacketBufferHandle&&) [clone .isra.0]		
@@ -2958,6 +3126,7 @@
 text	00000076	chip::System::TLVPacketBufferBackingStore::GetNewBuffer(chip::TLV::TLVWriter&, unsigned char*&, unsigned int&)		
 text	0000002e	chip::System::TLVPacketBufferBackingStore::GetNextBuffer(chip::TLV::TLVReader&, unsigned char const*&, unsigned int&)		
 text	00000022	chip::System::TLVPacketBufferBackingStore::FinalizeBuffer(chip::TLV::TLVWriter&, unsigned char*, unsigned int)		
+text	0000002c	chip::System::TLVPacketBufferBackingStore::Init(chip::System::PacketBufferHandle&&, bool)		
 text	00000010	chip::System::TLVPacketBufferBackingStore::OnInit(chip::TLV::TLVReader&, unsigned char const*&, unsigned int&)		
 text	0000001a	chip::System::TLVPacketBufferBackingStore::OnInit(chip::TLV::TLVWriter&, unsigned char*&, unsigned int&)		
 text	00000014	chip::System::TLVPacketBufferBackingStore::~TLVPacketBufferBackingStore()		
@@ -3043,6 +3212,7 @@
 text	00000018	chip::Messaging::ExchangeContext::CancelResponseTimer()		
 text	0000000e	chip::Messaging::ExchangeContext::HandleResponseTimeout(chip::System::Layer*, void*, int)		
 text	00000040	chip::Messaging::ExchangeContext::Free()		
+text	0000001e	chip::Messaging::ExchangeContext::Abort()		
 text	00000086	chip::Messaging::ExchangeContext::Alloc(chip::Messaging::ExchangeManager*, unsigned short, chip::SecureSessionHandle, bool, chip::Messaging::ExchangeDelegate*)		
 text	0000001e	chip::Messaging::ExchangeContext::Close()		
 text	00000048	chip::Messaging::ExchangeContext::Reset()		
@@ -3449,6 +3619,7 @@
 text	0000004a	chip::PacketHeader::EncodeBeforeData(chip::System::PacketBufferHandle const&) const		
 text	000000ac	chip::PacketHeader::Encode(unsigned char*, unsigned short, unsigned short*) const		
 text	00000016	bool chip::PayloadHeader::HasMessageType<chip::Protocols::SecureChannel::MsgType, void>(chip::Protocols::SecureChannel::MsgType) const		
+text	00000018	bool chip::PayloadHeader::HasMessageType<chip::Protocols::InteractionModel::MsgType, void>(chip::Protocols::InteractionModel::MsgType) const		
 text	00000016	chip::PayloadHeader::EncodeSizeBytes() const		
 text	0000004a	chip::PayloadHeader::EncodeBeforeData(chip::System::PacketBufferHandle const&) const		
 text	0000005c	chip::PayloadHeader::Encode(unsigned char*, unsigned short, unsigned short*) const		
@@ -3464,7 +3635,49 @@
 text	0000000c	chip::Ble::BtpEngine::HasUnackedData() const		
 text	00000124	chip::Ble::BtpEngine::LogState() const		
 text	00000014	chip::TLV::TLVReader::ElementType() const		
+text	00000044	chip::TLV::TLVReader::FindElementWithTag(unsigned long long, chip::TLV::TLVReader&) const		
 text	0000002e	chip::TLV::TLVReader::GetType() const		
+text	00000018	chip::TLV::TLVReader::GetLength() const		
+text	00000018	chip::app::ReadClient::GetStateStr() const		
+text	00000032	chip::app::ReportData::Parser::GetEventDataList(chip::app::EventList::Parser*) const		
+text	000001f4	chip::app::ReportData::Parser::CheckSchemaValidity() const		
+text	0000000e	chip::app::ReportData::Parser::GetSuppressResponse(bool*) const		
+text	0000000e	chip::app::ReportData::Parser::GetMoreChunkedMessages(bool*) const		
+text	000000b4	chip::app::CommandList::Parser::CheckSchemaValidity() const		
+text	0000000e	chip::app::CommandPath::Parser::GetClusterId(unsigned short*) const		
+text	0000000e	chip::app::CommandPath::Parser::GetCommandId(unsigned char*) const		
+text	0000000e	chip::app::CommandPath::Parser::GetEndpointId(unsigned char*) const		
+text	00000140	chip::app::CommandPath::Parser::CheckSchemaValidity() const		
+text	00000018	chip::app::ReadHandler::GetStateStr() const		
+text	00000032	chip::app::ReadRequest::Parser::GetEventPathList(chip::app::EventPathList::Parser*) const		
+text	00000184	chip::app::ReadRequest::Parser::CheckSchemaValidity() const		
+text	0000018c	chip::app::AttributePath::Parser::CheckSchemaValidity() const		
+text	000000ac	chip::app::EventPathList::Parser::CheckSchemaValidity() const		
+text	00000032	chip::app::InvokeCommand::Parser::GetCommandList(chip::app::CommandList::Parser*) const		
+text	000000d8	chip::app::InvokeCommand::Parser::CheckSchemaValidity() const		
+text	00000124	chip::app::StatusElement::Parser::CheckSchemaValidity() const		
+text	0000007e	chip::app::StatusElement::Parser::DecodeStatusElement(chip::Protocols::SecureChannel::GeneralStatusCode*, unsigned int*, unsigned short*) const		
+text	0000022c	chip::app::EventDataElement::Parser::CheckSchemaValidity() const		
+text	00000234	chip::app::EventDataElement::Parser::ParseData(chip::TLV::TLVReader&, int) const		
+text	000000b4	chip::app::AttributeDataList::Parser::CheckSchemaValidity() const		
+text	000000ac	chip::app::AttributePathList::Parser::CheckSchemaValidity() const		
+text	00000032	chip::app::CommandDataElement::Parser::GetCommandPath(chip::app::CommandPath::Parser*) const		
+text	00000032	chip::app::CommandDataElement::Parser::GetStatusElement(chip::app::StatusElement::Parser*) const		
+text	00000150	chip::app::CommandDataElement::Parser::CheckSchemaValidity() const		
+text	00000014	chip::app::CommandDataElement::Parser::GetData(chip::TLV::TLVReader*) const		
+text	00000254	chip::app::CommandDataElement::Parser::ParseData(chip::TLV::TLVReader&, int) const		
+text	000000c0	chip::app::AttributeStatusList::Parser::CheckSchemaValidity() const		
+text	0000018c	chip::app::AttributeDataElement::Parser::CheckSchemaValidity() const		
+text	00000234	chip::app::AttributeDataElement::Parser::ParseData(chip::TLV::TLVReader&, int) const		
+text	00000100	chip::app::AttributeStatusElement::Parser::CheckSchemaValidity() const		
+text	00000014	chip::app::InteractionModelEngine::GetReadClientArrayIndex(chip::app::ReadClient const*) const		
+text	000000a4	chip::app::AttributeDataVersionList::Parser::CheckSchemaValidity() const		
+text	00000038	int chip::app::Parser::GetSimpleValue<bool>(unsigned char, chip::TLV::TLVType, bool*) const		
+text	00000038	int chip::app::Parser::GetSimpleValue<unsigned char>(unsigned char, chip::TLV::TLVType, unsigned char*) const		
+text	00000038	int chip::app::Parser::GetSimpleValue<unsigned short>(unsigned char, chip::TLV::TLVType, unsigned short*) const		
+text	00000018	chip::app::Command::GetStateStr() const		
+text	000000c0	chip::app::EventList::Parser::CheckSchemaValidity() const		
+text	00000148	chip::app::EventPath::Parser::CheckSchemaValidity() const		
 text	00000010	chip::Inet::IPAddress::IsIPv6GlobalUnicast() const		
 text	0000001c	chip::Inet::IPAddress::Type() const		
 text	0000000e	chip::Inet::IPAddress::ToIPv6() const		
@@ -3532,6 +3745,10 @@
 text	00000008	non-virtual thunk to chip::RendezvousSession::OnMessageReceived(chip::PacketHeader const&, chip::Transport::PeerAddress const&, chip::System::PacketBufferHandle)		
 text	00000008	non-virtual thunk to chip::RendezvousSession::~RendezvousSession()		
 text	00000008	non-virtual thunk to chip::RendezvousSession::~RendezvousSession()		
+text	00000008	non-virtual thunk to chip::app::CommandSender::OnMessageReceived(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+text	00000008	non-virtual thunk to chip::app::CommandSender::OnResponseTimeout(chip::Messaging::ExchangeContext*)		
+text	00000006	non-virtual thunk to chip::app::CommandSender::~CommandSender()		
+text	00000006	non-virtual thunk to chip::app::CommandSender::~CommandSender()		
 text	00000002	non-virtual thunk to chip::DeviceLayer::Internal::BLEManagerImpl::NotifyChipConnectionClosed(bt_conn*)		
 text	00000006	non-virtual thunk to chip::DeviceLayer::Internal::BLEManagerImpl::~BLEManagerImpl()		
 text	00000004	non-virtual thunk to chip::DeviceLayer::Internal::BLEManagerImpl::~BLEManagerImpl()		

The CheckSchemaValidity functions costs 5236 bytes, which won't be included in release builds.

@bzbarsky-apple
Copy link
Contributor

The CheckSchemaValidity functions costs 5236 bytes, which won't be included in release builds.

What is the definition of "release builds" used here? Is this tied to some build configuration or just to the CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK macro?

I should note that setting CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK to 0 makes the tree not build....

As far as codesize goes, is this also turning off the non-IM command parsing bits? i.e. is this 37KB increase a net increase, or is there code removal that still needs to happen?

We should also look into the 5KB+ RAM increase...

@erjiaqing
Copy link
Contributor Author

The CheckSchemaValidity functions costs 5236 bytes, which won't be included in release builds.

What is the definition of "release builds" used here? Is this tied to some build configuration or just to the CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK macro?

I should note that setting CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK to 0 makes the tree not build....

As far as codesize goes, is this also turning off the non-IM command parsing bits? i.e. is this 37KB increase a net increase, or is there code removal that still needs to happen?

We should also look into the 5KB+ RAM increase...

According to the size report,
esp32 one contains lots of clusters, and maybe cluster dispatching code used lots of code size. I will disable related part of ember library so we can see the net size increase of replacing ember dispatching code.

I also noticed that esp32 build and nrf5 build has almost the same bss seg size increase, I will dump bss segment sym table to find the differences.

As for CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK, I found some references to SchemaCheck is not wrapped in this macro, I will try to get the code build without SchemaCheck.

@bzbarsky-apple
Copy link
Contributor

Good point about the 37KB codesize being for all-clusters-app and that the codesize on the small lock/lighting apps is smaller, at only 17KB. If 5KB of that is CheckSchemaValidity then we're looking at 12KB of other code, but with a lot of clusters still to be added to those configurations (e.g. most of the CHIP-required utility clusters are not in yet, afaict), right?

@erjiaqing
Copy link
Contributor Author

erjiaqing commented Apr 13, 2021

Just checked that the message decoding for clusters contributes ~19k for esp32:

+.flash.text	0000131e	chip::app::clusters::ColorControl::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	000007de	chip::app::clusters::LevelControl::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	0000011a	chip::app::clusters::BarrierControl::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	000002f2	chip::app::clusters::GeneralCommissioning::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	00000a4e	chip::app::clusters::NetworkCommissioning::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	00000036	chip::app::clusters::Basic::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	0000005b	chip::app::clusters::OnOff::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	00000452	chip::app::clusters::Groups::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	000006e2	chip::app::clusters::Scenes::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	000002b6	chip::app::clusters::Binding::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	0000013a	chip::app::clusters::IasZone::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	00001256	chip::app::clusters::DoorLock::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	0000011a	chip::app::clusters::Identify::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	0000003e	chip::app::clusters::LowPower::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)

One reason is that we introduced many checks for the values in TLV, which is not included in ember library.

@mspang
Copy link
Contributor

mspang commented Apr 13, 2021

The CheckSchemaValidity functions costs 5236 bytes, which won't be included in release builds.

What is the definition of "release builds" used here? Is this tied to some build configuration or just to the CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK macro?

release meaning !is_debug

I should note that setting CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK to 0 makes the tree not build....

As far as codesize goes, is this also turning off the non-IM command parsing bits? i.e. is this 37KB increase a net increase, or is there code removal that still needs to happen?

We should also look into the 5KB+ RAM increase...

@erjiaqing erjiaqing force-pushed the im-enable-default branch 2 times, most recently from 3048cb0 to c53ef69 Compare April 14, 2021 08:53
@erjiaqing
Copy link
Contributor Author

erjiaqing commented Apr 14, 2021

Current symbol & size change
+.flash.text	0000000b	_GLOBAL__sub_D__ZN4chip3app23sInteractionModelEngineE		
+.flash.text	0000000b	_GLOBAL__sub_I__ZN4chip3app23sInteractionModelEngineE		
-.flash.text	0000027b	InitServer(AppDelegate*)		
+.flash.text	0000028b	InitServer(AppDelegate*)		
-.flash.text	00000014	emberAfGetInt32u(unsigned char const*, unsigned short, unsigned short)		
-.flash.text	00000016	emberAfGetInt64u(unsigned char const*, unsigned short, unsigned short)		
-.flash.text	00000033	emberAfGetString(unsigned char*, unsigned short, unsigned short)		
-.flash.text	00000086	SetWiFiStationProvisioning(char const*, char const*)		
+.flash.text	0000008a	SetWiFiStationProvisioning(char const*, char const*)		
-.flash.text	0000001e	emberAfContainsClientWithMfgCode(unsigned char, unsigned short, unsigned short)		
-.flash.text	0000001d	emberAfContainsServerWithMfgCode(unsigned char, unsigned short, unsigned short)		
-.flash.text	00000042	emAfProcessClusterSpecificCommand(EmberAfClusterCommand*)		
+.flash.text	0000003c	emAfProcessClusterSpecificCommand(EmberAfClusterCommand*)		
-.flash.text	00000184	emberAfClusterSpecificCommandParse(EmberAfClusterCommand*)		
-.flash.text	00000034	emberAfBasicClusterServerCommandParse(EmberAfClusterCommand*)		
-.flash.text	00000048	emberAfOnOffClusterServerCommandParse(EmberAfClusterCommand*)		
-.flash.text	00000100	emberAfGroupsClusterServerCommandParse(EmberAfClusterCommand*)		
-.flash.text	00000190	emberAfScenesClusterServerCommandParse(EmberAfClusterCommand*)		
-.flash.text	00000090	emberAfSendDefaultResponseWithCallback(EmberAfClusterCommand const*, EmberAfStatus, void (*)(unsigned char, unsigned long long, EmberApsFrame*, unsigned short, unsigned char*, unsigned char))		
+.flash.text	0000008c	emberAfSendDefaultResponseWithCallback(EmberAfClusterCommand const*, EmberAfStatus, void (*)(unsigned char, unsigned long long, EmberApsFrame*, unsigned short, unsigned char*, unsigned char))		
-.flash.text	000000e5	emberAfBindingClusterServerCommandParse(EmberAfClusterCommand*)		
-.flash.text	0000004c	emberAfIasZoneClusterServerCommandParse(EmberAfClusterCommand*)		
-.flash.text	0000044d	emberAfDoorLockClusterServerCommandParse(EmberAfClusterCommand*)		
-.flash.text	00000050	emberAfIdentifyClusterServerCommandParse(EmberAfClusterCommand*)		
-.flash.text	0000002e	emberAfLowPowerClusterServerCommandParse(EmberAfClusterCommand*)		
-.flash.text	00000014	emberAfBasicClusterMfgSpecificPingCallback()		
-.flash.text	00000564	emberAfColorControlClusterServerCommandParse(EmberAfClusterCommand*)		
-.flash.text	000001e4	emberAfLevelControlClusterServerCommandParse(EmberAfClusterCommand*)		
-.flash.text	00000050	emberAfBarrierControlClusterServerCommandParse(EmberAfClusterCommand*)		
-.flash.text	0000011c	emberAfGeneralCommissioningClusterServerCommandParse(EmberAfClusterCommand*)		
-.flash.text	000003fc	emberAfNetworkCommissioningClusterServerCommandParse(EmberAfClusterCommand*)		
-.flash.text	00000032	emberAfNetworkCommissioningClusterAddThreadNetworkCallback(chip::Span<unsigned char>, unsigned long long, unsigned int)		
+.flash.text	0000002e	emberAfNetworkCommissioningClusterAddThreadNetworkCallback(chip::Span<unsigned char>, unsigned long long, unsigned int)		
+.flash.text	0000001c	chip::TLV::IsContextTag(unsigned long long)		
+.flash.text	0000003a	chip::TLV::TLVReader::GetDataPtr(unsigned char const*&)		
+.flash.text	00000023	chip::TLV::TLVReader::Get(bool&)		
+.flash.text	0000001d	chip::TLV::TLVReader::Get(unsigned char&)		
+.flash.text	0000001d	chip::TLV::TLVReader::Get(short&)		
+.flash.text	00000041	chip::TLV::TLVReader::Init(chip::TLV::TLVReader const&)		
+.flash.text	00000025	chip::TLV::TLVWriter::PutBoolean(unsigned long long, bool)		
+.flash.text	00000036	chip::TLV::TLVWriter::EndContainer(chip::TLV::TLVType)		
+.flash.text	0000004e	chip::TLV::TLVWriter::StartContainer(unsigned long long, chip::TLV::TLVType, chip::TLV::TLVType&)		
+.flash.text	00000018	chip::TLV::TLVWriter::Put(unsigned long long, unsigned char)		
+.flash.text	00000014	chip::TLV::TLVWriter::Put(unsigned long long, unsigned int)		
+.flash.text	00000018	chip::TLV::TLVWriter::Put(unsigned long long, unsigned short)		
+.flash.text	00000036	chip::TLV::TLVWriter::Init(chip::TLV::TLVBackingStore&, unsigned int)		
-.flash.text	00000007	chip::app::Compatibility::IMEmberAfSendDefaultResponseWithCallback(EmberAfStatus)		
+.flash.text	00000026	chip::app::ListParser::Init(chip::TLV::TLVReader const&)		
+.flash.text	0000000a	chip::app::ListParser::ListParser()		
+.flash.text	0000000a	chip::app::ListParser::ListParser()		
+.flash.text	00000027	chip::app::ReadClient::MoveToState(chip::app::ReadClient::ClientState)		
+.flash.text	00000062	chip::app::ReadClient::OnMessageReceived(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+.flash.text	00000030	chip::app::ReadClient::OnResponseTimeout(chip::Messaging::ExchangeContext*)		
+.flash.text	000000f2	chip::app::ReadClient::ProcessReportData(chip::System::PacketBufferHandle)		
+.flash.text	00000015	chip::app::ReadClient::ClearExistingExchangeContext()		
+.flash.text	0000000f	chip::app::ReadClient::~ReadClient()		
+.flash.text	00000005	chip::app::ReadClient::~ReadClient()		
+.flash.text	00000005	chip::app::ReadClient::~ReadClient()		
+.flash.text	00000026	chip::app::ReportData::Parser::Init(chip::TLV::TLVReader const&)		
+.flash.text	0000000a	chip::app::ReportData::Builder::EndOfReportData()		
+.flash.text	0000001c	chip::app::ReportData::Builder::MoreChunkedMessages(bool)		
+.flash.text	00000011	chip::app::ReportData::Builder::Init(chip::TLV::TLVWriter*)		
+.flash.text	0000000a	chip::app::CommandList::Builder::EndOfCommandList()		
+.flash.text	00000024	chip::app::CommandList::Builder::CreateCommandDataElementBuilder()		
+.flash.text	00000026	chip::app::CommandPath::Parser::Init(chip::TLV::TLVReader const&)		
+.flash.text	0000001c	chip::app::CommandPath::Builder::EndpointId(unsigned char)		
+.flash.text	0000000a	chip::app::CommandPath::Builder::EndOfCommandPath()		
+.flash.text	00000016	chip::app::CommandPath::Builder::Init(chip::TLV::TLVWriter*, unsigned char)		
+.flash.text	0000001b	chip::app::CommandPath::Builder::_Init(chip::TLV::TLVWriter*, unsigned long long)		
+.flash.text	0000001c	chip::app::CommandPath::Builder::GroupId(unsigned short)		
+.flash.text	0000001c	chip::app::CommandPath::Builder::ClusterId(unsigned short)		
+.flash.text	0000001c	chip::app::CommandPath::Builder::CommandId(unsigned char)		
+.flash.text	0000001c	chip::app::ListBuilder::Init(chip::TLV::TLVWriter*, unsigned char)		
+.flash.text	0000000a	chip::app::ListBuilder::ListBuilder()		
+.flash.text	0000000a	chip::app::ListBuilder::ListBuilder()		
+.flash.text	0000001a	chip::app::ReadHandler::MoveToState(chip::app::ReadHandler::HandlerState)		
+.flash.text	0000002e	chip::app::ReadHandler::OnReadRequest(chip::Messaging::ExchangeContext*, chip::System::PacketBufferHandle)		
+.flash.text	0000003a	chip::app::ReadHandler::SendReportData(chip::System::PacketBufferHandle)		
+.flash.text	000000f7	chip::app::ReadHandler::ProcessReadRequest(chip::System::PacketBufferHandle)		
+.flash.text	00000015	chip::app::ReadHandler::ClearExistingExchangeContext()		
+.flash.text	00000022	chip::app::ReadHandler::Init(chip::app::InteractionModelDelegate*)		
+.flash.text	00000018	chip::app::ReadHandler::Shutdown()		
+.flash.text	0000000f	chip::app::ReadHandler::~ReadHandler()		
+.flash.text	00000005	chip::app::ReadHandler::~ReadHandler()		
+.flash.text	00000005	chip::app::ReadHandler::~ReadHandler()		
+.flash.text	00000026	chip::app::ReadRequest::Parser::Init(chip::TLV::TLVReader const&)		
+.flash.text	0000006a	chip::app::CommandSender::OnMessageReceived(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+.flash.text	0000002b	chip::app::CommandSender::OnResponseTimeout(chip::Messaging::ExchangeContext*)		
+.flash.text	00000107	chip::app::CommandSender::ProcessCommandDataElement(chip::app::CommandDataElement::Parser&)		
+.flash.text	00000012	chip::app::CommandSender::~CommandSender()		
+.flash.text	00000012	chip::app::CommandSender::~CommandSender()		
+.flash.text	00000012	chip::app::CommandSender::~CommandSender()		
+.flash.text	00000011	chip::app::Compatibility::ResetEmberAfObjects()		
+.flash.text	00000054	chip::app::Compatibility::SetupEmberAfObjects(chip::app::Command*, unsigned short, unsigned char, unsigned char)		
+.flash.text	0000005a	chip::app::Compatibility::IMEmberAfSendDefaultResponseWithCallback(EmberAfStatus)		
+.flash.text	00000026	chip::app::InvokeCommand::Parser::Init(chip::TLV::TLVReader const&)		
+.flash.text	0000000a	chip::app::InvokeCommand::Builder::EndOfInvokeCommand()		
+.flash.text	00000007	chip::app::InvokeCommand::Builder::GetCommandListBuilder()		
+.flash.text	00000026	chip::app::InvokeCommand::Builder::CreateCommandListBuilder()		
+.flash.text	00000011	chip::app::InvokeCommand::Builder::Init(chip::TLV::TLVWriter*)		
+.flash.text	00000026	chip::app::StatusElement::Parser::Init(chip::TLV::TLVReader const&)		
+.flash.text	0000000a	chip::app::StatusElement::Builder::EndOfStatusElement()		
+.flash.text	00000040	chip::app::StatusElement::Builder::EncodeStatusElement(chip::Protocols::SecureChannel::GeneralStatusCode, unsigned int, unsigned short)		
+.flash.text	00000014	chip::app::StatusElement::Builder::Init(chip::TLV::TLVWriter*, unsigned char)		
+.flash.text	00000086	chip::app::CommandHandler::AddStatusCode(chip::app::Command::CommandParams const*, chip::Protocols::SecureChannel::GeneralStatusCode, chip::Protocols::Id, unsigned short)		
+.flash.text	00000022	chip::app::CommandHandler::OnMessageReceived(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+.flash.text	00000055	chip::app::CommandHandler::SendCommandResponse()		
+.flash.text	000000a4	chip::app::CommandHandler::ProcessCommandDataElement(chip::app::CommandDataElement::Parser&)		
+.flash.text	00000012	chip::app::CommandHandler::~CommandHandler()		
+.flash.text	00000012	chip::app::CommandHandler::~CommandHandler()		
+.flash.text	00000012	chip::app::CommandHandler::~CommandHandler()		
+.flash.text	00000026	chip::app::CommandDataElement::Parser::Init(chip::TLV::TLVReader const&)		
+.flash.text	0000000a	chip::app::CommandDataElement::Builder::EndOfCommandDataElement()		
+.flash.text	00000026	chip::app::CommandDataElement::Builder::CreateCommandPathBuilder()		
+.flash.text	00000026	chip::app::CommandDataElement::Builder::CreateStatusElementBuilder()		
+.flash.text	00000011	chip::app::CommandDataElement::Builder::Init(chip::TLV::TLVWriter*)		
+.flash.text	00000008	chip::app::InteractionModelEngine::GetInstance()		
+.flash.text	00000050	chip::app::InteractionModelEngine::OnReadRequest(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+.flash.text	0000001a	chip::app::InteractionModelEngine::OnUnknownMsgType(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+.flash.text	00000064	chip::app::InteractionModelEngine::OnMessageReceived(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+.flash.text	00000012	chip::app::InteractionModelEngine::OnResponseTimeout(chip::Messaging::ExchangeContext*)		
+.flash.text	0000003b	chip::app::InteractionModelEngine::OnInvokeCommandRequest(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+.flash.text	00000030	chip::app::InteractionModelEngine::Init(chip::Messaging::ExchangeManager*, chip::app::InteractionModelDelegate*)		
+.flash.text	0000005d	chip::app::InteractionModelEngine::InteractionModelEngine()		
+.flash.text	0000005d	chip::app::InteractionModelEngine::InteractionModelEngine()		
+.flash.text	00000012	chip::app::InteractionModelEngine::~InteractionModelEngine()		
+.flash.text	0000002c	chip::app::InteractionModelEngine::~InteractionModelEngine()		
+.flash.text	0000002c	chip::app::InteractionModelEngine::~InteractionModelEngine()		
+.flash.text	000001dc	chip::app::DispatchSingleClusterCommand(unsigned short, unsigned char, unsigned char, chip::TLV::TLVReader&, chip::app::Command*)		
+.flash.text	0000000f	chip::app::Parser::GetReader(chip::TLV::TLVReader*)		
+.flash.text	00000009	chip::app::Parser::Parser()		
+.flash.text	00000009	chip::app::Parser::Parser()		
+.flash.text	0000000b	chip::app::Builder::ResetError(int)		
+.flash.text	0000001b	chip::app::Builder::EndOfContainer()		
+.flash.text	0000001e	chip::app::Builder::InitAnonymousStructure(chip::TLV::TLVWriter*)		
+.flash.text	00000012	chip::app::Builder::Builder()		
+.flash.text	00000012	chip::app::Builder::Builder()		
+.flash.text	0000001b	chip::app::Command::MoveToState(chip::app::Command::CommandState)		
+.flash.text	00000008	chip::app::Command::AddStatusCode(chip::app::Command::CommandParams const*, chip::Protocols::SecureChannel::GeneralStatusCode, chip::Protocols::Id, unsigned short)
+.flash.text	00000048	chip::app::Command::ConstructCommandPath(chip::app::Command::CommandParams const&, chip::app::CommandDataElement::Builder&)		
+.flash.text	000000e0	chip::app::Command::ProcessCommandMessage(chip::System::PacketBufferHandle&&, chip::app::Command::CommandRoleId)		
+.flash.text	0000005f	chip::app::Command::FinalizeCommandsMessage()		
+.flash.text	00000014	chip::app::Command::ClearExistingExchangeContext()		
+.flash.text	00000024	chip::app::Command::Init(chip::Messaging::ExchangeManager*, chip::app::InteractionModelDelegate*)		
+.flash.text	000000a0	chip::app::Command::Reset()		
+.flash.text	0000003e	chip::app::Command::Shutdown()		
+.flash.text	00000064	chip::app::Command::Command()		
+.flash.text	00000064	chip::app::Command::Command()		
+.flash.text	00000012	chip::app::Command::~Command()		
+.flash.text	0000002d	chip::app::Command::~Command()		
+.flash.text	0000002d	chip::app::Command::~Command()		
+.flash.text	00000d2f	chip::app::clusters::ColorControl::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	00000643	chip::app::clusters::LevelControl::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	0000011e	chip::app::clusters::BarrierControl::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	0000028b	chip::app::clusters::GeneralCommissioning::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	000008fe	chip::app::clusters::NetworkCommissioning::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	00000036	chip::app::clusters::Basic::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	0000005b	chip::app::clusters::OnOff::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	0000044a	chip::app::clusters::Groups::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	00000606	chip::app::clusters::Scenes::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	00000257	chip::app::clusters::Binding::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	0000011b	chip::app::clusters::IasZone::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	0000107a	chip::app::clusters::DoorLock::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	0000011e	chip::app::clusters::Identify::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	0000003e	chip::app::clusters::LowPower::DispatchServerCommand(chip::app::Command*, unsigned char, unsigned char, chip::TLV::TLVReader&)		
+.flash.text	00000026	chip::app::EventPath::Parser::Init(chip::TLV::TLVReader const&)		
+.flash.text	0000002e	chip::app::reporting::Engine::SendReport(chip::app::ReadHandler*, chip::System::PacketBufferHandle&&)		
+.flash.text	00000024	chip::app::reporting::Engine::ScheduleRun()		
+.flash.text	00000020	chip::app::reporting::Engine::OnReportConfirm()		
+.flash.text	000001ae	chip::app::reporting::Engine::BuildAndSendSingleReportData(chip::app::ReadHandler*)		
+.flash.text	0000000a	chip::app::reporting::Engine::Run(chip::System::Layer*, void*, int)		
+.flash.text	00000030	chip::app::reporting::Engine::Run()		
+.flash.text	00000012	chip::app::reporting::Engine::Init()		
+.flash.text	00000010	_ZN4chip6System18PacketBufferHandleaSEDn$isra$0		
+.flash.text	00000010	_ZN4chip6System18PacketBufferHandleaSEDn$isra$0		
+.flash.text	00000010	_ZN4chip6System18PacketBufferHandleaSEDn$isra$1		
+.flash.text	00000010	_ZN4chip6System18PacketBufferHandleaSEDn$isra$1		
+.flash.text	00000010	_ZN4chip6System18PacketBufferHandleaSEDn$isra$1		
+.flash.text	00000010	_ZN4chip6System18PacketBufferHandleaSEDn$isra$3		
+.flash.text	00000014	_ZN4chip6System18PacketBufferHandleaSEOS1_$isra$0		
+.flash.text	00000014	_ZN4chip6System18PacketBufferHandleaSEOS1_$isra$2		
+.flash.text	00000027	chip::System::TLVPacketBufferBackingStore::Init(chip::System::PacketBufferHandle&&, bool)		
+.flash.text	00000021	chip::Messaging::ExchangeContext::Abort()		
+.flash.text	00000026	bool chip::PayloadHeader::HasMessageType<chip::Protocols::InteractionModel::MsgType, void>(chip::Protocols::InteractionModel::MsgType) const		
+.flash.text	00000036	chip::TLV::TLVReader::FindElementWithTag(unsigned long long, chip::TLV::TLVReader&) const		
+.flash.text	00000019	chip::TLV::TLVReader::GetLength() const		
+.flash.text	00000017	chip::app::ReadClient::GetStateStr() const		
+.flash.text	0000002e	chip::app::ReportData::Parser::GetEventDataList(chip::app::EventList::Parser*) const		
+.flash.text	00000015	chip::app::ReportData::Parser::GetSuppressResponse(bool*) const		
+.flash.text	00000015	chip::app::ReportData::Parser::GetMoreChunkedMessages(bool*) const		
+.flash.text	00000015	chip::app::CommandPath::Parser::GetClusterId(unsigned short*) const		
+.flash.text	00000015	chip::app::CommandPath::Parser::GetCommandId(unsigned char*) const		
+.flash.text	00000015	chip::app::CommandPath::Parser::GetEndpointId(unsigned char*) const		
+.flash.text	00000017	chip::app::ReadHandler::GetStateStr() const		
+.flash.text	0000002e	chip::app::ReadRequest::Parser::GetEventPathList(chip::app::EventPathList::Parser*) const		
+.flash.text	0000002e	chip::app::InvokeCommand::Parser::GetCommandList(chip::app::CommandList::Parser*) const		
+.flash.text	00000069	chip::app::StatusElement::Parser::DecodeStatusElement(chip::Protocols::SecureChannel::GeneralStatusCode*, unsigned int*, unsigned short*) const		
+.flash.text	0000002e	chip::app::CommandDataElement::Parser::GetCommandPath(chip::app::CommandPath::Parser*) const		
+.flash.text	0000002e	chip::app::CommandDataElement::Parser::GetStatusElement(chip::app::StatusElement::Parser*) const		
+.flash.text	00000014	chip::app::CommandDataElement::Parser::GetData(chip::TLV::TLVReader*) const		
+.flash.text	00000019	chip::app::InteractionModelEngine::GetReadClientArrayIndex(chip::app::ReadClient const*) const		
+.flash.text	00000030	int chip::app::Parser::GetSimpleValue<bool>(unsigned char, chip::TLV::TLVType, bool*) const		
+.flash.text	00000030	int chip::app::Parser::GetSimpleValue<unsigned char>(unsigned char, chip::TLV::TLVType, unsigned char*) const		
+.flash.text	00000030	int chip::app::Parser::GetSimpleValue<unsigned short>(unsigned char, chip::TLV::TLVType, unsigned short*) const		
+.flash.text	00000018	chip::app::Command::GetStateStr() const		
+.flash.text	00000018	non-virtual thunk to chip::app::CommandSender::OnMessageReceived(chip::Messaging::ExchangeContext*, chip::PacketHeader const&, chip::PayloadHeader const&, chip::System::PacketBufferHandle)		
+.flash.text	00000012	non-virtual thunk to chip::app::CommandSender::OnResponseTimeout(chip::Messaging::ExchangeContext*)		
+.flash.text	0000000e	non-virtual thunk to chip::app::CommandSender::~CommandSender()		
+.flash.text	0000000e	non-virtual thunk to chip::app::CommandSender::~CommandSender()		
-.flash.text	00000034	_os_mbuf_copypkthdr		
+.flash.text	00000038	_os_mbuf_copypkthdr		
-.flash.text	0000003b	ble_hci_trans_buf_alloc		
-.flash.text	00000080	ble_hci_trans_buf_free		
+.flash.text	0000003e	ble_hci_trans_buf_alloc		
+.flash.text	00000084	ble_hci_trans_buf_free		
-.flash.text	000000f2	ble_hs_conn_addrs		
+.flash.text	000000f6	ble_hs_conn_addrs		
-.flash.text	000000ac	ble_svc_gap_access		
+.flash.text	000000b0	ble_svc_gap_access		
-.flash.text	00000036	ble_svc_gap_init		
-.flash.text	00000052	ble_svc_gatt_access		
-.flash.text	00000036	ble_svc_gatt_init		
+.flash.text	00000037	ble_svc_gap_init		
+.flash.text	00000056	ble_svc_gatt_access		
+.flash.text	00000037	ble_svc_gatt_init		
-.flash.text	0000016d	esp_bt_controller_init		
+.flash.text	00000171	esp_bt_controller_init		
-.flash.text	00000155	esp_nimble_hci_init		
+.flash.text	00000159	esp_nimble_hci_init		
-.flash.text	000000fe	host_rcv_pkt		
+.flash.text	00000102	host_rcv_pkt		
-.flash.text	00000064	npl_freertos_eventq_get		
-.flash.text	00000058	npl_freertos_eventq_put		
+.flash.text	00000067	npl_freertos_eventq_get		
+.flash.text	0000005b	npl_freertos_eventq_put		
-.flash.text	0000006e	npl_freertos_sem_pend		
+.flash.text	00000072	npl_freertos_sem_pend		
-.flash.text	00000036	os_callout_timer_cb		
+.flash.text	0000003a	os_callout_timer_cb		
-.flash.text	00000046	os_msys_init		
+.flash.text	0000004a	os_msys_init		
-.flash.text	000001de	ram_spur_coef_cfg		
+.flash.text	000001e6	ram_spur_coef_cfg

@erjiaqing erjiaqing force-pushed the im-enable-default branch 2 times, most recently from 1245007 to 62224ca Compare April 14, 2021 09:56
@erjiaqing erjiaqing force-pushed the im-enable-default branch from 9ec6caf to 66a4bab Compare May 11, 2021 06:06
Copy link
Contributor

@vivien-apple vivien-apple left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As discussed, there is a few commands/responses not working yet, notably because of strings/arrays but those sounds good as followups.

@vivien-apple
Copy link
Contributor

Requesting changes per @vivien-apple 's feedback.

This is fine for me now.

@vivien-apple vivien-apple dismissed woody-apple’s stale review May 11, 2021 09:44

This is OK for me now.

@erjiaqing
Copy link
Contributor Author

erjiaqing commented May 11, 2021

@andy31415 @woody-apple conflict resolved, PTAL, thanks.

@@ -80,6 +82,28 @@ using namespace ::chip;
return true; \
}

#define GET_CLUSTER_RESPONSE_CALLBACKS(name) \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why does this need to be a macro?

@andy31415 andy31415 merged commit 80120a2 into project-chip:master May 11, 2021
@github-actions
Copy link

Size increase report for "nrfconnect-example-build" from 934c876

File Section File VM
chip-lock.elf text 13444 13444
chip-lock.elf rodata 1832 1832
chip-lock.elf bss 0 740
chip-lock.elf init_array 8 8
chip-lock.elf [LOAD #3 [RW]] 0 -4
chip-lock.elf device_handles -12 -12
chip-lighting.elf text 14460 14460
chip-lighting.elf rodata 1840 1844
chip-lighting.elf bss 0 740
chip-lighting.elf device_handles 12 12
chip-lighting.elf init_array 8 8
chip-lighting.elf [LOAD #3 [RW]] 0 -4
Full report output
BLOAT REPORT

Files found only in the build output:
    report.csv

Comparing ./master_artifact/chip-shell.elf and ./pull_artifact/chip-shell.elf:

sections,vmsize,filesize

Comparing ./master_artifact/chip-lock.elf and ./pull_artifact/chip-lock.elf:

sections,vmsize,filesize
.debug_info,0,1003796
.debug_line,0,140162
.debug_abbrev,0,93054
.debug_loc,0,60290
.debug_str,0,42358
.strtab,0,15859
text,13444,13444
.symtab,0,10032
.debug_ranges,0,9408
.debug_frame,0,8988
.debug_aranges,0,3136
rodata,1832,1832
bss,740,0
init_array,8,8
.shstrtab,0,1
[LOAD #3 [RW]],-4,0
device_handles,-12,-12

Comparing ./master_artifact/chip-lighting.elf and ./pull_artifact/chip-lighting.elf:

sections,vmsize,filesize
.debug_info,0,1712844
.debug_line,0,147566
.debug_abbrev,0,102750
.debug_loc,0,61961
.debug_str,0,42291
.strtab,0,15881
text,14460,14460
.symtab,0,10208
.debug_ranges,0,10040
.debug_frame,0,8996
.debug_aranges,0,3136
rodata,1844,1840
bss,740,0
device_handles,12,12
init_array,8,8
.shstrtab,0,3
[LOAD #3 [RW]],-4,0


bzbarsky-apple added a commit to bzbarsky-apple/connectedhomeip that referenced this pull request May 15, 2021
This used to be enabled but was disabled for some reaason in project-chip#5945.  There's no obvious reason to disable this.
andy31415 pushed a commit that referenced this pull request May 17, 2021
This used to be enabled but was disabled for some reaason in #5945.  There's no obvious reason to disable this.
mspang added a commit to mspang/connectedhomeip that referenced this pull request Jun 8, 2021
As of 80120a20 ("[im] Always use interaction model to send commands
(project-chip#5945)"), this build is equivalent to the clang build. Add
--fail-on-unused-args to gn_gen.sh to avoid this happening again.
andy31415 pushed a commit that referenced this pull request Jun 9, 2021
As of 80120a20 ("[im] Always use interaction model to send commands
(#5945)"), this build is equivalent to the clang build. Add
--fail-on-unused-args to gn_gen.sh to avoid this happening again.
nikita-s-wrk pushed a commit to nikita-s-wrk/connectedhomeip that referenced this pull request Sep 23, 2021
As of 80120a20 ("[im] Always use interaction model to send commands
(project-chip#5945)"), this build is equivalent to the clang build. Add
--fail-on-unused-args to gn_gen.sh to avoid this happening again.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Update ember command handlers for encode IM responses