blob: 0ccd51193bae733ef922ca1de00569558cb5b943 [file] [log] [blame] [view]
# MATTER CHEF APP
The purpose of the chef app is to to increase the coverage of device types in
Matter.
It uses the shell app a starting point, adding the processing of ZAP files and
the support of a few targets under a unified build script: `chef.py`.
As it incorporates the processing of ZAP files as part of the build process, it
does not use `zzz_generated`, but rather places the auto-generated zap artifacts
under its `zap-generated` temporary folder.
All device types available (DM/IM .zap files) are found inside the `devices`
folder.
## Building a Sample Application
Run `chef.py -h` to see the available commands
## Building your first sample
1. Make sure you have the toolchain installed for your desired target
2. Run `chef.py` the first time to create a `config.yaml` configuration file. If
you already have SDK environment variables such as IDF_PATH (esp32) and
ZEPHYR_BASE (nrfconnect) it will use those values as default.
3. Update your the SDK paths on `config.yaml`. TTY is the path used by the
platform to enumerate its device as a serial port. Typical values are:
```
# ESP32 macOS
TTY: /dev/tty.usbmodemXXXXXXX
# ESP32 Linux
TTY: /dev/ttyACM0
# NRFCONNECT macOS
TTY: /dev/tty.usbserial-XXXXX
# NRFCONNECT Linux
TTY: /dev/ttyUSB0
```
4. Run `$ chef.py -u` to update zap and the toolchain (on selected platforms)
5. Run `$ chef.py -gzbf -t <platform> -d lighting`. This command will run the
ZAP GUI opening the `devices/lighting.zap` file and will allow editing. It
will then generate the zap artifacts, place them on the `zap-generated`
folder, run a build and flash the binary in your target
## Creating a new device type in your device library
1. Run `$ chef.py -g -d <device>` to open in the ZAP GUI a device to be used as
a starting point.
2. Edit your cluster configurations
3. Click on `Save As` and save the file with the name of your new device type
into the `devices` folder. This device is now available for the script. See
`chef.py -h` for a list of devices available.