Compiler individual stack frames; not runtime call-chain/heap peak.
target-build/libraries/MaterialTagCore/material_tag_store.c.su
material_tag_store.c:4:13:put32	0	static
material_tag_store.c:7:17:get32	0	static
material_tag_store.c:10:17:crc	12	static
material_tag_store.c:18:17:checksum	8	static
material_tag_store.c:30:13:nul_at	8	static
material_tag_store.c:33:13:command_strings	8	static
material_tag_store.c:21:6:mt_store_pack	16	static
material_tag_store.c:43:6:mt_store_unpack	40	static
material_tag_store.c:82:6:mt_store_reboot	24	static

target-build/libraries/MaterialTagCore/material_tag.c.su
material_tag.c:10:13:bounded_string	16	static
material_tag.c:67:18:reserve_event.part.0	64	static
material_tag.c:87:11:mt_init	24	static
material_tag.c:100:11:mt_apply_command	104	static
material_tag.c:133:11:mt_display_complete	24	static
material_tag.c:150:11:mt_button_press	40	static
material_tag.c:170:6:mt_tick	0	static
material_tag.c:175:11:mt_next_event	16	static
material_tag.c:197:11:mt_ack_event	32	static
material_tag.c:210:8:mt_queue_count	0	static
material_tag.c:217:13:mt_result_name	0	static

