tree 37968a58b627d6fc9bf45040d11daa39902db2ea
parent 954fff089a7c28dfcae16bbe23dd583a822fce04
author Matt Hazley <hello@matthazley.com> 1698140476 +0100
committer GitHub <noreply@github.com> 1698140476 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJlN5E8CRBK7hj4Ov3rIwAAKCYIAJ/oRD/EGGgH9wtDWiccSKZW
 NlR67HjmmXiknyobH5mMAZBOC5nzCqQ/x4IIS2LY8WNZYcmLz6Z0N6FLk9VKi0na
 Isvi32+NWFHncJGetobu5uC2WPHT5/Qv3G8X+QzM8mihLcHBvUB6jaeVq4DWo4/s
 uJjWBTwJogNpucFhkpYGcM/0HTOD7f9AyzNYyf80nhAbjqwjcuLlOksUf2TNF9pO
 54cNiDlOemej1AFSdOKygcBN0GhR/VjgOgfFEl1Q43H79aTnl41VqOotUzuWKnEo
 nbrUcbmFSTGvGNPqLIKD0bo1En/6Djzx2zDlHHO0Wwv1BlbuG7LGkuQsovdGAjA=
 =U7Qa
 -----END PGP SIGNATURE-----
 

Air Purifier Example App (#29861)

* Adding Air Purifier example framework and basic app, WIP

* wip, started adding class structures

* A messy yet stable version of the air-purifier, doesn't build as need to merge bug fix from upstream, WIP

* Added TODO and tested following merge

* The Air Quality Cluster API changed so updated constructor to take hard-coded features for now

* Added common device callback interface and changed the MatterPostAttributeChangeCallback to call that

* Changed the way we initialise the singleton Air Purifier Manager

* Add air-purifier example for Ameba platform

* Fixed wrong cluster revision in zap for concentraitons

* Add air-purifier example for CC32xx platform

* Add LastChangedTime and ReplaceableProductList To zap For HEPAFREMON And ACFREMON

* Updates to zap file for missing attributes and commands

* Adding PICS for the example

* Add PostchangeCallback To CC32XX Example

needed for writing the percentSetting to percentCurrent

* Fix Zap File for RH

- set Min/max/ MeasuredValue
- enable tolerance attribute

* Fix Zap File For Temp Measurement

* Update ClusterRev For Thermostat From 5 To 6

* Update FeatureMap For Fan Control

* Regenerate Matter File From Previous Zap Changes

* Add Button Handler For CC32XX

As a workaround save the KVS to NV when long pressing the right button.
This can be used to save the state after e.g. a unpair.

* Use Common filter-delegates.cpp For CC32XX Example

* Switched thermostat pics to be AbsLimits on the setpoint

* Updated the zapfile for thermostat

* Adding thermostat manager

* Changed all temperatures to be *100 and added callthrough from top level manager to thermostat when handling attribute changes

* Added thermostat endpoint into init call

* Changed name of attribute write handlers

* Changed name of attribute write handlers

* Add Thermostat-manager To CC32XX example

* Add helper script for executing Air-Purifier tests

* Remove duplicate line in air-purifier test runner script

* Adding CHIP header comment to files

* Removing Thermostat as the tests are broken for our use case

* Removing TSTAT tests

* Adding PICS folder in common with XML and simple PICS

* Add Correct Device Type And Name

* Removing Thermostat as the tests are broken for our use case

* Add A Way To Reset The Matter Part Of The Device For CC32XX Air Purifier Example App

this just deletes the kvs.cfg file on long pressing SW3

* Update README

* Remove Commented Code

* Update Copyright For CC32xx To 2023

* Update Copyright to 2023 For Ameba

* Regenned after merging upstream

* Added clearer Fan Mode support and some comments

* Added comment re: TODO for thermostat endpoint

* Restyled by whitespace

* Restyled by clang-format

* Restyled by gn

* Restyled by prettier-markdown

* Restyled by shellharden

* Removed missing reference in cc32xx readme

* Adding README for linux and adding all README's to the docs toctree

* Attempt 2 at setting toctree for new readmes

* Fix whitespace in script

* Restyled by shfmt

* Fixed spelling mistake in Readme

* Update include paths

* Add Ameba air-purifier example readme file

* Add words to wordlist

* Removed PICS and script, changed cc32xx headers to use pragma once

* Restyled by clang-format

* Restyled by prettier-markdown

* Removed TODO's from common code as they were not relevant

* Revert "Add words to wordlist"

This reverts commit 894a12953b70bfaff282d20e8cb64e1afb8eb2b5.

* Replace indentations with fenced code blocks and minor tidy up within air purifier example readme file

* Removed old debug comments from gn file

* Added linux air-purifier-app to the helper script for building examples

* Added air-purifier example for linux to CI

* Restyled by prettier-markdown

---------

Co-authored-by: Chris Mapp <chris.mapp@dyson.com>
Co-authored-by: Graf Tobias <4622393+tobiasgraf@users.noreply.github.com>
Co-authored-by: Restyled.io <commits@restyled.io>