diff --git a/.github/.wordlist.txt b/.github/.wordlist.txt index 535c153c9c0639..a77179ec77e6b8 100644 --- a/.github/.wordlist.txt +++ b/.github/.wordlist.txt @@ -47,6 +47,7 @@ argc args argv armeabi +ARMmbed armv asdk ASYNC @@ -69,6 +70,7 @@ autotools avL AwaitNextAction AXXXF +AYNJV babaf backend backticks @@ -118,6 +120,7 @@ CACACACA cacerts CAfile cancelled +capacitive CBB cbd CCMP @@ -148,6 +151,7 @@ ChipImResponder ChipLight ChipMessageLayer CHIPOBLE +CHIPProjectConfig CHIPTest CHIPTool chmod @@ -169,6 +173,7 @@ clusterListName ClusterRevision ClusterTestGeneration cmake +CMakeLists CMD CMSIS CMVH @@ -207,6 +212,7 @@ cp cpio cpp cppreference +CPROTO cpuapp cpython crypto @@ -304,6 +310,7 @@ eabi EB ECC ECD +EchoMessage EchoRequests EchoResponse EchoService @@ -394,6 +401,7 @@ GetDeviceInfo GetDns GetIP getstarted +githubusercontent gitignore glibc gn @@ -524,10 +532,12 @@ lifecycle lightbulb lightin LightingColor +LightingState LinkSoftwareAndDocumentationPack LocalConfigDisabled localhost localstatedir +LockingState loopback LowPower LPC @@ -558,6 +568,11 @@ matterUTestLib MaxInterval MaxIntervalCeilingSeconds MaxRtrAdvInterval +mbed +MbedCommissioning +MbedNewTarget +mbedos +mbedTarget mbedTLS mcu MCUboot @@ -582,6 +597,7 @@ MfrDeviceCert MfrDeviceId mgmt microcontroller +microcontrollers MicroSD middleware Minicom @@ -607,6 +623,8 @@ Multiband Multicast multilib Multiprotocol +multithreaded +mutexes MX mydir MyPASSWORD @@ -653,6 +671,7 @@ OnOff OnOffClusterTest OnPlatformEvent OO +OpenOCD OpenSSL OpenThread OpenThreadDemo @@ -690,6 +709,7 @@ peerAddrStr pem percentageLiftValue pexpect +pickString PID Pigweed PinCode @@ -714,15 +734,18 @@ productrev ProductRevision ProductURL proto +protobuf protos Prover PRs PSCAN PSK +PSoC PTR pts PumpConfigurationAndControl pwd +PWM PXXXF py pychip @@ -768,6 +791,7 @@ repo req Requestor responder +retargeting reusability rfid rfids @@ -802,8 +826,8 @@ SDC SDHC SDK sdkconfig -SDKs SDK's +SDKs SDKTARGETSYSROOT sdl segger @@ -837,6 +861,7 @@ softmmu SoftwareDiagnostics SoftwareVersion SoftwareVersionString +SPI spinel src SRP @@ -846,6 +871,7 @@ startoffset StartScan stderr stdout +sterm str strcpy su @@ -877,6 +903,7 @@ systemduserunitdir sysv TargetNavigator TBD +tcl TCP teardown Telink diff --git a/docs/guides/images/matter_mbedos_overview_simplified.png b/docs/guides/images/matter_mbedos_overview_simplified.png new file mode 100644 index 00000000000000..065a5b7a44e122 Binary files /dev/null and b/docs/guides/images/matter_mbedos_overview_simplified.png differ diff --git a/docs/guides/mbedos_add_new_target.md b/docs/guides/mbedos_add_new_target.md new file mode 100644 index 00000000000000..92e38a8eb27ac6 --- /dev/null +++ b/docs/guides/mbedos_add_new_target.md @@ -0,0 +1,115 @@ +

+ ARM Mbed-OS logo +

+ +

Mbed-OS add new hardware target

+ +# Overview + +This document shows how to add the new Mbed OS hardware target to Matter +project. + +Please check the list of supported +[development boards](https://os.mbed.com/platforms/) which are compatible with +Mbed OS. + +In order to adapt the new hardware target to the Matter project, you need to +remember about the following requirements: + +- Bluetooth Low Energy support. +- Wireless communication module with WiFi or Thread network support (IPv6 + protocol is required). +- Serial port support +- On-chip debug with OpenOCD support + +Additional target component requirements are different for each of example +application. Check the **Device UI** paragraph in example description. + +# Example Application + +The first step to add the new target to each of example application is to modify +the `examples/example_name/mbed/mbed_app.json` file. It contains the common +project settings and override the default values for supported boards. You +should add the necessary components and parameters for the target there. + +If the new target uses the external libraries, it will be required to link it in +the CMakeLists.txt file. + +# Building + +To add the new hardware target to the build system the +`scripts/examples/mbed_example.sh` script should be modify. Extend +**SUPPORTED_TARGET_BOARD** variable with a new target name. + +Example: + + SUPPORTED_TARGET_BOARD=(CY8CPROTO_062_4343W NEW_TARGET_NAME) + +The next step is add the target name to build task in `.vscode/task.json` file. +Extend the **options** variable in **mbedTarget** input setting. + +Example: + + { + "type": "pickString", + "id": "mbedTarget", + "description": "What mbed target do you want to use?", + "options": ["CY8CPROTO_062_4343W", "NEW_TARGET_NAME"], + "default": "CY8CPROTO_062_4343W" + } + +# Flashing + +Mbed OS example application flashing process uses the +[Open On-Chip Debugger](http://openocd.org/). The first step is to create the +target configuration file inside `config/mbed/scripts` directory. The file name +should be the same as target and the extension should be **.tcl**. The target +CPU and programming interface definitions are essential parts of the +configuration file. + +The next steps are the same as for building process. Adding the name of the +target to `scripts/examples/mbed_example.sh` and `.vscode/task.json` files +allows the use of available flashing processes. + +Additional flashing option is based on VSCode launch task. Adding the new target +to it required `.vscode/launch.json` modification. Extend the **options** +variable in **mbedTarget** input setting. + +Example: + + { + "type": "pickString", + "id": "mbedTarget", + "description": "What mbed target do you want to use?", + "options": ["CY8CPROTO_062_4343W", "NEW_TARGET_NAME"], + "default": "CY8CPROTO_062_4343W" + } + +# Debugging + +Debugging process of Mbed OS applications is also based on VSCode launch task. +Adding the new target to it required `.vscode/launch.json` modification. Extend +the **options** variable in **mbedTarget** input setting. + +Example: + + { + "type": "pickString", + "id": "mbedTarget", + "description": "What mbed target do you want to use?", + "options": ["CY8CPROTO_062_4343W", "NEW_TARGET_NAME"], + "default": "CY8CPROTO_062_4343W" + } + +# CI + +The Matter project continue integration process is based on Github Actions tool. +It uses workflow configuration files to execute actions on CI server. + +To add the new target to the validation process of building Mbed OS applications +you need to modify the `.github/workflows/examples-mbed.yaml` file. Extend the +job's environment variable **APP_TARGET** with the target name. + +Example: + + APP_TARGET: [CY8CPROTO_062_4343W, NEW_TARGET_NAME] diff --git a/docs/guides/mbedos_commissioning.md b/docs/guides/mbedos_commissioning.md new file mode 100644 index 00000000000000..f0c950948f62f2 --- /dev/null +++ b/docs/guides/mbedos_commissioning.md @@ -0,0 +1,276 @@ +

+ ARM Mbed-OS logo +

+ +

Matter Arm Mbed OS provisioning guide

