tree c8f25b5d216d04d875977afc1beacbc4ee3357ac
parent 9034671cab2891c140fdb32a6863e3429b9fe4d8
author Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com> 1705437498 -0500
committer GitHub <noreply@github.com> 1705437498 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJlpuk6CRC1aQ7uu5UhlAAAtgIQAGdyimwo9qujNQIdloza9O3u
 zlUh5l/1A5ps59jOfnh/4XaXOCnhWD3UYQdtqroamSSjD/ZGuxPEr83uCDHqtOoF
 jJWTaCZOVHjr/clfF2qYY6f2ll0Vyr70iXqRJv/P859GBBQZNYHJEjF7ivnAGHE9
 pfwycFz+3eyeFNF2aQmL3TTLUyGM9t45tsBxjZkmTlEdERSGQMSs0EhMkpCJbE1T
 WKWLhMDJFs5oZSdFtqUA4WPzx+fm6i+Y6Bk/X7Tm7D2RXzzJbPCEK78Yv9zTUx7w
 1T07ubxFyySc7sbfr7fU5zQ29mSEMqbHOOnGSj26PrBwgdHjpur5rfPlf3My0JJ6
 uo6oucD8nIvviTlLCsOSfhMPvNBdsBghTGjvIF1EQzgmHSi+GUd3XrT98WfeEa3J
 HXHXtNqHLOtpUOHIuKxhIJNUTAjWk0fAeosYMRbS2PHtOVXKD7jdQksM6j4woVsu
 eG+smFbFYmcfhnKUhBMUxAM/oYSQDr77U+jXiDJc51iV0lpqT1Sz/+SadCtUMnlV
 WvyFZJjBbbkUOKadhZtMnZW5lndGrAaWrJfEIVW8E8YSosrFCxzjFEewMkpDBiCc
 9qAgn4gRU2lyw0m1yvXacvCu8L3a6qibHTpW3kqWYFE+kI60eONIfHp1g1oPAFnu
 jWwfF1B9VtAApBrqTOUx
 =PUoC
 -----END PGP SIGNATURE-----
 

Add supportedThreadFeatures, threadVersion and SupportedWiFiBands attributes to some reference apps (#31328)

* Update zap file of some reference apps to enable supportedThreadFeatures, threadVersion and SupportedWiFiBands attributes of the network commissioning cluster

* regen all

* Revert change to examples other than all-clusters apps

* Gate the encoding base on the Network type define enablement define. Return UnsupportedAttribute otherwise.

* fix conflicts

* fixup

* Rework condition logic to fix CI issue with linux all-cluster-app

* Fix Clang-tidy validation