target-build/sketch/material_tag.ino.cpp.su
nrf_soc.h:495:1:uint32_t sd_rand_application_vector_get(uint8_t*, uint8_t)	0	static
nrf_sdm.h:350:1:uint32_t sd_softdevice_is_enabled(uint8_t*)	0	static
Print.h:61:17:virtual int Print::availableForWrite()	0	static
ble_gap.h:2030:1:uint32_t sd_ble_gap_disconnect(uint16_t, uint8_t)	0	static
GxEPD2_EPD.h:86:18:virtual void GxEPD2_EPD::writeDemoBitmap(const uint8_t*, const uint8_t*, int16_t, int16_t, int16_t, int16_t, int16_t, bool, bool)	0	static
GxEPD2_EPD.h:87:18:virtual void GxEPD2_EPD::drawDemoBitmap(const uint8_t*, const uint8_t*, int16_t, int16_t, int16_t, int16_t, int16_t, bool, bool)	0	static
GxEPD2_EPD.h:92:18:virtual void GxEPD2_EPD::setPaged()	0	static
GxEPD2_EPD.h:93:18:virtual void GxEPD2_EPD::selectFastFullUpdate(bool)	0	static
GxEPD2_EPD.h:94:18:virtual void GxEPD2_EPD::drawNativeColors()	0	static
U8g2_for_Adafruit_GFX.h:213:12:virtual size_t U8G2_FOR_ADAFRUIT_GFX::write(const uint8_t*, size_t)	24	static
material_tag.ino:106:6:void pairComplete(uint16_t, uint8_t)	0	static
material_tag.ino:109:6:void rxOverflow(uint16_t, uint16_t)	0	static
GxEPD2_BW.h:349:10:void GxEPD2_BW<GxEPD2_Type, page_height>::fillScreen(uint16_t) [with GxEPD2_Type = MonitoredPanel; short unsigned int page_height = 296]	0	static
StaticJsonDocument.hpp:13:7:ArduinoJson::V6215PB2::StaticJsonDocument<2048>::~StaticJsonDocument()	0	static
StaticJsonDocument.hpp:13:7:ArduinoJson::V6215PB2::StaticJsonDocument<1024>::~StaticJsonDocument()	0	static
GxEPD2_BW.h:272:10:void GxEPD2_BW<GxEPD2_Type, page_height>::drawPixel(int16_t, int16_t, uint16_t) [with GxEPD2_Type = MonitoredPanel; short unsigned int page_height = 296]	20	static
U8g2_for_Adafruit_GFX.h:178:12:virtual size_t U8G2_FOR_ADAFRUIT_GFX::write(uint8_t)	8	static
material_tag.ino:201:6:void busyCallback(const void*)	16	static
pgmspace_generic.hpp:59:5:T ArduinoJson::V6215PB2::detail::pgm_ptr<T>::operator[](intptr_t) const [with T = double]	8	static
ConverterImpl.hpp:130:15:static void ArduinoJson::V6215PB2::Converter<const char*>::toJson(const char*, ArduinoJson::V6215PB2::JsonVariant)	16	static
VariantSlot.hpp:40:16:ArduinoJson::V6215PB2::detail::VariantSlot* ArduinoJson::V6215PB2::detail::VariantSlot::next()	0	static
CollectionImpl.hpp:78:21:ArduinoJson::V6215PB2::detail::VariantSlot* ArduinoJson::V6215PB2::detail::CollectionData::getSlot(TAdaptedString) const [with TAdaptedString = ArduinoJson::V6215PB2::detail::StaticStringAdapter]	24	static
JsonObjectConst.hpp:130:30:const ArduinoJson::V6215PB2::detail::VariantData* ArduinoJson::V6215PB2::JsonObjectConst::getMember(TAdaptedString) const [with TAdaptedString = ArduinoJson::V6215PB2::detail::StaticStringAdapter]	0	static
MemoryPool.hpp:98:15:const char* ArduinoJson::V6215PB2::detail::MemoryPool::saveStringFromFreeZone(size_t)	16	static
JsonDocument.hpp:42:8:void ArduinoJson::V6215PB2::JsonDocument::clear()	0	static
CollectionImpl.hpp:14:21:ArduinoJson::V6215PB2::detail::VariantSlot* ArduinoJson::V6215PB2::detail::CollectionData::addSlot(ArduinoJson::V6215PB2::detail::MemoryPool*)	8	static
ConverterImpl.hpp:134:22:static const char* ArduinoJson::V6215PB2::Converter<const char*>::fromJson(ArduinoJson::V6215PB2::JsonVariantConst)	0	static
ConverterImpl.hpp:139:15:static bool ArduinoJson::V6215PB2::Converter<const char*>::checkJson(ArduinoJson::V6215PB2::JsonVariantConst)	0	static
parseNumber.hpp:21:13:bool ArduinoJson::V6215PB2::detail::parseNumber(const char*, ArduinoJson::V6215PB2::detail::VariantData&)	40	static
StringCopier.hpp:15:8:void ArduinoJson::V6215PB2::detail::StringCopier::startString()	0	static
StringCopier.hpp:39:8:void ArduinoJson::V6215PB2::detail::StringCopier::append(char)	8	static
material_tag.ino:61:6:bool bleReady()	8	static
material_tag.ino:85:6:bool pairAllowed()	8	static
material_tag.ino:86:6:void bleEvent(ble_evt_t*)	16	static
material_tag.ino:97:6:bool showPasskey(uint16_t, const uint8_t*, bool)	16	static
material_tag.ino:110:6:void armPairing()	8	static
material_tag.ino:116:6:void pollPairing()	16	static
material_tag.ino:130:10:uint64_t nonce()	48	static
material_tag.ino:156:6:bool readSlot(int, mt_tag&, uint32_t&)	120	static
material_tag.ino:198:6:void buttonFeedback(bool)	8	static
material_tag.ino:211:8:size_t fitting(const char*, char*, size_t, uint16_t)	48	static
material_tag.ino:224:6:void textAt(int, int, const char*, uint16_t)	112	static
material_tag.ino:376:6:bool mountPreserving()	8	static
GxEPD2_BW.h:429:10:bool GxEPD2_BW<GxEPD2_Type, page_height>::nextPage() [with GxEPD2_Type = MonitoredPanel; short unsigned int page_height = 296]	64	static
material_tag.ino:228:6:bool render(const mt_command&)	248	static
material_tag.ino:259:25:bool copyText(ArduinoJson::V6215PB2::JsonVariantConst, char (&)[N], bool) [with unsigned int N = 64]	24	static
material_tag.ino:259:25:bool copyText(ArduinoJson::V6215PB2::JsonVariantConst, char (&)[N], bool) [with unsigned int N = 16]	24	static
ConverterImpl.hpp:64:15:static bool ArduinoJson::V6215PB2::Converter<T, typename ArduinoJson::V6215PB2::detail::enable_if<((ArduinoJson::V6215PB2::detail::is_integral<T>::value && (! ArduinoJson::V6215PB2::detail::is_same<bool, T>::value)) && (! ArduinoJson::V6215PB2::detail::is_same<char, T>::value))>::type>::checkJson(ArduinoJson::V6215PB2::JsonVariantConst) [with T = long unsigned int]	0	static
ConverterImpl.hpp:58:12:static T ArduinoJson::V6215PB2::Converter<T, typename ArduinoJson::V6215PB2::detail::enable_if<((ArduinoJson::V6215PB2::detail::is_integral<T>::value && (! ArduinoJson::V6215PB2::detail::is_same<bool, T>::value)) && (! ArduinoJson::V6215PB2::detail::is_same<char, T>::value))>::type>::fromJson(ArduinoJson::V6215PB2::JsonVariantConst) [with T = long unsigned int]	32	static
VariantImpl.hpp:19:10:T ArduinoJson::V6215PB2::detail::VariantData::asIntegral() const [with T = short unsigned int]	32	static
JsonDeserializer.hpp:47:8:char ArduinoJson::V6215PB2::detail::JsonDeserializer<TReader, TStringStorage>::current() [with TReader = ArduinoJson::V6215PB2::detail::BoundedReader<const char*>; TStringStorage = ArduinoJson::V6215PB2::detail::StringCopier]	0	static
JsonDeserializer.hpp:583:30:ArduinoJson::V6215PB2::DeserializationError::Code ArduinoJson::V6215PB2::detail::JsonDeserializer<TReader, TStringStorage>::skipSpacesAndComments() [with TReader = ArduinoJson::V6215PB2::detail::BoundedReader<const char*>; TStringStorage = ArduinoJson::V6215PB2::detail::StringCopier]	24	static
JsonDeserializer.hpp:649:30:ArduinoJson::V6215PB2::DeserializationError::Code ArduinoJson::V6215PB2::detail::JsonDeserializer<TReader, TStringStorage>::skipKeyword(const char*) [with TReader = ArduinoJson::V6215PB2::detail::BoundedReader<const char*>; TStringStorage = ArduinoJson::V6215PB2::detail::StringCopier]	16	static
CountingDecorator.hpp:20:8:void ArduinoJson::V6215PB2::detail::CountingDecorator<TWriter>::write(const uint8_t*, size_t) [with TWriter = ArduinoJson::V6215PB2::detail::StaticStringWriter]	12	static
TextFormatter.hpp:148:8:void ArduinoJson::V6215PB2::detail::TextFormatter<TWriter>::writeRaw(const char*) [with TWriter = ArduinoJson::V6215PB2::detail::StaticStringWriter]	16	static
TextFormatter.hpp:116:51:typename ArduinoJson::V6215PB2::detail::enable_if<ArduinoJson::V6215PB2::detail::is_unsigned<TOut>::value>::type ArduinoJson::V6215PB2::detail::TextFormatter<TWriter>::writeInteger(T) [with T = long long unsigned int; TWriter = ArduinoJson::V6215PB2::detail::StaticStringWriter]	56	static
FloatParts.hpp:20:3:ArduinoJson::V6215PB2::detail::FloatParts<TFloat>::FloatParts(TFloat) [with TFloat = double]	40	static
CountingDecorator.hpp:16:8:void ArduinoJson::V6215PB2::detail::CountingDecorator<TWriter>::write(uint8_t) [with TWriter = ArduinoJson::V6215PB2::detail::StaticStringWriter]	0	static
TextFormatter.hpp:68:8:void ArduinoJson::V6215PB2::detail::TextFormatter<TWriter>::writeFloat(T) [with T = double; TWriter = ArduinoJson::V6215PB2::detail::StaticStringWriter]	64	static
JsonDeserializer.hpp:55:8:bool ArduinoJson::V6215PB2::detail::JsonDeserializer<TReader, TStringStorage>::eat(char) [with TReader = ArduinoJson::V6215PB2::detail::BoundedReader<const char*>; TStringStorage = ArduinoJson::V6215PB2::detail::StringCopier]	16	static
TextFormatter.hpp:55:8:void ArduinoJson::V6215PB2::detail::TextFormatter<TWriter>::writeChar(char) [with TWriter = ArduinoJson::V6215PB2::detail::StaticStringWriter]	16	static
VariantData.hpp:29:34:typename TVisitor::result_type ArduinoJson::V6215PB2::detail::VariantData::accept(TVisitor&) const [with TVisitor = ArduinoJson::V6215PB2::detail::JsonSerializer<ArduinoJson::V6215PB2::detail::StaticStringWriter>]	24	static
CountingDecorator.hpp:20:8:void ArduinoJson::V6215PB2::detail::CountingDecorator<TWriter>::write(const uint8_t*, size_t) [with TWriter = ArduinoJson::V6215PB2::detail::Writer<Adafruit_USBD_CDC, void>]	8	static
TextFormatter.hpp:148:8:void ArduinoJson::V6215PB2::detail::TextFormatter<TWriter>::writeRaw(const char*) [with TWriter = ArduinoJson::V6215PB2::detail::Writer<Adafruit_USBD_CDC, void>]	16	static
TextFormatter.hpp:116:51:typename ArduinoJson::V6215PB2::detail::enable_if<ArduinoJson::V6215PB2::detail::is_unsigned<TOut>::value>::type ArduinoJson::V6215PB2::detail::TextFormatter<TWriter>::writeInteger(T) [with T = long long unsigned int; TWriter = ArduinoJson::V6215PB2::detail::Writer<Adafruit_USBD_CDC, void>]	56	static
Utf8.hpp:13:13:void ArduinoJson::V6215PB2::detail::Utf8::encodeCodepoint(uint32_t, TStringBuilder&) [with TStringBuilder = ArduinoJson::V6215PB2::detail::StringCopier]	24	static
JsonDeserializer.hpp:402:30:ArduinoJson::V6215PB2::DeserializationError::Code ArduinoJson::V6215PB2::detail::JsonDeserializer<TReader, TStringStorage>::parseQuotedString() [with TReader = ArduinoJson::V6215PB2::detail::BoundedReader<const char*>; TStringStorage = ArduinoJson::V6215PB2::detail::StringCopier]	32	static
VariantData.hpp:266:16:ArduinoJson::V6215PB2::detail::VariantData* ArduinoJson::V6215PB2::detail::VariantData::getMember(TAdaptedString) const [with TAdaptedString = ArduinoJson::V6215PB2::detail::StaticStringAdapter]	0	static
VariantOperators.hpp:44:22:const char* ArduinoJson::V6215PB2::detail::operator|(const ArduinoJson::V6215PB2::detail::MemberProxy<ArduinoJson::V6215PB2::JsonDocument&, const char*>&, const char*)	24	static
VariantData.hpp:272:16:ArduinoJson::V6215PB2::detail::VariantData* ArduinoJson::V6215PB2::detail::VariantData::getOrAddMember(TAdaptedString, ArduinoJson::V6215PB2::detail::MemoryPool*) [with TAdaptedString = ArduinoJson::V6215PB2::detail::StaticStringAdapter]	16	static
VariantFunctions.hpp:85:14:ArduinoJson::V6215PB2::detail::VariantData* ArduinoJson::V6215PB2::detail::variantGetOrAddMember(ArduinoJson::V6215PB2::detail::VariantData*, TAdaptedString, ArduinoJson::V6215PB2::detail::MemoryPool*) [with TAdaptedString = ArduinoJson::V6215PB2::detail::StaticStringAdapter]	8	static
JsonDeserializer.hpp:567:22:static bool ArduinoJson::V6215PB2::detail::JsonDeserializer<TReader, TStringStorage>::canBeInNonQuotedString(char) [with TReader = ArduinoJson::V6215PB2::detail::BoundedReader<const char*>; TStringStorage = ArduinoJson::V6215PB2::detail::StringCopier]	0	static
JsonDeserializer.hpp:235:30:ArduinoJson::V6215PB2::DeserializationError::Code ArduinoJson::V6215PB2::detail::JsonDeserializer<TReader, TStringStorage>::parseObject(ArduinoJson::V6215PB2::detail::CollectionData&, TFilter, ArduinoJson::V6215PB2::DeserializationOption::NestingLimit) [with TFilter = ArduinoJson::V6215PB2::detail::AllowAllFilter; TReader = ArduinoJson::V6215PB2::detail::BoundedReader<const char*>; TStringStorage = ArduinoJson::V6215PB2::detail::StringCopier]	32	static
JsonDeserializer.hpp:63:30:ArduinoJson::V6215PB2::DeserializationError::Code ArduinoJson::V6215PB2::detail::JsonDeserializer<TReader, TStringStorage>::parseVariant(ArduinoJson::V6215PB2::detail::VariantData&, TFilter, ArduinoJson::V6215PB2::DeserializationOption::NestingLimit) [with TFilter = ArduinoJson::V6215PB2::detail::AllowAllFilter; TReader = ArduinoJson::V6215PB2::detail::BoundedReader<const char*>; TStringStorage = ArduinoJson::V6215PB2::detail::StringCopier]	32	static
CountingDecorator.hpp:16:8:void ArduinoJson::V6215PB2::detail::CountingDecorator<TWriter>::write(uint8_t) [with TWriter = ArduinoJson::V6215PB2::detail::Writer<Adafruit_USBD_CDC, void>]	8	static
TextFormatter.hpp:68:8:void ArduinoJson::V6215PB2::detail::TextFormatter<TWriter>::writeFloat(T) [with T = double; TWriter = ArduinoJson::V6215PB2::detail::Writer<Adafruit_USBD_CDC, void>]	64	static
TextFormatter.hpp:55:8:void ArduinoJson::V6215PB2::detail::TextFormatter<TWriter>::writeChar(char) [with TWriter = ArduinoJson::V6215PB2::detail::Writer<Adafruit_USBD_CDC, void>]	16	static
VariantData.hpp:29:34:typename TVisitor::result_type ArduinoJson::V6215PB2::detail::VariantData::accept(TVisitor&) const [with TVisitor = ArduinoJson::V6215PB2::detail::JsonSerializer<ArduinoJson::V6215PB2::detail::Writer<Adafruit_USBD_CDC, void> >]	24	static
MemoryPool.hpp:179:15:const char* ArduinoJson::V6215PB2::detail::MemoryPool::findString(const TAdaptedString&) const [with TAdaptedString = ArduinoJson::V6215PB2::detail::ZeroTerminatedRamString]	24	static
ConverterImpl.hpp:164:1:typename ArduinoJson::V6215PB2::detail::enable_if<ArduinoJson::V6215PB2::detail::IsString<TString>::value, bool>::type ArduinoJson::V6215PB2::convertToJson(const T&, ArduinoJson::V6215PB2::JsonVariant) [with T = char*]	40	static
material_tag.ino:431:1:ino)	88	static
material_tag.ino:68:6:void sendDoc()	48	static
material_tag.ino:125:6:void diagnostic(const char*)	16	static
material_tag.ino:179:6:void fault(const char*)	0	static
material_tag.ino:354:6:void emitEvent(uint32_t)	240	static
material_tag.ino:368:6:void hello()	24	static
material_tag.ino:163:6:bool persist()	128	static
material_tag.ino:182:6:void restore(uint64_t)	24	static
material_tag.ino:266:6:void command(ArduinoJson::V6215PB2::JsonObjectConst)	472	static
material_tag.ino:287:6:void processFrame(const char*, size_t, bool)	128	static
material_tag.ino:335:6:void pollButtons(uint32_t)	48	static
material_tag.ino:305:6:void pollSerial()	24	static
material_tag.ino:318:6:void pollBle()	24	static
material_tag.ino:421:6:void loop()	8	static
material_tag.ino:385:6:void setup()	24	static
