From 40e78e0620ad90adafdeebffa261b3119a7b00d3 Mon Sep 17 00:00:00 2001 From: Rehan Rasool Date: Tue, 26 Jul 2022 14:37:13 +0000 Subject: [PATCH] Pull request #31: v0.1.0 main readme update Merge in WMN_TOOLS/matter from v0.1.0-main-readme-update to silabs Squashed commit of the following: commit ae14c7c0374af9c8b222d10184f4059858d448a5 Author: Ezra Hale Date: Tue Jul 26 10:18:03 2022 -0400 fix links in overview.md commit e26f66dfa7b1d4e47e81596bf8c55937fed07653 Author: Ezra Hale Date: Tue Jul 26 10:13:29 2022 -0400 updated link to matter overview since the README doesn't have much in it anymore commit 138587771c049eab9c44ebad9fc4e60e565ff427 Author: Ezra Hale Date: Tue Jul 26 10:11:21 2022 -0400 found some typos in the overview page commit 8aad6d40162bbe73e90c8879c4f657815083f1bd Author: Ezra Hale Date: Tue Jul 26 10:06:45 2022 -0400 added logo and removed unecessary content --- README.md | 142 ++--------------------------- docs/silabs/OVERVIEW.md | 10 +- docs/silabs/images/silabs-logo.jpg | Bin 0 -> 15377 bytes 3 files changed, 11 insertions(+), 141 deletions(-) create mode 100644 docs/silabs/images/silabs-logo.jpg diff --git a/README.md b/README.md index 6294a83bba2b02..b7ae2c85c4a63f 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,13 @@ +[![Silicon Labs](./docs/silabs/images/silabs-logo.jpg)](https://www.silabs.com) + + # Silicon Labs Matter Welcome to the Silicon Labs Matter Github repo. This is your one stop shop for all things related to Silicon Labs and Matter development. -**To develop a Matter application with Silicon Labs please start here: [Silicon Labs Matter Table of Contents](./docs/silabs/README.md)** +**To develop a Matter application with Silicon Labs please start here:** + +**[Silicon Labs Matter Table of Contents](./docs/silabs/README.md)** --- @@ -26,142 +31,7 @@ Welcome to the Silicon Labs Matter Github repo. This is your one stop shop for a [![ZAP Templates](https://github.com/project-chip/connectedhomeip/workflows/ZAP/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/zap_templates.yaml) -# What is Matter? - -Matter (formerly Project Connected Home over IP, or Project CHIP) is a new -Working Group within the Connectivity Standards Alliance (CSA, formerly Zigbee -Alliance). This Working Group plans to develop and promote the adoption of a -new, royalty-free connectivity standard to increase compatibility among smart -home products, with security as a fundamental design tenet. - -The goal of the Matter project is to simplify development for manufacturers and -increase compatibility for consumers. The project is built around a shared -belief that smart home devices should be secure, reliable, and seamless to use. -By building upon Internet Protocol (IP), the project aims to enable -communication across smart home devices, mobile apps, and cloud services and to -define a specific set of IP-based networking technologies for device -certification. - -The CSA officially opened the Matter Working Group on January 17, 2020 and is in -the process of drafting the specification. - -Visit [buildwithmatter.com](https://buildwithmatter.com) to learn more and read -the latest news and updates about the project. - -# Project Overview - -## Development Goals - -Matter is developed with the following goals and principles in mind: - -**Unifying:** Matter will produce a new specification, building with and on top -of market-tested, existing technologies. - -**Interoperable:** The specification permits communication between any -Matter-certified device, subject to users’ permission. - -**Secure:** The specification leverages modern security practices and protocols. - -**User Control:** The end user is in control of authorization for interaction -with devices. - -**Federated:** No single entity serves as a throttle or a -single-point-of-failure for root of trust. - -**Robust:** The set of protocols specify a complete lifecycle of a device — -starting with the seamless out-of-box experience, through operational protocols, -to device and system management specifications required for proper function in -the presence of change. - -**Low Overhead:** The protocols are practically implementable on low -compute-resource devices, such as MCUs. - -**Pervasive:** The protocols are broadly deployable and accessible, thanks to -leveraging IP and being implementable on low-capability devices. - -**Ecosystem-Flexible:** The protocol must be flexible enough to accommodate -deployment in ecosystems with differing policies. - -**Easy to Use:** The protocol should aim to provide smooth, cohesive, integrated -provisioning and out-of-box experience. - -**Open:** The Project’s design and technical processes should be open and -transparent to the general public, including to non-members wherever possible. - -## Architecture Overview - -![Matter Architecture Overview](docs/images/CHIP_IP_pyramid.png) - -The Project, as illustrated above, defines the application layer that will be -deployed on devices and controllers as well as the supported IPv6-based networks -to help achieve our interoperability architectural goal. Matter will initially -support Wi-Fi and Thread for core, operational communications and Bluetooth Low -Energy (BLE) to simplify device commissioning and setup. - -The Application Layer can be further broken down into seven main components: - -![Matter Stack Architecture](docs/images/CHIP_Arch_Pyramid.png) - -1. **Application:** High order business logic of a device. For example, an - application that is focused on lighting might contain logic to handle turning - on/off the bulb as well as its color characteristics. - -2. **Data Model:** Data primitives that help describe the various - functionalities of the devices. The Application operates on these data - structures when there is intent to interact with the device. - -3. **Interaction Model:** Represents a set of actions that can be performed on - the devices to interact with it. For example, reading or writing attributes - on a device would correspond to interactions with the devices. These actions - operate on the structures defined by the data model. - -4. **Action Framing:** Once an action is constructed using the Interaction - Model, it is framed into a prescriptive packed binary format to enable being - well represented on the “wire”. - -5. **Security:** An encoded action frame is then sent down to the Security Layer - to encrypt and sign the payload to ensure that data is secured and - authenticated by both sender and receiver of a packet. - -6. **Message Framing & Routing:** With an interaction encrypted and signed, the - Message Layer constructs the payload format with required and optional header - fields; which specify properties of the message as well as some routing - information. - -7. **IP Framing & Transport Management:** After the final payload has been - constructed, it is sent to the underlying transport protocol for IP - management of the data. - -# Current Status of Matter - -Matter’s design and technical processes are intended to be open and transparent -to the general public, including to Work Group non-members wherever possible. -The availability of this GitHub repository and its source code under an Apache -v2 license is an important and demonstrable step to achieving this commitment. - -Matter endeavors to bring together the best aspects of market-tested -technologies and to redeploy them as a unified and cohesive whole-system -solution. The overall goal of this approach is to bring the benefits of Matter -to consumers and manufacturers as quickly as possible. As a result, what you -observe in this repository is an implementation-first approach to the technical -specification, vetting integrations in practice. - -The Matter repository is growing and evolving to implement the overall -architecture. The repository currently contains the security foundations, -message framing and dispatch, an implementation of the interaction model and -data model. The code examples show simple interactions, and are supported on -multiple transports -- Wi-Fi and Thread -- starting with resource-constrained -(i.e., memory, processing) silicon platforms to help ensure Matter’s -scalability. - -# How to Contribute - -We welcome your contributions to Matter. Read our contribution guidelines -[here](./CONTRIBUTING.md). - -# Building and Developing in Matter -Instructions about how to build Matter can be found [here](./docs/README.md). # Directory Structure diff --git a/docs/silabs/OVERVIEW.md b/docs/silabs/OVERVIEW.md index f3d4eb71377cd2..b5b6698cfd7727 100644 --- a/docs/silabs/OVERVIEW.md +++ b/docs/silabs/OVERVIEW.md @@ -1,16 +1,16 @@ # Silicon Labs Matter Repo Overview -Welcome to the Silicon Labs Matter Repo. For more information on Matter in general see the main [Matter Overview](../../README.md) page. +Welcome to the Silicon Labs Matter Repo. For more information on Matter in general see the main [Matter Overview](https://www.silabs.com/wireless/matter) page. Silicon Labs supports Matter on both 802.15.4 (Thread) and 802.11 (Wi-Fi) transport protocols. -This Repo is the starting point for all Silicon Labs-related Matter development. In this repo you will find documentation, demos, examples and all the code needed for Matter Accessory Device development on both Thread and . +This Repo is the starting point for all Silicon Labs-related Matter development. In this repo you will find documentation, demos, examples and all the code needed for Matter Accessory Device development on both Thread and Wi-Fi. -The Thread and development use cases differ because the Thread protocol requires the use of an Open Thread Border Router (OTBR). +The Thread development use cases differs from Wi-Fi because the Thread protocol requires the use of an Open Thread Border Router (OTBR). -The Thread demo and development use case is described in the Thread section of this documentation located here: [Matter Thread](./thread/THREAD.md) +The Thread demo and development use case is described in the Thread section of this documentation located here: [Matter Thread](./thread/DEMO_OVERVIEW.md) -The Wi-Fi demo and development use case is described in the Wi-Fi section of this documentation located here: [Matter Wi-Fi](./wifi/WIFI.md) +The Wi-Fi demo and development use case is described in the Wi-Fi section of this documentation located here: [Matter Wi-Fi](./wifi/DEMO_OVERVIEW.md) ---- [Table of Contents](./README.md) | [Thread Demo](./thread/DEMO_OVERVIEW.md) | [Wi-Fi Demo](./wifi/DEMO_OVERVIEW.md) \ No newline at end of file diff --git a/docs/silabs/images/silabs-logo.jpg b/docs/silabs/images/silabs-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9379b65689b9ee4c524bfda856056c6427539884 GIT binary patch literal 15377 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 Rb@YSwg%F5Ylg!QN`+uJ?m^1(Y literal 0 HcmV?d00001