tree f40d342a804093cc33e7dd25159b5419c4f9bff6
parent a6f016813e7d3b43c119bc70d9498788bd876ec5
author Andrei Litvin <andy314@gmail.com> 1730347895 -0400
committer GitHub <noreply@github.com> 1730347895 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJnIwN3CRC1aQ7uu5UhlAAAA6oQAGA+quxDxz0nd7R5EZacIXuM
 Ib/aXJU/SrwTcg3AEEnKagBBFnxV5ciXY3zY1w2bB6TxcyTB2Qh3M/oh7FDkxWZo
 5Z3G0k9lECWVTjEkJp7yq90tnbNwCsKlOKQpOJDvegHPcnuOc367c89HXYvVQbM+
 51bR6lfIOnfu1MCu9z/atF+FmTty/5gkwgRYPUVLfDBCUegyn7tXmw6k8XMVPPDM
 wX7XbKdimAv7EBBowxBAy5x59dEvIWL8kgJ8lYAaXrKW3lgY3lhi3VkwUfXb/Q7w
 vrRFmj+mx3R7Mx31Guzo06pWuDzM39RhQSik86JjmZi8fEWYovdu8Ht5bTNPGW/3
 HNzq9Eat4MEnLjshLT6xaGcMY3oKnuNiozJl3AHUCKGtXaDkEDwuFpcWA0X/V/fp
 Bk/Y97b6vZMCir4Gxvj9Xm3ASyUXQR+BohOhG216mLpVzTMsRmxokviZUwqWBNFa
 k3t6zyfRDdQ633PYRq1MC4l/IndisDtvVD2scIsax83Dp94Y8OEcfYKdAYzIztel
 lc+oJAXR8jP3TXslgbdOC8jg8izEvJgcOiV47nekcuAJReW01twEGAYhyFvbuAfE
 4QB/Okp6az3POTxp3qDfHk7Qlf/J0ITNL0rouojZ5DZbuX8RqWYe7ifIxUV6G0Mt
 +Egz0/6pz8UOaS0l05ej
 =Ro5i
 -----END PGP SIGNATURE-----
 

Switch `DataModel::Provider` interface to default enabled (except on linux where it stays as check) (#36042)

* Switch data model provider usage to default to enabled

* Decouple pump configuration and control from compatibility functions. Still 100% ember tied.

* Fix up some private/public dependencies: instance header should always be a private dependency

* Allow java (or generally dynamic server) controller builds to compile with dynamic dispatcher. Dynamic dispatcher seems to only care about commands so implemented all the rest as empty, which is not ideal

* Restyled by clang-format

* Restyled by gn

* Better dynamic dispatch implementation, removed extra TODO functions

* Restyled by whitespace

* Update dep a bit more

* Fix linter

* Fix linter again

* Update NXP to support various logging targets and for K32W0 enable progress logging and up (no detail/automation)

* Fix nxp compile (ordering issue)

* Update logic a bit to use log level for low power

* Update builds to consider low power already removing logs

* Make microwave oven cluster compilable

* Restyle

* Add codegen data model to darwin xproject: given that we add ember, we need these to access the ember bits as there is no app or data model to provide these

* Add missing override for darwin dispatch when codegen data model uses lower level methods for ember access

* Fix linter

* Add ability to track structural changes in ember for the purpose of codegen data model caching

* Fix typo: uint is unsigned

* Restyle

* Fix android to also provide a generation version

* Fix another uint/unsigned typo ... oops

* Add assertion of stack lock in darwin override of emberAfWriteAttribute

* Restyled by isort

* Remove formatting changes from python files

* Pick up restyle changes too

* Add comment on attribute laregest

* Use TLV-based encoding for ember data buffer.

This saves 2K of flash on some test devices, being much more
efficient in code size compared to using datamodel code.

* Restyled by clang-format

* Restyled by shfmt

* Undo unrelated change

* Add some casts to make android compiler happy

* Update darwin build project as well with the new files

* Updates based on code review

* Added unit tests for min/max int64 values

* Rename PascalString to PascalStringType

* Fix rename

* Restyle

* Add helper methods inside odd sized integers to localize code logic

* Restyled by clang-format

* Fix up negative ranges

* Fixed ranges

* Fix signed max bug and update unit tests

* Make android happy

* Typo fix

* Switch up unit tests

* Update a nullable check to make use of ValueToNullValue

* Add namespace prefix

* Update src/app/codegen-data-model-provider/EmberDataBuffer.cpp

Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>

* Update src/app/codegen-data-model-provider/EmberDataBuffer.h

Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>

* Correct comments:signed, not unsigned

* Use constructors for the buffer info

* Rename things to EmberAttributeDataBuffer

* Undo submodule updates

* Restyled by clang-format

* Use EmberAttributeDataBuffer for codegen provider _Read

* Fix comments

* Restyled by clang-format

* Update DynamicDispatcher comment

* Rename file

* Use a pointer for the subject descriptor.

This seems to save about 88 bytes of flash on a test NRF board.

* Restyle

* Fix include

* Fix include

* Also fix PW rpc

* This saves 136 bytes...

* More changes to save slightly more flash for code

* Restyle

* Fix typo

* Fix includes

* make more detailed logging optional in the codegen data model and enable it only on known large platforms

* Pull back the event path validity mixin, start with a datamodel implementation

* Fix compile logic after I moved things away

* Add one more check

* Restyle

* Fix typo

* Fix includes

* Restyle

* Move decodable lists bits as a non-template class to save flash

* Update src/app/InteractionModelEngine.cpp

Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>

* Rename method

* Restyle

* More renames

* Restyle

* Fix some renames

* Restyle

* A few more renames

* Restyle

* Use chip::app::IsSignedAttributeType

* Fix up put as well as naming for null value and comment

* Fix up nullable tests

* Test that you cannot decode a null value for non-nullable double and single

* Allow NAN for non-nullable floating points

* Add test case for non nullable bool

* Restyle

* Add a header for efr32

* Update src/app/codegen-data-model-provider/EmberAttributeDataBuffer.cpp

Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>

* Update src/app/codegen-data-model-provider/EmberAttributeDataBuffer.cpp

Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>

* Remove extra comment

* Replace switch with if

* Comment fix

* Another try to make efr32 build of tests happy

* Move includes around, to try to work around issues within efr32 compiles...

* more updates, this time local efr32 compiles

* Remove lookup tables from ember attribute data buffer

---------

Co-authored-by: Andrei Litvin <andreilitvin@google.com>
Co-authored-by: Restyled.io <commits@restyled.io>
Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>