+ +- [Overview](#overview) +- [Prerequisites](#prerequisites) +- [CHIPTool for Android](#chiptool-for-android) + - [Building and installing](#building-and-installing) + - [Accessory Matter device setup](#accessory-matter-device-setup) + - [Device commissioning for Android](#device-commissioning-for-android) + - [Sending ZCL commands](#sending-zcl-commands) +- [POSIX CLI CHIPTool](#posix-cli-chiptool) + - [Building](#building) + - [Device commissioning for CLI](#device-commissioning-for-cli) + - [Sending ZCL commands](#sending-zcl-commands-1) +- [Python Device Controller](#python-device-controller) + - [Building and installing](#building-and-installing-1) + - [Device commissioning for Python Device Controller](#device-commissioning-for-python-device-controller) + - [Sending ZCL commands](#sending-zcl-commands-2) + - [ZCL commands details](#zcl-commands-details) + +
+ +# Overview + +This document provides a step-by-step guide how to commission any Matter +application. For demonstration purposes the Lighting app is used. + +The provisioning process is composed of the following stages: + +- CHIPTool discovers a Matter accessory device over Bluetooth Low Energy + (BLE). + +- CHIPTool establishes a secure channel to the device over BLE, and sends + network credentials data. + +BLE is only used during first phase. Afterwards, only the IP connectivity +between the smartphone and the accessory device is needed to send messages. + +# Prerequisites + +To complete all the steps in the tutorial, you need: + +- A smartphone with Android 8+ or PC with Ubuntu 20.04 and Bluetooth + connectivity + +- A WiFi Access Point (smartphone router, standalone AP, wireless router or + PC) + +- Any currently supported target device (for example, a Cypress PSoC6 + CY8CPROTO-062-4343W board) + +# CHIPTool for Android + +## Building and installing + +To make provisioning possible and to control the Matter device from your Android +based smartphone, you must first build and install the CHIPTool application. + +To build the CHIPTool application for your smartphone, read +[Android building guide](android_building.md). + +After building, install the application by completing the following steps: + +1. Install the Android Debug Bridge (adb) package by running the following + command: + + $ sudo apt install android-tools-adb + +2. Enable **USB debugging** on your smartphone. See the + [Configure on-device developer options](https://developer.android.com/studio/debug/dev-options) + guide on the Android Studio hub for detailed information. +3. If the **Install via USB** option is supported for your Android version, + turn it on. +4. Plug your smartphone into a USB port on your PC. +5. Run the following command to install the application, with _matter-dir_ + replaced with the path to the Matter source directory: + + $ adb install out/android-$TARGET_CPU-chip-tool/outputs/apk/debug/app-debug.apk + +6. Navigate to settings on your smartphone and grant **Camera** and + **Location** permissions to CHIPTool. + +Android CHIPTool is now ready to be used for commissioning. + +## Accessory Matter device setup + +To prepare the accessory Matter device for commissioning (called rendezvous), +complete the following steps: + +- Open a serial terminal session to connect to the UART console of the + accessory device. You can use **mbed-tools** for this purpose + ([mbed-tools](https://github.com/ARMmbed/mbed-tools)): + + mbed-tools sterm -p /dev/ttyACM0 -b 115200 -e off + +To start the rendezvous, CHIPTool must get the commissioning information from +the Matter device. The data payload is encoded within a QR code and is printed +to the UART console. + +- Reset the device. + +- Find a message similar to the following one in the application logs: + + [INFO][CHIP]: [SVR]Copy/paste the below URL in a browser to see the QR Code: + [INFO][CHIP]: [SVR]https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3AYNJV7VSC00CMVH7SR00 + +- Open URL from the console to display the QR in a web browser. + +## Device commissioning for Android + +To commission Matter device onto the network created complete the following +steps: + +- Enable Bluetooth and Location services on your smartphone. + +- Connect the smartphone to the WiFi Network + +- Open the CHIPTool application on your smartphone. + +- Tap the 'PROVISION CHIP DEVICE WITH WI-FI' button and scan the commissioning + QR code. + +- Go through the the paring and connecting Bluetooth on your smartphone (you + will see a few pop-up messages appear as the commissioning progresses. + Finally, the network settings screen appears. + +- In the network settings screen enter the Wi-Fi credentials and tap the Save + Network button to send a WiFi provisioning message to the accessory device. + +- After successful completion of the process, the application returns to the + main screen. + +## Sending ZCL commands + +After the accessory device has been successfully commissioned to the network, it +is possible to communicate with it using IP. Matter uses Zigbee Cluster Library +(ZCL) protocol which defines common means for applications to communicate. + +Communication with the device via ZCL commands is possible by using buttons of +the main screen. + +For example, selecting the 'LIGHT ON/OFF & LEVEL CLUSTER' button opens the +screen which allows controlling the light dimming. Tap either the ON or the OFF +button to toggle between min and max brightness. Use the slider to modify the +brightness between 0-255. + +If **Lighting LED** is available then brightness change can be observed. + +> For more details about Android CHIPTool please visit +> [CHIPTool](../../src/android/CHIPTool/README.md) + +# POSIX CLI CHIPTool + +## Building + +To make provisioning possible and to control the Matter device from Linux-based +device, you can build and run the Matter Client example application on it. + +To build the POSIX CLI CHIPTool application check the guide +[POSIX CLI guide](../../examples/chip-tool/README.md). + +## Device commissioning for CLI + +In order to send commands to a device, it must be paired with the client and +connected to the network. + +To run the commissioning process via BLE, run the built executable and pass it +the network ssid and password, fabric id, discriminator and pairing code of the +remote device. + +Example: + + $ chip-tool pairing ble-wifi network_ssid network_password 0 20202021 3840 + +## Sending ZCL commands + +If the commissioning process was successful, it is possible to send a ZCL +command to the device which initiate a certain action. + +To send a ZCL commands, run the executable and pass it the target cluster name, +the target command name as well as an endpoint id. + +The endpoint id must be between 1 and 240. + +For example: + + $ chip-tool onoff on 1 + +The client will send a single command packet and then exit. + +> For more details about POSIX CLI CHIPTool please visit +> [POSIX CLI CHIPTool](../../examples/chip-tool/README.md) + +# Python Device Controller + +## Building and installing + +To make provisioning possible and to control the Matter device with Python +application, you can build and run the Python CHIP controller. + +To build and install the Python Device Controller application check the guide +[Python Device Controller guide](python_chip_controller_building.md). + +## Device commissioning for Python Device Controller + +In order to send commands to a device, it must be paired with the client and +connected to the network. + +To run the commissioning process via BLE: + +- Run Device Controller: + + chip-device-ctrl + +- Scan BLE devices: + + chip-device-ctrl > ble-scan + +- Connect the device via BLE (provide the accessory device discriminator, + setup pin code and node ID): + + chip-device-ctrl > connect -ble 3840 20202021 1234 + +- Pass the Wi-Fi credentials to the device: + + chip-device-ctrl > zcl NetworkCommissioning AddWiFiNetwork 1234 0 0 ssid=str:TESTSSID credentials=str:P455W4RD breadcrumb=0 timeoutMs=1000 + +- Enable the Wi-Fi interface: + + chip-device-ctrl > zcl NetworkCommissioning EnableNetwork 1234 0 0 networkID=str:TESTSSID breadcrumb=0 timeoutMs=1000 + +- Close BLE connection: + + chip-device-ctrl > zcl NetworkCommissioning EnableNetwork 1234 0 0 networkID=str:TESTSSID breadcrumb=0 timeoutMs=1000 + +- Discover IP address of the device (address is cached in the controller for + later usage). You should provide the fabric and node ID: + + chip-device-ctrl > resolve 5544332211 1234 + +## Sending ZCL commands + +If the commissioning process was successful, it is possible to send a ZCL +command to the device which initiates a certain action. + +`zcl [arguments]` + +Example: + + chip-device-ctrl > zcl LevelControl MoveWithOnOff 12344321 1 0 moveMode=1 rate=2 + +### ZCL commands details + +To get the list of supported clusters run: + + chip-device-ctrl > zcl ? + +To get the list of available commands in cluster run: + + chip-device-ctrl > zcl ? + +**Format of arguments** + +For any integer and char string (null terminated) types, just use `key=value`, +for example: `rate=2`, `string=123`, `string_2="123 456"` + +For byte string type, use `key=encoding:value`, currently, we support `str` and +`hex` encoding, the `str` encoding will encode a NULL terminated string. For +example, `networkId=hex:0123456789abcdef` (for +`[0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]`), `ssid=str:Test` (for +`['T', 'e', 's', 't', 0x00]`). + +For boolean type, use `key=True` or `key=False` diff --git a/docs/guides/mbedos_platform_overview.md b/docs/guides/mbedos_platform_overview.md new file mode 100644 index 00000000000000..7252f992369422 --- /dev/null +++ b/docs/guides/mbedos_platform_overview.md @@ -0,0 +1,146 @@ +

+ARM Mbed-OS logo +

+ +# Mbed-OS platform overview + +The Mbed-OS platform is a +[Matter](https://github.com/project-chip/connectedhomeip) platform that uses Arm +Mbed-OS 6. + +The following diagram shows a simplified structure of a Matter application which +runs on the top of the Mbed-OS. + +

+ matter_mbedos_overview_simplified +

+ +# ARM Mbed-OS + +Arm Mbed OS is an open source embedded operating system designed specifically +for the "things" in the Internet of Things. It includes all the features you +need to develop a connected product based on an Arm Cortex-M microcontroller, +including security, connectivity, an RTOS and drivers for sensors and I/O +devices. + +Mbed OS provides an abstraction layer for the microcontrollers it runs on, so +that developers can focus on writing C/C++ applications that call functionality +available on a range of hardware. That means Mbed OS applications can be reused +on any Mbed-compatible platform. + +Mbed OS uses a hardware abstraction layer (HAL) to support the most common parts +of a microcontroller, such as timers. This foundation facilitates writing +applications against a common set of application programming interfaces (APIs); +device automatically includes necessary libraries and driver support for +standard MCU peripherals, such as I2C, serial and SPI. + +Mbed OS has an RTOS core, so it supports deterministic, multithreaded, real-time +software execution. The RTOS primitives are always available, allowing drivers +and applications to rely on threads, semaphores, mutexes and other RTOS +features. + +The structure of Mbed OS enables matching applications and storage systems. In +other words, where the block level storage options vary and are application +dependent, The file system that best fits the IoT device can be chosen. The FAT +file system - backed by an SD card - provides compatibility with other operating +systems, such as Windows, Mac OS or Linux. When high reliability and recovery +from power failure are important, it makes sense to use our embedded file +system, backed with a (Q)SPI NOR flash chip. + +Finally, Mbed OS implements the retargeting layer and boot process integration +of each supported toolchain, so application development feels similar to C or +C++ development for any other operating system. + +# Bluetooth and IP stacks + +In the Mbed-oS platform applications, the Bluetooth LE interface is used to +perform pairing and Wi-Fi network provisioning operations between the Matter +device and the Matter controller. Afterwards, the fully provisioned device is +able to communicate with other devices inside the Wi-Fi network. + +For the Bluetooth LE communication purposes, the Mbed-OS platform application is +using +[ARM Mbed BLE](https://os.mbed.com/docs/mbed-os/latest/apis/bluetooth-apis.html) +(also called BLE_API) - Bluetooth Low Energy software solution which interfaces +with the BLE controller on the hardware target. Arm Mbed BLE hides the BLE +stack’s complexity behind C++ abstractions and is compatible with all +BLE-enabled Mbed board. The Mbed OS BLE_API automatically configuring the +clocks, timers and other hardware peripherals to work at their lowest power +consumption. + +For Wi-FI communication purposes, the Mbed-OS application is using the internal +Mbed LWIP stack and Mbed Socket API together. To integrate it with Matter +network layer, special glue socket layer has been introduced to take care of +adapting the Mbed socket to BSD interface which is used inside the Matter +endpoints implementation. + +## Matter integration + +The Bluetooth LE and Wi-Fi used stacks provided by the Mbed-OS have been +integrated with the Matter stack using a special intermediate layer. + +This layer contains platform-specific implementations of abstract manager +interfaces defined in the Matter stack. The application is able to use Matter's +platform agnostic interfaces and no additional platform-related actions are +needed to perform communication through the Matter stack. + +# Matter example applications + +Sample Matter applications are provided for the Mbed OS platform. They can be +used to speed up development: + +- [shell](../../examples/shell/mbed) +- [all-clusters-app](../../examples/all-clusters-app/mbed) +- [lock-app](../../examples/lock-app/mbed/README.md) +- [lighting-app](../../examples/lighting-app/mbed/README.md) +- [pigweed-app](../../examples/pigweed-app/mbed/README.md) + +## Example configuration + +Each of the supporting examples contains the `config.in` file which allows you +to configure the application in a proper way. You can define/disable/enable +application settings. Then they are propagated through Mbed-OS and Matter stack +build systems. + +## Matter stack configuration + +In each of supported examples, the Matter stack can be configured by modifying +`CHIPProjectConfig.h` file which is placed inside the project directory. + +## Mbed-OS configuration + +Mbed-OS gives possibility to tweak its parameters by using the +[Mbed-OS configuration system](https://os.mbed.com/docs/mbed-os/latest/program-setup/advanced-configuration.html). +The same configuration system can be used to change default hardware target +setup used in application. Additionally, it is the first place for adding +support of the new hardware target support into the application. Mbed-OS +configuration system can be accessed by modifying the `mbed_app.json` file which +exists in each sample project directory. + +## Build system + +The Mbed-OS platform makes use of the following build systems to generate ninja +build scripts: + +- GN - Used by the Matter project in majority of cases. +- CMake (+ mbed-tools) - Used by the Mbed-OS user application and other + components within Mbed ecosystem. + +Matter's stack and platform modules are built with GN and output a library file. +The application, Mbed-OS and target specific libraries are built with CMake and +the Matter library file is imported during the compilation process. + +## Build profiles + +Arm Mbed OS defines three collections of toolchain flags used during the build: + +- develop +- release +- debug + +Build profiles can be easy selected when building example application using +either vscode task or its associated build script directly +([mbed_examples.sh](../../scripts/examples/mbed_example.sh)). + +For more details about each of this profiles, please visit official +[ARM Mbed documentation](https://os.mbed.com/docs/mbed-os/latest/program-setup/build-profiles-and-rules.html). diff --git a/examples/all-clusters-app/mbed/README.md b/examples/all-clusters-app/mbed/README.md new file mode 100644 index 00000000000000..45224ea31ecd8b --- /dev/null +++ b/examples/all-clusters-app/mbed/README.md @@ -0,0 +1,253 @@ +

+ ARM Mbed-OS logo +

+ +

Matter Arm Mbed OS All Clusters Example Application

+ +The Arm Mbed OS All Clusters Example demonstrates device commissioning process +and all available clusters control. + +You can use this example as a reference for creating your own application. + +The example is based on +[Matter](https://github.com/project-chip/connectedhomeip) and Arm Mbed OS, and +supports remote access and control of device over a WiFi network. + +The example behaves as a Matter accessory, in other words a device that can be +paired into an existing Matter network and can be controlled by this network. + +
+ +- [Overview](#overview) + - [Bluetooth Low Energy advertising](#bluetooth-low-energy-advertising) + - [Bluetooth Low Energy rendezvous](#bluetooth-low-energy-rendezvous) + - [WiFi provisioning](#wifi-provisioning) +- [Run application](#run-application) + - [Environment setup](#environment-setup) + - [Building](#building) + - [Flashing](#flashing) + - [Debugging](#debugging) + - [Testing](#testing) + - [Serial port terminal](#serial-port-terminal) + - [CHIP Tools](#chip-tools) + - [Supported devices](#supported-devices) + - [Notes](#notes) +- [Device UI](#device-ui) + - [Notes](#notes-1) + +
+ +# Overview + +The Matter device that runs the All Clusters application is controlled by the +Matter controller device over WiFi. By default, the Matter device is +disconnected, and it should be paired with Matter controller and get +configuration from it. Actions required before establishing full communication +are described below. + +## Bluetooth Low Energy advertising + +To commission the device onto a Matter network, the device must be discoverable +over BLE. The BLE advertising starts automatically after device boot-up. + +## Bluetooth Low Energy rendezvous + +In Matter, the commissioning procedure (called rendezvous) is done over BLE +between a Matter device and the Matter controller, where the controller has the +commissioner role. + +To start the rendezvous, the controller must get the commissioning information +from the Matter device. The data payload is encoded within a QR code, printed to +the UART console. + +## WiFi provisioning + +The last part of the rendezvous procedure, provisioning involves sending the +network credentials from the Matter controller to the Matter device. As a +result, device is able to join the network and communicate with other devices in +the network. + +# Run application + +## Environment setup + +Before building the example, check out the Matter repository and sync submodules +using the following command: + + $ git submodule update --init + +Building the example application requires the use of **ARM Mbed-OS** sources and +the **arm-none-gnu-eabi** toolchain. The OpenOCD package is used for flashing +purpose.
Some additional packages may be needed, depending on selected +build target and its requirements. + +> **The VSCode devcontainer has these components pre-installed. Using the VSCode +> devcontainer is the recommended way to interact with Arm Mbed-OS port of the +> Matter Project.** +> +> **Please read this [README.md](../../..//docs/VSCODE_DEVELOPMENT.md) for more +> information about using VSCode in container.** + +To initialize the development environment, download all registered sub-modules +and activate the environment: + +``` +$ source ./scripts/bootstrap.sh +$ source ./scripts/activate.sh +``` + +If packages are already installed then you just need to activate the development +environment: + +``` +$ source ./scripts/activate.sh +``` + +## Building + +The All Clusters application can be built in the same way as any other Matter +example ported to the mbed-os platform. + +- **by using generic vscode task**: + +``` +Command Palette (F1) => Run Task... => Run Mbed Application => build => all-clusters-app => (board name) => (build profile)` +``` + +- **by calling explicitly building script:** + +``` +${MATTER_ROOT}/scripts/examples/mbed_example.sh -c=build -a=all-clusters-app -b= -p= +``` + +Both approaches are limited to supported evaluation boards which are listed in +[Supported devices](#supported_devices) paragraph. + +Mbed OS defines three building profiles: _develop, debug_ and _release_. For +more details please visit +[ARM Mbed OS build profiles](https://os.mbed.com/docs/mbed-os/latest/program-setup/build-profiles-and-rules.html). + +When using the building script, it is possible expand the list of acceptable +targets; this may be useful for rapid testing of a new mbed-targets. + +## Flashing + +The All Clusters application can be flashed in the same way as any other Matter +example ported to mbed-os platform. + +The [Open On-Chip Debugger](http://openocd.org/) is used to upload a binary +image and reset the device. + +- **by using VSCode task**: + +``` +Command Palette (F1) => Run Task... -> Run Mbed Application => flash => all-clusters-app => (board name) => (build profile) +``` + +- **by calling explicitly building script:** + +``` +${MATTER_ROOT}/scripts/examples/mbed_example.sh -c=flash -a=all-clusters-app -b= -p= +``` + +- **by using VSCode launch task**: + +``` +Run and Debug (Ctrl+Shift+D) => Flash Mbed examples => Start Debugging (F5) => (board name) => all-clusters-app => (build profile) +``` + +The last option uses the Open On-Chip Debugger to open and manage the gdb-server +session. Then gdb-client (arm-none-eabi-gdb) upload binary image and reset +device. + +It is possible to connect to an external gdb-server session by using a specific +**'Flash Mbed examples [remote]'** task. + +## Debugging + +Debugging can be performed in the same was as with any other Matter example +ported to mbed-os platform. + +The [Open On-Chip Debugger](http://openocd.org/) is used to to open and manage +the gdb-server session. Then gdb-client (arm-none-eabi-gdb) connect the server +to upload binary image and control debugging. + +``` +Run and Debug (Ctrl+Shift+D) => Debug Mbed examples => Start Debugging (F5) => (board name) => all-clusters-app => (build profile) +``` + +It is possible to connect to an external gdb-server session by using specific +**'Debug Mbed examples [remote]'** task. + +## Testing + +### Serial port terminal + +The application traces are streaming to serial output. To start communication +open a terminal session and connect to the serial port of the device. You can +use **mbed-tools** for this purpose +([mbed-tools](https://github.com/ARMmbed/mbed-tools)): + + mbed-tools sterm -p /dev/ttyACM0 -b 115200 -e off + +After device reset these lines should be visible: + + [INFO][CHIP]: [-]Mbed all-clusters-app example application start + ... + [INFO][CHIP]: [-]Mbed all-clusters-app example application run + +The all-clusters-app application launched correctly and you can follow traces in +the terminal. + +### CHIP Tools + +Read the [MbedCommissioning](../../../docs/guides/mbedos_commissioning.md) to +see how to use different CHIP tools to commission and control the application +within a WiFi network. + +## Supported devices + +| Manufacturer | Hardware platform | Build target | Platform image | Status | Platform components | +| ----------------------------------------------------- | ------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Cypress
Semiconductor](https://www.cypress.com/) | [CY8CPROTO-062-4343W](https://os.mbed.com/platforms/CY8CPROTO-062-4343W/) | `CY8CPROTO_062_4343W` |
CY8CPROTO-062-4343WCY8CPROTO-062-4343W
| :heavy_check_mark: |
LEDs
  • Board has only one usable LED (LED4) which corresponds to USER LED from UI.
Buttons
  • Unused
Slider
  • Unused
| + +#### Notes + +- More details and guidelines about porting new hardware into the Matter + project with Mbed OS can be found in + [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md) +- Some useful information about HW platform specific settings can be found in + `all-clusters-app/mbed/mbed_app.json`. + Information about this file syntax and its meaning in mbed-os project can be + found here: + [Mbed-Os configuration system](https://os.mbed.com/docs/mbed-os/latest/program-setup/advanced-configuration.html)) + +# Device UI + +This section lists the User Interface elements that you can use to control and +monitor the state of the device. These correspond to PCB components on the +platform image. + +**USER LED** shows the overall state of the device and its connectivity. The +following states are possible: + +- _Short Flash On (50 ms on/950 ms off)_ — The device is in the + unprovisioned (unpaired) state and is waiting for a commissioning + application to connect. + +- _Rapid Even Flashing (100 ms on/100 ms off)_ — The device is in the + unprovisioned state and a commissioning application is connected through + Bluetooth LE. + +- _Short Flash Off (950ms on/50ms off)_ — The device is fully + provisioned, but does not yet have full network or service connectivity. + +- _Solid On_ — The device is fully provisioned and has full network and + service connectivity. + +### Notes + +Some of the supported boards may not have sufficient number PCB components to +follow above description. In that case please refer to +[Supported devices](#Supported-devices) section and check board's 'Platform +components' column for additional information about the limitation. diff --git a/examples/lighting-app/mbed/README.md b/examples/lighting-app/mbed/README.md new file mode 100644 index 00000000000000..768e62aa9f3aec --- /dev/null +++ b/examples/lighting-app/mbed/README.md @@ -0,0 +1,343 @@ +

+ ARM Mbed-OS logo +

+ +

Matter Arm Mbed OS Lighting Example Application

+ +The Arm Mbed OS Lighting Example demonstrates how to remotely control a dimmable +white light source. The example takes advantage of the IO available on board: + +- A button press turns the light on or off. +- Intensity can be displayed and changed depending on the target IO (PWM + output, slider). + +You can use this example as a reference for creating your own application. + +The example is based on +[Matter](https://github.com/project-chip/connectedhomeip) and Arm Mbed OS, and +supports remote access and control of lighting over a WiFi network. + +The example behaves as a Matter accessory, in other words a device that can be +paired into an existing Matter network and can be controlled by this network. + +Pigweed functionalities are also integrated into this application. The Remote +Procedure Call (RPC) server is created. It allows sending commands through the +serial port to the device. The following RPC protocols services are available: + +- **Device** - perform basic operations on device: reboot, factory reset, + software update or get basic device information +- **Button** - trigger specific button event (push/release) +- **Lighting** - set/get lighting state (on/off/brightness level) + +
+ +- [Overview](#overview) + - [Bluetooth Low Energy advertising](#bluetooth-low-energy-advertising) + - [Bluetooth Low Energy rendezvous](#bluetooth-low-energy-rendezvous) + - [WiFi provisioning](#wifi-provisioning) +- [Run application](#run-application) + - [Environment setup](#environment-setup) + - [Building](#building) + - [Flashing](#flashing) + - [Debugging](#debugging) + - [Testing](#testing) + - [Serial port terminal](#serial-port-terminal) + - [CHIP Tools](#chip-tools) + - [RPC console](#rpc-console) + - [Supported devices](#supported-devices) + - [Notes](#notes) +- [Device UI](#device-ui) + - [Notes](#notes-1) + +
+ +# Overview + +The Matter device that runs the lighting application is controlled by the Matter +controller device over WiFi. By default, the Matter device is disconnected , and +it should be paired with Matter controller and get configuration from it. +Actions required before establishing full communication are described below. + +## Bluetooth Low Energy advertising + +To commission the device onto a Matter network, the device must be discoverable +over BLE. The BLE advertising starts automatically after device boot-up. + +## Bluetooth Low Energy rendezvous + +In Matter, the commissioning procedure (called rendezvous) is done over BLE +between a Matter device and the Matter controller, where the controller has the +commissioner role. + +To start the rendezvous, the controller must get the commissioning information +from the Matter device. The data payload is encoded within a QR code, printed to +the UART console. + +## WiFi provisioning + +The last part of the rendezvous procedure, provisioning involves sending the +network credentials from the Matter controller to the Matter device. As a +result, device is able to join the network and communicate with other devices in +the network. + +# Run application + +## Environment setup + +Before building the example, check out the Matter repository and sync submodules +using the following command: + + $ git submodule update --init + +Building the example application requires the use of **ARM Mbed-OS** sources and +the **arm-none-gnu-eabi** toolchain. The OpenOCD package is used for flashing +purpose.
Some additional packages may be needed, depending on selected +build target and its requirements. + +> **The VSCode devcontainer has these components pre-installed. Using the VSCode +> devcontainer is the recommended way to interact with Arm Mbed-OS port of the +> Matter Project.** +> +> **Please read this [README.md](../../..//docs/VSCODE_DEVELOPMENT.md) for more +> information about using VSCode in container.** + +To initialize the development environment, download all registered sub-modules +and activate the environment: + +``` +$ source ./scripts/bootstrap.sh +$ source ./scripts/activate.sh +``` + +If packages are already installed then you just need to activate the development +environment: + +``` +$ source ./scripts/activate.sh +``` + +## Building + +The Lighting application can be built in the same way as any other Matter +example ported to the mbed-os platform. + +- **by using generic vscode task**: + +``` +Command Palette (F1) => Run Task... => Run Mbed Application => build => lighting-app => (board name) => (build profile) +``` + +- **by calling explicitly building script:** + +``` +${MATTER_ROOT}/scripts/examples/mbed_example.sh -c=build -a=lighting-app -b= -p= +``` + +Both approaches are limited to supported evaluation boards which are listed in +[Supported devices](#supported_devices) paragraph. + +Mbed OS defines three building profiles: _develop, debug_ and _release_. For +more details please visit +[ARM Mbed OS build profiles](https://os.mbed.com/docs/mbed-os/latest/program-setup/build-profiles-and-rules.html). + +When using the building script, it is possible expand the list of acceptable +targets; this may be useful for rapid testing of a new mbed-targets. + +## Flashing + +The Lighting application can be flashed in the same way as any other Matter +example ported to mbed-os platform. + +The [Open On-Chip Debugger](http://openocd.org/) is used to upload a binary +image and reset the device. + +- **by using VSCode task**: + +``` +Command Palette (F1) => Run Task... -> Run Mbed Application => flash => lighting-app => (board name) => (build profile) +``` + +- **by calling explicitly building script:** + +``` +${MATTER_ROOT}/scripts/examples/mbed_example.sh -c=flash -a=lighting-app -b= -p= +``` + +- **by using VSCode launch task**: + +``` +Run and Debug (Ctrl+Shift+D) => Flash Mbed examples => Start Debugging (F5) => (board name) => lighting-app => (build profile) +``` + +The last option uses the Open On-Chip Debugger to open and manage the gdb-server +session. Then gdb-client (arm-none-eabi-gdb) upload binary image and reset +device. + +It is possible to connect to an external gdb-server session by using specific +**'Flash Mbed examples [remote]'** task. + +## Debugging + +Debugging can be performed in the same was as with any other Matter example +ported to mbed-os platform. + +The [Open On-Chip Debugger](http://openocd.org/) is used to to open and manage +the gdb-server session. Then gdb-client (arm-none-eabi-gdb) connect the server +to upload binary image and control debugging. + +``` +Run and Debug (Ctrl+Shift+D) => Debug Mbed examples => Start Debugging (F5) => (board name) => lighting-app => (build profile) +``` + +It is possible to connect to an external gdb-server session by using specific +**'Debug Mbed examples [remote]'** task. + +## Testing + +### Serial port terminal + +The application traces are streaming to serial output. To start communication +open a terminal session and connect to the serial port of the device. You can +use **mbed-tools** for this purpose +([mbed-tools](https://github.com/ARMmbed/mbed-tools)): + + mbed-tools sterm -p /dev/ttyACM0 -b 115200 -e off + +After device reset these lines should be visible: + + [INFO][CHIP]: [-]Mbed lighting-app example application start + ... + [INFO][CHIP]: [-]Mbed lighting-app example application run + +The lighting-app application launched correctly and you can follow traces in the +terminal. + +### CHIP Tools + +Read the [MbedCommissioning](../../../docs/guides/mbedos_commissioning.md) to +see how to use different CHIP tools to commission and control the application +within a WiFi network. + +### RPC console + +The RPC console is an interactive Python shell console, where the different RPC +command can be invoked. It is a complete solution for interacting with hardware +devices using pw_rpc over a pw_hdlc transport. For more details about Pigweed +modules visit [Pigweed modules](https://pigweed.dev/module_guides.html). + +**

Building and installing

** + +To build and install the RPC console check the guide +[CHIP RPC console](../../common/pigweed/rpc_console/README.md). + +**

Run

** + +To start the RPC console run the following command and provide device connection +parameters as arguments: + +- --device/-d the serial port to use. +- --baudrate/-b the baud rate to use. +- --output/-o the file to which to write device output (HDLC channel 1), + provide - or omit for stdout. +- --socket-addr/-s alternatively use socket to connect to server, type default + for localhost:33000, or manually input the server address:port. + +Example: + + python -m chip_rpc.console -d /dev/ttyUSB0 -b 115200 -o /tmp/pw_rpc.out + +To control the lighting type the following command, where you define if 'on' +state is true or false: + + In [1]: rpcs.chip.rpc.Lighting.Set(on=True) + +The response from the device should be: + + Out[1]: (Status.OK, pw.protobuf.Empty()) + +To check the lighting state type the following command: + + In [1]: rpcs.chip.rpc.Lighting.Get() + +The response from the device should contain the current lighting state: + + Out[1]: Status.OK, chip.rpc.LightingState(on=True)) + +For more details about RPC console and supported services visit +[CHIP RPC console](../../common/pigweed/rpc_console/README.md). + +## Supported devices + +The example supports building and running on the following mbed-enabled devices: + +| Manufacturer | Hardware platform | Build target | Platform image | Status | Platform components | +| ----------------------------------------------------- | ------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Cypress
Semiconductor](https://www.cypress.com/) | [CY8CPROTO-062-4343W](https://os.mbed.com/platforms/CY8CPROTO-062-4343W/) | `CY8CPROTO_062_4343W` |
CY8CPROTO-062-4343WCY8CPROTO-062-4343W
| :heavy_check_mark: |
LEDs
  • Board has only one usable LED (LED4) which corresponds to USER LED from UI.
  • Lighting LED should be an external component connected to PB9_6 pin (active high).
Buttons
  • SW2 push-button is not used in this example due to its interaction with WIFI module interrupt line.
  • Button 0 corresponds to BTN0 capacitive button.
  • Button 1 corresponds to BTN1 capacitive button.
Slider
  • The board's touch slider corresponds to UI slider
| + +#### Notes + +- More details and guidelines about porting new hardware into the Matter + project with Mbed OS can be found in + [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md) +- Some useful information about HW platform specific settings can be found in + `lighting-app/mbed/mbed_app.json`. + Information about this file syntax and its meaning in mbed-os project can be + found here: + [Mbed-Os configuration system](https://os.mbed.com/docs/mbed-os/latest/program-setup/advanced-configuration.html)) + +# Device UI + +This section lists the User Interface elements that you can use to control and +monitor the state of the device. These correspond to PCB components on the +platform image. + +**USER LED** shows the overall state of the device and its connectivity. The +following states are possible: + +- _Short Flash On (50 ms on/950 ms off)_ — The device is in the + unprovisioned (unpaired) state and is waiting for a commissioning + application to connect. + +- _Rapid Even Flashing (100 ms on/100 ms off)_ — The device is in the + unprovisioned state and a commissioning application is connected through + Bluetooth LE. + +- _Short Flash Off (950ms on/50ms off)_ — The device is fully + provisioned, but does not yet have full network or service connectivity. + +- _Solid On_ — The device is fully provisioned and has full network and + service connectivity. + +**Lighting LED** simulates the light bulb and shows the state of the lighting. +The following states are possible: + +- _Solid On_ — The light bulb is on. + +- _Off_ — The light bulb is off. + +- _PWM_ — The light bulb is dimmed according to PWM. + +**Button 0** can be used for the following purposes: + +- _Pressed for 6 s_ — Initiates the factory reset of the device. + Releasing the button within the 6-second window cancels the factory reset + procedure. **LEDs 1-4** blink in unison when the factory reset procedure is + initiated. + +- _Pressed for less than 3 s_ — Initiates the OTA software update + process. This feature is not currently supported. + +**Button 1** — Pressing the button once changes the lighting state to the +opposite one. + +**Slider** — This touch control allows you to change PWM and therefore the +dimming lighting state from the OFF state to maximum brightness corresponding to +ON state. Currently the dimming resolution is set from 0-255 to satisfy ZCL 8 +bit commands argument for lighting cluster. + +### Notes + +Some of the supported boards may not have sufficient number PCB components to +follow above description. In that case please refer to +[Supported devices](#Supported-devices) section and check board's 'Platform +components' column for additional information about the limitation. diff --git a/examples/lock-app/mbed/README.md b/examples/lock-app/mbed/README.md new file mode 100644 index 00000000000000..ca1b085a0815b2 --- /dev/null +++ b/examples/lock-app/mbed/README.md @@ -0,0 +1,324 @@ +

+ ARM Mbed-OS logo +

+ +

Matter Arm Mbed OS Lock Example Application

+ +The Arm Mbed OS Lock Example demonstrates how to remotely control a door lock +device with one basic bolt. The example takes advantage of the IO available on +board: + +- A button press close or open the lock. +- A LED shows the lock state. + +You can use this example as a reference for creating your own application. + +The example is based on +[Matter](https://github.com/project-chip/connectedhomeip) and Arm Mbed OS, and +supports remote access and control of lock over a WiFi network. + +The example behaves as a Matter accessory, in other words a device that can be +paired into an existing Matter network and can be controlled by this network. + +
+ +- [Overview](#overview) + - [Bluetooth Low Energy advertising](#bluetooth-low-energy-advertising) + - [Bluetooth Low Energy rendezvous](#bluetooth-low-energy-rendezvous) + - [WiFi provisioning](#wifi-provisioning) +- [Run application](#run-application) + - [Environment setup](#environment-setup) + - [Building](#building) + - [Flashing](#flashing) + - [Debugging](#debugging) + - [Testing](#testing) + - [Serial port terminal](#serial-port-terminal) + - [CHIP Tools](#chip-tools) + - [RPC console](#rpc-console) + - [Supported devices](#supported-devices) + - [Notes](#notes) + - [Device UI](#device-ui) + +
+ +# Overview + +The Matter device that runs the lock application is controlled by the Matter +controller device over WiFi. By default, the Matter device is disconnected , and +it should be paired with Matter controller and get configuration from it. +Actions required before establishing full communication are described below. + +## Bluetooth Low Energy advertising + +To commission the device onto a Matter network, the device must be discoverable +over BLE. The BLE advertising starts automatically after device boot-up. + +## Bluetooth Low Energy rendezvous + +In Matter, the commissioning procedure (called rendezvous) is done over BLE +between a Matter device and the Matter controller, where the controller has the +commissioner role. + +To start the rendezvous, the controller must get the commissioning information +from the Matter device. The data payload is encoded within a QR code, printed to +the UART console. + +## WiFi provisioning + +The last part of the rendezvous procedure, provisioning involves sending the +network credentials from the Matter controller to the Matter device. As a +result, device is able to join the network and communicate with other devices in +the network. + +# Run application + +## Environment setup + +Before building the example, check out the Matter repository and sync submodules +using the following command: + + $ git submodule update --init + +Building the example application requires the use of **ARM Mbed-OS** sources and +the **arm-none-gnu-eabi** toolchain. The OpenOCD package is used for flashing +purpose.
Some additional packages may be needed, depending on selected +build target and its requirements. + +> **The VSCode devcontainer has these components pre-installed. Using the VSCode +> devcontainer is the recommended way to interact with Arm Mbed-OS port of the +> Matter Project.** +> +> **Please read this [README.md](../../..//docs/VSCODE_DEVELOPMENT.md) for more +> information about using VSCode in container.** + +To initialize the development environment, download all registered sub-modules +and activate the environment: + +``` +$ source ./scripts/bootstrap.sh +$ source ./scripts/activate.sh +``` + +If packages are already installed then you just need to activate the development +environment: + +``` +$ source ./scripts/activate.sh +``` + +## Building + +The Lock application can be built in the same way as any other Matter example +ported to the mbed-os platform. + +- **by using generic vscode task**: + +``` +Command Palette (F1) => Run Task... => Run Mbed Application => build => lock-app => (board name) => (build profile) +``` + +- **by calling explicitly building script:** + +``` +${MATTER_ROOT}/scripts/examples/mbed_example.sh -c=build -a=lock-app -b= -p= +``` + +Both approaches are limited to supported evaluation boards which are listed in +[Supported devices](#supported_devices) paragraph. + +Mbed OS defines three building profiles: _develop, debug_ and _release_. For +more details please visit +[ARM Mbed OS build profiles](https://os.mbed.com/docs/mbed-os/latest/program-setup/build-profiles-and-rules.html). + +When using the building script, it is possible expand the list of acceptable +targets; this may be useful for rapid testing of a new mbed-targets. + +## Flashing + +The Lock application can be flashed in the same way as any other Matter example +ported to mbed-os platform. + +The [Open On-Chip Debugger](http://openocd.org/) is used to upload a binary +image and reset the device. + +- **by using VSCode task**: + +``` +Command Palette (F1) => Run Task... -> Run Mbed Application => flash => lock-app => (board name) => (build profile) +``` + +- **by calling explicitly building script:** + +``` +${MATTER_ROOT}/scripts/examples/mbed_example.sh -c=flash -a=lock-app -b= -p= +``` + +- **by using VSCode launch task**: + +``` +Run and Debug (Ctrl+Shift+D) => Flash Mbed examples => Start Debugging (F5) => (board name) => lock-app => (build profile) +``` + +The last option uses the Open On-Chip Debugger to open and manage the gdb-server +session. Then gdb-client (arm-none-eabi-gdb) upload binary image and reset +device. + +It is possible to connect to an external gdb-server session by using specific +**'Flash Mbed examples [remote]'** task. + +## Debugging + +Debugging can be performed in the same was as with any other Matter example +ported to mbed-os platform. + +The [Open On-Chip Debugger](http://openocd.org/) is used to to open and manage +the gdb-server session. Then gdb-client (arm-none-eabi-gdb) connect the server +to upload binary image and control debugging. + +``` +Run and Debug (Ctrl+Shift+D) => Debug Mbed examples => Start Debugging (F5) => (board name) => lock-app => (build profile) +``` + +It is possible to connect to an external gdb-server session by using specific +**'Debug Mbed examples [remote]'** task. + +## Testing + +### Serial port terminal + +The application traces are streaming to serial output. To start communication +open a terminal session and connect to the serial port of the device. You can +use **mbed-tools** for this purpose +([mbed-tools](https://github.com/ARMmbed/mbed-tools)): + + mbed-tools sterm -p /dev/ttyACM0 -b 115200 -e off + +After device reset these lines should be visible: + + [INFO][CHIP]: [-]Mbed lock-app example application start + ... + [INFO][CHIP]: [-]Mbed lock-app example application run + +The lock-app application launched correctly and you can follow traces in the +terminal. + +### CHIP Tools + +Read the [MbedCommissioning](../../../docs/guides/mbedos_commissioning.md) to +see how to use different CHIP tools to commission and control the application +within a WiFi network. + +### RPC console + +The RPC console is an interactive Python shell console, where the different RPC +command can be invoked. It is a complete solution for interacting with hardware +devices using pw_rpc over a pw_hdlc transport. For more details about Pigweed +modules visit [Pigweed modules](https://pigweed.dev/module_guides.html). + +**

Building and installing

** + +To build and install the RPC console check the guide +[CHIP RPC console](../../common/pigweed/rpc_console/README.md). + +**

Run

** + +To start the RPC console run the following command and provide device connection +parameters as arguments: + +- --device/-d the serial port to use. +- --baudrate/-b the baud rate to use. +- --output/-o the file to which to write device output (HDLC channel 1), + provide - or omit for stdout. +- --socket-addr/-s alternatively use socket to connect to server, type default + for localhost:33000, or manually input the server address:port. + +Example: + + python -m chip_rpc.console -d /dev/ttyUSB0 -b 115200 -o /tmp/pw_rpc.out + +To control the lock type the following command, where you define if 'on' state +is true or false: + + In [1]: rpcs.chip.rpc.Locking.Set(locked=True) + +The response from the device should be: + + Out[1]: (Status.OK, pw.protobuf.Empty()) + +To check the lock state type the following command: + + In [1]: rpcs.chip.rpc.Locking.Get() + +The response from the device should contain the current lock state: + + Out[1]: Status.OK, chip.rpc.LockingState(locked=True)) + +For more details about RPC console and supported services visit +[CHIP RPC console](../../common/pigweed/rpc_console/README.md). + +## Supported devices + +The example supports building and running on the following mbed-enabled devices: + +| Manufacturer | Hardware platform | Build target | Platform image | Status | Platform components | +| ----------------------------------------------------- | ------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Cypress
Semiconductor](https://www.cypress.com/) | [CY8CPROTO-062-4343W](https://os.mbed.com/platforms/CY8CPROTO-062-4343W/) | `CY8CPROTO_062_4343W` |
CY8CPROTO-062-4343WCY8CPROTO-062-4343W
| :heavy_check_mark: |
LEDs
  • Board has only one usable LED (LED4) which corresponds to USER LED from UI.
  • Lock state LED should be an external component connected to PB9_6 pin (active high).
Buttons
  • SW2 push-button is not used in this example due to its interaction with WIFI module interrupt line.
  • Button 0 corresponds to BTN0 capacitive button.
  • Button 1 corresponds to BTN1 capacitive button.
Slider
  • Unused
| + +#### Notes + +- More details and guidelines about porting new hardware into the Matter + project with Mbed OS can be found in + [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md) +- Some useful information about HW platform specific settings can be found in + `lock-app/mbed/mbed_app.json`. + Information about this file syntax and its meaning in mbed-os project can be + found here: + [Mbed-Os configuration system](https://os.mbed.com/docs/mbed-os/latest/program-setup/advanced-configuration.html)) + +## Device UI + +This section lists the User Interface elements that you can use to control and +monitor the state of the device. These correspond to PCB components on the +platform image. + +**USER LED** shows the overall state of the device and its connectivity. The +following states are possible: + +- _Short Flash On (50 ms on/950 ms off)_ — The device is in the + unprovisioned (unpaired) state and is waiting for a commissioning + application to connect. + +- _Rapid Even Flashing (100 ms on/100 ms off)_ — The device is in the + unprovisioned state and a commissioning application is connected through + Bluetooth LE. + +- _Short Flash Off (950ms on/50ms off)_ — The device is fully + provisioned, but does not yet have full network or service connectivity. + +- _Solid On_ — The device is fully provisioned and has full network and + service connectivity. + +**Lock state LED** shows the state of the lock. The following states are +possible: + +- _Solid On_ — The lock is closed. + +- _Off_ — The lock is open. + +**Button 0** can be used for the following purposes: + +- _Pressed for 6 s_ — Initiates the factory reset of the device. + Releasing the button within the 6-second window cancels the factory reset + procedure. **LEDs 1-4** blink in unison when the factory reset procedure is + initiated. + +- _Pressed for less than 3 s_ — Initiates the OTA software update + process. This feature is not currently supported. + +**Button 1** — Pressing the button once changes the lock state to the +opposite one. + +Some of the supported boards may not have sufficient number PCB components to +follow above description. In that case please refer to +[Supported devices](#Supported-devices) section and check board's 'Platform +components' column for additional information about the limitation. diff --git a/examples/pigweed-app/mbed/README.md b/examples/pigweed-app/mbed/README.md new file mode 100644 index 00000000000000..bb72edd0258ac0 --- /dev/null +++ b/examples/pigweed-app/mbed/README.md @@ -0,0 +1,255 @@ +

+ ARM Mbed-OS logo +

+ +

Matter Arm Mbed OS Pigweed Example Application

+ +The Arm Mbed OS Pigweed Example demonstrates the usage of Pigweed module +functionalities in an application. + +You can use this example as a reference for creating your own application. + +The example is based on +[Matter](https://github.com/project-chip/connectedhomeip) and Arm Mbed OS, and +supports remote access and control of device over a serial port. + +Pigweed functionalities are integrated into this application. The Remote +Procedure Call (RPC) server is created. It allows sending commands through the +serial port to the device. The following RPC protocols services are available: + +- **Echo** - receive message and send the same payload back + +
+ +- [Overview](#overview) +- [Run application](#run-application) + - [Environment setup](#environment-setup) + - [Building](#building) + - [Flashing](#flashing) + - [Debugging](#debugging) + - [Testing](#testing) + - [Serial port terminal](#serial-port-terminal) + - [RPC console](#rpc-console) + - [Supported devices](#supported-devices) + - [Notes](#notes) +- [Device UI](#device-ui) + - [Notes](#notes-1) + +
+ +# Overview + +Pigweed libraries are built and organized in a way that enables faster and more +reliable development. In the Matter project, the Pigweed module is planned to be +used to create system infrastructures, for example for performing on-device +tests, but considering its general functionalities, it can be useful also in +other cases. + +# Run application + +## Environment setup + +Before building the example, check out the Matter repository and sync submodules +using the following command: + + $ git submodule update --init + +Building the example application requires the use of **ARM Mbed-OS** sources and +the **arm-none-gnu-eabi** toolchain. The OpenOCD package is used for flashing +purpose.
Some additional packages may be needed, depending on selected +build target and its requirements. + +> **The VSCode devcontainer has these components pre-installed. Using the VSCode +> devcontainer is the recommended way to interact with Arm Mbed-OS port of the +> Matter Project.** +> +> **Please read this [README.md](../../..//docs/VSCODE_DEVELOPMENT.md) for more +> information about using VSCode in container.** + +To initialize the development environment, download all registered sub-modules +and activate the environment: + +``` +$ source ./scripts/bootstrap.sh +$ source ./scripts/activate.sh +``` + +If packages are already installed then you just need to activate the development +environment: + +``` +$ source ./scripts/activate.sh +``` + +## Building + +The Pigweed application can be built in the same way as any other Matter example +ported to the mbed-os platform. + +- **by using generic vscode task**: + +``` +Command Palette (F1) => Run Task... => Run Mbed Application => build => pigweed-app => (board name) => (build profile) +``` + +- **by calling explicitly building script:** + +``` +${MATTER_ROOT}/scripts/examples/mbed_example.sh -c=build -a=pigweed-app -b= -p= +``` + +Both approaches are limited to supported evaluation boards which are listed in +[Supported devices](#supported_devices) paragraph. + +Mbed OS defines three building profiles: _develop, debug_ and _release_. For +more details please visit +[ARM Mbed OS build profiles](https://os.mbed.com/docs/mbed-os/latest/program-setup/build-profiles-and-rules.html). + +When using the building script, it is possible expand the list of acceptable +targets; this may be useful for rapid testing of a new mbed-targets. + +## Flashing + +The Pigweed application can be flashed in the same way as any other Matter +example ported to mbed-os platform. + +The [Open On-Chip Debugger](http://openocd.org/) is used to upload a binary +image and reset the device. + +- **by using VSCode task**: + +``` +Command Palette (F1) => Run Task... -> Run Mbed Application => flash => pigweed-app => (board name) => (build profile) +``` + +- **by calling explicitly building script:** + +``` +${MATTER_ROOT}/scripts/examples/mbed_example.sh -c=flash -a=pigweed-app -b= -p= +``` + +- **by using VSCode launch task**: + +``` +Run and Debug (Ctrl+Shift+D) => Flash Mbed examples => Start Debugging (F5) => (board name) => pigweed-app => (build profile) +``` + +The last option uses the Open On-Chip Debugger to open and manage the gdb-server +session. Then gdb-client (arm-none-eabi-gdb) upload binary image and reset +device. + +It is possible to connect to an external gdb-server session by using specific +**'Flash Mbed examples [remote]'** task. + +## Debugging + +Debugging can be performed in the same was as with any other Matter example +ported to mbed-os platform. + +The [Open On-Chip Debugger](http://openocd.org/) is used to to open and manage +the gdb-server session. Then gdb-client (arm-none-eabi-gdb) connect the server +to upload binary image and control debugging. + +``` +Run and Debug (Ctrl+Shift+D) => Debug Mbed examples => Start Debugging (F5) => (board name) => pigweed-app => (build profile) +``` + +It is possible to connect to an external gdb-server session by using specific +**'Debug Mbed examples [remote]'** task. + +## Testing + +### Serial port terminal + +The application traces are streaming to serial output. To start communication +open a terminal session and connect to the serial port of the device. You can +use **mbed-tools** for this purpose +([mbed-tools](https://github.com/ARMmbed/mbed-tools)): + + mbed-tools sterm -p /dev/ttyACM0 -b 115200 -e off + +After device reset these lines should be visible: + + [INFO][CHIP]: [-]Mbed pigweed-app example application start + ... + [INFO][CHIP]: [-]Mbed pigweed-app example application run + +The pigweed-app application launched correctly and you can follow traces in the +terminal. + +### RPC console + +The RPC console is an interactive Python shell console, where the different RPC +command can be invoked. It is a complete solution for interacting with hardware +devices using pw_rpc over a pw_hdlc transport. For more details about Pigweed +modules visit [Pigweed modules](https://pigweed.dev/module_guides.html). + +**

Building and installing

** + +To build and install the RPC console check the guide +[CHIP RPC console](../../common/pigweed/rpc_console/README.md). + +**

Run

** + +To start the RPC console run the following command and provide device connection +parameters as arguments: + +- --device/-d the serial port to use. +- --baudrate/-b the baud rate to use. +- --output/-o the file to which to write device output (HDLC channel 1), + provide - or omit for stdout. +- --socket-addr/-s alternatively use socket to connect to server, type default + for localhost:33000, or manually input the server address:port. + +Example: + + python -m chip_rpc.console -d /dev/ttyUSB0 -b 115200 -o /tmp/pw_rpc.out + +To send the echo message type the following command, where you define the +message content: + + In [1]: rpcs.pw.rpc.EchoService.Echo(msg="Hello device") + +The response from the device should be: + + Out[1]: (Status.OK, pw.rpc.EchoMessage(msg="Hello device")) + +For more details about RPC console and supported services visit +[CHIP RPC console](../../common/pigweed/rpc_console/README.md). + +## Supported devices + +The example supports building and running on the following mbed-enabled devices: + +| Manufacturer | Hardware platform | Build target | Platform image | Status | Platform components | +| ----------------------------------------------------- | ------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Cypress
Semiconductor](https://www.cypress.com/) | [CY8CPROTO-062-4343W](https://os.mbed.com/platforms/CY8CPROTO-062-4343W/) | `CY8CPROTO_062_4343W` |
CY8CPROTO-062-4343WCY8CPROTO-062-4343W
| :heavy_check_mark: |
LEDs
  • Board has only one usable LED (LED4) which corresponds to USER LED from UI.
Buttons
  • Unused
Slider
  • Unused
| + +#### Notes + +- More details and guidelines about porting new hardware into the Matter + project with Mbed OS can be found in + [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md) +- Some useful information about HW platform specific settings can be found in + `pigweed-app/mbed/mbed_app.json`. + Information about this file syntax and its meaning in mbed-os project can be + found here: + [Mbed-Os configuration system](https://os.mbed.com/docs/mbed-os/latest/program-setup/advanced-configuration.html)) + +# Device UI + +This section lists the User Interface elements that you can use to control and +monitor the state of the device. These correspond to PCB components on the +platform image. + +**USER LED** shows the overall state of the device. The following states are +possible: + +- _Solid On_ — The application was flashed and run successfully. + +### Notes + +Some of the supported boards may not have sufficient number PCB components to +follow above description. In that case please refer to +[Supported devices](#Supported-devices) section and check board's 'Platform +components' column for additional information about the limitation. diff --git a/examples/shell/mbed/README.md b/examples/shell/mbed/README.md new file mode 100644 index 00000000000000..2bec23d6abb52f --- /dev/null +++ b/examples/shell/mbed/README.md @@ -0,0 +1,203 @@ +

+ ARM Mbed-OS logo +

+ +

Matter Arm Mbed OS Shell Example Application

+ +The Arm Mbed OS Shell Example exposes configuration and management APIs via a +command line interface (CLI). Use the shell CLI to experiment with Matter +interactively, which can also be used with additional application code. + +You can use this example as a reference for creating your own application. + +The example is based on +[Matter](https://github.com/project-chip/connectedhomeip) and Arm Mbed OS, and +supports remote access and control of device over serial port. + +
+ +- [Overview](#overview) +- [Run application](#run-application) + - [Environment setup](#environment-setup) + - [Building](#building) + - [Flashing](#flashing) + - [Debugging](#debugging) + - [Testing](#testing) + - [Serial port terminal](#serial-port-terminal) + - [Supported devices](#supported-devices) + - [Notes](#notes) +- [Shell commands](#shell-commands) + +
+ +# Overview + +The Matter device that runs the shell application can be controlled over serial +port. The shell is used to parse a command line and call the corresponding +service execution. There is a set of common shell commands which performs basic +device operations. Mbed OS application also supports some custom services and +corresponding shell commands allow them execution. + +# Run application + +## Environment setup + +Before building the example, check out the Matter repository and sync submodules +using the following command: + + $ git submodule update --init + +Building the example application requires the use of **ARM Mbed-OS** sources and +the **arm-none-gnu-eabi** toolchain. The OpenOCD package is used for flashing +purpose.
Some additional packages may be needed, depending on selected +build target and its requirements. + +> **The VSCode devcontainer has these components pre-installed. Using the VSCode +> devcontainer is the recommended way to interact with Arm Mbed-OS port of the +> Matter Project.** +> +> **Please read this [README.md](../../..//docs/VSCODE_DEVELOPMENT.md) for more +> information about using VSCode in container.** + +To initialize the development environment, download all registered sub-modules +and activate the environment: + +``` +$ source ./scripts/bootstrap.sh +$ source ./scripts/activate.sh +``` + +If packages are already installed then you just need to activate the development +environment: + +``` +$ source ./scripts/activate.sh +``` + +## Building + +The shell application can be built in the same way as any other Matter example +ported to the mbed-os platform. + +- **by using generic vscode task**: + +``` +Command Palette (F1) => Run Task... => Run Mbed Application => build => shell => (board name) => (build profile)` +``` + +- **by calling explicitly building script:** + +``` +${MATTER_ROOT}/scripts/examples/mbed_example.sh -c=build -a=shell -b= -p= +``` + +Both approaches are limited to supported evaluation boards which are listed in +[Supported devices](#supported_devices) paragraph. + +Mbed OS defines three building profiles: _develop, debug_ and _release_. For +more details please visit +[ARM Mbed OS build profiles](https://os.mbed.com/docs/mbed-os/latest/program-setup/build-profiles-and-rules.html). + +When using the building script, it is possible expand the list of acceptable +targets; this may be useful for rapid testing of a new mbed-targets. + +## Flashing + +The shell application can be flashed in the same way as any other Matter example +ported to mbed-os platform. + +The [Open On-Chip Debugger](http://openocd.org/) is used to upload a binary +image and reset the device. + +- **by using VSCode task**: + +``` +Command Palette (F1) => Run Task... -> Run Mbed Application => flash => shell => (board name) => (build profile) +``` + +- **by calling explicitly building script:** + +``` +${MATTER_ROOT}/scripts/examples/mbed_example.sh -c=flash -a=shell -b= -p= +``` + +- **by using VSCode launch task**: + +``` +Run and Debug (Ctrl+Shift+D) => Flash Mbed examples => Start Debugging (F5) => (board name) => shell => (build profile) +``` + +The last option uses the Open On-Chip Debugger to open and manage the gdb-server +session. Then gdb-client (arm-none-eabi-gdb) upload binary image and reset +device. + +It is possible to connect to an external gdb-server session by using specific +**'Flash Mbed examples [remote]'** task. + +## Debugging + +Debugging can be performed in the same was as with any other Matter example +ported to mbed-os platform. + +The [Open On-Chip Debugger](http://openocd.org/) is used to to open and manage +the gdb-server session. Then gdb-client (arm-none-eabi-gdb) connect the server +to upload binary image and control debugging. + +``` +Run and Debug (Ctrl+Shift+D) => Debug Mbed examples => Start Debugging (F5) => (board name) => shell => (build profile) +``` + +It is possible to connect to an external gdb-server session by using specific +**'Debug Mbed examples [remote]'** task. + +## Testing + +### Serial port terminal + +To start communication open a serial terminal session and connect to the serial +port of the device. You can use **mbed-tools** for this purpose +([mbed-tools](https://github.com/ARMmbed/mbed-tools)): + + mbed-tools sterm -p /dev/ttyACM0 -b 115200 -e off + +After device reset these lines should be visible: + + [INFO][CHIP]: [-]Mbed shell example application start + ... + [INFO][CHIP]: [-]Mbed shell example application run + +The shell application launched correctly. Send commands and wait for the +response [Shell commands](#shell-commands). + +Example: + + > echo Hello + Hello + Done + +## Supported devices + +The example supports building and running on the following mbed-enabled devices: + +| Manufacturer | Hardware platform | Build target | Platform image | Status | Platform components | +| ----------------------------------------------------- | ------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Cypress
Semiconductor](https://www.cypress.com/) | [CY8CPROTO-062-4343W](https://os.mbed.com/platforms/CY8CPROTO-062-4343W/) | `CY8CPROTO_062_4343W` |
CY8CPROTO-062-4343WCY8CPROTO-062-4343W
| :heavy_check_mark: |
LEDs
  • Unused
Buttons
  • Unused
Slider
  • Unused
| + +#### Notes + +- More details and guidelines about porting new hardware into the Matter + project with Mbed OS can be found in + [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md) +- Some useful information about HW platform specific settings can be found in + `shell/mbed/mbed_app.json`. + Information about this file syntax and its meaning in mbed-os project can be + found here: + [Mbed-Os configuration system](https://os.mbed.com/docs/mbed-os/latest/program-setup/advanced-configuration.html)) + +# Shell commands + +The application supports common Matter shell commands. They are used to control +the basic functionalities of the device. + +For more details visit: +[Common shell commands](../README.md#chip-shell-command-details) diff --git a/src/test_driver/mbed/README.md b/src/test_driver/mbed/README.md new file mode 100644 index 00000000000000..d3487dd9482d9b --- /dev/null +++ b/src/test_driver/mbed/README.md @@ -0,0 +1,191 @@ +

+ ARM Mbed-OS logo +

+ +

Matter Arm Mbed OS Unit Tests Application

+ +The Arm Mbed OS Unit Tests application executes all supported unit tests on the +device. + +The application is based on +[Matter](https://github.com/project-chip/connectedhomeip) and Arm Mbed OS, and +validates Matter solution components directly on the device. + +
+ +- [Overview](#overview) +- [Run application](#run-application) + - [Environment setup](#environment-setup) + - [Building](#building) + - [Flashing](#flashing) + - [Debugging](#debugging) + - [Testing](#testing) + - [Serial port terminal](#serial-port-terminal) + - [Supported devices](#supported-devices) + - [Notes](#notes) + +
+ +# Overview + +The Matter unit tests are included in a monolithic library and allow to validate +most of the components used by Matter examples applications. The main goal of +this application is to run registered tests on the device and check the results. +The final result is the number of tests that failed. + +# Run application + +## Environment setup + +Before building the application, check out the Matter repository and sync +submodules using the following command: + + $ git submodule update --init + +Building the application requires the use of **ARM Mbed-OS** sources and the +**arm-none-gnu-eabi** toolchain. The OpenOCD package is used for flashing +purpose.
Some additional packages may be needed, depending on selected +build target and its requirements. + +> **The VSCode devcontainer has these components pre-installed. Using the VSCode +> devcontainer is the recommended way to interact with Arm Mbed-OS port of the +> Matter Project.** +> +> **Please read this [README.md](../../..//docs/VSCODE_DEVELOPMENT.md) for more +> information about using VSCode in container.** + +To initialize the development environment, download all registered sub-modules +and activate the environment: + +``` +$ source ./scripts/bootstrap.sh +$ source ./scripts/activate.sh +``` + +If packages are already installed then you just need to activate the development +environment: + +``` +$ source ./scripts/activate.sh +``` + +## Building + +The Unit Test application can be built analogously to Matter examples ported to +the mbed-os platform. It uses a custom script therefore it is a separate defined +target. + +- **by using generic vscode task**: + +``` +Command Palette (F1) => Run Task... => Run Mbed Unit Tests => build => (board name) => (build profile) +``` + +- **by calling explicitly building script:** + +``` +${MATTER_ROOT}/scripts/tests/mbed/mbed_unit_tests.sh -c=build -b= -p= +``` + +Both approaches are limited to supported evaluation boards which are listed in +[Supported devices](#supported_devices) paragraph. + +Mbed OS defines three building profiles: _develop, debug_ and _release_. For +more details please visit +[ARM Mbed OS build profiles](https://os.mbed.com/docs/mbed-os/latest/program-setup/build-profiles-and-rules.html). + +When using the building script, it is possible expand the list of acceptable +targets; this may be useful for rapid testing of a new mbed-targets. + +## Flashing + +The Unit Test application can be flashed analogously to Matter examples ported +to the mbed-os platform. It uses a custom script therefore it is a separate +defined target. + +The [Open On-Chip Debugger](http://openocd.org/) is used to upload a binary +image and reset the device. + +- **by using VSCode task**: + +``` +Command Palette (F1) => Run Task... -> Run Mbed Unit Tests => flash => (board name) => (build profile) +``` + +- **by calling explicitly building script:** + +``` +${MATTER_ROOT}/scripts/tests/mbed/mbed_unit_tests.sh -c=flash -b= -p= +``` + +- **by using VSCode launch task**: + +``` +Run and Debug (Ctrl+Shift+D) => Flash Mbed unit tests => Start Debugging (F5) => (board name) => (build profile) +``` + +The last option uses the Open On-Chip Debugger to open and manage the gdb-server +session. Then gdb-client (arm-none-eabi-gdb) upload binary image and reset +device. + +It is possible to connect to an external gdb-server session by using specific +**'Flash Mbed unit tests [remote]'** task. + +## Debugging + +Debugging can be performed analogously to Matter examples ported to the mbed-os +platform. + +The [Open On-Chip Debugger](http://openocd.org/) is used to to open and manage +the gdb-server session. Then gdb-client (arm-none-eabi-gdb) connect the server +to upload binary image and control debugging. + +``` +Run and Debug (Ctrl+Shift+D) => Debug Mbed unit tests => Start Debugging (F5) => (board name) => (build profile) +``` + +It is possible to connect to an external gdb-server session by using specific +**'Debug Mbed unit tests [remote]'** task. + +## Testing + +### Serial port terminal + +The test results are streaming to serial output. To start communication open a +terminal session and connect to the serial port of the device. You can use +**mbed-tools** for this purpose +([mbed-tools](https://github.com/ARMmbed/mbed-tools)): + + mbed-tools sterm -p /dev/ttyACM0 -b 115200 -e off + +After device reset these lines should be visible: + + [INFO][CHIP]: [-]Mbed unit-tests application start + ... + [INFO][CHIP]: [-]Mbed unit-tests application run + +The unit tests application launched correctly and registered tests are executed. + +The final result is the number of tests that failed: + + [INFO][CHIP]: [-]CHIP test status: 0 + +## Supported devices + +The application supports building and running on the following mbed-enabled +devices: + +| Manufacturer | Hardware platform | Build target | Platform image | Status | Platform components | +| ----------------------------------------------------- | ------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Cypress
Semiconductor](https://www.cypress.com/) | [CY8CPROTO-062-4343W](https://os.mbed.com/platforms/CY8CPROTO-062-4343W/) | `CY8CPROTO_062_4343W` |
CY8CPROTO-062-4343WCY8CPROTO-062-4343W
| :heavy_check_mark: |
LEDs
  • Board has only one usable LED (LED4) which corresponds to USER LED from UI.
Buttons
  • Unused
Slider
  • Unused
| + +#### Notes + +- More details and guidelines about porting new hardware into the Matter + project with Mbed OS can be found in + [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md) +- Some useful information about HW platform specific settings can be found in + `test_driver/mbed/mbed_app.json`. + Information about this file syntax and its meaning in mbed-os project can be + found here: + [Mbed-Os configuration system](https://os.mbed.com/docs/mbed-os/latest/program-setup/advanced-configuration.html))