├── README.md
├── bluetooth_ssv5_lab2_ibeacon_component
├── README.md
├── SimplicityStudio
│ └── soc_empty_plus_ibeacon_component_bg22.sls
└── src
│ └── app.c
├── dev_lab_adafruit_13x9_rgb_led_matrix
├── Bluetooth
│ └── app.c
├── Common
│ ├── adafruit_light.c
│ ├── adafruit_light.h
│ ├── adafruit_lock.c
│ └── adafruit_lock.h
├── Images
│ └── SiliconLabs-DevLab-Adafruit13x9RGBLEDMatrix.png
├── LICENSE
├── Matter
│ └── AppTask.cpp
└── README.md
├── dev_lab_arduino_matter_mood_light
├── .gitignore
├── LICENSE
├── README.md
├── enclosure
│ ├── enclosure-48-24-8-bottom.lbrn2
│ ├── enclosure-48-24-8-bottom.svg
│ ├── enclosure-48-24-8-top.lbrn2
│ └── enclosure-48-24-8-top.svg
├── fritzing
│ ├── Nano-0v8-Gerbers.zip
│ └── Nano-0v8.fzz
├── images
│ ├── Wiring-Dev.png
│ ├── Wiring-Explorer.png
│ ├── Wiring-Nano.png
│ ├── Wiring-SF.png
│ └── thumb-640x360.png
├── moody_1_solid
│ ├── fast_hsv2rgb.h
│ ├── fast_hsv2rgb_32bit.c
│ └── moody_1_solid.ino
├── moody_2_gradient
│ ├── fast_hsv2rgb.h
│ ├── fast_hsv2rgb_32bit.c
│ └── moody_2_gradient.ino
├── moody_3_noise
│ ├── fast_hsv2rgb.h
│ ├── fast_hsv2rgb_32bit.c
│ ├── moody_3_noise.ino
│ ├── noise.h
│ └── noise.png
└── moody_4_final
│ ├── fast_hsv2rgb.h
│ ├── fast_hsv2rgb_32bit.c
│ ├── moody_4_final.ino
│ ├── noise.h
│ ├── noise.png
│ ├── noise_subtle.h
│ └── noise_subtle.png
├── dev_lab_arduino_matter_occupancy_sensor
├── .gitignore
├── LICENSE
├── README.md
├── btn_matter_occupancy_sensor
│ └── btn_matter_occupancy_sensor.ino
├── fritzing
│ ├── Arduino Nano Matter.fzpz
│ ├── Nano-Matter-Occupancy-0v2-Gerbers.zip
│ └── Nano-Matter-Occupancy-0v2.fzz
├── images
│ ├── Wiring-Nano-PIR-BTN.png
│ ├── Wiring-Nano-PIR.png
│ └── thumb-640x360.png
├── pir_btn_matter_occupancy_sensor
│ └── pir_btn_matter_occupancy_sensor.ino
├── pir_matter_occupancy_sensor
│ └── pir_matter_occupancy_sensor.ino
└── ww24
│ └── MAT-201-GM-0v6-Arduino-Nano-Matter-Hands-On.pdf
├── dev_lab_bluetooth_ai_ml_magic_wand
├── Binary
│ └── bt_soc_wandy_brd2601b.s37
├── Images
│ ├── 1-2-Install-Manager.png
│ ├── 10-Examples.png
│ ├── 3-4-SDKs-Gecko.png
│ ├── 5-Finish.png
│ ├── 6-7-8-9-Preferred-SDK.png
│ └── SiliconLabs-DevLab-BT-AI-ML-Magic-Wand.png
├── LICENSE
├── README.md
└── Source
│ ├── accelerometer.cc
│ ├── accelerometer.h
│ ├── app.c
│ ├── app.h
│ ├── config
│ └── tflite
│ │ └── magic_wand_model.tflite
│ ├── constants.h
│ ├── magic_wand.cc
│ ├── magic_wand.h
│ ├── predictor.cc
│ └── predictor.h
├── dev_lab_circuitpython_bluetooth_find_me
├── .gitignore
├── LICENSE.txt
├── README.md
├── device_root_1_hardware
│ ├── App.py
│ ├── Button.py
│ ├── Led.py
│ ├── Piezo.py
│ ├── Rtttl.py
│ ├── Tick.py
│ └── code.py
├── device_root_2_target
│ ├── App.py
│ ├── Button.py
│ ├── ImmediateAlertService.py
│ ├── Led.py
│ ├── Piezo.py
│ ├── Rtttl.py
│ ├── Tick.py
│ ├── code.py
│ └── lib
│ │ └── adafruit_ble
│ │ ├── __init__.mpy
│ │ ├── advertising
│ │ ├── __init__.mpy
│ │ ├── adafruit.mpy
│ │ └── standard.mpy
│ │ ├── attributes
│ │ └── __init__.mpy
│ │ ├── characteristics
│ │ ├── __init__.mpy
│ │ ├── float.mpy
│ │ ├── int.mpy
│ │ ├── json.mpy
│ │ ├── stream.mpy
│ │ └── string.mpy
│ │ ├── services
│ │ ├── __init__.mpy
│ │ ├── circuitpython.mpy
│ │ ├── microbit.py
│ │ ├── nordic.mpy
│ │ ├── sphero.mpy
│ │ └── standard
│ │ │ ├── __init__.mpy
│ │ │ ├── device_info.mpy
│ │ │ └── hid.mpy
│ │ └── uuid
│ │ └── __init__.mpy
├── device_root_3_simple_locator
│ ├── App.py
│ ├── Button.py
│ ├── ImmediateAlertService.py
│ ├── Led.py
│ ├── Piezo.py
│ ├── Rtttl.py
│ ├── Tick.py
│ ├── code.py
│ └── lib
│ │ └── adafruit_ble
│ │ ├── __init__.mpy
│ │ ├── advertising
│ │ ├── __init__.mpy
│ │ ├── adafruit.mpy
│ │ └── standard.mpy
│ │ ├── attributes
│ │ └── __init__.mpy
│ │ ├── characteristics
│ │ ├── __init__.mpy
│ │ ├── float.mpy
│ │ ├── int.mpy
│ │ ├── json.mpy
│ │ ├── stream.mpy
│ │ └── string.mpy
│ │ ├── services
│ │ ├── __init__.mpy
│ │ ├── circuitpython.mpy
│ │ ├── microbit.py
│ │ ├── nordic.mpy
│ │ ├── sphero.mpy
│ │ └── standard
│ │ │ ├── __init__.mpy
│ │ │ ├── device_info.mpy
│ │ │ └── hid.mpy
│ │ └── uuid
│ │ └── __init__.mpy
├── device_root_4_advanced_locator
│ ├── App.py
│ ├── Button.py
│ ├── ImmediateAlertService.py
│ ├── Led.py
│ ├── Piezo.py
│ ├── Rtttl.py
│ ├── Tick.py
│ ├── code.py
│ └── lib
│ │ └── adafruit_ble
│ │ ├── __init__.mpy
│ │ ├── advertising
│ │ ├── __init__.mpy
│ │ ├── adafruit.mpy
│ │ └── standard.mpy
│ │ ├── attributes
│ │ └── __init__.mpy
│ │ ├── characteristics
│ │ ├── __init__.mpy
│ │ ├── float.mpy
│ │ ├── int.mpy
│ │ ├── json.mpy
│ │ ├── stream.mpy
│ │ └── string.mpy
│ │ ├── services
│ │ ├── __init__.mpy
│ │ ├── circuitpython.mpy
│ │ ├── microbit.py
│ │ ├── nordic.mpy
│ │ ├── sphero.mpy
│ │ └── standard
│ │ │ ├── __init__.mpy
│ │ │ ├── device_info.mpy
│ │ │ └── hid.mpy
│ │ └── uuid
│ │ └── __init__.mpy
└── images
│ ├── piezo-dev-2.png
│ ├── piezo-exp-2.png
│ ├── piezo-sparkfun-2.png
│ └── thumb.png
├── dev_lab_wifi_http_server
├── LICENSE
├── README.md
├── images
│ ├── dev_lab_sleeping_wifi_http_server_360p.png
│ └── dev_lab_wifi_http_server_360p.png
├── presentation
│ └── dev_lab_wifi_http_server_3v5.pdf
├── source_1_server
│ └── app.c
├── source_2_rejoin
│ └── app.c
├── source_3_nwp_sleep
│ └── app.c
└── source_4_nwp_m4_sleep
│ └── app.c
├── images
├── Arduino-Matter-Mood-Light-200p.png
├── Arduino-Matter-Occupancy-Sensor-200p.png
├── Arduino-Nano-Matter-200p.png
├── Find-Me-200p.png
├── LED-Matrix-200p.png
├── Magic-Wand-200p.png
├── dev_lab_sleeping_wifi_http_server_200p.png
└── dev_lab_wifi_http_server_200p.png
├── mg24_tech_lab
├── README.md
├── doc
│ ├── Edge Impulse_account.png
│ ├── mg24-tech-lab-mobile-banner.png
│ └── sensiML_account.png
├── session_1
│ ├── README.md
│ ├── SimplicityStudio
│ │ └── mg24_tech_lab_session_1.sls
│ ├── doc
│ │ ├── figure1.png
│ │ ├── figure10.png
│ │ ├── figure11.png
│ │ ├── figure12.png
│ │ ├── figure13.png
│ │ ├── figure14.png
│ │ ├── figure15.png
│ │ ├── figure16.png
│ │ ├── figure17.png
│ │ ├── figure18.png
│ │ ├── figure18.svg
│ │ ├── figure19.png
│ │ ├── figure2.png
│ │ ├── figure20.png
│ │ ├── figure20.svg
│ │ ├── figure21.png
│ │ ├── figure22.png
│ │ ├── figure23.png
│ │ ├── figure24.png
│ │ ├── figure25.png
│ │ ├── figure26.png
│ │ ├── figure27.png
│ │ ├── figure28.png
│ │ ├── figure3.png
│ │ ├── figure4.png
│ │ ├── figure5.png
│ │ ├── figure6.png
│ │ ├── figure7_1.png
│ │ ├── figure7_2.png
│ │ ├── figure8.png
│ │ └── figure9.png
│ └── src
│ │ ├── app.c
│ │ ├── app_imu_collector.c
│ │ ├── app_imu_collector.h
│ │ ├── app_mic_collector.c
│ │ ├── app_mic_collector.h
│ │ ├── app_rht_collector.c
│ │ └── app_rht_collector.h
├── session_2
│ ├── README.md
│ ├── doc
│ │ ├── SensiML Slide for SiLabs_FINAL.jpg
│ │ └── sensiML_account.png
│ └── lab_files
│ │ ├── ExportedDate.zip
│ │ ├── Guitar Note Recognition.zip
│ │ └── SensiML_xG24_Microphone_Capture-main.zip
├── session_3
│ ├── README.md
│ └── doc
│ │ ├── Edge Impulse_account.png
│ │ └── Edge_Impulse_Graphic.png
└── session_4
│ ├── README.md
│ ├── SimplicityStudio
│ └── mg24_tech_lab_session_4.sls
│ ├── bt_soc_empty_test
│ └── app.c
│ ├── docs
│ ├── add-eusart-1.png
│ ├── add-eusart-2.png
│ ├── add-feature.png
│ ├── add-legacy.png
│ ├── add-log.png
│ ├── add-microphone.png
│ ├── admin-console.png
│ ├── baudrate-set.png
│ ├── baudrate-type.png
│ ├── bootloader-build.png
│ ├── bootloader-flash-1.png
│ ├── bootloader-flash-2.png
│ ├── browse-1.png
│ ├── close-project-1.png
│ ├── close-project-2.png
│ ├── commander-kit.png
│ ├── commander-launch.png
│ ├── commander-select.png
│ ├── delete.png
│ ├── edit-1.png
│ ├── edit-2.png
│ ├── efr-connect-1.png
│ ├── efr-connect-2.png
│ ├── efr-connect-3.png
│ ├── efr-connect-4.png
│ ├── efr-connect-5.png
│ ├── force-generation.png
│ ├── fw-error.png
│ ├── gatt-1.png
│ ├── gatt-2.png
│ ├── gatt-3.png
│ ├── gatt-4.png
│ ├── gatt-5.png
│ ├── gatt-6.png
│ ├── gatt-7.png
│ ├── gatt-8.png
│ ├── gatt-9.png
│ ├── gatt-A.png
│ ├── gatt-config-saved.png
│ ├── gatt-config-unsaved.png
│ ├── import1.png
│ ├── import2.png
│ ├── launch-console.png
│ ├── launcher-soc-empty.png
│ ├── launcher1.png
│ ├── launcher2.png
│ ├── launcher3.png
│ ├── location-1.png
│ ├── location-2.png
│ ├── note.png
│ ├── remove-feature.png
│ ├── remove-ota-dfu.png
│ ├── reopen.png
│ ├── save-gatt-build.png
│ ├── sensiml-slcc.png
│ ├── toggle-mode.png
│ ├── tune-bluetooth.png
│ ├── unzip.png
│ ├── vcom-1.png
│ ├── vcom-2.png
│ └── wizard1.png
│ └── src
│ ├── app.c
│ └── knowledgepack.zip
├── quick_start_arduino_nano_matter
├── .gitignore
├── LICENSE.txt
├── README.md
├── images
│ ├── Wiring-Dev.png
│ ├── Wiring-Explorer.png
│ ├── Wiring-Nano.png
│ ├── Wiring-SF.png
│ └── thumb.png
└── matter_lightbulb_dimmable_ws2812
│ └── matter_lightbulb_dimmable_ws2812.ino
└── zigbee_boot_camp
├── LICENSE
├── README.md
├── Zigbee_Light_ZC
├── .cproject
├── .internal_hwconfig
│ ├── ZigbeeMinimalSoc.hwconf
│ └── hwconfig.properties
├── .project
├── .settings
│ └── com.silabs.ss.framework.ide.project.sls.core.prefs
├── GNU ARM v7.2.1 - Default
│ ├── Zigbee_Light_ZC.bin
│ ├── Zigbee_Light_ZC.gbl
│ ├── Zigbee_Light_ZC.ld
│ └── Zigbee_Light_ZC.s37
├── Zigbee_Light_ZC-postbuild.bat
├── Zigbee_Light_ZC-postbuild.py
├── Zigbee_Light_ZC-prebuild.bat
├── Zigbee_Light_ZC-prebuild.py
├── Zigbee_Light_ZC.h
├── Zigbee_Light_ZC.isc
├── Zigbee_Light_ZC.mak
├── Zigbee_Light_ZC_callbacks.c
├── Zigbee_Light_ZC_endpoint_config.h
├── Zigbee_Light_ZC_tokens.h
├── af-gen-event.h
├── af-structs.h
├── att-storage.h
├── attribute-id.h
├── attribute-size.h
├── attribute-type.h
├── brd4162a_efr32mg12p332f1024gl125.hwconf
├── call-command-handler.c
├── call-command-handler.h
├── callback-stub.c
├── callback.h
├── client-command-macro.h
├── cluster-id.h
├── command-id.h
├── debug-printing-test.h
├── debug-printing.h
├── enums.h
├── hal-config
│ └── hal-config.h
├── mbedtls-config-generated.h
├── print-cluster.h
├── stack-handler-stub.c
├── znet-bookkeeping.c
├── znet-bookkeeping.h
├── znet-cli.c
├── znet-cli.h
├── znet-mfg-token.h
└── znet-token.h
├── Zigbee_Switch_ZR
├── .cproject
├── .internal_hwconfig
│ ├── ZigbeeMinimalSoc.hwconf
│ └── hwconfig.properties
├── .project
├── .settings
│ └── com.silabs.ss.framework.ide.project.sls.core.prefs
├── Zigbee_Switch_ZR-postbuild.bat
├── Zigbee_Switch_ZR-postbuild.py
├── Zigbee_Switch_ZR-prebuild.bat
├── Zigbee_Switch_ZR-prebuild.py
├── Zigbee_Switch_ZR.h
├── Zigbee_Switch_ZR.isc
├── Zigbee_Switch_ZR.mak
├── Zigbee_Switch_ZR_callbacks.c
├── Zigbee_Switch_ZR_endpoint_config.h
├── Zigbee_Switch_ZR_tokens.h
├── af-gen-event.h
├── af-structs.h
├── att-storage.h
├── attribute-id.h
├── attribute-size.h
├── attribute-type.h
├── brd4162a_efr32mg12p332f1024gl125.hwconf
├── call-command-handler.c
├── call-command-handler.h
├── callback-stub.c
├── callback.h
├── client-command-macro.h
├── cluster-id.h
├── command-id.h
├── custom-token.h
├── debug-printing-test.h
├── debug-printing.h
├── enums.h
├── hal-config
│ └── hal-config.h
├── mbedtls-config-generated.h
├── print-cluster.h
├── stack-handler-stub.c
├── znet-bookkeeping.c
├── znet-bookkeeping.h
├── znet-cli.c
├── znet-cli.h
├── znet-mfg-token.h
└── znet-token.h
└── images
├── license.png
└── zigbee.png
/bluetooth_ssv5_lab2_ibeacon_component/README.md:
--------------------------------------------------------------------------------
1 | # Adding an iBeacon Component to SoC_Empty #
2 |
3 | ## Summary ##
4 |
5 | This project illustrates how to add an iBeacon component to the base SoC_Empty Bluetooth project found in the Simplicity Studio v5 tools. The example is one of four solutions to lab exercises included in a training using the Simplicity Studio v5 project flow and highlights the use of the Universal Configurator (UC) to add components to projects. The step by step instructions for the labs and other background information can be found using the Silicon Labs [lab manual](https://docs.silabs.com/bluetooth/3.0/lab-manuals/getting-started-with-bluetooth-in-simplicity-studio-v5#lab-2---turn-soc-empty-into-an-ibeacon-using-project-configurator) and a video covering this material is available in the [Silicon Labs Training Library](https://www.silabs.com/support/training/bg22-series-adding-components-to-bluetooth-design/adding-components-to-bluetooth-Lab-2).
6 |
7 | Lab manual contents:
8 |
9 | - Lab 1: Getting Started with SoC_Empty
10 | - **Lab 2: Turn SoC_Empty into an iBeacon using Universal Configurator**
11 | - Lab 3: Enhancing an Application Using Custom Services and Components
12 | - Lab 4: A Deeper Dive into Components and Using Them with the Bluetooth Stack
13 |
14 | What you will learn in lab 2:
15 |
16 | - Add new components to a project
17 | - Component dependencies
18 | - Viewing autogenerated files
19 | - Build and download an application to a target
20 | - Introduced EFR Connect mobile app
21 |
22 | ## Simplicity Studio and SDK Version ##
23 |
24 | - Simplicity Studio v5
25 | - [Simplicity Studio v5 Docs](https://docs.silabs.com/simplicity-studio-5-users-guide/1.0/index)
26 | - [Simplicity Studio v5 Software](https://www.silabs.com/products/development-tools/software/simplicity-studio/simplicity-studio-5)
27 | - GSDK v3.0.0
28 | - UC Components used: iBeacon
29 |
30 | ## Hardware Required ##
31 |
32 | - One SLTB010A Thunderboard Sense 2
33 | - Target device -> EFR32BG22
34 |
35 | [Thunderboard 2 Kit](https://www.silabs.com/development-tools/thunderboard/thunderboard-bg22-kit)
36 |
37 | ## Setup ##
38 |
39 | 1. Please see the lab manual for step by step instructions on how to create the example from scratch starting with the SoC_Empty project.
40 | 1. To skip having to run through the lab manual and use the provided source file, create SoC_Empty project and replace the default **_app.c_** file with the one in the src directory incuded with this project.
41 | 1. To use the exported .sls project file, import the included .sls file to Studio then build and flash the project to the SLTB010A STK.
42 | 1. In Simplicity Studio select "**File->Import**" and navigate to the directory with the _.sls_ project file.
43 |
44 | ## Project Filenames ##
45 |
46 | - Exported project file: **_soc_empty_plus_iBeacon_component_bg22.sls_**
47 |
--------------------------------------------------------------------------------
/bluetooth_ssv5_lab2_ibeacon_component/SimplicityStudio/soc_empty_plus_ibeacon_component_bg22.sls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/bluetooth_ssv5_lab2_ibeacon_component/SimplicityStudio/soc_empty_plus_ibeacon_component_bg22.sls
--------------------------------------------------------------------------------
/dev_lab_adafruit_13x9_rgb_led_matrix/Common/adafruit_light.h:
--------------------------------------------------------------------------------
1 | /***************************************************************************//**
2 | * @file
3 | * @brief Light display for Adafruit is31fl3741 RGB LED Matrix.
4 | *******************************************************************************
5 | * # License
6 | * Copyright 2023 Silicon Laboratories Inc. www.silabs.com
7 | *******************************************************************************
8 | *
9 | * SPDX-License-Identifier: Zlib
10 | *
11 | * The licensor of this software is Silicon Laboratories Inc.
12 | *
13 | * This software is provided 'as-is', without any express or implied
14 | * warranty. In no event will the authors be held liable for any damages
15 | * arising from the use of this software.
16 | *
17 | * Permission is granted to anyone to use this software for any purpose,
18 | * including commercial applications, and to alter it and redistribute it
19 | * freely, subject to the following restrictions:
20 | *
21 | * 1. The origin of this software must not be misrepresented; you must not
22 | * claim that you wrote the original software. If you use this software
23 | * in a product, an acknowledgment in the product documentation would be
24 | * appreciated but is not required.
25 | * 2. Altered source versions must be plainly marked as such, and must not be
26 | * misrepresented as being the original software.
27 | * 3. This notice may not be removed or altered from any source distribution.
28 | *
29 | *******************************************************************************
30 | * # Experimental Quality
31 | * This code has not been formally tested and is provided as-is. It is not
32 | * suitable for production environments. In addition, this code will not be
33 | * maintained and there may be no bug maintenance planned for these resources.
34 | * Silicon Labs may update projects from time to time.
35 | ******************************************************************************/
36 | #ifndef ADAFRUIT_LIGHT_H
37 | #define ADAFRUIT_LIGHT_H
38 |
39 | // Includes
40 | #include "em_common.h"
41 |
42 | #ifdef __cplusplus
43 | extern "C" {
44 | #endif
45 |
46 | /**************************************************************************//**
47 | * Function prototypes
48 | *****************************************************************************/
49 | sl_status_t adafruit_light_init(void);
50 | void adafruit_light_set(bool new_state);
51 | bool adafruit_light_get(void);
52 |
53 | #ifdef __cplusplus
54 | }
55 | #endif
56 |
57 | #endif // ADAFRUIT_LIGHT_H
58 |
--------------------------------------------------------------------------------
/dev_lab_adafruit_13x9_rgb_led_matrix/Common/adafruit_lock.h:
--------------------------------------------------------------------------------
1 | /***************************************************************************//**
2 | * @file
3 | * @brief Lock display for Adafruit is31fl3741 RGB LED Matrix.
4 | *******************************************************************************
5 | * # License
6 | * Copyright 2023 Silicon Laboratories Inc. www.silabs.com
7 | *******************************************************************************
8 | *
9 | * SPDX-License-Identifier: Zlib
10 | *
11 | * The licensor of this software is Silicon Laboratories Inc.
12 | *
13 | * This software is provided 'as-is', without any express or implied
14 | * warranty. In no event will the authors be held liable for any damages
15 | * arising from the use of this software.
16 | *
17 | * Permission is granted to anyone to use this software for any purpose,
18 | * including commercial applications, and to alter it and redistribute it
19 | * freely, subject to the following restrictions:
20 | *
21 | * 1. The origin of this software must not be misrepresented; you must not
22 | * claim that you wrote the original software. If you use this software
23 | * in a product, an acknowledgment in the product documentation would be
24 | * appreciated but is not required.
25 | * 2. Altered source versions must be plainly marked as such, and must not be
26 | * misrepresented as being the original software.
27 | * 3. This notice may not be removed or altered from any source distribution.
28 | *
29 | *******************************************************************************
30 | * # Experimental Quality
31 | * This code has not been formally tested and is provided as-is. It is not
32 | * suitable for production environments. In addition, this code will not be
33 | * maintained and there may be no bug maintenance planned for these resources.
34 | * Silicon Labs may update projects from time to time.
35 | ******************************************************************************/
36 | #ifndef ADAFRUIT_LOCK_H
37 | #define ADAFRUIT_LOCK_H
38 |
39 | // Includes
40 | #include "em_common.h"
41 |
42 | #ifdef __cplusplus
43 | extern "C" {
44 | #endif
45 |
46 | /**************************************************************************//**
47 | * Function prototypes
48 | *****************************************************************************/
49 | sl_status_t adafruit_lock_init(void);
50 | void adafruit_lock_set(bool new_state);
51 | bool adafruit_lock_get(void);
52 |
53 | #ifdef __cplusplus
54 | }
55 | #endif
56 |
57 | #endif // ADAFRUIT_LOCK_H
58 |
--------------------------------------------------------------------------------
/dev_lab_adafruit_13x9_rgb_led_matrix/Images/SiliconLabs-DevLab-Adafruit13x9RGBLEDMatrix.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_adafruit_13x9_rgb_led_matrix/Images/SiliconLabs-DevLab-Adafruit13x9RGBLEDMatrix.png
--------------------------------------------------------------------------------
/dev_lab_adafruit_13x9_rgb_led_matrix/LICENSE:
--------------------------------------------------------------------------------
1 | SPDX-License-Identifier: Zlib
2 |
3 | The licensor of this software is Silicon Laboratories Inc.
4 |
5 | This software is provided 'as-is', without any express or implied
6 | warranty. In no event will the authors be held liable for any damages
7 | arising from the use of this software.
8 |
9 | Permission is granted to anyone to use this software for any purpose,
10 | including commercial applications, and to alter it and redistribute it
11 | freely, subject to the following restrictions:
12 |
13 | 1. The origin of this software must not be misrepresented; you must not
14 | claim that you wrote the original software. If you use this software
15 | in a product, an acknowledgment in the product documentation would be
16 | appreciated but is not required.
17 | 2. Altered source versions must be plainly marked as such, and must not be
18 | misrepresented as being the original software.
19 | 3. This notice may not be removed or altered from any source distribution.
20 |
--------------------------------------------------------------------------------
/dev_lab_adafruit_13x9_rgb_led_matrix/README.md:
--------------------------------------------------------------------------------
1 | # Dev Lab: Adafruit 13x9 RGB LED Matrix
2 | 
3 |
4 | ## About
5 |
6 | The video for this Dev Lab is available on [YouTube](https://youtu.be/eNGRJq4ZlzU) where the video description includes links to further information.
7 |
8 | This Dev Lab integrates Adafruit's 13x9 RGB LED Matrix into Bluetooth and Matter over Thread wireless applications.
9 |
10 | You will learn:
11 |
12 | * How to add a driver for the LED matrix into existing applications
13 | * How to draw icons on the LED matrix
14 | * How to control the LED matrix when lighting commands are received in a Bluetooth and Matter over Thread application
15 | * How to enable development Matter over Thread devices in Google Home's ecosystem
16 |
17 | ## Files and Folders
18 |
19 | **Common Folder:** Contains code used in both the Bluetooth and Matter over Thread examples, including extra modules to draw padlocks on the matrix in addition to the light bulbs shown in the video
20 |
21 | **Bluetooth Folder:** Contains the final application code for the Bluetooth example
22 |
23 | **Matter Folder:** Contains the final application code for the Matter over Thread example
24 |
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_mood_light/.gitignore:
--------------------------------------------------------------------------------
1 | # Prerequisites
2 | *.d
3 |
4 | # Compiled Object files
5 | *.slo
6 | *.lo
7 | *.o
8 | *.obj
9 |
10 | # Precompiled Headers
11 | *.gch
12 | *.pch
13 |
14 | # Compiled Dynamic libraries
15 | *.so
16 | *.dylib
17 | *.dll
18 |
19 | # Fortran module files
20 | *.mod
21 | *.smod
22 |
23 | # Compiled Static libraries
24 | *.lai
25 | *.la
26 | *.a
27 | *.lib
28 |
29 | # Executables
30 | *.exe
31 | *.out
32 | *.app
33 | *.bak
34 |
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_mood_light/LICENSE:
--------------------------------------------------------------------------------
1 | SPDX-License-Identifier: Zlib
2 |
3 | The licensor of this software is Silicon Laboratories Inc.
4 |
5 | This software is provided 'as-is', without any express or implied
6 | warranty. In no event will the authors be held liable for any damages
7 | arising from the use of this software.
8 |
9 | Permission is granted to anyone to use this software for any purpose,
10 | including commercial applications, and to alter it and redistribute it
11 | freely, subject to the following restrictions:
12 |
13 | 1. The origin of this software must not be misrepresented; you must not
14 | claim that you wrote the original software. If you use this software
15 | in a product, an acknowledgment in the product documentation would be
16 | appreciated but is not required.
17 | 2. Altered source versions must be plainly marked as such, and must not be
18 | misrepresented as being the original software.
19 | 3. This notice may not be removed or altered from any source distribution.
20 |
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_mood_light/fritzing/Nano-0v8-Gerbers.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/fritzing/Nano-0v8-Gerbers.zip
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_mood_light/fritzing/Nano-0v8.fzz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/fritzing/Nano-0v8.fzz
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_mood_light/images/Wiring-Dev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/images/Wiring-Dev.png
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_mood_light/images/Wiring-Explorer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/images/Wiring-Explorer.png
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_mood_light/images/Wiring-Nano.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/images/Wiring-Nano.png
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_mood_light/images/Wiring-SF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/images/Wiring-SF.png
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_mood_light/images/thumb-640x360.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/images/thumb-640x360.png
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_mood_light/moody_3_noise/noise.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/moody_3_noise/noise.png
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_mood_light/moody_4_final/noise.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/moody_4_final/noise.png
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_mood_light/moody_4_final/noise_subtle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/moody_4_final/noise_subtle.png
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_occupancy_sensor/.gitignore:
--------------------------------------------------------------------------------
1 | # Prerequisites
2 | *.d
3 |
4 | # Compiled Object files
5 | *.slo
6 | *.lo
7 | *.o
8 | *.obj
9 |
10 | # Precompiled Headers
11 | *.gch
12 | *.pch
13 |
14 | # Compiled Dynamic libraries
15 | *.so
16 | *.dylib
17 | *.dll
18 |
19 | # Fortran module files
20 | *.mod
21 | *.smod
22 |
23 | # Compiled Static libraries
24 | *.lai
25 | *.la
26 | *.a
27 | *.lib
28 |
29 | # Executables
30 | *.exe
31 | *.out
32 | *.app
33 | *.bak
34 |
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_occupancy_sensor/LICENSE:
--------------------------------------------------------------------------------
1 | SPDX-License-Identifier: Zlib
2 |
3 | The licensor of this software is Silicon Laboratories Inc.
4 |
5 | This software is provided 'as-is', without any express or implied
6 | warranty. In no event will the authors be held liable for any damages
7 | arising from the use of this software.
8 |
9 | Permission is granted to anyone to use this software for any purpose,
10 | including commercial applications, and to alter it and redistribute it
11 | freely, subject to the following restrictions:
12 |
13 | 1. The origin of this software must not be misrepresented; you must not
14 | claim that you wrote the original software. If you use this software
15 | in a product, an acknowledgment in the product documentation would be
16 | appreciated but is not required.
17 | 2. Altered source versions must be plainly marked as such, and must not be
18 | misrepresented as being the original software.
19 | 3. This notice may not be removed or altered from any source distribution.
20 |
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_occupancy_sensor/README.md:
--------------------------------------------------------------------------------
1 | # Dev Lab: Arduino Matter over Thread Occupancy Sensor
2 |
3 | 
4 |
5 | ## About
6 |
7 | The video for this Dev Lab is available on [YouTube](https://youtu.be/_t1sI5RlaV8), where the video description includes links to further information.
8 |
9 | This code was created for the **Works With 2024 - Hands-on with the Arduino Nano Matter** session.
10 |
11 | This project-based Dev Lab steps through the creation of a Matter over Thread Occupancy Sensor in the Arduino IDE using the Arduino Nano Matter board and an optional SR602 PIR sensor that can be connected on a breadboard. The final device reports its occupancy state to a Matter hub which can be configured to perform actions when the occupancy state changes.
12 |
13 | ## Usage
14 |
15 | Three different versions of the code are available, each in a separate folder. The input and output pins are set with #defines allowing the code to be adapted for other boards.
16 |
17 | ### Commissioning
18 |
19 | Commissioning into a Matter over Thread network follows the normal process of scanning a QR or entering a manual code in the app for your chosen Matter ecosystem. For Google Home you *may* need to enable test certificates in the Google Developer Console for your Google Home account, the [Quick Start - Matter in Google Home](https://youtu.be/R_kpSO7PtUo) YouTube video walks through this process.
20 |
21 | A URL to the QR Code and the manual code are both output by the application to the serial port during start up.
22 |
23 | The occupancy state is not monitored until the device is commissioned and connected to the Matter over Thread network.
24 |
25 | ### PIR Occupancy Sensor
26 |
27 | The code for this version is in the **pir_matter_occupancy_sensor** folder.
28 |
29 | This version reads the output from a SR602 PIR sensor connected to the D6 pin of the Arduino Nano Matter. When the input is high the state is set to occupied and when low set to unoccupied. The green channel of the RGB LED is lit when occupied.
30 |
31 | 
32 |
33 | ### Button Occupancy Sensor
34 |
35 | The code for this version is in the **btn_matter_occupancy_sensor** folder.
36 |
37 | This version can be run on the Arduino Nano Matter board, without additional hardware, each press of the on-board button toggles between the occupied and unoccupied states. The red channel of the RGB LED is lit when occupied.
38 |
39 | ### PIR/Button Occupancy Sensor
40 |
41 | The code for this version is in the **pir_btn_matter_occupancy_sensor** folder.
42 |
43 | This combines the above versions and uses a second button, connected to D7 with a 1k pullup resistor, to swap between PIR and button modes. When in PIR mode the green channel of the RGB LED is lit. When occupied the red channel of the RGB LED is lit.
44 |
45 | 
46 |
47 | ## Other Resources
48 |
49 | The **fritzing** folder contains a file with breadboard, schematics and PCB layouts for a small board that the Arduino Nano Matter and SR602 PIR sensor can be plugged into. The second button with its pullup resistor can also be added. There is also a ZIP file with gerbers for the PCB.
50 |
51 | The **ww24** folder contains a PDF of the presentation shown at Works With 2024
52 |
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_occupancy_sensor/fritzing/Arduino Nano Matter.fzpz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_occupancy_sensor/fritzing/Arduino Nano Matter.fzpz
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_occupancy_sensor/fritzing/Nano-Matter-Occupancy-0v2-Gerbers.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_occupancy_sensor/fritzing/Nano-Matter-Occupancy-0v2-Gerbers.zip
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_occupancy_sensor/fritzing/Nano-Matter-Occupancy-0v2.fzz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_occupancy_sensor/fritzing/Nano-Matter-Occupancy-0v2.fzz
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_occupancy_sensor/images/Wiring-Nano-PIR-BTN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_occupancy_sensor/images/Wiring-Nano-PIR-BTN.png
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_occupancy_sensor/images/Wiring-Nano-PIR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_occupancy_sensor/images/Wiring-Nano-PIR.png
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_occupancy_sensor/images/thumb-640x360.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_occupancy_sensor/images/thumb-640x360.png
--------------------------------------------------------------------------------
/dev_lab_arduino_matter_occupancy_sensor/ww24/MAT-201-GM-0v6-Arduino-Nano-Matter-Hands-On.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_occupancy_sensor/ww24/MAT-201-GM-0v6-Arduino-Nano-Matter-Hands-On.pdf
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/Images/1-2-Install-Manager.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_bluetooth_ai_ml_magic_wand/Images/1-2-Install-Manager.png
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/Images/10-Examples.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_bluetooth_ai_ml_magic_wand/Images/10-Examples.png
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/Images/3-4-SDKs-Gecko.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_bluetooth_ai_ml_magic_wand/Images/3-4-SDKs-Gecko.png
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/Images/5-Finish.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_bluetooth_ai_ml_magic_wand/Images/5-Finish.png
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/Images/6-7-8-9-Preferred-SDK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_bluetooth_ai_ml_magic_wand/Images/6-7-8-9-Preferred-SDK.png
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/Images/SiliconLabs-DevLab-BT-AI-ML-Magic-Wand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_bluetooth_ai_ml_magic_wand/Images/SiliconLabs-DevLab-BT-AI-ML-Magic-Wand.png
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/LICENSE:
--------------------------------------------------------------------------------
1 | SPDX-License-Identifier: Zlib
2 |
3 | The licensor of this software is Silicon Laboratories Inc.
4 |
5 | This software is provided 'as-is', without any express or implied
6 | warranty. In no event will the authors be held liable for any damages
7 | arising from the use of this software.
8 |
9 | Permission is granted to anyone to use this software for any purpose,
10 | including commercial applications, and to alter it and redistribute it
11 | freely, subject to the following restrictions:
12 |
13 | 1. The origin of this software must not be misrepresented; you must not
14 | claim that you wrote the original software. If you use this software
15 | in a product, an acknowledgment in the product documentation would be
16 | appreciated but is not required.
17 | 2. Altered source versions must be plainly marked as such, and must not be
18 | misrepresented as being the original software.
19 | 3. This notice may not be removed or altered from any source distribution.
20 |
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/README.md:
--------------------------------------------------------------------------------
1 | # Dev Lab: Bluetooth AI/ML Magic Wand
2 | 
3 |
4 | ## About
5 |
6 | The video for this Dev Lab is available on [YouTube](https://youtu.be/ONrmMEgFYMo) where the video description includes links to further information.
7 |
8 | This project-based Dev Lab steps through the creation of a Magic Wand that detects gestures drawn in the air, using AI/ML, to control a light over Bluetooth.
9 |
10 | In this Dev Lab you will learn:
11 |
12 | - About machine learning at the edge
13 |
14 | - How to flash the Bluetooth demo light application
15 |
16 | - About the xG24 Dev Kit
17 |
18 | - How to create a Bluetooth bootloader
19 |
20 | - About machine learning in embedded systems
21 |
22 | - How to create the Magic Wand project
23 |
24 | - How to add software components to a project
25 |
26 | - About AI/ML data models
27 |
28 | - About standard bluetooth application functions
29 |
30 | - About the magic wand source code
31 |
32 | - How to operate the magic wand
33 |
34 | ## Gecko SDK
35 |
36 | This application and the companion video makes use of Simplicity Studio's Gecko SDK with the release of the Simplicity SDK the Simplicity Studio IDE now installs the Simplicity SDK as the default option. To make use of this application follow the instructions below to install and use the Gecko SDK (instead of the Simplicity SDK).
37 |
38 | A porting guide for AI/ML applications from the Gecko SDK to the Simplicity SDK will be linked here when available. The final Bluetooth Magic Wand application will be updated for the Simplicity SDK and made available as an example application within Simplicity Studio.
39 |
40 | 1. In **Simplicity Studio**, click the Install button
41 | 2. In **Installation Manager**, click **Manage Installed Packages**
42 | 
43 | 3. Click the **SDKs** tab
44 | 4. In the **Gecko SDK** box, click the **Add** button
45 | 
46 | 5. In the **Add new Gecko SDK** window, click the **Finish** button to install
47 | 
48 | 6. Go to the **Launcher** perspective in **Simplicity Studio**
49 | 7. Connect and select your board in the **Debug Adapters** panel
50 | 8. Select the **Overview** tab
51 | 9. Ensure that the **Preferred SDK** down-down has **Gecko SDK Suite** selected
52 | 
53 | 10. In the **Example Projects and Demos** tab, you can now create examples using the Gecko SDK, including the **Bluetooth - SoC Blinky** and **Bluetooth - SoC Empty** used by this application.
54 | 
55 |
56 | ## Files and Folders
57 |
58 | **Binary Folder:** Contains the binary file for the completed application for the xG24 Dev Kit (BRD2601B)
59 |
60 | **Source Folder:** Contains the source code files and AI/ML data model for the application
61 |
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/Source/accelerometer.h:
--------------------------------------------------------------------------------
1 | /***************************************************************************//**
2 | * @file
3 | * @brief Functionality for reading accelerometer data from IMU
4 | *******************************************************************************
5 | * # License
6 | * Copyright 2022 Silicon Laboratories Inc. www.silabs.com
7 | *******************************************************************************
8 | *
9 | * The licensor of this software is Silicon Laboratories Inc. Your use of this
10 | * software is governed by the terms of Silicon Labs Master Software License
11 | * Agreement (MSLA) available at
12 | * www.silabs.com/about-us/legal/master-software-license-agreement. This
13 | * software is distributed to you in Source Code format and is governed by the
14 | * sections of the MSLA applicable to Source Code.
15 | *
16 | ******************************************************************************/
17 |
18 | #ifndef ACCELEROMETER_H
19 | #define ACCELEROMETER_H
20 |
21 | #include "sl_status.h"
22 |
23 | // Accelerometer data structure used by the model
24 | typedef struct acc_data {
25 | float x;
26 | float y;
27 | float z;
28 | } acc_data_t;
29 |
30 | /***************************************************************************//**
31 | * @brief
32 | * Configure accelerometer to read data regularly to an internal buffer.
33 | *
34 | * @return
35 | * SL_STATUS_OK on success, other value on failure.
36 | ******************************************************************************/
37 | sl_status_t accelerometer_setup(void);
38 |
39 | /***************************************************************************//**
40 | * @brief
41 | * Read data from accelerometer buffer into the machine model input buffer.
42 | *
43 | * @param dst
44 | * Machine learning model input buffer.
45 | *
46 | * @param n
47 | * Number of elements to read
48 | *
49 | * @return
50 | * SL_STATUS_OK on success, other value on failure.
51 | ******************************************************************************/
52 | sl_status_t accelerometer_read(acc_data_t* dst, int n);
53 |
54 | #endif // ACCELEROMETER_H
55 |
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/Source/app.h:
--------------------------------------------------------------------------------
1 | /***************************************************************************//**
2 | * @file
3 | * @brief Application interface provided to main().
4 | *******************************************************************************
5 | * # License
6 | * Copyright 2020 Silicon Laboratories Inc. www.silabs.com
7 | *******************************************************************************
8 | *
9 | * SPDX-License-Identifier: Zlib
10 | *
11 | * The licensor of this software is Silicon Laboratories Inc.
12 | *
13 | * This software is provided 'as-is', without any express or implied
14 | * warranty. In no event will the authors be held liable for any damages
15 | * arising from the use of this software.
16 | *
17 | * Permission is granted to anyone to use this software for any purpose,
18 | * including commercial applications, and to alter it and redistribute it
19 | * freely, subject to the following restrictions:
20 | *
21 | * 1. The origin of this software must not be misrepresented; you must not
22 | * claim that you wrote the original software. If you use this software
23 | * in a product, an acknowledgment in the product documentation would be
24 | * appreciated but is not required.
25 | * 2. Altered source versions must be plainly marked as such, and must not be
26 | * misrepresented as being the original software.
27 | * 3. This notice may not be removed or altered from any source distribution.
28 | *
29 | ******************************************************************************/
30 | #ifndef APP_H
31 | #define APP_H
32 |
33 | // Includes --------------------------------------------------------------------
34 | #include "em_common.h"
35 | #include "sl_status.h"
36 |
37 | /**************************************************************************//**
38 | * Application Init.
39 | *****************************************************************************/
40 | void app_init(void);
41 |
42 | /**************************************************************************//**
43 | * Application Process Action.
44 | *****************************************************************************/
45 | void app_process_action(void);
46 |
47 | /**************************************************************************//**
48 | * Application Set State.
49 | *****************************************************************************/
50 | sl_status_t app_set_state(uint8_t);
51 |
52 | /**************************************************************************//**
53 | * Application Get State.
54 | *****************************************************************************/
55 | uint8_t app_get_state(void);
56 |
57 | #endif // APP_H
58 |
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/Source/config/tflite/magic_wand_model.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_bluetooth_ai_ml_magic_wand/Source/config/tflite/magic_wand_model.tflite
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/Source/constants.h:
--------------------------------------------------------------------------------
1 | /***************************************************************************//**
2 | * @file
3 | * @brief Constants for use in the sample application
4 | *******************************************************************************
5 | * # License
6 | * Copyright 2022 Silicon Laboratories Inc. www.silabs.com
7 | *******************************************************************************
8 | *
9 | * The licensor of this software is Silicon Laboratories Inc. Your use of this
10 | * software is governed by the terms of Silicon Labs Master Software License
11 | * Agreement (MSLA) available at
12 | * www.silabs.com/about-us/legal/master-software-license-agreement. This
13 | * software is distributed to you in Source Code format and is governed by the
14 | * sections of the MSLA applicable to Source Code.
15 | *
16 | ******************************************************************************/
17 |
18 | #ifndef CONSTANTS_H
19 | #define CONSTANTS_H
20 |
21 | // Timer for LED flashes
22 | #define TICK_TIMER_MS 100
23 |
24 | // Bluetooth device name to connect to
25 | #define AD_NAME "Blinky Example"
26 |
27 | // Application states
28 | #define APP_STATE_NONE 0
29 | #define APP_STATE_SCAN 1
30 | #define APP_STATE_SERVICE 2
31 | #define APP_STATE_CHARACTERISTIC 3
32 | #define APP_STATE_CONNECTED 4
33 | #define APP_STATE_OFF 5
34 | #define APP_STATE_ON 6
35 |
36 | // The expected accelerometer data sample frequency
37 | #define ACCELEROMETER_FREQ 25
38 | #define ACCELEROMETER_CHANNELS 3
39 |
40 | // LEDs are active for this amount of time before they are turned off
41 | #define TOGGLE_DELAY_MS 2000
42 |
43 | // Inference it triggered by a periodic timer, this configuration is the time
44 | // between each trigger
45 | #define INFERENCE_PERIOD_MS 200
46 |
47 | // Length of the accelerator input sequence expected by the model
48 | #define SEQUENCE_LENGTH 90
49 |
50 | // What gestures are supported.
51 | #define GESTURE_COUNT 4
52 | #define WING_GESTURE 0
53 | #define RING_GESTURE 1
54 | #define SLOPE_GESTURE 2
55 | #define NO_GESTURE 3
56 |
57 | // These control the sensitivity of the detection algorithm. If you're seeing
58 | // too many false positives or not enough true positives, you can try tweaking
59 | // these thresholds. Often, increasing the size of the training set will give
60 | // more robust results though, so consider retraining if you are seeing poor
61 | // predictions.
62 | #define DETECTION_THRESHOLD 0.9f
63 | #define PREDICTION_HISTORY_LEN 5
64 | #define PREDICTION_SUPPRESSION 18
65 |
66 | #endif // CONSTANTS_H
67 |
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/Source/magic_wand.h:
--------------------------------------------------------------------------------
1 | /***************************************************************************//**
2 | * @file
3 | * @brief Initalization and main functionality for application
4 | *******************************************************************************
5 | * # License
6 | * Copyright 2022 Silicon Laboratories Inc. www.silabs.com
7 | *******************************************************************************
8 | *
9 | * The licensor of this software is Silicon Laboratories Inc. Your use of this
10 | * software is governed by the terms of Silicon Labs Master Software License
11 | * Agreement (MSLA) available at
12 | * www.silabs.com/about-us/legal/master-software-license-agreement. This
13 | * software is distributed to you in Source Code format and is governed by the
14 | * sections of the MSLA applicable to Source Code.
15 | *
16 | ******************************************************************************/
17 |
18 | #ifndef MAGIC_WAND_H
19 | #define MAGIC_WAND_H
20 |
21 | #include "em_common.h"
22 | #include "sl_status.h"
23 |
24 | #ifdef __cplusplus
25 | extern "C" {
26 | #endif
27 |
28 | /***************************************************************************//**
29 | * @brief
30 | * Initialize the application.
31 | ******************************************************************************/
32 | void magic_wand_init(void);
33 |
34 | /***************************************************************************//**
35 | * @brief
36 | * Runs the data gathering and inference loop. This should be called
37 | * repeatedly from the main function.
38 | ******************************************************************************/
39 | void magic_wand_loop(void);
40 |
41 | // Implemented in app.c
42 | sl_status_t app_set_state(uint8_t);
43 |
44 | #ifdef __cplusplus
45 | }
46 | #endif
47 |
48 | #endif // MAGIC_WAND_H
49 |
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/Source/predictor.cc:
--------------------------------------------------------------------------------
1 | /***************************************************************************//**
2 | * @file
3 | * @brief Averaging and evaluation of model output for prediction of gesture
4 | *******************************************************************************
5 | * # License
6 | * Copyright 2022 Silicon Laboratories Inc. www.silabs.com
7 | *******************************************************************************
8 | *
9 | * The licensor of this software is Silicon Laboratories Inc. Your use of this
10 | * software is governed by the terms of Silicon Labs Master Software License
11 | * Agreement (MSLA) available at
12 | * www.silabs.com/about-us/legal/master-software-license-agreement. This
13 | * software is distributed to you in Source Code format and is governed by the
14 | * sections of the MSLA applicable to Source Code.
15 | *
16 | ******************************************************************************/
17 | #include "predictor.h"
18 | #include "constants.h"
19 | #include
20 |
21 | // State for the averaging algorithm we're using.
22 | //static float prediction_history[GESTURE_COUNT][PREDICTION_HISTORY_LEN] = {};
23 | static model_output_t history[PREDICTION_HISTORY_LEN] = {};
24 | static int history_index = 0;
25 | static int suppression_count = 0;
26 | static int previous_prediction = NO_GESTURE;
27 |
28 | int predict_gesture(const model_output_t* output)
29 | {
30 | // Record the latest predictions in our rolling history buffer.
31 | history[history_index] = *output;
32 |
33 | ++history_index;
34 | if (history_index >= PREDICTION_HISTORY_LEN) {
35 | history_index = 0;
36 | }
37 |
38 | // Average the last n predictions for each gesture, and find which has the
39 | // highest score.
40 | int max_predict_index = -1;
41 | float max_predict_score = 0.0f;
42 |
43 | for (int i = 0; i < GESTURE_COUNT; i++) {
44 | float prediction_sum = 0.0f;
45 | for (int j = 0; j < PREDICTION_HISTORY_LEN; ++j) {
46 | prediction_sum += history[j].gesture[i];
47 | }
48 | const float prediction_average = prediction_sum / PREDICTION_HISTORY_LEN;
49 | if ((max_predict_index == -1) || (prediction_average > max_predict_score)) {
50 | max_predict_index = i;
51 | max_predict_score = prediction_average;
52 | }
53 | }
54 |
55 | #if DEBUG_LOGGING
56 | printf("Latest prediction: %i with probability %f\n", max_predict_index, max_predict_score);
57 | #endif
58 |
59 | // If there's been a recent prediction, don't trigger a new one too soon.
60 | if (suppression_count > 0) {
61 | --suppression_count;
62 | }
63 | // If we're predicting no gesture, or the average score is too low, or there's
64 | // been a gesture recognised too recently, return no gesture.
65 | if ((max_predict_index == NO_GESTURE)
66 | || (max_predict_score < DETECTION_THRESHOLD)
67 | || ((max_predict_index == previous_prediction) && (suppression_count > 0))) {
68 | return NO_GESTURE;
69 | } else {
70 | // There was a new predicition
71 | // Reset the suppression counter so we don't come up with another prediction
72 | // too soon.
73 | suppression_count = PREDICTION_SUPPRESSION;
74 | previous_prediction = max_predict_index;
75 | return max_predict_index;
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/dev_lab_bluetooth_ai_ml_magic_wand/Source/predictor.h:
--------------------------------------------------------------------------------
1 | /***************************************************************************//**
2 | * @file
3 | * @brief Averaging and evaluation of model output for prediction of gesture
4 | *******************************************************************************
5 | * # License
6 | * Copyright 2022 Silicon Laboratories Inc. www.silabs.com
7 | *******************************************************************************
8 | *
9 | * The licensor of this software is Silicon Laboratories Inc. Your use of this
10 | * software is governed by the terms of Silicon Labs Master Software License
11 | * Agreement (MSLA) available at
12 | * www.silabs.com/about-us/legal/master-software-license-agreement. This
13 | * software is distributed to you in Source Code format and is governed by the
14 | * sections of the MSLA applicable to Source Code.
15 | *
16 | ******************************************************************************/
17 | #ifndef PREDICTOR_H
18 | #define PREDICTOR_H
19 |
20 | #include "constants.h"
21 |
22 | typedef struct model_output {
23 | float gesture[GESTURE_COUNT];
24 | } model_output_t;
25 |
26 | /***************************************************************************//**
27 | * @brief
28 | * Perform a prediction based on the latest inference output.
29 | *
30 | * @details
31 | * Takes in the model output in a rolling history buffer and does averaging
32 | * over the last predictions. If the prediction proability is too low or the
33 | * predictions happens too soon, no prediction is triggered.
34 | *
35 | * @param output
36 | * Model output buffer containing the confidence of each of the classes.
37 | *
38 | * @return
39 | * Results of the last prediction in the form of a classification id.
40 | * 0: wing("W"), 1: ring("O"), 2: slope("angle"), 3: unknown
41 | ******************************************************************************/
42 | int predict_gesture(const model_output_t* output);
43 |
44 | #endif // PREDICTOR_H
45 |
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/LICENSE.txt:
--------------------------------------------------------------------------------
1 | *****************************************************************************
2 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
3 | *****************************************************************************
4 | SPDX-License-Identifier: Zlib
5 |
6 | The licensor of this software is Silicon Laboratories Inc.
7 |
8 | This software is provided \'as-is\', without any express or implied
9 | warranty. In no event will the authors be held liable for any damages
10 | arising from the use of this software.
11 |
12 | Permission is granted to anyone to use this software for any purpose,
13 | including commercial applications, and to alter it and redistribute it
14 | freely, subject to the following restrictions:
15 |
16 | 1. The origin of this software must not be misrepresented; you must not
17 | claim that you wrote the original software. If you use this software
18 | in a product, an acknowledgment in the product documentation would be
19 | appreciated but is not required.
20 | 2. Altered source versions must be plainly marked as such, and must not be
21 | misrepresented as being the original software.
22 | 3. This notice may not be removed or altered from any source distribution.
23 |
24 | *****************************************************************************
25 | # EXPERIMENTAL QUALITY
26 | This code has not been formally tested and is provided as-is. It is not
27 | suitable for production environments. In addition, this code will not be
28 | maintained and there may be no bug maintenance planned for these resources.
29 | Silicon Labs may update projects from time to time.
30 | ******************************************************************************
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_1_hardware/Button.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import core modules
34 | import board
35 | from digitalio import DigitalInOut, Direction
36 |
37 | # Button class
38 | class Button():
39 |
40 | # Initialisation
41 | def __init__(self, pin, invert, debug):
42 | # Initialise
43 | self.debug = debug
44 | if self.debug: print(f'Button.init({pin}, {invert}, {debug})')
45 | self.pin = pin
46 | self.dio = DigitalInOut(pin)
47 | self.dio.direction = Direction.INPUT
48 | self.invert = invert
49 | self.on = False
50 | self.changed = False
51 | self.pressed = False
52 | self.released = False
53 |
54 | # Read function, call to update state
55 | def read(self):
56 | self.changed = False
57 | self.pressed = False
58 | self.released = False
59 | on = self.dio.value
60 | if self.invert:
61 | on = not on
62 | if self.on != on:
63 | self.on = on
64 | self.changed = True
65 | self.pressed = self.on
66 | self.released = not self.on
67 | if self.debug and self.changed: print(f'Button.read({self.pin}) = {self.changed} [r={self.released}, p={self.pressed}, o={self.on}]')
68 | return self.changed
69 |
70 | # Button class (END)
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_1_hardware/Led.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import core modules
34 | import board
35 | from digitalio import DigitalInOut, Direction
36 |
37 | # Led class
38 | class Led():
39 |
40 | # Initialisation
41 | def __init__(self, pin, invert, debug):
42 | # Initialise
43 | self.debug = debug
44 | if self.debug: print(f'Led.init({pin}, {invert}, {debug})')
45 | self.pin = pin
46 | self.dio = DigitalInOut(pin)
47 | self.dio.direction = Direction.OUTPUT
48 | self.invert = invert
49 | self.on = False
50 | # Turn off
51 | self.write(False)
52 |
53 | # Write function
54 | def write(self, on):
55 | self.on = on
56 | if self.invert:
57 | on = not on
58 | self.dio.value = on
59 | if self.debug: print(f'Led.write({self.pin}, {self.on})')
60 |
61 |
62 | # Led class (END)
63 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_1_hardware/Piezo.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import core modules
34 | import board
35 | import pwmio
36 | import atexit
37 |
38 | # Piezo class
39 | class Piezo():
40 |
41 | # Initialisation
42 | def __init__(self, pin, debug):
43 | # Initialise
44 | self.debug = debug
45 | if self.debug: print(f'Piezo.init({pin}, {debug})')
46 | self.pin = pin
47 | self.pwmio = pwmio.PWMOut(pin, variable_frequency=True)
48 | atexit.register(self.deinit)
49 | self.on = False
50 | self.frequency = 0
51 |
52 | # Write function
53 | def write(self, frequency):
54 | # Valid frequency C0 to B8 ?
55 | if frequency >= 16 and frequency <= 7902:
56 | self.on = True
57 | self.frequency = frequency
58 | else:
59 | self.on = False
60 | self.frequency = 0
61 | if self.on:
62 | self.pwmio.frequency = self.frequency
63 | self.pwmio.duty_cycle = 0x8000
64 | else:
65 | self.pwmio.duty_cycle = 0
66 | self.pwmio.frequency = 262
67 | if self.debug: print(f'Piezo.write({self.pin}, {self.frequency})')
68 |
69 | # Deinit function
70 | def deinit(self):
71 | self.pwmio.duty_cycle = 0
72 | self.pwmio.deinit()
73 | atexit.deregister(self.deinit)
74 | if self.debug: print(f'Piezo.deinit({self.pin})')
75 |
76 | # Piezo class (END)
77 |
78 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_1_hardware/code.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Application imports
34 | from App import App
35 |
36 | # Create app
37 | app = App(True)
38 | # Main loop
39 | while app.on:
40 | # Call app main function
41 | app.main()
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/Button.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import core modules
34 | import board
35 | from digitalio import DigitalInOut, Direction
36 |
37 | # Button class
38 | class Button():
39 |
40 | # Initialisation
41 | def __init__(self, pin, invert, debug):
42 | # Initialise
43 | self.debug = debug
44 | if self.debug: print(f'Button.init({pin}, {invert}, {debug})')
45 | self.pin = pin
46 | self.dio = DigitalInOut(pin)
47 | self.dio.direction = Direction.INPUT
48 | self.invert = invert
49 | self.on = False
50 | self.changed = False
51 | self.pressed = False
52 | self.released = False
53 |
54 | # Read function, call to update state
55 | def read(self):
56 | self.changed = False
57 | self.pressed = False
58 | self.released = False
59 | on = self.dio.value
60 | if self.invert:
61 | on = not on
62 | if self.on != on:
63 | self.on = on
64 | self.changed = True
65 | self.pressed = self.on
66 | self.released = not self.on
67 | if self.debug and self.changed: print(f'Button.read({self.pin}) = {self.changed} [r={self.released}, p={self.pressed}, o={self.on}]')
68 | return self.changed
69 |
70 | # Button class (END)
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/ImmediateAlertService.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import library modules
34 | from adafruit_ble.services import Service
35 | from adafruit_ble.uuid import StandardUUID
36 | from adafruit_ble.attributes import Attribute
37 | from adafruit_ble.characteristics import Characteristic
38 | from adafruit_ble.characteristics.int import Uint8Characteristic
39 |
40 | class ImmediateAlertService(Service):
41 | uuid = StandardUUID(0x1802)
42 |
43 | alert_level = Uint8Characteristic(
44 | uuid = StandardUUID(0x2A06),
45 | properties = (Characteristic.READ | Characteristic.WRITE_NO_RESPONSE)
46 | )
47 |
48 | def __init__(self, service=None):
49 | super().__init__(service=service)
50 | self.connectable = True
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/Led.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import core modules
34 | import board
35 | from digitalio import DigitalInOut, Direction
36 |
37 | # Led class
38 | class Led():
39 |
40 | # Initialisation
41 | def __init__(self, pin, invert, debug):
42 | # Initialise
43 | self.debug = debug
44 | if self.debug: print(f'Led.init({pin}, {invert}, {debug})')
45 | self.pin = pin
46 | self.dio = DigitalInOut(pin)
47 | self.dio.direction = Direction.OUTPUT
48 | self.invert = invert
49 | self.on = False
50 | # Turn off
51 | self.write(False)
52 |
53 | # Write function
54 | def write(self, on):
55 | self.on = on
56 | if self.invert:
57 | on = not on
58 | self.dio.value = on
59 | if self.debug: print(f'Led.write({self.pin}, {self.on})')
60 |
61 |
62 | # Led class (END)
63 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/Piezo.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import core modules
34 | import board
35 | import pwmio
36 | import atexit
37 |
38 | # Piezo class
39 | class Piezo():
40 |
41 | # Initialisation
42 | def __init__(self, pin, debug):
43 | # Initialise
44 | self.debug = debug
45 | if self.debug: print(f'Piezo.init({pin}, {debug})')
46 | self.pin = pin
47 | self.pwmio = pwmio.PWMOut(pin, variable_frequency=True)
48 | atexit.register(self.deinit)
49 | self.on = False
50 | self.frequency = 0
51 |
52 | # Write function
53 | def write(self, frequency):
54 | # Valid frequency C0 to B8 ?
55 | if frequency >= 16 and frequency <= 7902:
56 | self.on = True
57 | self.frequency = frequency
58 | else:
59 | self.on = False
60 | self.frequency = 0
61 | if self.on:
62 | self.pwmio.frequency = self.frequency
63 | self.pwmio.duty_cycle = 0x8000
64 | else:
65 | self.pwmio.duty_cycle = 0
66 | self.pwmio.frequency = 262
67 | if self.debug: print(f'Piezo.write({self.pin}, {self.frequency})')
68 |
69 | # Deinit function
70 | def deinit(self):
71 | self.pwmio.duty_cycle = 0
72 | self.pwmio.deinit()
73 | atexit.deregister(self.deinit)
74 | if self.debug: print(f'Piezo.deinit({self.pin})')
75 |
76 | # Piezo class (END)
77 |
78 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/code.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Application imports
34 | from App import App
35 |
36 | # Create app
37 | app = App(True)
38 | # Main loop
39 | while app.on:
40 | # Call app main function
41 | app.main()
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/advertising/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/advertising/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/advertising/adafruit.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/advertising/adafruit.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/advertising/standard.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/advertising/standard.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/attributes/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/attributes/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/float.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/float.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/int.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/int.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/json.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/json.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/stream.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/stream.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/string.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/string.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/circuitpython.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/circuitpython.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/microbit.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/microbit.py
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/nordic.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/nordic.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/sphero.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/sphero.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/standard/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/standard/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/standard/device_info.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/standard/device_info.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/standard/hid.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/standard/hid.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/uuid/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/uuid/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/Button.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import core modules
34 | import board
35 | from digitalio import DigitalInOut, Direction
36 |
37 | # Button class
38 | class Button():
39 |
40 | # Initialisation
41 | def __init__(self, pin, invert, debug):
42 | # Initialise
43 | self.debug = debug
44 | if self.debug: print(f'Button.init({pin}, {invert}, {debug})')
45 | self.pin = pin
46 | self.dio = DigitalInOut(pin)
47 | self.dio.direction = Direction.INPUT
48 | self.invert = invert
49 | self.on = False
50 | self.changed = False
51 | self.pressed = False
52 | self.released = False
53 |
54 | # Read function, call to update state
55 | def read(self):
56 | self.changed = False
57 | self.pressed = False
58 | self.released = False
59 | on = self.dio.value
60 | if self.invert:
61 | on = not on
62 | if self.on != on:
63 | self.on = on
64 | self.changed = True
65 | self.pressed = self.on
66 | self.released = not self.on
67 | if self.debug and self.changed: print(f'Button.read({self.pin}) = {self.changed} [r={self.released}, p={self.pressed}, o={self.on}]')
68 | return self.changed
69 |
70 | # Button class (END)
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/ImmediateAlertService.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import library modules
34 | from adafruit_ble.services import Service
35 | from adafruit_ble.uuid import StandardUUID
36 | from adafruit_ble.attributes import Attribute
37 | from adafruit_ble.characteristics import Characteristic
38 | from adafruit_ble.characteristics.int import Uint8Characteristic
39 |
40 | class ImmediateAlertService(Service):
41 | uuid = StandardUUID(0x1802)
42 |
43 | alert_level = Uint8Characteristic(
44 | uuid = StandardUUID(0x2A06),
45 | properties = (Characteristic.READ | Characteristic.WRITE_NO_RESPONSE)
46 | )
47 |
48 | def __init__(self, service=None):
49 | super().__init__(service=service)
50 | self.connectable = True
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/Led.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import core modules
34 | import board
35 | from digitalio import DigitalInOut, Direction
36 |
37 | # Led class
38 | class Led():
39 |
40 | # Initialisation
41 | def __init__(self, pin, invert, debug):
42 | # Initialise
43 | self.debug = debug
44 | if self.debug: print(f'Led.init({pin}, {invert}, {debug})')
45 | self.pin = pin
46 | self.dio = DigitalInOut(pin)
47 | self.dio.direction = Direction.OUTPUT
48 | self.invert = invert
49 | self.on = False
50 | # Turn off
51 | self.write(False)
52 |
53 | # Write function
54 | def write(self, on):
55 | self.on = on
56 | if self.invert:
57 | on = not on
58 | self.dio.value = on
59 | if self.debug: print(f'Led.write({self.pin}, {self.on})')
60 |
61 |
62 | # Led class (END)
63 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/Piezo.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import core modules
34 | import board
35 | import pwmio
36 | import atexit
37 |
38 | # Piezo class
39 | class Piezo():
40 |
41 | # Initialisation
42 | def __init__(self, pin, debug):
43 | # Initialise
44 | self.debug = debug
45 | if self.debug: print(f'Piezo.init({pin}, {debug})')
46 | self.pin = pin
47 | self.pwmio = pwmio.PWMOut(pin, variable_frequency=True)
48 | atexit.register(self.deinit)
49 | self.on = False
50 | self.frequency = 0
51 |
52 | # Write function
53 | def write(self, frequency):
54 | # Valid frequency C0 to B8 ?
55 | if frequency >= 16 and frequency <= 7902:
56 | self.on = True
57 | self.frequency = frequency
58 | else:
59 | self.on = False
60 | self.frequency = 0
61 | if self.on:
62 | self.pwmio.frequency = self.frequency
63 | self.pwmio.duty_cycle = 0x8000
64 | else:
65 | self.pwmio.duty_cycle = 0
66 | self.pwmio.frequency = 262
67 | if self.debug: print(f'Piezo.write({self.pin}, {self.frequency})')
68 |
69 | # Deinit function
70 | def deinit(self):
71 | self.pwmio.duty_cycle = 0
72 | self.pwmio.deinit()
73 | atexit.deregister(self.deinit)
74 | if self.debug: print(f'Piezo.deinit({self.pin})')
75 |
76 | # Piezo class (END)
77 |
78 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/code.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Application imports
34 | from App import App
35 |
36 | # Create app
37 | app = App(True)
38 | # Main loop
39 | while app.on:
40 | # Call app main function
41 | app.main()
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/advertising/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/advertising/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/advertising/adafruit.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/advertising/adafruit.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/advertising/standard.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/advertising/standard.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/attributes/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/attributes/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/float.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/float.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/int.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/int.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/json.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/json.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/stream.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/stream.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/string.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/string.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/circuitpython.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/circuitpython.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/microbit.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/microbit.py
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/nordic.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/nordic.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/sphero.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/sphero.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/standard/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/standard/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/standard/device_info.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/standard/device_info.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/standard/hid.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/standard/hid.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/uuid/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/uuid/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/Button.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import core modules
34 | import board
35 | from digitalio import DigitalInOut, Direction
36 |
37 | # Button class
38 | class Button():
39 |
40 | # Initialisation
41 | def __init__(self, pin, invert, debug):
42 | # Initialise
43 | self.debug = debug
44 | if self.debug: print(f'Button.init({pin}, {invert}, {debug})')
45 | self.pin = pin
46 | self.dio = DigitalInOut(pin)
47 | self.dio.direction = Direction.INPUT
48 | self.invert = invert
49 | self.on = False
50 | self.changed = False
51 | self.pressed = False
52 | self.released = False
53 |
54 | # Read function, call to update state
55 | def read(self):
56 | self.changed = False
57 | self.pressed = False
58 | self.released = False
59 | on = self.dio.value
60 | if self.invert:
61 | on = not on
62 | if self.on != on:
63 | self.on = on
64 | self.changed = True
65 | self.pressed = self.on
66 | self.released = not self.on
67 | if self.debug and self.changed: print(f'Button.read({self.pin}) = {self.changed} [r={self.released}, p={self.pressed}, o={self.on}]')
68 | return self.changed
69 |
70 | # Button class (END)
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/ImmediateAlertService.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import library modules
34 | from adafruit_ble.services import Service
35 | from adafruit_ble.uuid import StandardUUID
36 | from adafruit_ble.attributes import Attribute
37 | from adafruit_ble.characteristics import Characteristic
38 | from adafruit_ble.characteristics.int import Uint8Characteristic
39 |
40 | class ImmediateAlertService(Service):
41 | uuid = StandardUUID(0x1802)
42 |
43 | alert_level = Uint8Characteristic(
44 | uuid = StandardUUID(0x2A06),
45 | properties = (Characteristic.READ | Characteristic.WRITE_NO_RESPONSE)
46 | )
47 |
48 | def __init__(self, service=None):
49 | super().__init__(service=service)
50 | self.connectable = True
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/Led.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import core modules
34 | import board
35 | from digitalio import DigitalInOut, Direction
36 |
37 | # Led class
38 | class Led():
39 |
40 | # Initialisation
41 | def __init__(self, pin, invert, debug):
42 | # Initialise
43 | self.debug = debug
44 | if self.debug: print(f'Led.init({pin}, {invert}, {debug})')
45 | self.pin = pin
46 | self.dio = DigitalInOut(pin)
47 | self.dio.direction = Direction.OUTPUT
48 | self.invert = invert
49 | self.on = False
50 | # Turn off
51 | self.write(False)
52 |
53 | # Write function
54 | def write(self, on):
55 | self.on = on
56 | if self.invert:
57 | on = not on
58 | self.dio.value = on
59 | if self.debug: print(f'Led.write({self.pin}, {self.on})')
60 |
61 |
62 | # Led class (END)
63 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/Piezo.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Import core modules
34 | import board
35 | import pwmio
36 | import atexit
37 |
38 | # Piezo class
39 | class Piezo():
40 |
41 | # Initialisation
42 | def __init__(self, pin, debug):
43 | # Initialise
44 | self.debug = debug
45 | if self.debug: print(f'Piezo.init({pin}, {debug})')
46 | self.pin = pin
47 | self.pwmio = pwmio.PWMOut(pin, variable_frequency=True)
48 | atexit.register(self.deinit)
49 | self.on = False
50 | self.frequency = 0
51 |
52 | # Write function
53 | def write(self, frequency):
54 | # Valid frequency C0 to B8 ?
55 | if frequency >= 16 and frequency <= 7902:
56 | self.on = True
57 | self.frequency = frequency
58 | else:
59 | self.on = False
60 | self.frequency = 0
61 | if self.on:
62 | self.pwmio.frequency = self.frequency
63 | self.pwmio.duty_cycle = 0x8000
64 | else:
65 | self.pwmio.duty_cycle = 0
66 | self.pwmio.frequency = 262
67 | if self.debug: print(f'Piezo.write({self.pin}, {self.frequency})')
68 |
69 | # Deinit function
70 | def deinit(self):
71 | self.pwmio.duty_cycle = 0
72 | self.pwmio.deinit()
73 | atexit.deregister(self.deinit)
74 | if self.debug: print(f'Piezo.deinit({self.pin})')
75 |
76 | # Piezo class (END)
77 |
78 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/code.py:
--------------------------------------------------------------------------------
1 | """
2 | *****************************************************************************
3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com
4 | *****************************************************************************
5 | SPDX-License-Identifier: Zlib
6 |
7 | The licensor of this software is Silicon Laboratories Inc.
8 |
9 | This software is provided \'as-is\', without any express or implied
10 | warranty. In no event will the authors be held liable for any damages
11 | arising from the use of this software.
12 |
13 | Permission is granted to anyone to use this software for any purpose,
14 | including commercial applications, and to alter it and redistribute it
15 | freely, subject to the following restrictions:
16 |
17 | 1. The origin of this software must not be misrepresented; you must not
18 | claim that you wrote the original software. If you use this software
19 | in a product, an acknowledgment in the product documentation would be
20 | appreciated but is not required.
21 | 2. Altered source versions must be plainly marked as such, and must not be
22 | misrepresented as being the original software.
23 | 3. This notice may not be removed or altered from any source distribution.
24 |
25 | *****************************************************************************
26 | # EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 | ******************************************************************************
32 | """
33 | # Application imports
34 | from App import App
35 |
36 | # Create app
37 | app = App(True)
38 | # Main loop
39 | while app.on:
40 | # Call app main function
41 | app.main()
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/advertising/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/advertising/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/advertising/adafruit.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/advertising/adafruit.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/advertising/standard.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/advertising/standard.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/attributes/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/attributes/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/float.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/float.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/int.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/int.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/json.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/json.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/stream.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/stream.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/string.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/string.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/circuitpython.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/circuitpython.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/microbit.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/microbit.py
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/nordic.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/nordic.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/sphero.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/sphero.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/standard/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/standard/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/standard/device_info.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/standard/device_info.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/standard/hid.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/standard/hid.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/uuid/__init__.mpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/uuid/__init__.mpy
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/images/piezo-dev-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/images/piezo-dev-2.png
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/images/piezo-exp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/images/piezo-exp-2.png
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/images/piezo-sparkfun-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/images/piezo-sparkfun-2.png
--------------------------------------------------------------------------------
/dev_lab_circuitpython_bluetooth_find_me/images/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/images/thumb.png
--------------------------------------------------------------------------------
/dev_lab_wifi_http_server/LICENSE:
--------------------------------------------------------------------------------
1 | SPDX-License-Identifier: Zlib
2 |
3 | The licensor of this software is Silicon Laboratories Inc.
4 |
5 | This software is provided 'as-is', without any express or implied
6 | warranty. In no event will the authors be held liable for any damages
7 | arising from the use of this software.
8 |
9 | Permission is granted to anyone to use this software for any purpose,
10 | including commercial applications, and to alter it and redistribute it
11 | freely, subject to the following restrictions:
12 |
13 | 1. The origin of this software must not be misrepresented; you must not
14 | claim that you wrote the original software. If you use this software
15 | in a product, an acknowledgment in the product documentation would be
16 | appreciated but is not required.
17 | 2. Altered source versions must be plainly marked as such, and must not be
18 | misrepresented as being the original software.
19 | 3. This notice may not be removed or altered from any source distribution.
20 |
--------------------------------------------------------------------------------
/dev_lab_wifi_http_server/README.md:
--------------------------------------------------------------------------------
1 | # Dev Lab: SiWG917 Sleeping Wi-Fi HTTP Server
2 |
3 | ## About
4 |
5 | Two videos for this Dev Lab are available on YouTube:
6 |
7 | ### [SiWG917 Wi-Fi HTTP Server](https://get.silabs.com/gh963yt)
8 |
9 | 
10 |
11 | This project-based Dev Lab walks through the creation of a Wi-Fi HTTP Server using the Silicon Labs energy-efficient SiWG917 Wi-Fi 6 SoC. In the video you will how to:
12 |
13 | * Connect and setup SiWG917 boards in the Simplicity Studio v5 IDE
14 | * Create, build and run the Wi-Fi HTTP Server example application
15 | * Adapt the application to serve an auto-refreshing HTML page which includes the board button states
16 | * Make the joining and rejoining process robust
17 | * How to use software APIs to construct Wi-Fi applications for the SiWG917
18 |
19 | ### SiWG917 Sleeping Wi-Fi HTTP Server
20 |
21 | 
22 |
23 | This video is coming soon and provides step-by-step instructions for adding sleep modes to the HTTP Server in order to save power. It covers:
24 |
25 | * How to measure power using Simplicity Studio's Energy Profiler
26 | * How to enable the Network Wireless Processor (NWP) sleep modes using code
27 | * How to enable the Application Processor (M4) sleep modes using code and Software Components
28 |
29 | ## Folders
30 |
31 | **presentation:** Contains a PDF presentation of the Dev Lab to help you follow along with the video
32 |
33 | **source_1_server:** Contains updated source code to serve the auto-refreshing HTML page
34 |
35 | **source_2_rejoin:** Contains updated source code to make joining and rejoining more robust
36 |
37 | **source_3_nwp_sleep:** Contains source code that allows the Network Wireless Processor to sleep
38 |
39 | **source_4_nwp_m4_sleep:** Contains source code that allows the Application Processor to sleep
40 |
--------------------------------------------------------------------------------
/dev_lab_wifi_http_server/images/dev_lab_sleeping_wifi_http_server_360p.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_wifi_http_server/images/dev_lab_sleeping_wifi_http_server_360p.png
--------------------------------------------------------------------------------
/dev_lab_wifi_http_server/images/dev_lab_wifi_http_server_360p.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_wifi_http_server/images/dev_lab_wifi_http_server_360p.png
--------------------------------------------------------------------------------
/dev_lab_wifi_http_server/presentation/dev_lab_wifi_http_server_3v5.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_wifi_http_server/presentation/dev_lab_wifi_http_server_3v5.pdf
--------------------------------------------------------------------------------
/images/Arduino-Matter-Mood-Light-200p.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/Arduino-Matter-Mood-Light-200p.png
--------------------------------------------------------------------------------
/images/Arduino-Matter-Occupancy-Sensor-200p.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/Arduino-Matter-Occupancy-Sensor-200p.png
--------------------------------------------------------------------------------
/images/Arduino-Nano-Matter-200p.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/Arduino-Nano-Matter-200p.png
--------------------------------------------------------------------------------
/images/Find-Me-200p.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/Find-Me-200p.png
--------------------------------------------------------------------------------
/images/LED-Matrix-200p.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/LED-Matrix-200p.png
--------------------------------------------------------------------------------
/images/Magic-Wand-200p.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/Magic-Wand-200p.png
--------------------------------------------------------------------------------
/images/dev_lab_sleeping_wifi_http_server_200p.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/dev_lab_sleeping_wifi_http_server_200p.png
--------------------------------------------------------------------------------
/images/dev_lab_wifi_http_server_200p.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/dev_lab_wifi_http_server_200p.png
--------------------------------------------------------------------------------
/mg24_tech_lab/doc/Edge Impulse_account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/doc/Edge Impulse_account.png
--------------------------------------------------------------------------------
/mg24_tech_lab/doc/mg24-tech-lab-mobile-banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/doc/mg24-tech-lab-mobile-banner.png
--------------------------------------------------------------------------------
/mg24_tech_lab/doc/sensiML_account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/doc/sensiML_account.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/SimplicityStudio/mg24_tech_lab_session_1.sls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/SimplicityStudio/mg24_tech_lab_session_1.sls
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure1.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure10.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure11.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure12.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure13.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure14.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure15.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure16.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure17.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure18.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure19.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure2.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure20.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure21.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure22.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure23.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure24.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure25.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure26.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure27.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure28.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure3.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure4.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure5.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure6.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure7_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure7_1.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure7_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure7_2.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure8.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_1/doc/figure9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure9.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_2/README.md:
--------------------------------------------------------------------------------
1 | # Accelerate AI/ML at the Edge with xG24 and SensiML #
2 |
3 |
4 |
5 |
6 | ## Summary ##
7 | - SensiML’ s Analytic Toolkit for developing inference models
8 | - Demonstrating acoustic event recognition for smart home and predictive maintenance applications
9 | - Hands-On: Deploying inference model to xG24 to recognize acoustic events
10 |
11 | ## [Lab Procedure: Guitar Note Audio Recognition](https://sensiml.com/documentation/application-tutorials/guitar-tuning-notes-audio-recognition.html#what-you-need-to-get-started) ##
12 | In this tutorial, we are going to build a model to classify guitar tuning notes that can run entirely on a microcontroller using the SensiML Analytics Toolkit. This tutorial will provide you with the knowledge to build an audio recognition model. You will learn how to:
13 |
14 | - Collect and annotate audio data
15 |
16 | - Applying signal preprocessing
17 |
18 | - Train a classification algorithm
19 |
20 | - Create firmware optimized for the resource budget of an edge device
21 |
22 | ## Hardware Requirements ##
23 |
24 | - [One EFR32xG24 Dev Kit](https://www.silabs.com/development-tools/wireless/efr32xg24-dev-kit)
25 | - Micro-USB to USB Type-A Cable
26 | - Mobile Phone
27 | ## Software Requirements ##
28 |
29 | - [Simplicity Studio v5](https://www.silabs.com/products/development-tools/software/simplicity-studio/simplicity-studio-5)
30 | - GSDK v4.0.2
31 | - Bluetooth SDK 3.3.2
32 | - [EFR Connect Mobile App](https://www.silabs.com/products/development-tools/software/bluetooth-low-energy/mobile-apps/efr-connect)
33 | - [Data Capture Lab Project File](lab_files/Guitar%20Note%20Recognition.zip)
34 |
35 | ## AI/ML Partner Tool ##
36 | This workshop will allow you to evaluate a Third Party Partner Tools for topics 2 of the series. For an ML Explorer, these tools cover the end-to-end workflow for creating a machine learning neural network model and accompanying embedded software to include in your application. To use the tool, you will need to create an account on SensiML’s website and intall their tools prior to working through topic 2.
37 |
38 | **Topic 2: Accelerate AI/ML at the Edge with xG24 and SensiML**
39 | 1. Sign-up for SensiML Community Edition (free forever tier of SensiML Analytics Toolkit). Go to the link below, enter your account information, and click ‘Create My Account’.
40 |
41 | [Community Edition Sign-up Link](https://sensiml.com/plans/community-edition/)
42 | 
43 |
44 | - You will receive an email at the address you provided in the form to validate the account.
45 |
46 | - Open the account validation email and click the activation link to enable your account.
47 |
48 | 2. After the account is created, walk through the steps outlined under [“What you need to get started”](https://urldefense.com/v3/__https:/sensiml.com/documentation/application-tutorials/guitar-tuning-notes-audio-recognition.html*what-you-need-to-get-started__;Iw!!N30Cs7Jr!Th2X3-XVL4SHFRV9t8ROVmcaPryzq0HT88lOQQkO1OB3MiqWLAjE1uXhGm1yb3nMx5PESQznJq4EbE1FZwyyNf8PEg$) of the Guitar Note Audio Recognition demo prior to attending Topic 2.
--------------------------------------------------------------------------------
/mg24_tech_lab/session_2/doc/SensiML Slide for SiLabs_FINAL.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_2/doc/SensiML Slide for SiLabs_FINAL.jpg
--------------------------------------------------------------------------------
/mg24_tech_lab/session_2/doc/sensiML_account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_2/doc/sensiML_account.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_2/lab_files/ExportedDate.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_2/lab_files/ExportedDate.zip
--------------------------------------------------------------------------------
/mg24_tech_lab/session_2/lab_files/Guitar Note Recognition.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_2/lab_files/Guitar Note Recognition.zip
--------------------------------------------------------------------------------
/mg24_tech_lab/session_2/lab_files/SensiML_xG24_Microphone_Capture-main.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_2/lab_files/SensiML_xG24_Microphone_Capture-main.zip
--------------------------------------------------------------------------------
/mg24_tech_lab/session_3/README.md:
--------------------------------------------------------------------------------
1 | # Accelerate AI/ML at the Edge with xG24 and Edge Impulse #
2 |
3 |
4 |
5 |
6 | ## Summary ##
7 | Build a keyword recognition application from scratch by collecting data from the embedded sensors, training and validating your machine learning pipeline using Edge Impulse Studio, and, deploying the custom model back to your device.
8 |
9 |
10 | ## [Lab Procedure: Edge Impulse Workshop using SiLabs xG24 Dev Kit](https://github.com/edgeimpulse/workshop-silabs-xg24-dev-kitd) ##
11 | - Introduction
12 | - Set up local environment
13 | - Build your machine learning pipeline
14 | - Run the inference on the xG24 Dev Kit
15 |
16 | ## Hardware Requirements ##
17 |
18 | - [One EFR32xG24 Dev Kit](https://www.silabs.com/development-tools/wireless/efr32xg24-dev-kit)
19 | - Micro-USB to USB Type-A Cable
20 | - Mobile Phone
21 | ## Software Requirements ##
22 |
23 | - [Simplicity Studio v5](https://www.silabs.com/products/development-tools/software/simplicity-studio/simplicity-studio-5)
24 | - GSDK v4.0.2
25 | - Bluetooth SDK 3.3.2
26 | - [EFR Connect Mobile App](https://www.silabs.com/products/development-tools/software/bluetooth-low-energy/mobile-apps/efr-connect)
27 |
28 |
29 | ## AI/ML Partner Tool ##
30 | This workshop will allow you to evaluate a Third Party Partner Tool for topics 3 of the series. For an ML Explorer, this tool covers the end-to-end workflow for creating a machine learning neural network model and accompanying embedded software to include in your application. To use the tool, you will need to create an account on Edge Impulse’s website and intall their CLI tool prior to working through topic 3.
31 |
32 | **Topic 3: Accelerate AI/ML at the Edge with xG24 and Edge Impulse**
33 |
34 | Edge Impulse is a development platform that can be used to create intelligent device solutions with machine learning on embedded devices. This section will go over getting set up with Edge Impulse.
35 |
36 | 1. Create an account on Edge Impulse’s website [HERE](https://studio.edgeimpulse.com/signup?next=%2Fstudio%2Fselect-project%3Fautoredirect%3D1).
37 |
38 | 
39 |
40 | 2. Install Edge Impuse CLI using the procedures outlined [HERE](https://docs.edgeimpulse.com/docs/edge-impulse-cli/cli-installation).
--------------------------------------------------------------------------------
/mg24_tech_lab/session_3/doc/Edge Impulse_account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_3/doc/Edge Impulse_account.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_3/doc/Edge_Impulse_Graphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_3/doc/Edge_Impulse_Graphic.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/SimplicityStudio/mg24_tech_lab_session_4.sls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/SimplicityStudio/mg24_tech_lab_session_4.sls
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/add-eusart-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/add-eusart-1.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/add-eusart-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/add-eusart-2.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/add-feature.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/add-feature.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/add-legacy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/add-legacy.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/add-log.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/add-log.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/add-microphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/add-microphone.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/admin-console.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/admin-console.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/baudrate-set.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/baudrate-set.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/baudrate-type.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/baudrate-type.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/bootloader-build.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/bootloader-build.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/bootloader-flash-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/bootloader-flash-1.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/bootloader-flash-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/bootloader-flash-2.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/browse-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/browse-1.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/close-project-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/close-project-1.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/close-project-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/close-project-2.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/commander-kit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/commander-kit.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/commander-launch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/commander-launch.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/commander-select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/commander-select.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/delete.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/edit-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/edit-1.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/edit-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/edit-2.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/efr-connect-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/efr-connect-1.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/efr-connect-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/efr-connect-2.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/efr-connect-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/efr-connect-3.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/efr-connect-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/efr-connect-4.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/efr-connect-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/efr-connect-5.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/force-generation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/force-generation.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/fw-error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/fw-error.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/gatt-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-1.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/gatt-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-2.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/gatt-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-3.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/gatt-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-4.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/gatt-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-5.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/gatt-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-6.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/gatt-7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-7.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/gatt-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-8.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/gatt-9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-9.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/gatt-A.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-A.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/gatt-config-saved.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-config-saved.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/gatt-config-unsaved.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-config-unsaved.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/import1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/import1.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/import2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/import2.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/launch-console.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/launch-console.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/launcher-soc-empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/launcher-soc-empty.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/launcher1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/launcher1.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/launcher2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/launcher2.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/launcher3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/launcher3.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/location-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/location-1.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/location-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/location-2.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/note.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/note.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/remove-feature.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/remove-feature.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/remove-ota-dfu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/remove-ota-dfu.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/reopen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/reopen.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/save-gatt-build.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/save-gatt-build.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/sensiml-slcc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/sensiml-slcc.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/toggle-mode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/toggle-mode.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/tune-bluetooth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/tune-bluetooth.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/unzip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/unzip.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/vcom-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/vcom-1.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/vcom-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/vcom-2.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/docs/wizard1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/wizard1.png
--------------------------------------------------------------------------------
/mg24_tech_lab/session_4/src/knowledgepack.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/src/knowledgepack.zip
--------------------------------------------------------------------------------
/quick_start_arduino_nano_matter/.gitignore:
--------------------------------------------------------------------------------
1 | # Prerequisites
2 | *.d
3 |
4 | # Compiled Object files
5 | *.slo
6 | *.lo
7 | *.o
8 | *.obj
9 |
10 | # Precompiled Headers
11 | *.gch
12 | *.pch
13 |
14 | # Compiled Dynamic libraries
15 | *.so
16 | *.dylib
17 | *.dll
18 |
19 | # Fortran module files
20 | *.mod
21 | *.smod
22 |
23 | # Compiled Static libraries
24 | *.lai
25 | *.la
26 | *.a
27 | *.lib
28 |
29 | # Executables
30 | *.exe
31 | *.out
32 | *.app
33 | *.bak
34 |
--------------------------------------------------------------------------------
/quick_start_arduino_nano_matter/LICENSE.txt:
--------------------------------------------------------------------------------
1 | *****************************************************************************
2 | Copyright 2024 Silicon Laboratories Inc. www.silabs.com
3 | *****************************************************************************
4 | SPDX-License-Identifier: Zlib
5 |
6 | The licensor of this software is Silicon Laboratories Inc.
7 |
8 | This software is provided \'as-is\', without any express or implied
9 | warranty. In no event will the authors be held liable for any damages
10 | arising from the use of this software.
11 |
12 | Permission is granted to anyone to use this software for any purpose,
13 | including commercial applications, and to alter it and redistribute it
14 | freely, subject to the following restrictions:
15 |
16 | 1. The origin of this software must not be misrepresented; you must not
17 | claim that you wrote the original software. If you use this software
18 | in a product, an acknowledgment in the product documentation would be
19 | appreciated but is not required.
20 | 2. Altered source versions must be plainly marked as such, and must not be
21 | misrepresented as being the original software.
22 | 3. This notice may not be removed or altered from any source distribution.
23 |
24 | *****************************************************************************
25 |
26 | EXPERIMENTAL QUALITY
27 | This code has not been formally tested and is provided as-is. It is not
28 | suitable for production environments. In addition, this code will not be
29 | maintained and there may be no bug maintenance planned for these resources.
30 | Silicon Labs may update projects from time to time.
31 |
32 | ******************************************************************************
--------------------------------------------------------------------------------
/quick_start_arduino_nano_matter/README.md:
--------------------------------------------------------------------------------
1 | # Quick Start: Arduino Nano Matter
2 |
3 | 
4 |
5 | ## About
6 |
7 | The video for this Dev Lab is available on [YouTube](https://youtu.be/7pXFT4D3ui4), where the video description includes links to further information.
8 |
9 | This quick start video introduces the Arduino Nano Matter board and shows how to get started developing Matter over Thread applications. In the video the Matter Dimmable Lightbulb example is adapted to drive and animate a WS2812 RGB LED strip to display the brightness of the light. This example makes the final source code available for download and use.
10 |
11 | ## Usage
12 |
13 | ### Commissioning
14 |
15 | Commissioning into a Matter over Thread network follows the normal process of scanning a QR or entering a manual code in the app for your chosen Matter ecosystem. For Google Home you may need to enable test certificates in the Google Developer Console for your Google Home account, the [Quick Start - Matter in Google Home](https://youtu.be/R_kpSO7PtUo) YouTube video walks through this process.
16 |
17 | A URL to the QR Code and the manual code are both output by the application to the serial port during start up.
18 |
19 | ### Control
20 |
21 | The light can be turned off and on and the brightness set using the chosen ecosystem's mobile application or smart assistant.
22 |
23 | ## Hardware
24 |
25 | The software is written to run on the Arduino Nano Matter board but is also compatible with other Silicon Labs EFR32MG24 development boards. Wiring diagrams for compatible boards are shown below. Some boards are able to provide 5V power for WS2812 LEDs however, they can draw a lot of current so an external power supply is advised.
26 |
27 | ### Arduino Nano Matter
28 |
29 | 
30 |
31 | ### Silicon Labs xG24 Explorer Kit
32 |
33 | 
34 |
35 | ### Silicon Labs xG24 Dev Kit
36 |
37 | 
38 |
39 | ### SparkFun Thing Plus MGM240P Matter
40 |
41 | 
42 |
--------------------------------------------------------------------------------
/quick_start_arduino_nano_matter/images/Wiring-Dev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/quick_start_arduino_nano_matter/images/Wiring-Dev.png
--------------------------------------------------------------------------------
/quick_start_arduino_nano_matter/images/Wiring-Explorer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/quick_start_arduino_nano_matter/images/Wiring-Explorer.png
--------------------------------------------------------------------------------
/quick_start_arduino_nano_matter/images/Wiring-Nano.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/quick_start_arduino_nano_matter/images/Wiring-Nano.png
--------------------------------------------------------------------------------
/quick_start_arduino_nano_matter/images/Wiring-SF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/quick_start_arduino_nano_matter/images/Wiring-SF.png
--------------------------------------------------------------------------------
/quick_start_arduino_nano_matter/images/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/quick_start_arduino_nano_matter/images/thumb.png
--------------------------------------------------------------------------------
/zigbee_boot_camp/README.md:
--------------------------------------------------------------------------------
1 | ********
2 | 
3 | ********
4 | ### The Zigbee_Light_ZC and Zigbee_Switch_ZR are the reference project of the Zigbee Boot Camp series training. Please access the [Zigbee Boot Camp WiKi](https://github.com/SiliconLabs/Zigbee-Boot-Camp/wiki/Zigbee-Boot-Camp) for the hands-on documentation.
5 |
6 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/.internal_hwconfig/ZigbeeMinimalSoc.hwconf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/.internal_hwconfig/hwconfig.properties:
--------------------------------------------------------------------------------
1 | # This horribly named file specifies the per-sample app .hwconf file
2 | # contribution. See meta-inf/hwConfig.properties for more information about the
3 | # order in which these .hwconf files are applied to the project.
4 | hwConfFile = ZigbeeMinimalSoc.hwconf
5 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/.settings/com.silabs.ss.framework.ide.project.sls.core.prefs:
--------------------------------------------------------------------------------
1 | copiedFilesOriginState={}
2 | eclipse.preferences.version=1
3 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/GNU ARM v7.2.1 - Default/Zigbee_Light_ZC.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/zigbee_boot_camp/Zigbee_Light_ZC/GNU ARM v7.2.1 - Default/Zigbee_Light_ZC.bin
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/GNU ARM v7.2.1 - Default/Zigbee_Light_ZC.gbl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/zigbee_boot_camp/Zigbee_Light_ZC/GNU ARM v7.2.1 - Default/Zigbee_Light_ZC.gbl
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/Zigbee_Light_ZC-postbuild.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal enableextensions enabledelayedexpansion
3 | SET allParams=%*
4 | SET params=%allParams:' '=","%
5 | SET params=%params:'="%
6 | set /a count=0
7 | for %%i in (%params%) do (
8 | set /a count+=1
9 | set param[!count!]=%%i
10 | )
11 |
12 | set "studioInstallationDir=%param[4]:"=%"
13 | set "projDir=%~dp0"
14 | set "projDir=%projDir:"=%"
15 |
16 | "%studioInstallationDir%/developer\adapter_packs\python\Scripts\python.exe" "%projDir%/Zigbee_Light_ZC-postbuild.py" %param[1]% %param[2]% "" "" %param[3]%
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/Zigbee_Light_ZC-prebuild.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal enableextensions enabledelayedexpansion
3 | SET allParams=%*
4 | SET params=%allParams:' '=","%
5 | SET params=%params:'="%
6 | set /a count=0
7 | for %%i in (%params%) do (
8 | set /a count+=1
9 | set param[!count!]=%%i
10 | )
11 |
12 | set "studioInstallationDir=%param[4]:"=%"
13 | set "projDir=%~dp0"
14 | set "projDir=%projDir:"=%"
15 |
16 | "%studioInstallationDir%/developer\adapter_packs\python\Scripts\python.exe" "%projDir%/Zigbee_Light_ZC-prebuild.py"
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/Zigbee_Light_ZC-prebuild.py:
--------------------------------------------------------------------------------
1 | # This file was generated by Simplicity Studio from the following template:
2 | # app/esf_common/template/common/common-prebuild.py
3 | # Please do not edit it directly.
4 |
5 | # Pre Build processing.
6 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/Zigbee_Light_ZC_tokens.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // This file contains the tokens for attributes stored in flash
6 |
7 |
8 | // Identifier tags for tokens
9 |
10 |
11 | // Types for the tokens
12 | #ifdef DEFINETYPES
13 | #endif // DEFINETYPES
14 |
15 |
16 | // Actual token definitions
17 | #ifdef DEFINETOKENS
18 | #endif // DEFINETOKENS
19 |
20 |
21 | // Macro snippet that loads all the attributes from tokens
22 | #define GENERATED_TOKEN_LOADER(endpoint) do {\
23 | } while(false)
24 |
25 |
26 | // Macro snippet that saves the attribute to token
27 | #define GENERATED_TOKEN_SAVER do {\
28 | } while(false)
29 |
30 |
31 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/af-gen-event.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // Enclosing macro to prevent multiple inclusion
6 | #ifndef __AF_GEN_EVENT__
7 | #define __AF_GEN_EVENT__
8 |
9 |
10 | // Code used to configure the cluster event mechanism
11 | #define EMBER_AF_GENERATED_EVENT_CODE \
12 | extern EmberEventControl emberAfPluginConcentratorUpdateEventControl; \
13 | extern EmberEventControl emberAfPluginNetworkCreatorSecurityOpenNetworkEventControl; \
14 | extern EmberEventControl emberAfPluginScanDispatchScanEventControl; \
15 | extern void emberAfPluginConcentratorUpdateEventHandler(void); \
16 | extern void emberAfPluginNetworkCreatorSecurityOpenNetworkEventHandler(void); \
17 | extern void emberAfPluginScanDispatchScanEventHandler(void); \
18 |
19 |
20 | // EmberEventData structs used to populate the EmberEventData table
21 | #define EMBER_AF_GENERATED_EVENTS \
22 | { &emberAfPluginConcentratorUpdateEventControl, emberAfPluginConcentratorUpdateEventHandler }, \
23 | { &emberAfPluginNetworkCreatorSecurityOpenNetworkEventControl, emberAfPluginNetworkCreatorSecurityOpenNetworkEventHandler }, \
24 | { &emberAfPluginScanDispatchScanEventControl, emberAfPluginScanDispatchScanEventHandler }, \
25 |
26 |
27 | #define EMBER_AF_GENERATED_EVENT_STRINGS \
28 | "Concentrator Support Plugin Update", \
29 | "Network Creator Security Plugin OpenNetwork", \
30 | "Scan Dispatch Plugin Scan", \
31 |
32 |
33 | #endif // __AF_GEN_EVENT__
34 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/att-storage.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // Enclosing macro to prevent multiple inclusion
6 | #ifndef SILABS_ATTRIBUTE_STORAGE_GEN
7 | #define SILABS_ATTRIBUTE_STORAGE_GEN
8 |
9 |
10 |
11 | // Attribute masks modify how attributes are used by the framework
12 | // Attribute that has this mask is NOT read-only
13 | #define ATTRIBUTE_MASK_WRITABLE (0x01)
14 | // Attribute that has this mask is saved to a token
15 | #define ATTRIBUTE_MASK_TOKENIZE (0x02)
16 | // Attribute that has this mask has a min/max values
17 | #define ATTRIBUTE_MASK_MIN_MAX (0x04)
18 | // Manufacturer specific attribute
19 | #define ATTRIBUTE_MASK_MANUFACTURER_SPECIFIC (0x08)
20 | // Attribute deferred to external storage
21 | #define ATTRIBUTE_MASK_EXTERNAL_STORAGE (0x10)
22 | // Attribute is singleton
23 | #define ATTRIBUTE_MASK_SINGLETON (0x20)
24 | // Attribute is a client attribute
25 | #define ATTRIBUTE_MASK_CLIENT (0x40)
26 |
27 |
28 | // Cluster masks modify how clusters are used by the framework
29 | // Does this cluster have init function?
30 | #define CLUSTER_MASK_INIT_FUNCTION (0x01)
31 | // Does this cluster have attribute changed function?
32 | #define CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION (0x02)
33 | // Does this cluster have default response function?
34 | #define CLUSTER_MASK_DEFAULT_RESPONSE_FUNCTION (0x04)
35 | // Does this cluster have message sent function?
36 | #define CLUSTER_MASK_MESSAGE_SENT_FUNCTION (0x08)
37 | // Does this cluster have manufacturer specific attribute changed funciton?
38 | #define CLUSTER_MASK_MANUFACTURER_SPECIFIC_ATTRIBUTE_CHANGED_FUNCTION (0x10)
39 | // Does this cluster have pre-attribute changed function?
40 | #define CLUSTER_MASK_PRE_ATTRIBUTE_CHANGED_FUNCTION (0x20)
41 | // Cluster is a server
42 | #define CLUSTER_MASK_SERVER (0x40)
43 | // Cluster is a client
44 | #define CLUSTER_MASK_CLIENT (0x80)
45 |
46 |
47 | // Command masks modify meanings of commands
48 | // Is sending of this client command supported
49 | #define COMMAND_MASK_OUTGOING_CLIENT (0x01)
50 | // Is sending of this server command supported
51 | #define COMMAND_MASK_OUTGOING_SERVER (0x02)
52 | // Is receiving of this client command supported
53 | #define COMMAND_MASK_INCOMING_CLIENT (0x04)
54 | // Is receiving of this server command supported
55 | #define COMMAND_MASK_INCOMING_SERVER (0x08)
56 | // Is this command manufacturer specific?
57 | #define COMMAND_MASK_MANUFACTURER_SPECIFIC (0x10)
58 | #endif // SILABS_ATTRIBUTE_STORAGE_GEN
59 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/attribute-size.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // Enclosing macro to prevent multiple inclusion
6 | #ifndef SILABS_ATTRIBUTE_SIZE
7 | #define SILABS_ATTRIBUTE_SIZE
8 |
9 |
10 | // Used ZCL attribute type sizes
11 | ZCL_BITMAP16_ATTRIBUTE_TYPE, 2,
12 | ZCL_BITMAP24_ATTRIBUTE_TYPE, 3,
13 | ZCL_BITMAP32_ATTRIBUTE_TYPE, 4,
14 | ZCL_BITMAP48_ATTRIBUTE_TYPE, 6,
15 | ZCL_BITMAP64_ATTRIBUTE_TYPE, 8,
16 | ZCL_BITMAP8_ATTRIBUTE_TYPE, 1,
17 | ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1,
18 | ZCL_DATA8_ATTRIBUTE_TYPE, 1,
19 | ZCL_ENUM16_ATTRIBUTE_TYPE, 2,
20 | ZCL_ENUM8_ATTRIBUTE_TYPE, 1,
21 | ZCL_FLOAT_SINGLE_ATTRIBUTE_TYPE, 4,
22 | ZCL_IEEE_ADDRESS_ATTRIBUTE_TYPE, 8,
23 | ZCL_INT16S_ATTRIBUTE_TYPE, 2,
24 | ZCL_INT16U_ATTRIBUTE_TYPE, 2,
25 | ZCL_INT24S_ATTRIBUTE_TYPE, 3,
26 | ZCL_INT24U_ATTRIBUTE_TYPE, 3,
27 | ZCL_INT32S_ATTRIBUTE_TYPE, 4,
28 | ZCL_INT32U_ATTRIBUTE_TYPE, 4,
29 | ZCL_INT48U_ATTRIBUTE_TYPE, 6,
30 | ZCL_INT56U_ATTRIBUTE_TYPE, 7,
31 | ZCL_INT8S_ATTRIBUTE_TYPE, 1,
32 | ZCL_INT8U_ATTRIBUTE_TYPE, 1,
33 | ZCL_SECURITY_KEY_ATTRIBUTE_TYPE, 16,
34 | ZCL_UTC_TIME_ATTRIBUTE_TYPE, 4,
35 | #endif // SILABS_ATTRIBUTE_SIZE
36 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/call-command-handler.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // Enclosing macro to prevent multiple inclusion
6 | #ifndef SILABS_EMBER_AF_COMMAND_PARSE_HEADER
7 | #define SILABS_EMBER_AF_COMMAND_PARSE_HEADER
8 |
9 |
10 | // This is a set of generated prototype for functions that parse the
11 | // the incomming message, and call appropriate command handler.
12 |
13 | // Cluster: On/off, server
14 | EmberAfStatus emberAfOnOffClusterServerCommandParse(EmberAfClusterCommand *cmd);
15 |
16 | #endif // SILABS_EMBER_AF_COMMAND_PARSE_HEADER
17 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/mbedtls-config-generated.h:
--------------------------------------------------------------------------------
1 | /***************************************************************************//**
2 | * @file mbedtls-config-generated.h
3 | * @brief mbed TLS configuration file. This file is generated do not modify it directly. Please use the mbed TLS setup instead.
4 | *
5 | *******************************************************************************
6 | * # License
7 | * Copyright 2018 Silicon Laboratories Inc. www.silabs.com
8 | *******************************************************************************
9 | *
10 | * The licensor of this software is Silicon Laboratories Inc. Your use of this
11 | * software is governed by the terms of Silicon Labs Master Software License
12 | * Agreement (MSLA) available at
13 | * www.silabs.com/about-us/legal/master-software-license-agreement. This
14 | * software is distributed to you in Source Code format and is governed by the
15 | * sections of the MSLA applicable to Source Code.
16 | *
17 | ******************************************************************************/
18 |
19 | #ifndef MBEDTLS_CONFIG_GENERATED_H
20 | #define MBEDTLS_CONFIG_GENERATED_H
21 |
22 | #if !defined(EMBER_TEST)
23 | #define MBEDTLS_NO_PLATFORM_ENTROPY
24 |
25 | #else
26 | // mbedtls/library/entropy_poll.c needs this,
27 | // implicit declaration of function 'syscall' otherwise
28 | #define _GNU_SOURCE
29 | #endif
30 |
31 | // Generated content that is coming from contributor plugins
32 |
33 |
34 |
35 | #define MBEDTLS_AES_C
36 |
37 |
38 | #if defined(MBEDTLS_ENTROPY_C)
39 | // Enable RAIL radio as entropy source by default
40 | // This is going to help on devices that does not have TRNG support by software
41 | // (FR32XG13 (SDID_89) and EFR32XG14 (SDID_95))
42 | #define MBEDTLS_ENTROPY_RAIL_C
43 | #endif
44 |
45 | // Inclusion of the Silabs specific device acceleration configuration file.
46 | #if defined(MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE)
47 | #include MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE
48 | #endif
49 |
50 | // Inclusion of the app specific device acceleration configuration file.
51 | #if defined(MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE)
52 | #include MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE
53 | #endif
54 |
55 | // Inclusion of the mbed TLS config_check.h header file.
56 | #include "mbedtls/check_config.h"
57 |
58 | #endif /* MBEDTLS_CONFIG_GENERATED_H */
59 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/stack-handler-stub.c:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // This c file provides stubs for all callbacks. These stubs
6 | // will be used in the case where user defined implementations
7 | // of the callbacks have not been provided.
8 | #include "app/framework/include/af.h"
9 | // Stubs required for implemented stack handlers.
10 |
11 |
12 | #ifdef EZSP_HOST
13 | #else // ! EZSP_HOST
14 | #endif // EZSP_HOST
15 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/znet-bookkeeping.c:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | #include PLATFORM_HEADER
6 | #include CONFIGURATION_HEADER
7 | #include "af.h"
8 |
9 | // Init function declarations.
10 | void emberAfMainInitCallback(void); // Global
11 | void emberAfInit(void); // Global
12 | void emberAfPluginNetworkCreatorSecurityInitCallback(void); // Plugin: network-creator-security
13 |
14 | void emAfInit(void)
15 | {
16 | emberAfMainInitCallback(); // Global
17 | emberAfInit(); // Global
18 | emberAfPluginNetworkCreatorSecurityInitCallback(); // Plugin: network-creator-security
19 | }
20 |
21 | // Tick function declarations.
22 | void emberAfMainTickCallback(void); // Global
23 | void emberAfTick(void); // Global
24 |
25 | void emAfTick(void)
26 | {
27 | emberAfMainTickCallback(); // Global
28 | emberAfTick(); // Global
29 | }
30 |
31 | void emAfResetAttributes(uint8_t endpointId)
32 | {
33 | }
34 |
35 | // PreCommandReceived function declarations.
36 | bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd); // Global
37 |
38 | bool emAfPreCommandReceived(EmberAfClusterCommand* cmd)
39 | {
40 | return emberAfPreCommandReceivedCallback(cmd); // Global
41 | }
42 |
43 | // PreZDOMessageReceived function declarations.
44 | bool emberAfPreZDOMessageReceivedCallback(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length); // Global
45 |
46 | bool emAfPreZDOMessageReceived(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length)
47 | {
48 | return emberAfPreZDOMessageReceivedCallback(emberNodeId, apsFrame, message, length); // Global
49 | }
50 |
51 | bool emAfRetrieveAttributeAndCraftResponse(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attrId, uint8_t mask, uint16_t maunfacturerCode, uint16_t readLength)
52 | {
53 | return 0; // false
54 | }
55 |
56 | // ZigbeeKeyEstablishment function declarations.
57 | void emberAfZigbeeKeyEstablishmentCallback(EmberEUI64 partner, EmberKeyStatus status); // Global
58 | void emberAfPluginNetworkCreatorSecurityZigbeeKeyEstablishmentCallback(EmberEUI64 partner, EmberKeyStatus status); // Plugin: network-creator-security
59 |
60 | void emAfZigbeeKeyEstablishment(EmberEUI64 partner, EmberKeyStatus status)
61 | {
62 | emberAfZigbeeKeyEstablishmentCallback(partner, status); // Global
63 | emberAfPluginNetworkCreatorSecurityZigbeeKeyEstablishmentCallback(partner, status); // Plugin: network-creator-security
64 | }
65 |
66 | // ReadAttributesResponse function declarations.
67 | bool emberAfReadAttributesResponseCallback(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen); // Global
68 |
69 | bool emAfReadAttributesResponse(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen)
70 | {
71 | return emberAfReadAttributesResponseCallback(clusterId, buffer, bufLen); // Global
72 | }
73 |
74 | // ReportAttributes function declarations.
75 | bool emberAfReportAttributesCallback(EmberAfClusterId clusterId,uint8_t * buffer,uint16_t bufLen); // Global
76 |
77 | bool emAfReportAttributes(EmberAfClusterId clusterId,uint8_t * buffer,uint16_t bufLen)
78 | {
79 | return emberAfReportAttributesCallback(clusterId, buffer, bufLen); // Global
80 | }
81 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/znet-bookkeeping.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // Enclosing macro to prevent multiple inclusion
6 | #ifndef SILABS_ZNET_BOOKKEEPING_H
7 | #define SILABS_ZNET_BOOKKEEPING_H
8 |
9 |
10 | #include PLATFORM_HEADER
11 | #include CONFIGURATION_HEADER
12 | #include "af.h"
13 |
14 | void emAfInit(void);
15 |
16 | void emAfTick(void);
17 |
18 | void emAfResetAttributes(uint8_t endpointId);
19 |
20 | bool emAfPreCommandReceived(EmberAfClusterCommand* cmd);
21 |
22 | bool emAfPreZDOMessageReceived(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length);
23 |
24 | bool emAfRetrieveAttributeAndCraftResponse(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attrId, uint8_t mask, uint16_t maunfacturerCode, uint16_t readLength);
25 |
26 | void emAfZigbeeKeyEstablishment(EmberEUI64 partner, EmberKeyStatus status);
27 |
28 | bool emAfReadAttributesResponse(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen);
29 |
30 | bool emAfReportAttributes(EmberAfClusterId clusterId,uint8_t * buffer,uint16_t bufLen);
31 |
32 | #endif // SILABS_ZNET_BOOKKEEPING_H
33 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/znet-mfg-token.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | #ifdef CONFIGURATION_HEADER
6 | #include CONFIGURATION_HEADER
7 | #endif
8 |
9 | // Token header for the token.properties.
10 |
11 | #ifdef CUSTOM_TOKEN_HEADER
12 | #include CUSTOM_TOKEN_HEADER
13 | #endif
14 |
15 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Light_ZC/znet-token.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | #ifdef CONFIGURATION_HEADER
6 | #include CONFIGURATION_HEADER
7 | #endif
8 |
9 | // Token header for the token.properties.
10 | #include "../../../../../SiliconLabs/SimplicityStudio/v4_3/developer/sdks/gecko_sdk_suite/v2.6/protocol/zigbee/app/framework/util/tokens.h"
11 |
12 | #ifdef CUSTOM_TOKEN_HEADER
13 | #include CUSTOM_TOKEN_HEADER
14 | #endif
15 |
16 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/.internal_hwconfig/ZigbeeMinimalSoc.hwconf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/.internal_hwconfig/hwconfig.properties:
--------------------------------------------------------------------------------
1 | # This horribly named file specifies the per-sample app .hwconf file
2 | # contribution. See meta-inf/hwConfig.properties for more information about the
3 | # order in which these .hwconf files are applied to the project.
4 | hwConfFile = ZigbeeMinimalSoc.hwconf
5 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/.settings/com.silabs.ss.framework.ide.project.sls.core.prefs:
--------------------------------------------------------------------------------
1 | copiedFilesOriginState={}
2 | eclipse.preferences.version=1
3 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/Zigbee_Switch_ZR-postbuild.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal enableextensions enabledelayedexpansion
3 | SET allParams=%*
4 | SET params=%allParams:' '=","%
5 | SET params=%params:'="%
6 | set /a count=0
7 | for %%i in (%params%) do (
8 | set /a count+=1
9 | set param[!count!]=%%i
10 | )
11 |
12 | set "studioInstallationDir=%param[4]:"=%"
13 | set "projDir=%~dp0"
14 | set "projDir=%projDir:"=%"
15 |
16 | "%studioInstallationDir%/developer\adapter_packs\python\Scripts\python.exe" "%projDir%/Zigbee_Switch_ZR-postbuild.py" %param[1]% %param[2]% "" "" %param[3]%
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/Zigbee_Switch_ZR-prebuild.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal enableextensions enabledelayedexpansion
3 | SET allParams=%*
4 | SET params=%allParams:' '=","%
5 | SET params=%params:'="%
6 | set /a count=0
7 | for %%i in (%params%) do (
8 | set /a count+=1
9 | set param[!count!]=%%i
10 | )
11 |
12 | set "studioInstallationDir=%param[4]:"=%"
13 | set "projDir=%~dp0"
14 | set "projDir=%projDir:"=%"
15 |
16 | "%studioInstallationDir%/developer\adapter_packs\python\Scripts\python.exe" "%projDir%/Zigbee_Switch_ZR-prebuild.py"
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/Zigbee_Switch_ZR-prebuild.py:
--------------------------------------------------------------------------------
1 | # This file was generated by Simplicity Studio from the following template:
2 | # app/esf_common/template/common/common-prebuild.py
3 | # Please do not edit it directly.
4 |
5 | # Pre Build processing.
6 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/Zigbee_Switch_ZR_tokens.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // This file contains the tokens for attributes stored in flash
6 |
7 |
8 | // Identifier tags for tokens
9 |
10 |
11 | // Types for the tokens
12 | #ifdef DEFINETYPES
13 | #endif // DEFINETYPES
14 |
15 |
16 | // Actual token definitions
17 | #ifdef DEFINETOKENS
18 | #endif // DEFINETOKENS
19 |
20 |
21 | // Macro snippet that loads all the attributes from tokens
22 | #define GENERATED_TOKEN_LOADER(endpoint) do {\
23 | } while(false)
24 |
25 |
26 | // Macro snippet that saves the attribute to token
27 | #define GENERATED_TOKEN_SAVER do {\
28 | } while(false)
29 |
30 |
31 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/af-gen-event.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // Enclosing macro to prevent multiple inclusion
6 | #ifndef __AF_GEN_EVENT__
7 | #define __AF_GEN_EVENT__
8 |
9 |
10 | // Code used to configure the cluster event mechanism
11 | #define EMBER_AF_GENERATED_EVENT_CODE \
12 | extern EmberEventControl emberAfPluginButtonInterfaceButton0PressedEventControl; \
13 | extern EmberEventControl emberAfPluginButtonInterfaceButton0ReleasedEventControl; \
14 | extern EmberEventControl emberAfPluginButtonInterfaceButton1PressedEventControl; \
15 | extern EmberEventControl emberAfPluginButtonInterfaceButton1ReleasedEventControl; \
16 | extern EmberEventControl emberAfPluginButtonInterfaceButtonTimeoutEventControl; \
17 | extern EmberEventControl emberAfPluginNetworkSteeringFinishSteeringEventControl; \
18 | extern EmberEventControl emberAfPluginScanDispatchScanEventControl; \
19 | extern EmberEventControl emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventControl; \
20 | extern EmberEventControl ledBlinkingEventControl; \
21 | extern void emberAfPluginButtonInterfaceButton0PressedEventHandler(void); \
22 | extern void emberAfPluginButtonInterfaceButton0ReleasedEventHandler(void); \
23 | extern void emberAfPluginButtonInterfaceButton1PressedEventHandler(void); \
24 | extern void emberAfPluginButtonInterfaceButton1ReleasedEventHandler(void); \
25 | extern void emberAfPluginButtonInterfaceButtonTimeoutEventHandler(void); \
26 | extern void emberAfPluginNetworkSteeringFinishSteeringEventHandler(void); \
27 | extern void emberAfPluginScanDispatchScanEventHandler(void); \
28 | extern void emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventHandler(void); \
29 | extern void ledBlinkingEventHandler(void); \
30 |
31 |
32 | // EmberEventData structs used to populate the EmberEventData table
33 | #define EMBER_AF_GENERATED_EVENTS \
34 | { &emberAfPluginButtonInterfaceButton0PressedEventControl, emberAfPluginButtonInterfaceButton0PressedEventHandler }, \
35 | { &emberAfPluginButtonInterfaceButton0ReleasedEventControl, emberAfPluginButtonInterfaceButton0ReleasedEventHandler }, \
36 | { &emberAfPluginButtonInterfaceButton1PressedEventControl, emberAfPluginButtonInterfaceButton1PressedEventHandler }, \
37 | { &emberAfPluginButtonInterfaceButton1ReleasedEventControl, emberAfPluginButtonInterfaceButton1ReleasedEventHandler }, \
38 | { &emberAfPluginButtonInterfaceButtonTimeoutEventControl, emberAfPluginButtonInterfaceButtonTimeoutEventHandler }, \
39 | { &emberAfPluginNetworkSteeringFinishSteeringEventControl, emberAfPluginNetworkSteeringFinishSteeringEventHandler }, \
40 | { &emberAfPluginScanDispatchScanEventControl, emberAfPluginScanDispatchScanEventHandler }, \
41 | { &emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventControl, emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventHandler }, \
42 | { &ledBlinkingEventControl, ledBlinkingEventHandler }, \
43 |
44 |
45 | #define EMBER_AF_GENERATED_EVENT_STRINGS \
46 | "Button Interface Plugin Button0Pressed", \
47 | "Button Interface Plugin Button0Released", \
48 | "Button Interface Plugin Button1Pressed", \
49 | "Button Interface Plugin Button1Released", \
50 | "Button Interface Plugin ButtonTimeout", \
51 | "Network Steering Plugin FinishSteering", \
52 | "Scan Dispatch Plugin Scan", \
53 | "Update TC Link Key Plugin BeginTcLinkKeyUpdate", \
54 | "Led blinking event control", \
55 |
56 |
57 | #endif // __AF_GEN_EVENT__
58 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/att-storage.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // Enclosing macro to prevent multiple inclusion
6 | #ifndef SILABS_ATTRIBUTE_STORAGE_GEN
7 | #define SILABS_ATTRIBUTE_STORAGE_GEN
8 |
9 |
10 |
11 | // Attribute masks modify how attributes are used by the framework
12 | // Attribute that has this mask is NOT read-only
13 | #define ATTRIBUTE_MASK_WRITABLE (0x01)
14 | // Attribute that has this mask is saved to a token
15 | #define ATTRIBUTE_MASK_TOKENIZE (0x02)
16 | // Attribute that has this mask has a min/max values
17 | #define ATTRIBUTE_MASK_MIN_MAX (0x04)
18 | // Manufacturer specific attribute
19 | #define ATTRIBUTE_MASK_MANUFACTURER_SPECIFIC (0x08)
20 | // Attribute deferred to external storage
21 | #define ATTRIBUTE_MASK_EXTERNAL_STORAGE (0x10)
22 | // Attribute is singleton
23 | #define ATTRIBUTE_MASK_SINGLETON (0x20)
24 | // Attribute is a client attribute
25 | #define ATTRIBUTE_MASK_CLIENT (0x40)
26 |
27 |
28 | // Cluster masks modify how clusters are used by the framework
29 | // Does this cluster have init function?
30 | #define CLUSTER_MASK_INIT_FUNCTION (0x01)
31 | // Does this cluster have attribute changed function?
32 | #define CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION (0x02)
33 | // Does this cluster have default response function?
34 | #define CLUSTER_MASK_DEFAULT_RESPONSE_FUNCTION (0x04)
35 | // Does this cluster have message sent function?
36 | #define CLUSTER_MASK_MESSAGE_SENT_FUNCTION (0x08)
37 | // Does this cluster have manufacturer specific attribute changed funciton?
38 | #define CLUSTER_MASK_MANUFACTURER_SPECIFIC_ATTRIBUTE_CHANGED_FUNCTION (0x10)
39 | // Does this cluster have pre-attribute changed function?
40 | #define CLUSTER_MASK_PRE_ATTRIBUTE_CHANGED_FUNCTION (0x20)
41 | // Cluster is a server
42 | #define CLUSTER_MASK_SERVER (0x40)
43 | // Cluster is a client
44 | #define CLUSTER_MASK_CLIENT (0x80)
45 |
46 |
47 | // Command masks modify meanings of commands
48 | // Is sending of this client command supported
49 | #define COMMAND_MASK_OUTGOING_CLIENT (0x01)
50 | // Is sending of this server command supported
51 | #define COMMAND_MASK_OUTGOING_SERVER (0x02)
52 | // Is receiving of this client command supported
53 | #define COMMAND_MASK_INCOMING_CLIENT (0x04)
54 | // Is receiving of this server command supported
55 | #define COMMAND_MASK_INCOMING_SERVER (0x08)
56 | // Is this command manufacturer specific?
57 | #define COMMAND_MASK_MANUFACTURER_SPECIFIC (0x10)
58 | #endif // SILABS_ATTRIBUTE_STORAGE_GEN
59 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/attribute-size.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // Enclosing macro to prevent multiple inclusion
6 | #ifndef SILABS_ATTRIBUTE_SIZE
7 | #define SILABS_ATTRIBUTE_SIZE
8 |
9 |
10 | // Used ZCL attribute type sizes
11 | ZCL_BITMAP16_ATTRIBUTE_TYPE, 2,
12 | ZCL_BITMAP24_ATTRIBUTE_TYPE, 3,
13 | ZCL_BITMAP32_ATTRIBUTE_TYPE, 4,
14 | ZCL_BITMAP48_ATTRIBUTE_TYPE, 6,
15 | ZCL_BITMAP64_ATTRIBUTE_TYPE, 8,
16 | ZCL_BITMAP8_ATTRIBUTE_TYPE, 1,
17 | ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1,
18 | ZCL_DATA8_ATTRIBUTE_TYPE, 1,
19 | ZCL_ENUM16_ATTRIBUTE_TYPE, 2,
20 | ZCL_ENUM8_ATTRIBUTE_TYPE, 1,
21 | ZCL_FLOAT_SINGLE_ATTRIBUTE_TYPE, 4,
22 | ZCL_IEEE_ADDRESS_ATTRIBUTE_TYPE, 8,
23 | ZCL_INT16S_ATTRIBUTE_TYPE, 2,
24 | ZCL_INT16U_ATTRIBUTE_TYPE, 2,
25 | ZCL_INT24S_ATTRIBUTE_TYPE, 3,
26 | ZCL_INT24U_ATTRIBUTE_TYPE, 3,
27 | ZCL_INT32S_ATTRIBUTE_TYPE, 4,
28 | ZCL_INT32U_ATTRIBUTE_TYPE, 4,
29 | ZCL_INT48U_ATTRIBUTE_TYPE, 6,
30 | ZCL_INT56U_ATTRIBUTE_TYPE, 7,
31 | ZCL_INT8S_ATTRIBUTE_TYPE, 1,
32 | ZCL_INT8U_ATTRIBUTE_TYPE, 1,
33 | ZCL_SECURITY_KEY_ATTRIBUTE_TYPE, 16,
34 | ZCL_UTC_TIME_ATTRIBUTE_TYPE, 4,
35 | #endif // SILABS_ATTRIBUTE_SIZE
36 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/call-command-handler.c:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // This is a set of generated functions that parse the
6 | // the incomming message, and call appropriate command handler.
7 |
8 |
9 |
10 | #include PLATFORM_HEADER
11 | #ifdef EZSP_HOST
12 | // Includes needed for ember related functions for the EZSP host
13 | #include "stack/include/error.h"
14 | #include "stack/include/ember-types.h"
15 | #include "app/util/ezsp/ezsp-protocol.h"
16 | #include "app/util/ezsp/ezsp.h"
17 | #include "app/util/ezsp/ezsp-utils.h"
18 | #include "app/util/ezsp/serial-interface.h"
19 | #else
20 | // Includes needed for ember related functions for the EM250
21 | #include "stack/include/ember.h"
22 | #endif // EZSP_HOST
23 |
24 | #include "app/framework/util/util.h"
25 | #include "af-structs.h"
26 | #include "call-command-handler.h"
27 | #include "command-id.h"
28 | #include "callback.h"
29 |
30 | static EmberAfStatus status(bool wasHandled, bool clusterExists, bool mfgSpecific)
31 | {
32 | if (wasHandled) {
33 | return EMBER_ZCL_STATUS_SUCCESS;
34 | } else if (mfgSpecific) {
35 | return EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND;
36 | } else if (clusterExists) {
37 | return EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND;
38 | } else {
39 | return EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER;
40 | }
41 | }
42 |
43 | // Main command parsing controller.
44 | EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand *cmd)
45 | {
46 | EmberAfStatus result = status(false, false, cmd->mfgSpecific);
47 | if (cmd->direction == (uint8_t)ZCL_DIRECTION_SERVER_TO_CLIENT
48 | && emberAfContainsClientWithMfgCode(cmd->apsFrame->destinationEndpoint,
49 | cmd->apsFrame->clusterId,
50 | cmd->mfgCode)) {
51 | switch (cmd->apsFrame->clusterId) {
52 | case ZCL_IDENTIFY_CLUSTER_ID:
53 | result = status(false, true, cmd->mfgSpecific);
54 | break;
55 | case ZCL_ON_OFF_CLUSTER_ID:
56 | result = status(false, true, cmd->mfgSpecific);
57 | break;
58 | default:
59 | // Unrecognized cluster ID, error status will apply.
60 | break;
61 | }
62 | } else if (cmd->direction == (uint8_t)ZCL_DIRECTION_CLIENT_TO_SERVER
63 | && emberAfContainsServerWithMfgCode(cmd->apsFrame->destinationEndpoint,
64 | cmd->apsFrame->clusterId,
65 | cmd->mfgCode)) {
66 | switch (cmd->apsFrame->clusterId) {
67 | case ZCL_BASIC_CLUSTER_ID:
68 | result = status(false, true, cmd->mfgSpecific);
69 | break;
70 | case ZCL_IDENTIFY_CLUSTER_ID:
71 | result = status(false, true, cmd->mfgSpecific);
72 | break;
73 | default:
74 | // Unrecognized cluster ID, error status will apply.
75 | break;
76 | }
77 | }
78 | return result;
79 | }
80 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/call-command-handler.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // Enclosing macro to prevent multiple inclusion
6 | #ifndef SILABS_EMBER_AF_COMMAND_PARSE_HEADER
7 | #define SILABS_EMBER_AF_COMMAND_PARSE_HEADER
8 |
9 |
10 | // This is a set of generated prototype for functions that parse the
11 | // the incomming message, and call appropriate command handler.
12 |
13 | #endif // SILABS_EMBER_AF_COMMAND_PARSE_HEADER
14 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/custom-token.h:
--------------------------------------------------------------------------------
1 | // File: custom-token.h
2 | //
3 | // Description: Custom token definitions used by the application.
4 | //
5 | // Copyright 2019 by Silicon Labs Corporation. All rights reserved.
6 |
7 | /**
8 | * Custom Zigbee Application Tokens
9 | */
10 | // Define token names here
11 | #define NVM3KEY_LED1_ON_OFF (NVM3KEY_DOMAIN_USER | 0x0001)
12 |
13 | #if defined(DEFINETYPES)
14 | // Include or define any typedef for tokens here
15 | typedef struct {
16 | uint8_t ledIndex; // LED index
17 | bool ledOnOff; // LED ON OFF status
18 | } ledOnOffStatus_t;
19 | #endif //DEFINETYPES
20 |
21 | #ifdef DEFINETOKENS
22 | // Define the actual token storage information here
23 | DEFINE_BASIC_TOKEN(LED1_ON_OFF,
24 | ledOnOffStatus_t,
25 | {1, false})
26 | #endif
27 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/mbedtls-config-generated.h:
--------------------------------------------------------------------------------
1 | /***************************************************************************//**
2 | * @file mbedtls-config-generated.h
3 | * @brief mbed TLS configuration file. This file is generated do not modify it directly. Please use the mbed TLS setup instead.
4 | *
5 | *******************************************************************************
6 | * # License
7 | * Copyright 2018 Silicon Laboratories Inc. www.silabs.com
8 | *******************************************************************************
9 | *
10 | * The licensor of this software is Silicon Laboratories Inc. Your use of this
11 | * software is governed by the terms of Silicon Labs Master Software License
12 | * Agreement (MSLA) available at
13 | * www.silabs.com/about-us/legal/master-software-license-agreement. This
14 | * software is distributed to you in Source Code format and is governed by the
15 | * sections of the MSLA applicable to Source Code.
16 | *
17 | ******************************************************************************/
18 |
19 | #ifndef MBEDTLS_CONFIG_GENERATED_H
20 | #define MBEDTLS_CONFIG_GENERATED_H
21 |
22 | #if !defined(EMBER_TEST)
23 | #define MBEDTLS_NO_PLATFORM_ENTROPY
24 |
25 | #else
26 | // mbedtls/library/entropy_poll.c needs this,
27 | // implicit declaration of function 'syscall' otherwise
28 | #define _GNU_SOURCE
29 | #endif
30 |
31 | // Generated content that is coming from contributor plugins
32 |
33 |
34 |
35 | #define MBEDTLS_AES_C
36 |
37 |
38 | #if defined(MBEDTLS_ENTROPY_C)
39 | // Enable RAIL radio as entropy source by default
40 | // This is going to help on devices that does not have TRNG support by software
41 | // (FR32XG13 (SDID_89) and EFR32XG14 (SDID_95))
42 | #define MBEDTLS_ENTROPY_RAIL_C
43 | #endif
44 |
45 | // Inclusion of the Silabs specific device acceleration configuration file.
46 | #if defined(MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE)
47 | #include MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE
48 | #endif
49 |
50 | // Inclusion of the app specific device acceleration configuration file.
51 | #if defined(MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE)
52 | #include MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE
53 | #endif
54 |
55 | // Inclusion of the mbed TLS config_check.h header file.
56 | #include "mbedtls/check_config.h"
57 |
58 | #endif /* MBEDTLS_CONFIG_GENERATED_H */
59 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/stack-handler-stub.c:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // This c file provides stubs for all callbacks. These stubs
6 | // will be used in the case where user defined implementations
7 | // of the callbacks have not been provided.
8 | #include "app/framework/include/af.h"
9 | // Stubs required for implemented stack handlers.
10 |
11 |
12 | #ifdef EZSP_HOST
13 | #else // ! EZSP_HOST
14 | #endif // EZSP_HOST
15 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/znet-bookkeeping.c:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | #include PLATFORM_HEADER
6 | #include CONFIGURATION_HEADER
7 | #include "af.h"
8 |
9 | // Init function declarations.
10 | void emberAfMainInitCallback(void); // Global
11 | void emberAfInit(void); // Global
12 |
13 | void emAfInit(void)
14 | {
15 | emberAfMainInitCallback(); // Global
16 | emberAfInit(); // Global
17 | }
18 |
19 | // Tick function declarations.
20 | void emberAfMainTickCallback(void); // Global
21 | void emberAfTick(void); // Global
22 |
23 | void emAfTick(void)
24 | {
25 | emberAfMainTickCallback(); // Global
26 | emberAfTick(); // Global
27 | }
28 |
29 | void emAfResetAttributes(uint8_t endpointId)
30 | {
31 | }
32 |
33 | // PreCommandReceived function declarations.
34 | bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd); // Global
35 |
36 | bool emAfPreCommandReceived(EmberAfClusterCommand* cmd)
37 | {
38 | return emberAfPreCommandReceivedCallback(cmd); // Global
39 | }
40 |
41 | // PreZDOMessageReceived function declarations.
42 | bool emberAfPreZDOMessageReceivedCallback(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length); // Global
43 |
44 | bool emAfPreZDOMessageReceived(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length)
45 | {
46 | return emberAfPreZDOMessageReceivedCallback(emberNodeId, apsFrame, message, length); // Global
47 | }
48 |
49 | bool emAfRetrieveAttributeAndCraftResponse(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attrId, uint8_t mask, uint16_t maunfacturerCode, uint16_t readLength)
50 | {
51 | return 0; // false
52 | }
53 |
54 | // ZigbeeKeyEstablishment function declarations.
55 | void emberAfZigbeeKeyEstablishmentCallback(EmberEUI64 partner, EmberKeyStatus status); // Global
56 | void emberAfPluginUpdateTcLinkKeyZigbeeKeyEstablishmentCallback(EmberEUI64 partner, EmberKeyStatus status); // Plugin: update-tc-link-key
57 |
58 | void emAfZigbeeKeyEstablishment(EmberEUI64 partner, EmberKeyStatus status)
59 | {
60 | emberAfZigbeeKeyEstablishmentCallback(partner, status); // Global
61 | emberAfPluginUpdateTcLinkKeyZigbeeKeyEstablishmentCallback(partner, status); // Plugin: update-tc-link-key
62 | }
63 |
64 | // ReadAttributesResponse function declarations.
65 | bool emberAfReadAttributesResponseCallback(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen); // Global
66 |
67 | bool emAfReadAttributesResponse(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen)
68 | {
69 | return emberAfReadAttributesResponseCallback(clusterId, buffer, bufLen); // Global
70 | }
71 |
72 | // ReportAttributes function declarations.
73 | bool emberAfReportAttributesCallback(EmberAfClusterId clusterId,uint8_t * buffer,uint16_t bufLen); // Global
74 |
75 | bool emAfReportAttributes(EmberAfClusterId clusterId,uint8_t * buffer,uint16_t bufLen)
76 | {
77 | return emberAfReportAttributesCallback(clusterId, buffer, bufLen); // Global
78 | }
79 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/znet-bookkeeping.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | // Enclosing macro to prevent multiple inclusion
6 | #ifndef SILABS_ZNET_BOOKKEEPING_H
7 | #define SILABS_ZNET_BOOKKEEPING_H
8 |
9 |
10 | #include PLATFORM_HEADER
11 | #include CONFIGURATION_HEADER
12 | #include "af.h"
13 |
14 | void emAfInit(void);
15 |
16 | void emAfTick(void);
17 |
18 | void emAfResetAttributes(uint8_t endpointId);
19 |
20 | bool emAfPreCommandReceived(EmberAfClusterCommand* cmd);
21 |
22 | bool emAfPreZDOMessageReceived(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length);
23 |
24 | bool emAfRetrieveAttributeAndCraftResponse(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attrId, uint8_t mask, uint16_t maunfacturerCode, uint16_t readLength);
25 |
26 | void emAfZigbeeKeyEstablishment(EmberEUI64 partner, EmberKeyStatus status);
27 |
28 | bool emAfReadAttributesResponse(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen);
29 |
30 | bool emAfReportAttributes(EmberAfClusterId clusterId,uint8_t * buffer,uint16_t bufLen);
31 |
32 | #endif // SILABS_ZNET_BOOKKEEPING_H
33 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/znet-mfg-token.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | #ifdef CONFIGURATION_HEADER
6 | #include CONFIGURATION_HEADER
7 | #endif
8 |
9 | // Token header for the token.properties.
10 |
11 | #ifdef CUSTOM_TOKEN_HEADER
12 | #include CUSTOM_TOKEN_HEADER
13 | #endif
14 |
15 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/Zigbee_Switch_ZR/znet-token.h:
--------------------------------------------------------------------------------
1 | // This file is generated by Simplicity Studio. Please do not edit manually.
2 | //
3 | //
4 |
5 | #ifdef CONFIGURATION_HEADER
6 | #include CONFIGURATION_HEADER
7 | #endif
8 |
9 | // Token header for the token.properties.
10 | #include "../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol/zigbee/app/framework/util/tokens.h"
11 |
12 | // Custom token header file
13 | #include "custom-token.h"
14 |
15 | #ifdef CUSTOM_TOKEN_HEADER
16 | #include CUSTOM_TOKEN_HEADER
17 | #endif
18 |
19 |
--------------------------------------------------------------------------------
/zigbee_boot_camp/images/license.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/zigbee_boot_camp/images/license.png
--------------------------------------------------------------------------------
/zigbee_boot_camp/images/zigbee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/zigbee_boot_camp/images/zigbee.png
--------------------------------------------------------------------------------