Revert "Revert a reverted multi-protocol commit 61d328ca3af094cefe71a61248b60be1bede651a" (#1299)

This reverts commit 61d328ca3af094cefe71a61248b60be1bede651a.

Fixing Custom XML issues:
- Cleaning up the custom xml UI update as well as the custom xml package uploading such that there are no duplicates
- Fixing the custom xml UI for attributes, commands and events when cluster extensions are added through custom xml. Needed the custom xml package ids to be included
- Fixing the duplicate attributes and commands which show up in the attribute and command UI when a custom cluster with custom attributes and commands is added. This is solved by using a set in : reduceAndConcatenateZclEntity(db, id, [...new Set([...standAlonePackageIds, clusterInfo.packageRef])],
- Adding unique constraint to Attribute table and adding insert or replace to attribute insert query such that custom cluster extensions are not reloaded into the db.
- Making sure the global attributes are part of the custom clusters in static-zcl.js while calling reduceAndConcatenateZclEntity
- Making sure that session partition numbering is correct for the partitionNumber column
- For loading custom cluster extensions such as attributes and commands. Making sure they are loaded into the database based on the top level zcl package loaded. This is needed for sdk upgrades or custom xml in multi-protocol. See changes to zcl-loader-silabs and zcl-loader
- When adding custom xml, there are instances where multiple zcl packages are loaded for the same xml file. This was an issue with the mutation observer. Getting the load new package call out of the observer to fix this. Reproducer: Open zap, add custom xml from extensions, close extensions pane, add another xml from extensions and you will see two instances of the xml added. If you add another xml then you see 3 instances. This is fixed in ZclCustomZclView.vue
- Making sure that the delete button appears across custom xml for removal and doing some minor UI cleanup
- Add more unit tests for custom xml
- Cleaning up zap toolbar UI for logos
- JIRA: ZAPP-1351
63 files changed
tree: d1499109b514f302b331f26d3eabacda1dc2a4cd
  1. .github/
  2. .husky/
  3. cypress/
  4. docs/
  5. public/
  6. resource-build/
  7. src/
  8. src-electron/
  9. src-script/
  10. src-shared/
  11. test/
  12. zcl-builtin/
  13. .editorconfig
  14. .eslintignore
  15. .eslintrc.js
  16. .gitignore
  17. .gitmodules
  18. .postcssrc.js
  19. .prettierrc
  20. .stylintrc
  21. apack.json
  22. babel.config.js
  23. cypress.config.js
  24. Jenkinsfile
  25. jest.config.js
  26. jsconfig.json
  27. LICENSE.txt
  28. package-lock.json
  29. package.json
  30. quasar.conf.js
  31. quasar.extensions.json
  32. quasar.testing.json
  33. README.md
  34. sonar-project.properties
  35. tsconfig.json
  36. zap-schema.dot
  37. zap-schema.svg
README.md

ZCL Advanced Platform

ZCL Advanced Platform

Build and release packages Zigbee code regeneration Matter code regeneration

What is ZAP?

ZAP is a generic generation engine and user interface for applications and libraries based on Zigbee Cluster Library, the specification developed by the Connectivity Standards Alliance.

ZAP allows you to perform the following:

  • perform SDK-specific customized generation of all global artifacts (constants, types, IDs, etc) based on the ZCL specification
  • provide UI for the end-user to select specific application configuration (clusters, attributes, commands, etc.)
  • perform SDK-specific customized generation of all user selected configuration artifacts (application configuration, endpoint configuration, etc) based on ZCL specification and customer-provided application configuration.

ZAP is a generic templating engine. Examples are provided for how to generate artifacts for the C language environment, but one could easily add new templates for other language environments, such as C++, java, node.js, python or any other.

Quick setup

Refer to Setup Instructions

Source code

Refer to development instructions for more details.

License

This software is licensed under Apache 2.0 license.

Usage Documentation

Detailed Developer Documentation