From f295f9896d0db94229b7b796d7c517063235abb6 Mon Sep 17 00:00:00 2001 From: jmartinez-silabs <67972863+jmartinez-silabs@users.noreply.github.com> Date: Mon, 8 Feb 2021 15:46:19 -0500 Subject: [PATCH] Implement the Pigweed-app example on EFR32 (#4630) * Implement the Pigweed-app example on EFR32 - Init uart driver and create function to read and write a character - link those functions with pigweed backend - move some files that can be shared for all EFR32 examples to efr32/platform - create GN build structure for pigweed usage with EFR32 platform Implement the Pigweed-app example on EFR32 - Init uart driver and create function to read and write a character - link those functions with pigweed backend - move some files that can be shared for all EFR32 examples to efr32/platform - create GN build structure for pigweed usage with EFR32 platform Change uart driver from uartdrv to retargetSerial, using the dma was causing issues reading with pigweed proto Cleanup in the build GN files Some cleanup for the build * Restyled by whitespace * Restyled by gn * Restyled by prettier-markdown * Fix the new symlink to be relative paths Change copyright to 2021 for new files * Restyled by gn * Move config cpp17 -> std_cpp17 to lib/pw_rpc/BUILD.gn so it can be use for all examples. That config is only used when pw_rpc is build Create a with_pw_rpc.gni file in efr examples. This gni file need to be imported in the build args when we will want to build a example with pw_rpc (this is still a WIP) This doesn't impact pigweed-app example because it always runs the pw_rpc * Restyled by gn Co-authored-by: Restyled.io --- config/efr32/lib/pw_rpc/BUILD.gn | 47 +++ config/efr32/lib/pw_rpc/pw_rpc.gni | 25 ++ config/efr32/toolchain/BUILD.gn | 2 +- examples/lighting-app/efr32/BUILD.gn | 7 +- examples/lighting-app/efr32/args.gni | 4 + examples/lighting-app/efr32/with_pw_rpc.gni | 29 ++ examples/lock-app/efr32/BUILD.gn | 9 +- examples/lock-app/efr32/args.gni | 4 + .../efr32/include/ble-configuration.h | 46 --- .../lock-app/efr32/include/board_features.h | 241 --------------- .../efr32/include/hal-config-app-common.h | 121 -------- examples/lock-app/efr32/with_pw_rpc.gni | 29 ++ examples/persistent-storage/efr32/BUILD.gn | 4 +- examples/persistent-storage/efr32/args.gni | 3 + .../efr32/include/board_features.h | 249 --------------- .../efr32/include/hal-config-app-common.h | 121 -------- .../efr32/third_party/connectedhomeip | 1 + .../persistent-storage/efr32/with_pw_rpc.gni | 29 ++ examples/pigweed-app/efr32/.gn | 28 ++ examples/pigweed-app/efr32/BUILD.gn | 107 +++++++ examples/pigweed-app/efr32/README.md | 125 ++++++++ examples/pigweed-app/efr32/args.gni | 25 ++ examples/pigweed-app/efr32/build_overrides | 1 + .../pigweed-app/efr32/include/AppConfig.h | 49 +++ .../efr32/include/CHIPProjectConfig.h | 122 ++++++++ .../efr32/include/FreeRTOSConfig.h | 285 +++++++++++++++++ .../ldscripts/efr32-pigweed-example-MG12P.ld | 288 ++++++++++++++++++ .../ldscripts/efr32-pigweed-example-MG21.ld | 288 ++++++++++++++++++ examples/pigweed-app/efr32/src/main.cpp | 48 +++ .../efr32/third_party/connectedhomeip | 1 + examples/platform/efr32/args.gni | 10 - .../efr32}/board_features.h | 3 - .../efr32/efr32mg12/BRD4161A/init_board.c | 1 + .../efr32/efr32mg12/BRD4163A/init_board.c | 1 + .../efr32/efr32mg12/BRD4164A/hal-config.h | 2 +- .../efr32/efr32mg12/BRD4164A/init_board.c | 1 + .../efr32/efr32mg12/BRD4166A/init_board.c | 1 + .../efr32/efr32mg12/BRD4170A/init_board.c | 1 + .../efr32/efr32mg12/BRD4304A/init_board.c | 1 + .../efr32/efr32mg21/BRD4180A/init_board.c | 1 + .../efr32}/hal-config-app-common.h | 0 examples/platform/efr32/pw_sys_io/BUILD.gn | 37 +++ .../pw_sys_io/public/pw_sys_io_efr32/init.h | 27 ++ .../platform/efr32/pw_sys_io/sys_io_efr32.cc | 74 +++++ examples/platform/efr32/uart.c | 66 ++++ examples/platform/efr32/uart.h | 33 ++ src/platform/EFR32/Logging.cpp | 29 +- 47 files changed, 1820 insertions(+), 806 deletions(-) create mode 100644 config/efr32/lib/pw_rpc/BUILD.gn create mode 100644 config/efr32/lib/pw_rpc/pw_rpc.gni create mode 100644 examples/lighting-app/efr32/with_pw_rpc.gni delete mode 100644 examples/lock-app/efr32/include/ble-configuration.h delete mode 100644 examples/lock-app/efr32/include/board_features.h delete mode 100644 examples/lock-app/efr32/include/hal-config-app-common.h create mode 100644 examples/lock-app/efr32/with_pw_rpc.gni delete mode 100644 examples/persistent-storage/efr32/include/board_features.h delete mode 100644 examples/persistent-storage/efr32/include/hal-config-app-common.h create mode 120000 examples/persistent-storage/efr32/third_party/connectedhomeip create mode 100644 examples/persistent-storage/efr32/with_pw_rpc.gni create mode 100644 examples/pigweed-app/efr32/.gn create mode 100644 examples/pigweed-app/efr32/BUILD.gn create mode 100644 examples/pigweed-app/efr32/README.md create mode 100644 examples/pigweed-app/efr32/args.gni create mode 120000 examples/pigweed-app/efr32/build_overrides create mode 100644 examples/pigweed-app/efr32/include/AppConfig.h create mode 100644 examples/pigweed-app/efr32/include/CHIPProjectConfig.h create mode 100644 examples/pigweed-app/efr32/include/FreeRTOSConfig.h create mode 100644 examples/pigweed-app/efr32/ldscripts/efr32-pigweed-example-MG12P.ld create mode 100644 examples/pigweed-app/efr32/ldscripts/efr32-pigweed-example-MG21.ld create mode 100644 examples/pigweed-app/efr32/src/main.cpp create mode 120000 examples/pigweed-app/efr32/third_party/connectedhomeip rename examples/{lighting-app/efr32/include => platform/efr32}/board_features.h (99%) rename examples/{lighting-app/efr32/include => platform/efr32}/hal-config-app-common.h (100%) create mode 100644 examples/platform/efr32/pw_sys_io/BUILD.gn create mode 100644 examples/platform/efr32/pw_sys_io/public/pw_sys_io_efr32/init.h create mode 100644 examples/platform/efr32/pw_sys_io/sys_io_efr32.cc create mode 100644 examples/platform/efr32/uart.c create mode 100644 examples/platform/efr32/uart.h diff --git a/config/efr32/lib/pw_rpc/BUILD.gn b/config/efr32/lib/pw_rpc/BUILD.gn new file mode 100644 index 00000000000000..ba44030c0eb549 --- /dev/null +++ b/config/efr32/lib/pw_rpc/BUILD.gn @@ -0,0 +1,47 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/chip.gni") +import("//build_overrides/pigweed.gni") +import("$dir_pw_build/target_types.gni") + +config("cpp17") { + cflags_cc = [ "-std=gnu++17" ] + cflags_c = [ "-std=gnu11" ] + cflags_objc = [ "-std=gnu11" ] + cflags_objcc = [ "-std=gnu++17" ] +} + +config("std_cpp17") { + configs = [ ":cpp17" ] +} + +static_library("pw_rpc") { + output_name = "libPwRpc" + + public_configs = [ "${dir_pigweed}/pw_hdlc:default_config" ] + sources = [ "${dir_pigweed}/pw_hdlc/rpc_example/hdlc_rpc_server.cc" ] + deps = [ + "$dir_pw_rpc:server", + "$dir_pw_rpc/nanopb:echo_service", + "$dir_pw_rpc/system_server", + "${chip_root}/examples/platform/efr32/pw_sys_io:pw_sys_io_efr32", + "${dir_pigweed}/pw_hdlc:pw_rpc", + dir_pw_assert, + dir_pw_hdlc, + dir_pw_log, + ] + + output_dir = "${root_out_dir}/lib" +} diff --git a/config/efr32/lib/pw_rpc/pw_rpc.gni b/config/efr32/lib/pw_rpc/pw_rpc.gni new file mode 100644 index 00000000000000..180c9111a21c22 --- /dev/null +++ b/config/efr32/lib/pw_rpc/pw_rpc.gni @@ -0,0 +1,25 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/chip.gni") +import("//build_overrides/pigweed.gni") + +pw_log_BACKEND = "$dir_pw_log_basic" +pw_assert_BACKEND = "$dir_pw_assert_log" +pw_sys_io_BACKEND = + "${chip_root}/examples/platform/efr32/pw_sys_io:pw_sys_io_efr32" +pw_rpc_system_server_BACKEND = + "${chip_root}/examples/common/pigweed:system_rpc_server" + +dir_pw_third_party_nanopb = "${chip_root}/third_party/nanopb/repo" diff --git a/config/efr32/toolchain/BUILD.gn b/config/efr32/toolchain/BUILD.gn index e2967372f24e42..5f2b98ad690907 100644 --- a/config/efr32/toolchain/BUILD.gn +++ b/config/efr32/toolchain/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2020 Project CHIP Authors +# Copyright (c) 2021 Project CHIP Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/lighting-app/efr32/BUILD.gn b/examples/lighting-app/efr32/BUILD.gn index b2c5ab0afea742..39502d598f71a8 100644 --- a/examples/lighting-app/efr32/BUILD.gn +++ b/examples/lighting-app/efr32/BUILD.gn @@ -41,14 +41,13 @@ efr32_sdk("sdk") { include_dirs = [ "${chip_root}/src/platform/EFR32", "${efr32_project_dir}/include", - "${efr32_project_dir}/src", + "${examples_plat_dir}", "${examples_plat_dir}/${efr32_family}/${efr32_board}", ] sources = [ "${efr32_project_dir}/include/CHIPProjectConfig.h", "${efr32_project_dir}/include/FreeRTOSConfig.h", - "${examples_plat_dir}/${efr32_family}/${efr32_board}/hal-config.h", ] defines = [] @@ -79,14 +78,14 @@ efr32_executable("lighting_app") { ] include_dirs += [ - "${efr32_project_dir}/include", + "include", "${chip_root}/src/app/util", "${chip_root}/src/app/server", "${examples_plat_dir}", + "${examples_plat_dir}/${efr32_family}/${efr32_board}", ] sources = [ - "${examples_plat_dir}/${efr32_family}/${efr32_board}/hal-config.h", "${examples_plat_dir}/${efr32_family}/${efr32_board}/init_board.c", "${examples_plat_dir}/${efr32_family}/${efr32_board}/init_mcu.c", "${examples_plat_dir}/LEDWidget.cpp", diff --git a/examples/lighting-app/efr32/args.gni b/examples/lighting-app/efr32/args.gni index f32888c77df1f5..26b4af781e8bbc 100644 --- a/examples/lighting-app/efr32/args.gni +++ b/examples/lighting-app/efr32/args.gni @@ -13,6 +13,10 @@ # limitations under the License. import("//build_overrides/chip.gni") +import("//build_overrides/pigweed.gni") import("${chip_root}/examples/platform/efr32/args.gni") efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain") + +pw_log_BACKEND = "${chip_root}/src/lib/support/pw_log_chip" +pw_assert_BACKEND = "$dir_pw_assert_log" diff --git a/examples/lighting-app/efr32/with_pw_rpc.gni b/examples/lighting-app/efr32/with_pw_rpc.gni new file mode 100644 index 00000000000000..7c08d68a6bbd33 --- /dev/null +++ b/examples/lighting-app/efr32/with_pw_rpc.gni @@ -0,0 +1,29 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# add this gni as import in your build args to use pigweed in the example +# 'import("//with_pw_rpc.gni")' +# *WIP* pigweed is not fully integrated in this EFR example yet + +import("//build_overrides/chip.gni") +import("${chip_root}/config/efr32/lib/pw_rpc/pw_rpc.gni") +import("${chip_root}/examples/platform/efr32/args.gni") + +efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain") + +declare_args() { + chip_build_pw_rpc_lib = true +} + +default_configs_std = [ "${chip_root}/config/efr32/lib/pw_rpc:std_cpp17" ] diff --git a/examples/lock-app/efr32/BUILD.gn b/examples/lock-app/efr32/BUILD.gn index 765ec153d243a7..feac05d51fcf50 100644 --- a/examples/lock-app/efr32/BUILD.gn +++ b/examples/lock-app/efr32/BUILD.gn @@ -40,15 +40,14 @@ if (efr32_board == "BRD4166A") { efr32_sdk("sdk") { include_dirs = [ "${chip_root}/src/platform/EFR32", - "${efr32_project_dir}/include/", - "${efr32_project_dir}/src/", + "${efr32_project_dir}/include", + "${examples_plat_dir}", "${examples_plat_dir}/${efr32_family}/${efr32_board}", ] sources = [ "${efr32_project_dir}/include/CHIPProjectConfig.h", "${efr32_project_dir}/include/FreeRTOSConfig.h", - "${examples_plat_dir}/${efr32_family}/${efr32_board}/hal-config.h", ] defines = [] @@ -79,14 +78,14 @@ efr32_executable("lock_app") { ] include_dirs += [ - "${efr32_project_dir}/include", + "include", "${chip_root}/src/app/util", "${chip_root}/src/app/server", "${examples_plat_dir}", + "${examples_plat_dir}/${efr32_family}/${efr32_board}", ] sources = [ - "${examples_plat_dir}/${efr32_family}/${efr32_board}/hal-config.h", "${examples_plat_dir}/${efr32_family}/${efr32_board}/init_board.c", "${examples_plat_dir}/${efr32_family}/${efr32_board}/init_mcu.c", "${examples_plat_dir}/LEDWidget.cpp", diff --git a/examples/lock-app/efr32/args.gni b/examples/lock-app/efr32/args.gni index f32888c77df1f5..26b4af781e8bbc 100644 --- a/examples/lock-app/efr32/args.gni +++ b/examples/lock-app/efr32/args.gni @@ -13,6 +13,10 @@ # limitations under the License. import("//build_overrides/chip.gni") +import("//build_overrides/pigweed.gni") import("${chip_root}/examples/platform/efr32/args.gni") efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain") + +pw_log_BACKEND = "${chip_root}/src/lib/support/pw_log_chip" +pw_assert_BACKEND = "$dir_pw_assert_log" diff --git a/examples/lock-app/efr32/include/ble-configuration.h b/examples/lock-app/efr32/include/ble-configuration.h deleted file mode 100644 index c4057144b80c5c..00000000000000 --- a/examples/lock-app/efr32/include/ble-configuration.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * - * Copyright (c) 2020 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/******************************************************************************* - * @file - * @brief ble-configuration.h - ******************************************************************************* - * # License - * Copyright 2018 Silicon Laboratories Inc. www.silabs.com - ******************************************************************************* - * - * The licensor of this software is Silicon Laboratories Inc. Your use of this - * software is governed by the terms of Silicon Labs Master Software License - * Agreement (MSLA) available at - * www.silabs.com/about-us/legal/master-software-license-agreement. This - * software is distributed to you in Source Code format and is governed by the - * sections of the MSLA applicable to Source Code. - * - ******************************************************************************/ - -#pragma once - -// Top level macros -#define SILABS_AF_DEVICE_NAME "lock-example" - -// Generated plugin macros - -#ifdef EMBER_AF_BOARD_TYPE -#undef EMBER_AF_BOARD_TYPE -#endif -#define EMBER_AF_BOARD_TYPE BOARD_ID diff --git a/examples/lock-app/efr32/include/board_features.h b/examples/lock-app/efr32/include/board_features.h deleted file mode 100644 index 68d64b12f52234..00000000000000 --- a/examples/lock-app/efr32/include/board_features.h +++ /dev/null @@ -1,241 +0,0 @@ -/* - * - * Copyright (c) 2020 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/******************************************************************************* - * @file - * @brief board_features.h - ******************************************************************************* - * # License - * Copyright 2018 Silicon Laboratories Inc. www.silabs.com - ******************************************************************************* - * - * The licensor of this software is Silicon Laboratories Inc. Your use of this - * software is governed by the terms of Silicon Labs Master Software License - * Agreement (MSLA) available at - * www.silabs.com/about-us/legal/master-software-license-agreement. This - * software is distributed to you in Source Code format and is governed by the - * sections of the MSLA applicable to Source Code. - * - ******************************************************************************/ - -#pragma once - -#include "ble-configuration.h" - -/* Indicate if LCD is supported */ -#if (EMBER_AF_BOARD_TYPE == BRD4100A) || (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4103A) || \ - (EMBER_AF_BOARD_TYPE == BRD4104A) || (EMBER_AF_BOARD_TYPE == BRD4105A) || (EMBER_AF_BOARD_TYPE == BRD4150A) || \ - (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4150C) || (EMBER_AF_BOARD_TYPE == BRD4151A) || \ - (EMBER_AF_BOARD_TYPE == BRD4153A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || (EMBER_AF_BOARD_TYPE == BRD4159A) || \ - (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || (EMBER_AF_BOARD_TYPE == BRD4163A) || \ - (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || (EMBER_AF_BOARD_TYPE == BRD4167A) || \ - (EMBER_AF_BOARD_TYPE == BRD4168A) || (EMBER_AF_BOARD_TYPE == BRD4169A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || \ - (EMBER_AF_BOARD_TYPE == BRD4170A) || (EMBER_AF_BOARD_TYPE == BRD4171A) || (EMBER_AF_BOARD_TYPE == BRD4172A) || \ - (EMBER_AF_BOARD_TYPE == BRD4172B) || (EMBER_AF_BOARD_TYPE == BRD4173A) || (EMBER_AF_BOARD_TYPE == BRD4174A) || \ - (EMBER_AF_BOARD_TYPE == BRD4174B) || (EMBER_AF_BOARD_TYPE == BRD4175A) || (EMBER_AF_BOARD_TYPE == BRD4180A) || \ - (EMBER_AF_BOARD_TYPE == BRD4180B) || (EMBER_AF_BOARD_TYPE == BRD4181A) || (EMBER_AF_BOARD_TYPE == BRD4181B) || \ - (EMBER_AF_BOARD_TYPE == BRD4182A) || (EMBER_AF_BOARD_TYPE == BRD4300A) || (EMBER_AF_BOARD_TYPE == BRD4302A) || \ - (EMBER_AF_BOARD_TYPE == BRD4303A) || (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || \ - (EMBER_AF_BOARD_TYPE == BRD4305C) || (EMBER_AF_BOARD_TYPE == BRD4305D) || (EMBER_AF_BOARD_TYPE == BRD4305E) || \ - (EMBER_AF_BOARD_TYPE == BRD4306A) || (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306C) || \ - (EMBER_AF_BOARD_TYPE == BRD4306D) || (EMBER_AF_BOARD_TYPE == BRD4308A) || (EMBER_AF_BOARD_TYPE == BRD4308B) || \ - (EMBER_AF_BOARD_TYPE == BRD4310A) || (EMBER_AF_BOARD_TYPE == BRD4311A) -#define FEATURE_LCD_SUPPORT -#endif - -/* Indicate if the same pins are used for LEDs and Buttons on the WSTK */ -#if (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4300A) || (EMBER_AF_BOARD_TYPE == BRD4301A) || \ - (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4306A) || (EMBER_AF_BOARD_TYPE == BRD4306B) || \ - (EMBER_AF_BOARD_TYPE == BRD4306C) || (EMBER_AF_BOARD_TYPE == BRD4306D) || (EMBER_AF_BOARD_TYPE == BRD4308A) || \ - (EMBER_AF_BOARD_TYPE == BRD4308B) || (EMBER_AF_BOARD_TYPE == BRD4309A) || (EMBER_AF_BOARD_TYPE == BRD4310A) || \ - (EMBER_AF_BOARD_TYPE == BRD4311A) -#define FEATURE_LED_BUTTON_ON_SAME_PIN -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4100A) || (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4103A) || \ - (EMBER_AF_BOARD_TYPE == BRD4104A) || (EMBER_AF_BOARD_TYPE == BRD4105A) || (EMBER_AF_BOARD_TYPE == BRD4150A) || \ - (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4150C) || (EMBER_AF_BOARD_TYPE == BRD4151A) || \ - (EMBER_AF_BOARD_TYPE == BRD4153A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || (EMBER_AF_BOARD_TYPE == BRD4159A) || \ - (EMBER_AF_BOARD_TYPE == BRD4160A) || (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || \ - (EMBER_AF_BOARD_TYPE == BRD4163A) || (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || \ - (EMBER_AF_BOARD_TYPE == BRD4166A) || (EMBER_AF_BOARD_TYPE == BRD4167A) || (EMBER_AF_BOARD_TYPE == BRD4168A) || \ - (EMBER_AF_BOARD_TYPE == BRD4169A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || (EMBER_AF_BOARD_TYPE == BRD4170A) || \ - (EMBER_AF_BOARD_TYPE == BRD4171A) || (EMBER_AF_BOARD_TYPE == BRD4172A) || (EMBER_AF_BOARD_TYPE == BRD4172B) || \ - (EMBER_AF_BOARD_TYPE == BRD4173A) || (EMBER_AF_BOARD_TYPE == BRD4174A) || (EMBER_AF_BOARD_TYPE == BRD4174B) || \ - (EMBER_AF_BOARD_TYPE == BRD4175A) || (EMBER_AF_BOARD_TYPE == BRD4182A) || (EMBER_AF_BOARD_TYPE == BRD4183A) || \ - (EMBER_AF_BOARD_TYPE == BRD4184A) || (EMBER_AF_BOARD_TYPE == BRD4301A) || (EMBER_AF_BOARD_TYPE == BRD4302A) || \ - (EMBER_AF_BOARD_TYPE == BRD4303A) || (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || \ - (EMBER_AF_BOARD_TYPE == BRD4305C) || (EMBER_AF_BOARD_TYPE == BRD4305D) || (EMBER_AF_BOARD_TYPE == BRD4305E) || \ - (EMBER_AF_BOARD_TYPE == BRD4306A) || (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306C) || \ - (EMBER_AF_BOARD_TYPE == BRD4306D) || (EMBER_AF_BOARD_TYPE == BRD4310A) || (EMBER_AF_BOARD_TYPE == BRD4311A) -#define FEATURE_SPI_FLASH -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4101B) -#define FEATURE_IOEXPANDER -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4151A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || \ - (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || \ - (EMBER_AF_BOARD_TYPE == BRD4168A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || (EMBER_AF_BOARD_TYPE == BRD4170A) || \ - (EMBER_AF_BOARD_TYPE == BRD4171A) || (EMBER_AF_BOARD_TYPE == BRD4172A) || (EMBER_AF_BOARD_TYPE == BRD4172B) || \ - (EMBER_AF_BOARD_TYPE == BRD4174A) || (EMBER_AF_BOARD_TYPE == BRD4174B) || (EMBER_AF_BOARD_TYPE == BRD4180A) || \ - (EMBER_AF_BOARD_TYPE == BRD4180B) || (EMBER_AF_BOARD_TYPE == BRD4181A) || (EMBER_AF_BOARD_TYPE == BRD4181B) || \ - (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || (EMBER_AF_BOARD_TYPE == BRD4305E) || \ - (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306D) || (EMBER_AF_BOARD_TYPE == BRD4308A) || \ - (EMBER_AF_BOARD_TYPE == BRD4308B) || (EMBER_AF_BOARD_TYPE == BRD4309A) -#define FEATURE_PA_INPUT_FROM_VBAT -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4182A) || (EMBER_AF_BOARD_TYPE == BRD4183A) || (EMBER_AF_BOARD_TYPE == BRD4184A) || \ - (EMBER_AF_BOARD_TYPE == BRD4310A) || (EMBER_AF_BOARD_TYPE == BRD4311A) -#define FEATURE_EXP_HEADER_USART1 -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4103A) || (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || \ - (EMBER_AF_BOARD_TYPE == BRD4163A) || (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4170A) -#define FEATURE_EXP_HEADER_USART3 -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4100A) || (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4103A) || \ - (EMBER_AF_BOARD_TYPE == BRD4104A) || (EMBER_AF_BOARD_TYPE == BRD4105A) || (EMBER_AF_BOARD_TYPE == BRD4150A) || \ - (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4150C) || (EMBER_AF_BOARD_TYPE == BRD4151A) || \ - (EMBER_AF_BOARD_TYPE == BRD4153A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || (EMBER_AF_BOARD_TYPE == BRD4159A) || \ - (EMBER_AF_BOARD_TYPE == BRD4160A) || (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || \ - (EMBER_AF_BOARD_TYPE == BRD4163A) || (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || \ - (EMBER_AF_BOARD_TYPE == BRD4166A) || (EMBER_AF_BOARD_TYPE == BRD4167A) || (EMBER_AF_BOARD_TYPE == BRD4168A) || \ - (EMBER_AF_BOARD_TYPE == BRD4169A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || (EMBER_AF_BOARD_TYPE == BRD4170A) || \ - (EMBER_AF_BOARD_TYPE == BRD4171A) || (EMBER_AF_BOARD_TYPE == BRD4172A) || (EMBER_AF_BOARD_TYPE == BRD4172B) || \ - (EMBER_AF_BOARD_TYPE == BRD4173A) || (EMBER_AF_BOARD_TYPE == BRD4174A) || (EMBER_AF_BOARD_TYPE == BRD4174B) || \ - (EMBER_AF_BOARD_TYPE == BRD4175A) || (EMBER_AF_BOARD_TYPE == BRD4179B) || (EMBER_AF_BOARD_TYPE == BRD4180A) || \ - (EMBER_AF_BOARD_TYPE == BRD4180B) || (EMBER_AF_BOARD_TYPE == BRD4181A) || (EMBER_AF_BOARD_TYPE == BRD4181B) || \ - (EMBER_AF_BOARD_TYPE == BRD4182A) || (EMBER_AF_BOARD_TYPE == BRD4183A) || (EMBER_AF_BOARD_TYPE == BRD4184A) || \ - (EMBER_AF_BOARD_TYPE == BRD4300A) || (EMBER_AF_BOARD_TYPE == BRD4301A) || (EMBER_AF_BOARD_TYPE == BRD4302A) || \ - (EMBER_AF_BOARD_TYPE == BRD4303A) || (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || \ - (EMBER_AF_BOARD_TYPE == BRD4305C) || (EMBER_AF_BOARD_TYPE == BRD4305D) || (EMBER_AF_BOARD_TYPE == BRD4305E) || \ - (EMBER_AF_BOARD_TYPE == BRD4306A) || (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306C) || \ - (EMBER_AF_BOARD_TYPE == BRD4306D) || (EMBER_AF_BOARD_TYPE == BRD4308A) || (EMBER_AF_BOARD_TYPE == BRD4308B) || \ - (EMBER_AF_BOARD_TYPE == BRD4309A) || (EMBER_AF_BOARD_TYPE == BRD4310A) || (EMBER_AF_BOARD_TYPE == BRD4311A) -#define FEATURE_PTI_SUPPORT -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4100A) || (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4103A) || \ - (EMBER_AF_BOARD_TYPE == BRD4104A) || (EMBER_AF_BOARD_TYPE == BRD4105A) || (EMBER_AF_BOARD_TYPE == BRD4150A) || \ - (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4150C) || (EMBER_AF_BOARD_TYPE == BRD4151A) || \ - (EMBER_AF_BOARD_TYPE == BRD4153A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || (EMBER_AF_BOARD_TYPE == BRD4159A) || \ - (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || (EMBER_AF_BOARD_TYPE == BRD4163A) || \ - (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || (EMBER_AF_BOARD_TYPE == BRD4167A) || \ - (EMBER_AF_BOARD_TYPE == BRD4168A) || (EMBER_AF_BOARD_TYPE == BRD4169A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || \ - (EMBER_AF_BOARD_TYPE == BRD4170A) || (EMBER_AF_BOARD_TYPE == BRD4172A) || (EMBER_AF_BOARD_TYPE == BRD4172B) || \ - (EMBER_AF_BOARD_TYPE == BRD4173A) || (EMBER_AF_BOARD_TYPE == BRD4174A) || (EMBER_AF_BOARD_TYPE == BRD4174B) || \ - (EMBER_AF_BOARD_TYPE == BRD4175A) || (EMBER_AF_BOARD_TYPE == BRD4179B) || (EMBER_AF_BOARD_TYPE == BRD4180A) || \ - (EMBER_AF_BOARD_TYPE == BRD4180B) || (EMBER_AF_BOARD_TYPE == BRD4181A) || (EMBER_AF_BOARD_TYPE == BRD4181B) || \ - (EMBER_AF_BOARD_TYPE == BRD4182A) || (EMBER_AF_BOARD_TYPE == BRD4183A) || (EMBER_AF_BOARD_TYPE == BRD4300A) || \ - (EMBER_AF_BOARD_TYPE == BRD4301A) || (EMBER_AF_BOARD_TYPE == BRD4302A) || (EMBER_AF_BOARD_TYPE == BRD4303A) || \ - (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || (EMBER_AF_BOARD_TYPE == BRD4305C) || \ - (EMBER_AF_BOARD_TYPE == BRD4305D) || (EMBER_AF_BOARD_TYPE == BRD4305E) || (EMBER_AF_BOARD_TYPE == BRD4306A) || \ - (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306C) || (EMBER_AF_BOARD_TYPE == BRD4306D) || \ - (EMBER_AF_BOARD_TYPE == BRD4308A) || (EMBER_AF_BOARD_TYPE == BRD4308B) || (EMBER_AF_BOARD_TYPE == BRD4309A) || \ - (EMBER_AF_BOARD_TYPE == BRD4310A) || (EMBER_AF_BOARD_TYPE == BRD4311A) -#define FEATURE_HW_FLOW_CONTROL -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4100A) || (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4103A) || \ - (EMBER_AF_BOARD_TYPE == BRD4104A) || (EMBER_AF_BOARD_TYPE == BRD4105A) || (EMBER_AF_BOARD_TYPE == BRD4150A) || \ - (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4150C) || (EMBER_AF_BOARD_TYPE == BRD4151A) || \ - (EMBER_AF_BOARD_TYPE == BRD4153A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || (EMBER_AF_BOARD_TYPE == BRD4159A) || \ - (EMBER_AF_BOARD_TYPE == BRD4160A) || (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || \ - (EMBER_AF_BOARD_TYPE == BRD4163A) || (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || \ - (EMBER_AF_BOARD_TYPE == BRD4166A) || (EMBER_AF_BOARD_TYPE == BRD4167A) || (EMBER_AF_BOARD_TYPE == BRD4168A) || \ - (EMBER_AF_BOARD_TYPE == BRD4169A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || (EMBER_AF_BOARD_TYPE == BRD4170A) || \ - (EMBER_AF_BOARD_TYPE == BRD4171A) || (EMBER_AF_BOARD_TYPE == BRD4172A) || (EMBER_AF_BOARD_TYPE == BRD4172B) || \ - (EMBER_AF_BOARD_TYPE == BRD4173A) || (EMBER_AF_BOARD_TYPE == BRD4174A) || (EMBER_AF_BOARD_TYPE == BRD4174B) || \ - (EMBER_AF_BOARD_TYPE == BRD4175A) || (EMBER_AF_BOARD_TYPE == BRD4182A) || (EMBER_AF_BOARD_TYPE == BRD4184A) || \ - (EMBER_AF_BOARD_TYPE == BRD4300A) || (EMBER_AF_BOARD_TYPE == BRD4301A) || (EMBER_AF_BOARD_TYPE == BRD4302A) || \ - (EMBER_AF_BOARD_TYPE == BRD4303A) || (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || \ - (EMBER_AF_BOARD_TYPE == BRD4305C) || (EMBER_AF_BOARD_TYPE == BRD4305D) || (EMBER_AF_BOARD_TYPE == BRD4305E) || \ - (EMBER_AF_BOARD_TYPE == BRD4306A) || (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306C) || \ - (EMBER_AF_BOARD_TYPE == BRD4306D) || (EMBER_AF_BOARD_TYPE == BRD4310A) || (EMBER_AF_BOARD_TYPE == BRD4311A) -#define FEATURE_I2C_SENSOR -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4100A) || (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4103A) || \ - (EMBER_AF_BOARD_TYPE == BRD4104A) || (EMBER_AF_BOARD_TYPE == BRD4105A) || (EMBER_AF_BOARD_TYPE == BRD4150A) || \ - (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4150C) || (EMBER_AF_BOARD_TYPE == BRD4151A) || \ - (EMBER_AF_BOARD_TYPE == BRD4153A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || (EMBER_AF_BOARD_TYPE == BRD4159A) || \ - (EMBER_AF_BOARD_TYPE == BRD4160A) || (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || \ - (EMBER_AF_BOARD_TYPE == BRD4163A) || (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || \ - (EMBER_AF_BOARD_TYPE == BRD4166A) || (EMBER_AF_BOARD_TYPE == BRD4167A) || (EMBER_AF_BOARD_TYPE == BRD4168A) || \ - (EMBER_AF_BOARD_TYPE == BRD4169A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || (EMBER_AF_BOARD_TYPE == BRD4170A) || \ - (EMBER_AF_BOARD_TYPE == BRD4172A) || (EMBER_AF_BOARD_TYPE == BRD4172B) || (EMBER_AF_BOARD_TYPE == BRD4173A) || \ - (EMBER_AF_BOARD_TYPE == BRD4174A) || (EMBER_AF_BOARD_TYPE == BRD4174B) || (EMBER_AF_BOARD_TYPE == BRD4175A) || \ - (EMBER_AF_BOARD_TYPE == BRD4179B) || (EMBER_AF_BOARD_TYPE == BRD4180A) || (EMBER_AF_BOARD_TYPE == BRD4180B) || \ - (EMBER_AF_BOARD_TYPE == BRD4181A) || (EMBER_AF_BOARD_TYPE == BRD4181B) || (EMBER_AF_BOARD_TYPE == BRD4182A) || \ - (EMBER_AF_BOARD_TYPE == BRD4183A) || (EMBER_AF_BOARD_TYPE == BRD4184A) || (EMBER_AF_BOARD_TYPE == BRD4300A) || \ - (EMBER_AF_BOARD_TYPE == BRD4301A) || (EMBER_AF_BOARD_TYPE == BRD4302A) || (EMBER_AF_BOARD_TYPE == BRD4303A) || \ - (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || (EMBER_AF_BOARD_TYPE == BRD4305C) || \ - (EMBER_AF_BOARD_TYPE == BRD4305D) || (EMBER_AF_BOARD_TYPE == BRD4305E) || (EMBER_AF_BOARD_TYPE == BRD4306A) || \ - (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306C) || (EMBER_AF_BOARD_TYPE == BRD4306D) || \ - (EMBER_AF_BOARD_TYPE == BRD4308A) || (EMBER_AF_BOARD_TYPE == BRD4308B) || (EMBER_AF_BOARD_TYPE == BRD4310A) -#define FEATURE_LFXO -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4179B) -#define FEATURE_EFP -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4100A) || (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4103A) || \ - (EMBER_AF_BOARD_TYPE == BRD4104A) || (EMBER_AF_BOARD_TYPE == BRD4105A) || (EMBER_AF_BOARD_TYPE == BRD4150A) || \ - (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4150C) || (EMBER_AF_BOARD_TYPE == BRD4151A) || \ - (EMBER_AF_BOARD_TYPE == BRD4153A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || (EMBER_AF_BOARD_TYPE == BRD4159A) || \ - (EMBER_AF_BOARD_TYPE == BRD4160A) || (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || \ - (EMBER_AF_BOARD_TYPE == BRD4163A) || (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || \ - (EMBER_AF_BOARD_TYPE == BRD4166A) || (EMBER_AF_BOARD_TYPE == BRD4167A) || (EMBER_AF_BOARD_TYPE == BRD4168A) || \ - (EMBER_AF_BOARD_TYPE == BRD4169A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || (EMBER_AF_BOARD_TYPE == BRD4170A) || \ - (EMBER_AF_BOARD_TYPE == BRD4171A) || (EMBER_AF_BOARD_TYPE == BRD4172A) || (EMBER_AF_BOARD_TYPE == BRD4172B) || \ - (EMBER_AF_BOARD_TYPE == BRD4173A) || (EMBER_AF_BOARD_TYPE == BRD4174A) || (EMBER_AF_BOARD_TYPE == BRD4174B) || \ - (EMBER_AF_BOARD_TYPE == BRD4175A) || (EMBER_AF_BOARD_TYPE == BRD4179B) || (EMBER_AF_BOARD_TYPE == BRD4180A) || \ - (EMBER_AF_BOARD_TYPE == BRD4180B) || (EMBER_AF_BOARD_TYPE == BRD4181A) || (EMBER_AF_BOARD_TYPE == BRD4181B) || \ - (EMBER_AF_BOARD_TYPE == BRD4182A) || (EMBER_AF_BOARD_TYPE == BRD4183A) || (EMBER_AF_BOARD_TYPE == BRD4184A) || \ - (EMBER_AF_BOARD_TYPE == BRD4300A) || (EMBER_AF_BOARD_TYPE == BRD4301A) || (EMBER_AF_BOARD_TYPE == BRD4302A) || \ - (EMBER_AF_BOARD_TYPE == BRD4303A) || (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || \ - (EMBER_AF_BOARD_TYPE == BRD4305C) || (EMBER_AF_BOARD_TYPE == BRD4305D) || (EMBER_AF_BOARD_TYPE == BRD4305E) || \ - (EMBER_AF_BOARD_TYPE == BRD4306A) || (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306C) || \ - (EMBER_AF_BOARD_TYPE == BRD4306D) || (EMBER_AF_BOARD_TYPE == BRD4308A) || (EMBER_AF_BOARD_TYPE == BRD4308B) || \ - (EMBER_AF_BOARD_TYPE == BRD4309A) || (EMBER_AF_BOARD_TYPE == BRD4310A) || (EMBER_AF_BOARD_TYPE == BRD4311A) || \ - (EMBER_AF_BOARD_TYPE == RD_0057_0101) -#define FEATURE_BOARD_DETECTED -#endif - -#if (EMBER_AF_BOARD_TYPE == CUSTOM_BOARD) -// Uncomment the corresponding line in case of using Silicon Labs board feature in your design. -// For using the selected feature you may need additional drivers. Check an appropriate SDK example for reference. - -// #define FEATURE_LCD_SUPPORT -// #define FEATURE_LED_BUTTON_ON_SAME_PIN -// #define FEATURE_SPI_FLASH -// #define FEATURE_IOEXPANDER -// #define FEATURE_PA_INPUT_FROM_VBAT -// #define FEATURE_EXP_HEADER_USART1 -// #define FEATURE_EXP_HEADER_USART3 -// #define FEATURE_PTI_SUPPORT -// #define FEATURE_HW_FLOW_CONTROL -// #define FEATURE_I2C_SENSOR -// #define FEATURE_LFXO -// #define FEATURE_EFP -// #define FEATURE_BOARD_DETECTED -#endif diff --git a/examples/lock-app/efr32/include/hal-config-app-common.h b/examples/lock-app/efr32/include/hal-config-app-common.h deleted file mode 100644 index b19a61575b89e2..00000000000000 --- a/examples/lock-app/efr32/include/hal-config-app-common.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - * - * Copyright (c) 2020 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/****************************************************************************** - * @file - * @brief hal-config-app-common.h - ******************************************************************************* - * # License - * Copyright 2018 Silicon Laboratories Inc. www.silabs.com - ******************************************************************************* - * - * The licensor of this software is Silicon Laboratories Inc. Your use of this - * software is governed by the terms of Silicon Labs Master Software License - * Agreement (MSLA) available at - * www.silabs.com/about-us/legal/master-software-license-agreement. This - * software is distributed to you in Source Code format and is governed by the - * sections of the MSLA applicable to Source Code. - * - ******************************************************************************/ - -#pragma once - -#include "em_device.h" -#include "hal-config-types.h" - -#if defined(FEATURE_IOEXPANDER) -#include "hal-config-ioexp.h" -#endif - -#define HAL_EXTFLASH_FREQUENCY (1000000) - -#define HAL_PTI_ENABLE (1) -#define HAL_PTI_MODE (HAL_PTI_MODE_UART) -#define HAL_PTI_BAUD_RATE (1600000) - -#define HAL_PA_RAMP (10) -#define HAL_PA_2P4_LOWPOWER (0) -#define HAL_PA_POWER (252) -#define HAL_PA_CURVE_HEADER "pa_curves_efr32.h" - -#define HAL_PA_VOLTAGE BSP_PA_VOLTAGE - -// Select antenna path on EFR32xG2x devices: -// - RF2G2_IO1: 0 -// - RF2G2_IO2: 1 -#define GECKO_RF_ANTENNA 1 -#if defined(FEATURE_EXP_HEADER_USART3) - -#define BSP_EXP_USART USART3 - -#define BSP_EXP_USART_CTS_PIN BSP_USART3_CTS_PIN -#define BSP_EXP_USART_CTS_PORT BSP_USART3_CTS_PORT -#define BSP_EXP_USART_CTS_LOC BSP_USART3_CTS_LOC - -#define BSP_EXP_USART_RTS_PIN BSP_USART3_RTS_PIN -#define BSP_EXP_USART_RTS_PORT BSP_USART3_RTS_PORT -#define BSP_EXP_USART_RTS_LOC BSP_USART3_RTS_LOC - -#define BSP_EXP_USART_RX_PIN BSP_USART3_RX_PIN -#define BSP_EXP_USART_RX_PORT BSP_USART3_RX_PORT -#define BSP_EXP_USART_RX_LOC BSP_USART3_RX_LOC - -#define BSP_EXP_USART_TX_PIN BSP_USART3_TX_PIN -#define BSP_EXP_USART_TX_PORT BSP_USART3_TX_PORT -#define BSP_EXP_USART_TX_LOC BSP_USART3_TX_LOC - -#elif defined(FEATURE_EXP_HEADER_USART1) - -#define BSP_EXP_USART USART1 - -#define BSP_EXP_USART_CTS_PIN BSP_USART1_CTS_PIN -#define BSP_EXP_USART_CTS_PORT BSP_USART1_CTS_PORT -#define BSP_EXP_USART_CTS_LOC BSP_USART1_CTS_LOC - -#define BSP_EXP_USART_RTS_PIN BSP_USART1_RTS_PIN -#define BSP_EXP_USART_RTS_PORT BSP_USART1_RTS_PORT -#define BSP_EXP_USART_RTS_LOC BSP_USART1_RTS_LOC - -#define BSP_EXP_USART_RX_PIN BSP_USART1_RX_PIN -#define BSP_EXP_USART_RX_PORT BSP_USART1_RX_PORT -#define BSP_EXP_USART_RX_LOC BSP_USART1_RX_LOC - -#define BSP_EXP_USART_TX_PIN BSP_USART1_TX_PIN -#define BSP_EXP_USART_TX_PORT BSP_USART1_TX_PORT -#define BSP_EXP_USART_TX_LOC BSP_USART1_TX_LOC - -#else - -#define BSP_EXP_USART USART0 - -#define BSP_EXP_USART_CTS_PIN BSP_USART0_CTS_PIN -#define BSP_EXP_USART_CTS_PORT BSP_USART0_CTS_PORT -#define BSP_EXP_USART_CTS_LOC BSP_USART0_CTS_LOC - -#define BSP_EXP_USART_RTS_PIN BSP_USART0_RTS_PIN -#define BSP_EXP_USART_RTS_PORT BSP_USART0_RTS_PORT -#define BSP_EXP_USART_RTS_LOC BSP_USART0_RTS_LOC - -#define BSP_EXP_USART_RX_PIN BSP_USART0_RX_PIN -#define BSP_EXP_USART_RX_PORT BSP_USART0_RX_PORT -#define BSP_EXP_USART_RX_LOC BSP_USART0_RX_LOC - -#define BSP_EXP_USART_TX_PIN BSP_USART0_TX_PIN -#define BSP_EXP_USART_TX_PORT BSP_USART0_TX_PORT -#define BSP_EXP_USART_TX_LOC BSP_USART0_TX_LOC - -#endif // FEATURE_EXP_HEADER_USART3 diff --git a/examples/lock-app/efr32/with_pw_rpc.gni b/examples/lock-app/efr32/with_pw_rpc.gni new file mode 100644 index 00000000000000..7c08d68a6bbd33 --- /dev/null +++ b/examples/lock-app/efr32/with_pw_rpc.gni @@ -0,0 +1,29 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# add this gni as import in your build args to use pigweed in the example +# 'import("//with_pw_rpc.gni")' +# *WIP* pigweed is not fully integrated in this EFR example yet + +import("//build_overrides/chip.gni") +import("${chip_root}/config/efr32/lib/pw_rpc/pw_rpc.gni") +import("${chip_root}/examples/platform/efr32/args.gni") + +efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain") + +declare_args() { + chip_build_pw_rpc_lib = true +} + +default_configs_std = [ "${chip_root}/config/efr32/lib/pw_rpc:std_cpp17" ] diff --git a/examples/persistent-storage/efr32/BUILD.gn b/examples/persistent-storage/efr32/BUILD.gn index 670588f3e995b4..e68f8915bb051b 100644 --- a/examples/persistent-storage/efr32/BUILD.gn +++ b/examples/persistent-storage/efr32/BUILD.gn @@ -32,13 +32,13 @@ efr32_sdk("sdk") { "${chip_root}/src/platform/EFR32", "${efr32_project_dir}/include", "${efr32_project_dir}/src", + "${examples_plat_dir}", "${examples_plat_dir}/${efr32_family}/${efr32_board}", ] sources = [ "${efr32_project_dir}/include/CHIPProjectConfig.h", "${efr32_project_dir}/include/FreeRTOSConfig.h", - "${examples_plat_dir}/${efr32_family}/${efr32_board}/hal-config.h", ] defines = [ @@ -71,11 +71,11 @@ efr32_executable("persistent_storage") { "${efr32_project_dir}/include", "${chip_root}/src/app/util", "${examples_plat_dir}", + "${examples_plat_dir}/${efr32_family}/${efr32_board}", ] sources = [ "${efr32_project_dir}/../KeyValueStorageTest.cpp", - "${examples_plat_dir}/${efr32_family}/${efr32_board}/hal-config.h", "${examples_plat_dir}/${efr32_family}/${efr32_board}/init_board.c", "${examples_plat_dir}/${efr32_family}/${efr32_board}/init_mcu.c", "main.cpp", diff --git a/examples/persistent-storage/efr32/args.gni b/examples/persistent-storage/efr32/args.gni index 5d92170adab614..8b257629c29a2b 100644 --- a/examples/persistent-storage/efr32/args.gni +++ b/examples/persistent-storage/efr32/args.gni @@ -17,3 +17,6 @@ import("//build_overrides/pigweed.gni") import("${chip_root}/examples/platform/efr32/args.gni") efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain") + +pw_log_BACKEND = "${chip_root}/src/lib/support/pw_log_chip" +pw_assert_BACKEND = "$dir_pw_assert_log" diff --git a/examples/persistent-storage/efr32/include/board_features.h b/examples/persistent-storage/efr32/include/board_features.h deleted file mode 100644 index e1ccb846160ada..00000000000000 --- a/examples/persistent-storage/efr32/include/board_features.h +++ /dev/null @@ -1,249 +0,0 @@ -/* - * - * Copyright (c) 2020 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/******************************************************************************* - * @file - * @brief board_features.h - ******************************************************************************* - * # License - * Copyright 2018 Silicon Laboratories Inc. www.silabs.com - ******************************************************************************* - * - * The licensor of this software is Silicon Laboratories Inc. Your use of this - * software is governed by the terms of Silicon Labs Master Software License - * Agreement (MSLA) available at - * www.silabs.com/about-us/legal/master-software-license-agreement. This - * software is distributed to you in Source Code format and is governed by the - * sections of the MSLA applicable to Source Code. - * - ******************************************************************************/ - -#pragma once - -// Top level macros -#define SILABS_AF_DEVICE_NAME "lighting-example" - -// Generated plugin macros - -#ifdef EMBER_AF_BOARD_TYPE -#undef EMBER_AF_BOARD_TYPE -#endif -#define EMBER_AF_BOARD_TYPE BOARD_ID - -/* Indicate if LCD is supported */ -#if (EMBER_AF_BOARD_TYPE == BRD4100A) || (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4103A) || \ - (EMBER_AF_BOARD_TYPE == BRD4104A) || (EMBER_AF_BOARD_TYPE == BRD4105A) || (EMBER_AF_BOARD_TYPE == BRD4150A) || \ - (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4150C) || (EMBER_AF_BOARD_TYPE == BRD4151A) || \ - (EMBER_AF_BOARD_TYPE == BRD4153A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || (EMBER_AF_BOARD_TYPE == BRD4159A) || \ - (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || (EMBER_AF_BOARD_TYPE == BRD4163A) || \ - (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || (EMBER_AF_BOARD_TYPE == BRD4167A) || \ - (EMBER_AF_BOARD_TYPE == BRD4168A) || (EMBER_AF_BOARD_TYPE == BRD4169A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || \ - (EMBER_AF_BOARD_TYPE == BRD4170A) || (EMBER_AF_BOARD_TYPE == BRD4171A) || (EMBER_AF_BOARD_TYPE == BRD4172A) || \ - (EMBER_AF_BOARD_TYPE == BRD4172B) || (EMBER_AF_BOARD_TYPE == BRD4173A) || (EMBER_AF_BOARD_TYPE == BRD4174A) || \ - (EMBER_AF_BOARD_TYPE == BRD4174B) || (EMBER_AF_BOARD_TYPE == BRD4175A) || (EMBER_AF_BOARD_TYPE == BRD4180A) || \ - (EMBER_AF_BOARD_TYPE == BRD4180B) || (EMBER_AF_BOARD_TYPE == BRD4181A) || (EMBER_AF_BOARD_TYPE == BRD4181B) || \ - (EMBER_AF_BOARD_TYPE == BRD4182A) || (EMBER_AF_BOARD_TYPE == BRD4300A) || (EMBER_AF_BOARD_TYPE == BRD4302A) || \ - (EMBER_AF_BOARD_TYPE == BRD4303A) || (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || \ - (EMBER_AF_BOARD_TYPE == BRD4305C) || (EMBER_AF_BOARD_TYPE == BRD4305D) || (EMBER_AF_BOARD_TYPE == BRD4305E) || \ - (EMBER_AF_BOARD_TYPE == BRD4306A) || (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306C) || \ - (EMBER_AF_BOARD_TYPE == BRD4306D) || (EMBER_AF_BOARD_TYPE == BRD4308A) || (EMBER_AF_BOARD_TYPE == BRD4308B) || \ - (EMBER_AF_BOARD_TYPE == BRD4310A) || (EMBER_AF_BOARD_TYPE == BRD4311A) -#define FEATURE_LCD_SUPPORT -#endif - -/* Indicate if the same pins are used for LEDs and Buttons on the WSTK */ -#if (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4300A) || (EMBER_AF_BOARD_TYPE == BRD4301A) || \ - (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4306A) || (EMBER_AF_BOARD_TYPE == BRD4306B) || \ - (EMBER_AF_BOARD_TYPE == BRD4306C) || (EMBER_AF_BOARD_TYPE == BRD4306D) || (EMBER_AF_BOARD_TYPE == BRD4308A) || \ - (EMBER_AF_BOARD_TYPE == BRD4308B) || (EMBER_AF_BOARD_TYPE == BRD4309A) || (EMBER_AF_BOARD_TYPE == BRD4310A) || \ - (EMBER_AF_BOARD_TYPE == BRD4311A) -#define FEATURE_LED_BUTTON_ON_SAME_PIN -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4100A) || (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4103A) || \ - (EMBER_AF_BOARD_TYPE == BRD4104A) || (EMBER_AF_BOARD_TYPE == BRD4105A) || (EMBER_AF_BOARD_TYPE == BRD4150A) || \ - (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4150C) || (EMBER_AF_BOARD_TYPE == BRD4151A) || \ - (EMBER_AF_BOARD_TYPE == BRD4153A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || (EMBER_AF_BOARD_TYPE == BRD4159A) || \ - (EMBER_AF_BOARD_TYPE == BRD4160A) || (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || \ - (EMBER_AF_BOARD_TYPE == BRD4163A) || (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || \ - (EMBER_AF_BOARD_TYPE == BRD4166A) || (EMBER_AF_BOARD_TYPE == BRD4167A) || (EMBER_AF_BOARD_TYPE == BRD4168A) || \ - (EMBER_AF_BOARD_TYPE == BRD4169A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || (EMBER_AF_BOARD_TYPE == BRD4170A) || \ - (EMBER_AF_BOARD_TYPE == BRD4171A) || (EMBER_AF_BOARD_TYPE == BRD4172A) || (EMBER_AF_BOARD_TYPE == BRD4172B) || \ - (EMBER_AF_BOARD_TYPE == BRD4173A) || (EMBER_AF_BOARD_TYPE == BRD4174A) || (EMBER_AF_BOARD_TYPE == BRD4174B) || \ - (EMBER_AF_BOARD_TYPE == BRD4175A) || (EMBER_AF_BOARD_TYPE == BRD4182A) || (EMBER_AF_BOARD_TYPE == BRD4183A) || \ - (EMBER_AF_BOARD_TYPE == BRD4184A) || (EMBER_AF_BOARD_TYPE == BRD4301A) || (EMBER_AF_BOARD_TYPE == BRD4302A) || \ - (EMBER_AF_BOARD_TYPE == BRD4303A) || (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || \ - (EMBER_AF_BOARD_TYPE == BRD4305C) || (EMBER_AF_BOARD_TYPE == BRD4305D) || (EMBER_AF_BOARD_TYPE == BRD4305E) || \ - (EMBER_AF_BOARD_TYPE == BRD4306A) || (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306C) || \ - (EMBER_AF_BOARD_TYPE == BRD4306D) || (EMBER_AF_BOARD_TYPE == BRD4310A) || (EMBER_AF_BOARD_TYPE == BRD4311A) -#define FEATURE_SPI_FLASH -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4101B) -#define FEATURE_IOEXPANDER -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4151A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || \ - (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || \ - (EMBER_AF_BOARD_TYPE == BRD4168A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || (EMBER_AF_BOARD_TYPE == BRD4170A) || \ - (EMBER_AF_BOARD_TYPE == BRD4171A) || (EMBER_AF_BOARD_TYPE == BRD4172A) || (EMBER_AF_BOARD_TYPE == BRD4172B) || \ - (EMBER_AF_BOARD_TYPE == BRD4174A) || (EMBER_AF_BOARD_TYPE == BRD4174B) || (EMBER_AF_BOARD_TYPE == BRD4180A) || \ - (EMBER_AF_BOARD_TYPE == BRD4180B) || (EMBER_AF_BOARD_TYPE == BRD4181A) || (EMBER_AF_BOARD_TYPE == BRD4181B) || \ - (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || (EMBER_AF_BOARD_TYPE == BRD4305E) || \ - (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306D) || (EMBER_AF_BOARD_TYPE == BRD4308A) || \ - (EMBER_AF_BOARD_TYPE == BRD4308B) || (EMBER_AF_BOARD_TYPE == BRD4309A) -#define FEATURE_PA_INPUT_FROM_VBAT -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4182A) || (EMBER_AF_BOARD_TYPE == BRD4183A) || (EMBER_AF_BOARD_TYPE == BRD4184A) || \ - (EMBER_AF_BOARD_TYPE == BRD4310A) || (EMBER_AF_BOARD_TYPE == BRD4311A) -#define FEATURE_EXP_HEADER_USART1 -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4103A) || (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || \ - (EMBER_AF_BOARD_TYPE == BRD4163A) || (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4170A) -#define FEATURE_EXP_HEADER_USART3 -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4100A) || (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4103A) || \ - (EMBER_AF_BOARD_TYPE == BRD4104A) || (EMBER_AF_BOARD_TYPE == BRD4105A) || (EMBER_AF_BOARD_TYPE == BRD4150A) || \ - (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4150C) || (EMBER_AF_BOARD_TYPE == BRD4151A) || \ - (EMBER_AF_BOARD_TYPE == BRD4153A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || (EMBER_AF_BOARD_TYPE == BRD4159A) || \ - (EMBER_AF_BOARD_TYPE == BRD4160A) || (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || \ - (EMBER_AF_BOARD_TYPE == BRD4163A) || (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || \ - (EMBER_AF_BOARD_TYPE == BRD4166A) || (EMBER_AF_BOARD_TYPE == BRD4167A) || (EMBER_AF_BOARD_TYPE == BRD4168A) || \ - (EMBER_AF_BOARD_TYPE == BRD4169A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || (EMBER_AF_BOARD_TYPE == BRD4170A) || \ - (EMBER_AF_BOARD_TYPE == BRD4171A) || (EMBER_AF_BOARD_TYPE == BRD4172A) || (EMBER_AF_BOARD_TYPE == BRD4172B) || \ - (EMBER_AF_BOARD_TYPE == BRD4173A) || (EMBER_AF_BOARD_TYPE == BRD4174A) || (EMBER_AF_BOARD_TYPE == BRD4174B) || \ - (EMBER_AF_BOARD_TYPE == BRD4175A) || (EMBER_AF_BOARD_TYPE == BRD4179B) || (EMBER_AF_BOARD_TYPE == BRD4180A) || \ - (EMBER_AF_BOARD_TYPE == BRD4180B) || (EMBER_AF_BOARD_TYPE == BRD4181A) || (EMBER_AF_BOARD_TYPE == BRD4181B) || \ - (EMBER_AF_BOARD_TYPE == BRD4182A) || (EMBER_AF_BOARD_TYPE == BRD4183A) || (EMBER_AF_BOARD_TYPE == BRD4184A) || \ - (EMBER_AF_BOARD_TYPE == BRD4300A) || (EMBER_AF_BOARD_TYPE == BRD4301A) || (EMBER_AF_BOARD_TYPE == BRD4302A) || \ - (EMBER_AF_BOARD_TYPE == BRD4303A) || (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || \ - (EMBER_AF_BOARD_TYPE == BRD4305C) || (EMBER_AF_BOARD_TYPE == BRD4305D) || (EMBER_AF_BOARD_TYPE == BRD4305E) || \ - (EMBER_AF_BOARD_TYPE == BRD4306A) || (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306C) || \ - (EMBER_AF_BOARD_TYPE == BRD4306D) || (EMBER_AF_BOARD_TYPE == BRD4308A) || (EMBER_AF_BOARD_TYPE == BRD4308B) || \ - (EMBER_AF_BOARD_TYPE == BRD4309A) || (EMBER_AF_BOARD_TYPE == BRD4310A) || (EMBER_AF_BOARD_TYPE == BRD4311A) -#define FEATURE_PTI_SUPPORT -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4100A) || (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4103A) || \ - (EMBER_AF_BOARD_TYPE == BRD4104A) || (EMBER_AF_BOARD_TYPE == BRD4105A) || (EMBER_AF_BOARD_TYPE == BRD4150A) || \ - (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4150C) || (EMBER_AF_BOARD_TYPE == BRD4151A) || \ - (EMBER_AF_BOARD_TYPE == BRD4153A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || (EMBER_AF_BOARD_TYPE == BRD4159A) || \ - (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || (EMBER_AF_BOARD_TYPE == BRD4163A) || \ - (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || (EMBER_AF_BOARD_TYPE == BRD4167A) || \ - (EMBER_AF_BOARD_TYPE == BRD4168A) || (EMBER_AF_BOARD_TYPE == BRD4169A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || \ - (EMBER_AF_BOARD_TYPE == BRD4170A) || (EMBER_AF_BOARD_TYPE == BRD4172A) || (EMBER_AF_BOARD_TYPE == BRD4172B) || \ - (EMBER_AF_BOARD_TYPE == BRD4173A) || (EMBER_AF_BOARD_TYPE == BRD4174A) || (EMBER_AF_BOARD_TYPE == BRD4174B) || \ - (EMBER_AF_BOARD_TYPE == BRD4175A) || (EMBER_AF_BOARD_TYPE == BRD4179B) || (EMBER_AF_BOARD_TYPE == BRD4180A) || \ - (EMBER_AF_BOARD_TYPE == BRD4180B) || (EMBER_AF_BOARD_TYPE == BRD4181A) || (EMBER_AF_BOARD_TYPE == BRD4181B) || \ - (EMBER_AF_BOARD_TYPE == BRD4182A) || (EMBER_AF_BOARD_TYPE == BRD4183A) || (EMBER_AF_BOARD_TYPE == BRD4300A) || \ - (EMBER_AF_BOARD_TYPE == BRD4301A) || (EMBER_AF_BOARD_TYPE == BRD4302A) || (EMBER_AF_BOARD_TYPE == BRD4303A) || \ - (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || (EMBER_AF_BOARD_TYPE == BRD4305C) || \ - (EMBER_AF_BOARD_TYPE == BRD4305D) || (EMBER_AF_BOARD_TYPE == BRD4305E) || (EMBER_AF_BOARD_TYPE == BRD4306A) || \ - (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306C) || (EMBER_AF_BOARD_TYPE == BRD4306D) || \ - (EMBER_AF_BOARD_TYPE == BRD4308A) || (EMBER_AF_BOARD_TYPE == BRD4308B) || (EMBER_AF_BOARD_TYPE == BRD4309A) || \ - (EMBER_AF_BOARD_TYPE == BRD4310A) || (EMBER_AF_BOARD_TYPE == BRD4311A) -#define FEATURE_HW_FLOW_CONTROL -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4100A) || (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4103A) || \ - (EMBER_AF_BOARD_TYPE == BRD4104A) || (EMBER_AF_BOARD_TYPE == BRD4105A) || (EMBER_AF_BOARD_TYPE == BRD4150A) || \ - (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4150C) || (EMBER_AF_BOARD_TYPE == BRD4151A) || \ - (EMBER_AF_BOARD_TYPE == BRD4153A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || (EMBER_AF_BOARD_TYPE == BRD4159A) || \ - (EMBER_AF_BOARD_TYPE == BRD4160A) || (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || \ - (EMBER_AF_BOARD_TYPE == BRD4163A) || (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || \ - (EMBER_AF_BOARD_TYPE == BRD4166A) || (EMBER_AF_BOARD_TYPE == BRD4167A) || (EMBER_AF_BOARD_TYPE == BRD4168A) || \ - (EMBER_AF_BOARD_TYPE == BRD4169A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || (EMBER_AF_BOARD_TYPE == BRD4170A) || \ - (EMBER_AF_BOARD_TYPE == BRD4171A) || (EMBER_AF_BOARD_TYPE == BRD4172A) || (EMBER_AF_BOARD_TYPE == BRD4172B) || \ - (EMBER_AF_BOARD_TYPE == BRD4173A) || (EMBER_AF_BOARD_TYPE == BRD4174A) || (EMBER_AF_BOARD_TYPE == BRD4174B) || \ - (EMBER_AF_BOARD_TYPE == BRD4175A) || (EMBER_AF_BOARD_TYPE == BRD4182A) || (EMBER_AF_BOARD_TYPE == BRD4184A) || \ - (EMBER_AF_BOARD_TYPE == BRD4300A) || (EMBER_AF_BOARD_TYPE == BRD4301A) || (EMBER_AF_BOARD_TYPE == BRD4302A) || \ - (EMBER_AF_BOARD_TYPE == BRD4303A) || (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || \ - (EMBER_AF_BOARD_TYPE == BRD4305C) || (EMBER_AF_BOARD_TYPE == BRD4305D) || (EMBER_AF_BOARD_TYPE == BRD4305E) || \ - (EMBER_AF_BOARD_TYPE == BRD4306A) || (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306C) || \ - (EMBER_AF_BOARD_TYPE == BRD4306D) || (EMBER_AF_BOARD_TYPE == BRD4310A) || (EMBER_AF_BOARD_TYPE == BRD4311A) -#define FEATURE_I2C_SENSOR -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4100A) || (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4103A) || \ - (EMBER_AF_BOARD_TYPE == BRD4104A) || (EMBER_AF_BOARD_TYPE == BRD4105A) || (EMBER_AF_BOARD_TYPE == BRD4150A) || \ - (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4150C) || (EMBER_AF_BOARD_TYPE == BRD4151A) || \ - (EMBER_AF_BOARD_TYPE == BRD4153A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || (EMBER_AF_BOARD_TYPE == BRD4159A) || \ - (EMBER_AF_BOARD_TYPE == BRD4160A) || (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || \ - (EMBER_AF_BOARD_TYPE == BRD4163A) || (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || \ - (EMBER_AF_BOARD_TYPE == BRD4166A) || (EMBER_AF_BOARD_TYPE == BRD4167A) || (EMBER_AF_BOARD_TYPE == BRD4168A) || \ - (EMBER_AF_BOARD_TYPE == BRD4169A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || (EMBER_AF_BOARD_TYPE == BRD4170A) || \ - (EMBER_AF_BOARD_TYPE == BRD4172A) || (EMBER_AF_BOARD_TYPE == BRD4172B) || (EMBER_AF_BOARD_TYPE == BRD4173A) || \ - (EMBER_AF_BOARD_TYPE == BRD4174A) || (EMBER_AF_BOARD_TYPE == BRD4174B) || (EMBER_AF_BOARD_TYPE == BRD4175A) || \ - (EMBER_AF_BOARD_TYPE == BRD4179B) || (EMBER_AF_BOARD_TYPE == BRD4180A) || (EMBER_AF_BOARD_TYPE == BRD4180B) || \ - (EMBER_AF_BOARD_TYPE == BRD4181A) || (EMBER_AF_BOARD_TYPE == BRD4181B) || (EMBER_AF_BOARD_TYPE == BRD4182A) || \ - (EMBER_AF_BOARD_TYPE == BRD4183A) || (EMBER_AF_BOARD_TYPE == BRD4184A) || (EMBER_AF_BOARD_TYPE == BRD4300A) || \ - (EMBER_AF_BOARD_TYPE == BRD4301A) || (EMBER_AF_BOARD_TYPE == BRD4302A) || (EMBER_AF_BOARD_TYPE == BRD4303A) || \ - (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || (EMBER_AF_BOARD_TYPE == BRD4305C) || \ - (EMBER_AF_BOARD_TYPE == BRD4305D) || (EMBER_AF_BOARD_TYPE == BRD4305E) || (EMBER_AF_BOARD_TYPE == BRD4306A) || \ - (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306C) || (EMBER_AF_BOARD_TYPE == BRD4306D) || \ - (EMBER_AF_BOARD_TYPE == BRD4308A) || (EMBER_AF_BOARD_TYPE == BRD4308B) || (EMBER_AF_BOARD_TYPE == BRD4310A) -#define FEATURE_LFXO -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4179B) -#define FEATURE_EFP -#endif - -#if (EMBER_AF_BOARD_TYPE == BRD4100A) || (EMBER_AF_BOARD_TYPE == BRD4101B) || (EMBER_AF_BOARD_TYPE == BRD4103A) || \ - (EMBER_AF_BOARD_TYPE == BRD4104A) || (EMBER_AF_BOARD_TYPE == BRD4105A) || (EMBER_AF_BOARD_TYPE == BRD4150A) || \ - (EMBER_AF_BOARD_TYPE == BRD4150B) || (EMBER_AF_BOARD_TYPE == BRD4150C) || (EMBER_AF_BOARD_TYPE == BRD4151A) || \ - (EMBER_AF_BOARD_TYPE == BRD4153A) || (EMBER_AF_BOARD_TYPE == BRD4158A) || (EMBER_AF_BOARD_TYPE == BRD4159A) || \ - (EMBER_AF_BOARD_TYPE == BRD4160A) || (EMBER_AF_BOARD_TYPE == BRD4161A) || (EMBER_AF_BOARD_TYPE == BRD4162A) || \ - (EMBER_AF_BOARD_TYPE == BRD4163A) || (EMBER_AF_BOARD_TYPE == BRD4164A) || (EMBER_AF_BOARD_TYPE == BRD4165B) || \ - (EMBER_AF_BOARD_TYPE == BRD4166A) || (EMBER_AF_BOARD_TYPE == BRD4167A) || (EMBER_AF_BOARD_TYPE == BRD4168A) || \ - (EMBER_AF_BOARD_TYPE == BRD4169A) || (EMBER_AF_BOARD_TYPE == BRD4169B) || (EMBER_AF_BOARD_TYPE == BRD4170A) || \ - (EMBER_AF_BOARD_TYPE == BRD4171A) || (EMBER_AF_BOARD_TYPE == BRD4172A) || (EMBER_AF_BOARD_TYPE == BRD4172B) || \ - (EMBER_AF_BOARD_TYPE == BRD4173A) || (EMBER_AF_BOARD_TYPE == BRD4174A) || (EMBER_AF_BOARD_TYPE == BRD4174B) || \ - (EMBER_AF_BOARD_TYPE == BRD4175A) || (EMBER_AF_BOARD_TYPE == BRD4179B) || (EMBER_AF_BOARD_TYPE == BRD4180A) || \ - (EMBER_AF_BOARD_TYPE == BRD4180B) || (EMBER_AF_BOARD_TYPE == BRD4181A) || (EMBER_AF_BOARD_TYPE == BRD4181B) || \ - (EMBER_AF_BOARD_TYPE == BRD4182A) || (EMBER_AF_BOARD_TYPE == BRD4183A) || (EMBER_AF_BOARD_TYPE == BRD4184A) || \ - (EMBER_AF_BOARD_TYPE == BRD4300A) || (EMBER_AF_BOARD_TYPE == BRD4301A) || (EMBER_AF_BOARD_TYPE == BRD4302A) || \ - (EMBER_AF_BOARD_TYPE == BRD4303A) || (EMBER_AF_BOARD_TYPE == BRD4304A) || (EMBER_AF_BOARD_TYPE == BRD4305A) || \ - (EMBER_AF_BOARD_TYPE == BRD4305C) || (EMBER_AF_BOARD_TYPE == BRD4305D) || (EMBER_AF_BOARD_TYPE == BRD4305E) || \ - (EMBER_AF_BOARD_TYPE == BRD4306A) || (EMBER_AF_BOARD_TYPE == BRD4306B) || (EMBER_AF_BOARD_TYPE == BRD4306C) || \ - (EMBER_AF_BOARD_TYPE == BRD4306D) || (EMBER_AF_BOARD_TYPE == BRD4308A) || (EMBER_AF_BOARD_TYPE == BRD4308B) || \ - (EMBER_AF_BOARD_TYPE == BRD4309A) || (EMBER_AF_BOARD_TYPE == BRD4310A) || (EMBER_AF_BOARD_TYPE == BRD4311A) || \ - (EMBER_AF_BOARD_TYPE == RD_0057_0101) -#define FEATURE_BOARD_DETECTED -#endif - -#if (EMBER_AF_BOARD_TYPE == CUSTOM_BOARD) -// Uncomment the corresponding line in case of using Silicon Labs board feature in your design. -// For using the selected feature you may need additional drivers. Check an appropriate SDK example for reference. - -// #define FEATURE_LCD_SUPPORT -// #define FEATURE_LED_BUTTON_ON_SAME_PIN -// #define FEATURE_SPI_FLASH -// #define FEATURE_IOEXPANDER -// #define FEATURE_PA_INPUT_FROM_VBAT -// #define FEATURE_EXP_HEADER_USART1 -// #define FEATURE_EXP_HEADER_USART3 -// #define FEATURE_PTI_SUPPORT -// #define FEATURE_HW_FLOW_CONTROL -// #define FEATURE_I2C_SENSOR -// #define FEATURE_LFXO -// #define FEATURE_EFP -// #define FEATURE_BOARD_DETECTED -#endif diff --git a/examples/persistent-storage/efr32/include/hal-config-app-common.h b/examples/persistent-storage/efr32/include/hal-config-app-common.h deleted file mode 100644 index b19a61575b89e2..00000000000000 --- a/examples/persistent-storage/efr32/include/hal-config-app-common.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - * - * Copyright (c) 2020 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/****************************************************************************** - * @file - * @brief hal-config-app-common.h - ******************************************************************************* - * # License - * Copyright 2018 Silicon Laboratories Inc. www.silabs.com - ******************************************************************************* - * - * The licensor of this software is Silicon Laboratories Inc. Your use of this - * software is governed by the terms of Silicon Labs Master Software License - * Agreement (MSLA) available at - * www.silabs.com/about-us/legal/master-software-license-agreement. This - * software is distributed to you in Source Code format and is governed by the - * sections of the MSLA applicable to Source Code. - * - ******************************************************************************/ - -#pragma once - -#include "em_device.h" -#include "hal-config-types.h" - -#if defined(FEATURE_IOEXPANDER) -#include "hal-config-ioexp.h" -#endif - -#define HAL_EXTFLASH_FREQUENCY (1000000) - -#define HAL_PTI_ENABLE (1) -#define HAL_PTI_MODE (HAL_PTI_MODE_UART) -#define HAL_PTI_BAUD_RATE (1600000) - -#define HAL_PA_RAMP (10) -#define HAL_PA_2P4_LOWPOWER (0) -#define HAL_PA_POWER (252) -#define HAL_PA_CURVE_HEADER "pa_curves_efr32.h" - -#define HAL_PA_VOLTAGE BSP_PA_VOLTAGE - -// Select antenna path on EFR32xG2x devices: -// - RF2G2_IO1: 0 -// - RF2G2_IO2: 1 -#define GECKO_RF_ANTENNA 1 -#if defined(FEATURE_EXP_HEADER_USART3) - -#define BSP_EXP_USART USART3 - -#define BSP_EXP_USART_CTS_PIN BSP_USART3_CTS_PIN -#define BSP_EXP_USART_CTS_PORT BSP_USART3_CTS_PORT -#define BSP_EXP_USART_CTS_LOC BSP_USART3_CTS_LOC - -#define BSP_EXP_USART_RTS_PIN BSP_USART3_RTS_PIN -#define BSP_EXP_USART_RTS_PORT BSP_USART3_RTS_PORT -#define BSP_EXP_USART_RTS_LOC BSP_USART3_RTS_LOC - -#define BSP_EXP_USART_RX_PIN BSP_USART3_RX_PIN -#define BSP_EXP_USART_RX_PORT BSP_USART3_RX_PORT -#define BSP_EXP_USART_RX_LOC BSP_USART3_RX_LOC - -#define BSP_EXP_USART_TX_PIN BSP_USART3_TX_PIN -#define BSP_EXP_USART_TX_PORT BSP_USART3_TX_PORT -#define BSP_EXP_USART_TX_LOC BSP_USART3_TX_LOC - -#elif defined(FEATURE_EXP_HEADER_USART1) - -#define BSP_EXP_USART USART1 - -#define BSP_EXP_USART_CTS_PIN BSP_USART1_CTS_PIN -#define BSP_EXP_USART_CTS_PORT BSP_USART1_CTS_PORT -#define BSP_EXP_USART_CTS_LOC BSP_USART1_CTS_LOC - -#define BSP_EXP_USART_RTS_PIN BSP_USART1_RTS_PIN -#define BSP_EXP_USART_RTS_PORT BSP_USART1_RTS_PORT -#define BSP_EXP_USART_RTS_LOC BSP_USART1_RTS_LOC - -#define BSP_EXP_USART_RX_PIN BSP_USART1_RX_PIN -#define BSP_EXP_USART_RX_PORT BSP_USART1_RX_PORT -#define BSP_EXP_USART_RX_LOC BSP_USART1_RX_LOC - -#define BSP_EXP_USART_TX_PIN BSP_USART1_TX_PIN -#define BSP_EXP_USART_TX_PORT BSP_USART1_TX_PORT -#define BSP_EXP_USART_TX_LOC BSP_USART1_TX_LOC - -#else - -#define BSP_EXP_USART USART0 - -#define BSP_EXP_USART_CTS_PIN BSP_USART0_CTS_PIN -#define BSP_EXP_USART_CTS_PORT BSP_USART0_CTS_PORT -#define BSP_EXP_USART_CTS_LOC BSP_USART0_CTS_LOC - -#define BSP_EXP_USART_RTS_PIN BSP_USART0_RTS_PIN -#define BSP_EXP_USART_RTS_PORT BSP_USART0_RTS_PORT -#define BSP_EXP_USART_RTS_LOC BSP_USART0_RTS_LOC - -#define BSP_EXP_USART_RX_PIN BSP_USART0_RX_PIN -#define BSP_EXP_USART_RX_PORT BSP_USART0_RX_PORT -#define BSP_EXP_USART_RX_LOC BSP_USART0_RX_LOC - -#define BSP_EXP_USART_TX_PIN BSP_USART0_TX_PIN -#define BSP_EXP_USART_TX_PORT BSP_USART0_TX_PORT -#define BSP_EXP_USART_TX_LOC BSP_USART0_TX_LOC - -#endif // FEATURE_EXP_HEADER_USART3 diff --git a/examples/persistent-storage/efr32/third_party/connectedhomeip b/examples/persistent-storage/efr32/third_party/connectedhomeip new file mode 120000 index 00000000000000..80527d5e8de354 --- /dev/null +++ b/examples/persistent-storage/efr32/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../connectedhomeip \ No newline at end of file diff --git a/examples/persistent-storage/efr32/with_pw_rpc.gni b/examples/persistent-storage/efr32/with_pw_rpc.gni new file mode 100644 index 00000000000000..7c08d68a6bbd33 --- /dev/null +++ b/examples/persistent-storage/efr32/with_pw_rpc.gni @@ -0,0 +1,29 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# add this gni as import in your build args to use pigweed in the example +# 'import("//with_pw_rpc.gni")' +# *WIP* pigweed is not fully integrated in this EFR example yet + +import("//build_overrides/chip.gni") +import("${chip_root}/config/efr32/lib/pw_rpc/pw_rpc.gni") +import("${chip_root}/examples/platform/efr32/args.gni") + +efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain") + +declare_args() { + chip_build_pw_rpc_lib = true +} + +default_configs_std = [ "${chip_root}/config/efr32/lib/pw_rpc:std_cpp17" ] diff --git a/examples/pigweed-app/efr32/.gn b/examples/pigweed-app/efr32/.gn new file mode 100644 index 00000000000000..81cec9d11a421b --- /dev/null +++ b/examples/pigweed-app/efr32/.gn @@ -0,0 +1,28 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/build.gni") + +# The location of the build configuration file. +buildconfig = "${build_root}/config/BUILDCONFIG.gn" + +# CHIP uses angle bracket includes. +check_system_includes = true + +default_args = { + target_cpu = "arm" + target_os = "freertos" + + import("//args.gni") +} diff --git a/examples/pigweed-app/efr32/BUILD.gn b/examples/pigweed-app/efr32/BUILD.gn new file mode 100644 index 00000000000000..4aed6ff4d79eae --- /dev/null +++ b/examples/pigweed-app/efr32/BUILD.gn @@ -0,0 +1,107 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/build.gni") +import("//build_overrides/chip.gni") +import("//build_overrides/efr32_sdk.gni") +import("//build_overrides/pigweed.gni") +import("${build_root}/config/defaults.gni") + +import("${chip_root}/config/efr32/lib/pw_rpc/pw_rpc.gni") +import("${efr32_sdk_build_root}/efr32_executable.gni") +import("${efr32_sdk_build_root}/efr32_sdk.gni") + +assert(current_os == "freertos") + +efr32_project_dir = "${chip_root}/examples/pigweed-app/efr32" +examples_plat_dir = "${chip_root}/examples/platform/efr32" + +efr32_sdk("sdk") { + include_dirs = [ + "${chip_root}/src/platform/EFR32", + "${efr32_project_dir}/include", + "${examples_plat_dir}", + "${examples_plat_dir}/${efr32_family}/${efr32_board}", + ] + + defines = [] + if (is_debug) { + defines += [ "BUILD_RELEASE=0" ] + } else { + defines += [ "BUILD_RELEASE=1" ] + } + + defines += [ + "BOARD_ID=${efr32_board}", + "HAL_VCOM_ENABLE = 1", + "EFR32_LOG_ENABLED =1", + ] +} + +efr32_executable("pigweed_app") { + include_dirs = [] + defines = [] + output_name = "chip-efr32-pigweed-example.out" + + public_deps = [ + ":sdk", + "$dir_pw_assert", + "${chip_root}/config/efr32/lib/pw_rpc:pw_rpc", + "${chip_root}/examples/common/pigweed:system_rpc_server", + "${chip_root}/src/lib", + "${examples_plat_dir}/pw_sys_io:pw_sys_io_efr32", + ] + + include_dirs += [ + "include", + "${examples_plat_dir}", + "${examples_plat_dir}/${efr32_family}/${efr32_board}", + "${examples_plat_dir}/pw_sys_io/public", + "${dir_pigweed}/pw_sys_io/public", + "${dir_pigweed}/pw_span/public_overrides", + "${dir_pigweed}/pw_span/public", + "${dir_pigweed}/pw_polyfill/public", + "${dir_pigweed}/pw_polyfill/standard_library_public", + "${dir_pigweed}/pw_polyfill/public_overrides", + "${dir_pigweed}/pw_status/public", + "${dir_pigweed}/pw_preprocessor/public", + "${dir_pigweed}/pw_rpc/system_server/public", + ] + + sources = [ + "${examples_plat_dir}/${efr32_family}/${efr32_board}/init_board.c", + "${examples_plat_dir}/${efr32_family}/${efr32_board}/init_mcu.c", + "${examples_plat_dir}/LEDWidget.cpp", + "${examples_plat_dir}/uart.c", + "src/main.cpp", + ] + + output_dir = root_out_dir + + if (efr32_family == "efr32mg12") { + ldscript = "${efr32_project_dir}/ldscripts/efr32-pigweed-example-MG12P.ld" + } else if (efr32_family == "efr32mg21") { + ldscript = "${efr32_project_dir}/ldscripts/efr32-pigweed-example-MG21.ld" + } + + ldflags = [ "-T" + rebase_path(ldscript, root_build_dir) ] +} + +group("efr32") { + deps = [ ":pigweed_app" ] +} + +group("default") { + deps = [ ":efr32" ] +} diff --git a/examples/pigweed-app/efr32/README.md b/examples/pigweed-app/efr32/README.md new file mode 100644 index 00000000000000..b03167500e85fd --- /dev/null +++ b/examples/pigweed-app/efr32/README.md @@ -0,0 +1,125 @@ +# CHIP EFR32 Pigweed Example Application + +The EFR32 example demonstrates the usage of Pigweed module functionalities in an +application. + +The example is based on [CHIP](https://github.com/project-chip/connectedhomeip), +the [Pigweed](https://pigweed.googlesource.com/pigweed/pigweed) module, which is +a collection of libraries that provide different functionalities for embedded +systems, and the EFR32 platform. + +You can use this example as a training ground for making experiments, testing +Pigweed module features and checking what actions are necessary to fully +integrate Pigweed in a CHIP project. + +Pigweed functionalities are being gradually integrated into CHIP. Currently, the +following features are available: + +- **Echo RPC** - Creates a Remote Procedure Call server and allows sending + commands through the serial port to the device, which makes echo and sends + the received commands back. + +--- + +- [CHIP EFR32 Pigweed Example Application](#chip-EFR32-pigweed-example-application) + - [Building the Example Application](#building-the-example-application) + - [To build the application, follow these steps:](#to-build-the-application-follow-these-steps) + - [Testing the Example Application](#testing-the-example-application) + +--- + +## Building the Example Application + +- Download or clone the + [sdk_support](https://github.com/SiliconLabs/sdk_support) from GitHub + $ git clone https://github.com/SiliconLabs/sdk_support.git + and export the path with : + $ + export EFR32_SDK_ROOT= + +- Download the + [Simplicity Commander](https://www.silabs.com/mcu/programming-options) + command line tool, and ensure that `commander` is your shell search path. + (For Mac OS X, `commander` is located inside + `Commander.app/Contents/MacOS/`.) + + export PATH=/Applications/Commander.app/Contents/MacOS:$PATH + +- Download and install a suitable ARM gcc tool chain: + [GNU Arm Embedded Toolchain 9-2019-q4-major](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads) + +- Install some additional tools(likely already present for CHIP developers): + + # Linux + sudo apt-get install git libwebkitgtk-1.0-0 ninja-build + + # Mac OS X + brew install ninja + +- Supported hardware: + + MG12 boards: + + - BRD4161A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm + - BRD4163A / SLWSTK6000B / Dual band Wireless Starter Kit / 2.4GHz@19dBm, + 868MHz@19dBm + - BRD4164A / SLWSTK6000B / Dual band Wireless Starter Kit / 2.4GHz@19dBm, + 915MHz@19dBm + - BRD4166A / SLTB004A / Thunderboard Sense 2 / 2.4GHz@10dBm + - BRD4170A / SLWSTK6000B / Multiband Wireless Starter Kit / 2.4GHz@19dBm, + 915MHz@19dBm + - BRD4304A / SLWSTK6000B / MGM12P Module / 2.4GHz@19dBm + + MG21 boards: + + - BRD4180A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm + +* Build the example application: + + cd ~/connectedhomeip/examples/pigweed-app/efr32 + git submodule update --init + source third_party/connectedhomeip/scripts/activate.sh + export EFR32_SDK_ROOT= + export EFR32_BOARD=BRD4161A + gn gen out/debug --args="efr32_sdk_root=\"${EFR32_SDK_ROOT}\" efr32_board=\"${EFR32_BOARD}\"" + ninja -C out/debug + +- To delete generated executable, libraries and object files use: + + cd ~/connectedhomeip/examples/pigweed-app/efr32 + rm -rf out/ + +### Flashing the Application + +- On the command line: + + cd ~/connectedhomeip/examples/pigweed-app/efr32 + python3 out/debug/chip-efr32-pigweed-example.flash.py + +- With the Commander app, just load the .s37 file. +- Or with the Ozone debugger, just load the .out file. + +## Testing the Example Application + +Determine the serial port name for the EFR device by checking /dev: ls +/dev/tty\* + + It should look like this : + - On Linux + /dev/ttyACM0 + - On MAC + /dev/tty.usbmodem0004401548451 + +Run the following command to start an interactive Python shell, where the Echo +RPC commands can be invoked: + + python -m pw_hdlc.rpc_console --device /dev/tty.usbmodem0004401548451 -b 115200 $CHIP_ROOT/third_party/pigweed/repo/pw_rpc/pw_rpc_protos/echo.proto -o /tmp/pw_rpc.out + +To send an Echo RPC message, type the following command, where the actual +message is the text in quotation marks after the `msg=` phrase: + + rpcs.pw.rpc.EchoService.Echo(msg="hi") + + Note: Some users might have to install the + [VCP driver](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers) + before the device shows up on `/dev/tty`. diff --git a/examples/pigweed-app/efr32/args.gni b/examples/pigweed-app/efr32/args.gni new file mode 100644 index 00000000000000..45567046d2a4db --- /dev/null +++ b/examples/pigweed-app/efr32/args.gni @@ -0,0 +1,25 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/chip.gni") +import("${chip_root}/config/efr32/lib/pw_rpc/pw_rpc.gni") +import("${chip_root}/examples/platform/efr32/args.gni") + +efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain") + +declare_args() { + chip_build_pw_rpc_lib = true +} + +default_configs_std = [ "${chip_root}/config/efr32/lib/pw_rpc:std_cpp17" ] diff --git a/examples/pigweed-app/efr32/build_overrides b/examples/pigweed-app/efr32/build_overrides new file mode 120000 index 00000000000000..194ee0b812dc3d --- /dev/null +++ b/examples/pigweed-app/efr32/build_overrides @@ -0,0 +1 @@ +../../build_overrides/ \ No newline at end of file diff --git a/examples/pigweed-app/efr32/include/AppConfig.h b/examples/pigweed-app/efr32/include/AppConfig.h new file mode 100644 index 00000000000000..61a5430dafeeb8 --- /dev/null +++ b/examples/pigweed-app/efr32/include/AppConfig.h @@ -0,0 +1,49 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +// ---- PW Example App Config ---- + +// EFR32 WSTK Buttons +#define PB0 0 +#define PB1 1 + +// EFR32 WSTK LEDs +#define BSP_LED_0 0 +#define BSP_LED_1 1 + +#define APP_BUTTON_DEBOUNCE_PERIOD_MS 50 +#define APP_BUTTON_PRESSED 0 +#define APP_BUTTON_RELEASED 1 + +#define SYSTEM_STATE_LED BSP_LED_0 + +// EFR Logging +#ifdef __cplusplus +extern "C" { +#endif + +void efr32LogInit(void); +void efr32Log(const char * aFormat, ...); +#define EFR32_LOG(...) efr32Log(__VA_ARGS__); +void appError(int err); + +#ifdef __cplusplus +} +#endif diff --git a/examples/pigweed-app/efr32/include/CHIPProjectConfig.h b/examples/pigweed-app/efr32/include/CHIPProjectConfig.h new file mode 100644 index 00000000000000..ef9dbc5592501e --- /dev/null +++ b/examples/pigweed-app/efr32/include/CHIPProjectConfig.h @@ -0,0 +1,122 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file + * Example project configuration file for CHIP. + * + * This is a place to put application or project-specific overrides + * to the default configuration values for general CHIP features. + * + */ + +#pragma once + +/** + * CHIP_DEVICE_CONFIG_ENABLE_TEST_DEVICE_IDENTITY + * + * Enables the use of a hard-coded default Chip device id and credentials if no device id + * is found in Chip NV storage. + * + * This option is for testing only and should be disabled in production releases. + */ +#define CHIP_DEVICE_CONFIG_ENABLE_TEST_DEVICE_IDENTITY 34 + +// Use a default pairing code if one hasn't been provisioned in flash. +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 12345678 +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00 + +// For convenience, Chip Security Test Mode can be enabled and the +// requirement for authentication in various protocols can be disabled. +// +// WARNING: These options make it possible to circumvent basic Chip security functionality, +// including message encryption. Because of this they MUST NEVER BE ENABLED IN PRODUCTION BUILDS. +// +#define CHIP_CONFIG_SECURITY_TEST_MODE 0 +#define CHIP_CONFIG_REQUIRE_AUTH 1 + +/** + * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID + * + * 0x235A: Chip's Vendor Id. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0x235A + +/** + * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID + * + * 0xFE00: SDK Sample Lock Resource + */ +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0xFE00 + +/** + * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_REVISION + * + * The product revision number assigned to device or product by the device vendor. This + * number is scoped to the device product id, and typically corresponds to a revision of the + * physical device, a change to its packaging, and/or a change to its marketing presentation. + * This value is generally *not* incremented for device software revisions. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_REVISION 1 + +/** + * CHIP_DEVICE_CONFIG_DEVICE_FIRMWARE_REVISION + * + * A string identifying the firmware revision running on the device. + * CHIP service currently expects the firmware version to be in the format + * {MAJOR_VERSION}.0d{MINOR_VERSION} + */ +#ifndef CHIP_DEVICE_CONFIG_DEVICE_FIRMWARE_REVISION +#define CHIP_DEVICE_CONFIG_DEVICE_FIRMWARE_REVISION "0.1ALPHA" +#endif +/** + * CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE + * + * Enable support for Chip-over-BLE (CHIPoBLE). + */ +#define CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE 1 + +/** + * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC + * + * Enables synchronizing the device's real time clock with a remote Chip Time service + * using the Chip Time Sync protocol. + */ +#define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 0 + +/** + * CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER + * + * Enables the use of a hard-coded default serial number if none + * is found in Chip NV storage. + */ +#define CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER "DUMMY_SN" + +/** + * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS + * + * Enable recording UTC timestamps. + */ +#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1 + +/** + * CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE + * + * A size, in bytes, of the individual debug event logging buffer. + */ +#define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE (512) diff --git a/examples/pigweed-app/efr32/include/FreeRTOSConfig.h b/examples/pigweed-app/efr32/include/FreeRTOSConfig.h new file mode 100644 index 00000000000000..041206f84739c7 --- /dev/null +++ b/examples/pigweed-app/efr32/include/FreeRTOSConfig.h @@ -0,0 +1,285 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*************************************************************************** + * # License + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is Third Party Software licensed by Silicon Labs from a third party + * and is governed by the sections of the MSLA applicable to Third Party + * Software and the additional terms set forth below. + * + ******************************************************************************/ +/* + FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd. + All rights reserved + + VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. + + This file is part of the FreeRTOS distribution. + + FreeRTOS is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License (version 2) as published by the + Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception. + + *************************************************************************** + >>! NOTE: The modification to the GPL is included to allow you to !<< + >>! distribute a combined work that includes FreeRTOS without being !<< + >>! obliged to provide the source code for proprietary components !<< + >>! outside of the FreeRTOS kernel. !<< + *************************************************************************** + + FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. Full license text is available on the following + link: http://www.freertos.org/a00114.html + + *************************************************************************** + * * + * FreeRTOS provides completely free yet professionally developed, * + * robust, strictly quality controlled, supported, and cross * + * platform software that is more than just the market leader, it * + * is the industry's de facto standard. * + * * + * Help yourself get started quickly while simultaneously helping * + * to support the FreeRTOS project by purchasing a FreeRTOS * + * tutorial book, reference manual, or both: * + * http://www.FreeRTOS.org/Documentation * + * * + *************************************************************************** + + http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading + the FAQ page "My application does not run, what could be wrong?". Have you + defined configASSERT()? + + http://www.FreeRTOS.org/support - In return for receiving this top quality + embedded software for free we request you assist our global community by + participating in the support forum. + + http://www.FreeRTOS.org/training - Investing in training allows your team to + be as productive as possible as early as possible. Now you can receive + FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers + Ltd, and the world's leading authority on the world's leading RTOS. + + http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, + including FreeRTOS+Trace - an indispensable productivity tool, a DOS + compatible FAT file system, and our tiny thread aware UDP/IP stack. + + http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. + Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. + + http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High + Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS + licenses offer ticketed support, indemnification and commercial middleware. + + http://www.SafeRTOS.com - High Integrity Systems also provide a safety + engineered and independently SIL3 certified version for use in safety and + mission critical applications that require provable dependability. + + 1 tab == 4 spaces! +*/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "em_device.h" +#include + +/*----------------------------------------------------------- + * Application specific definitions. + * + * These definitions should be adjusted for your particular hardware and + * application requirements. + * + * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE + * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. + * + * See http://www.freertos.org/a00110.html. + *----------------------------------------------------------*/ + +/* Set configCREATE_LOW_POWER_DEMO as follows: + * + * 0: Build the full test and demo application. + * 1: Build the simple blinky tickless low power demo, generating the tick + * interrupt from the RTCC. EM2 will be entered. The LXFO clock is used. + * See the comments at the top of main.c, main_full.c and main_low_power.c for + * more information. + */ +#define configCREATE_LOW_POWER_DEMO (0) + +/* Some configuration is dependent on the demo being built. */ +#if (configCREATE_LOW_POWER_DEMO == 0) + +/* Tickless mode is not used. */ + +/* Some of the standard demo test tasks assume a tick rate of 1KHz, even +though that is faster than would normally be warranted by a real +application. */ +#define configTICK_RATE_HZ (1000) + +/* The full demo always has tasks to run so the tick will never be turned +off. The blinky demo will use the default tickless idle implementation to +turn the tick off. */ +#define configUSE_TICKLESS_IDLE (0) + +/* Hook function related definitions. */ +#define configUSE_TICK_HOOK (1) +#define configCHECK_FOR_STACK_OVERFLOW (2) +#define configUSE_MALLOC_FAILED_HOOK (1) +#define configUSE_IDLE_HOOK (0) + +#define configENERGY_MODE (sleepEM1) + +#else + +/* Tickless idle mode, generating RTOS tick interrupts from the RTC, fed +by the LXFO clock. */ + +/* The slow clock used to generate the tick interrupt in the low power demo +runs at 32768/8=4096Hz. Ensure the tick rate is a multiple of the clock. */ +#define configTICK_RATE_HZ (128) + +/* The low power demo uses the tickless idle feature. */ +#define configUSE_TICKLESS_IDLE (1) +#define configOVERRIDE_DEFAULT_TICK_CONFIGURATION (1) + +/* Hook function related definitions. */ +#define configUSE_TICK_HOOK (0) +#define configCHECK_FOR_STACK_OVERFLOW (0) +#define configUSE_MALLOC_FAILED_HOOK (0) +#define configUSE_IDLE_HOOK (0) + +#define configENERGY_MODE (sleepEM3) +#endif + +/* Main functions*/ +/* Run time stats gathering related definitions. */ +#define configGENERATE_RUN_TIME_STATS (0) + +/* Co-routine related definitions. */ +#define configUSE_CO_ROUTINES (0) +#define configMAX_CO_ROUTINE_PRIORITIES (1) + +/* Software timer related definitions. */ +#define configUSE_TIMERS (1) +#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES - 1) /* Highest priority */ +#define configTIMER_QUEUE_LENGTH (10) +#define configTIMER_TASK_STACK_DEPTH (1024) + +/* Cortex-M specific definitions. */ +#ifdef __NVIC_PRIO_BITS +/* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */ +#define configPRIO_BITS (__NVIC_PRIO_BITS) +#else +#define configPRIO_BITS 3 /* 7 priority levels */ +#endif + +/* The lowest interrupt priority that can be used in a call to a "set priority" +function. */ +#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY (0x07) + +/* The highest interrupt priority that can be used by any interrupt service +routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL +INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER +PRIORITY THAN THIS! (higher priorities are lower numeric values. */ +#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY (0x03) + +/* Interrupt priorities used by the kernel port layer itself. These are generic +to all Cortex-M ports, and do not rely on any particular library functions. */ +#define configKERNEL_INTERRUPT_PRIORITY (configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS)) +/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! +See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ +#define configMAX_SYSCALL_INTERRUPT_PRIORITY (configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS)) + +/* FreeRTOS MPU specific definitions. */ +#define configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS (1) + +#define configCPU_CLOCK_HZ (SystemCoreClock) +#define configUSE_PREEMPTION (1) +#define configUSE_TIME_SLICING (1) +#define configUSE_PORT_OPTIMISED_TASK_SELECTION (1) +#define configUSE_TICKLESS_IDLE_SIMPLE_DEBUG (1) /* See into vPortSuppressTicksAndSleep source code for explanation */ +#define configMAX_PRIORITIES (8) +#define configMINIMAL_STACK_SIZE (120) /* Number of words to use for Idle and Timer stacks */ +#define configMAX_TASK_NAME_LEN (4) +#define configUSE_16_BIT_TICKS (0) +#define configIDLE_SHOULD_YIELD (0) +#define configUSE_MUTEXES (1) +#define configUSE_RECURSIVE_MUTEXES (1) +#define configUSE_COUNTING_SEMAPHORES (1) +#define configUSE_ALTERNATIVE_API (0) /* Deprecated! */ +#define configQUEUE_REGISTRY_SIZE (10) +#define configUSE_QUEUE_SETS (0) +#define configUSE_NEWLIB_REENTRANT (0) +#define configENABLE_BACKWARD_COMPATIBILITY (1) + +/* Optional functions - most linkers will remove unused functions anyway. */ +#define INCLUDE_vTaskPrioritySet (1) +#define INCLUDE_uxTaskPriorityGet (1) +#define INCLUDE_vTaskDelete (1) +#define INCLUDE_vTaskSuspend (1) +#define INCLUDE_xResumeFromISR (1) +#define INCLUDE_vTaskDelayUntil (1) +#define INCLUDE_vTaskDelay (1) +#define INCLUDE_xTaskGetSchedulerState (1) +#define INCLUDE_xTaskGetCurrentTaskHandle (1) +#define INCLUDE_uxTaskGetStackHighWaterMark (1) +#define INCLUDE_xTaskGetIdleTaskHandle (1) +#define INCLUDE_xTimerGetTimerDaemonTaskHandle (1) +#define INCLUDE_pcTaskGetTaskName (1) +#define INCLUDE_eTaskGetState (1) +#define INCLUDE_xEventGroupSetBitFromISR (1) +#define INCLUDE_xTimerPendFunctionCall (1) + +/* Stop if an assertion fails. */ +#define configASSERT(x) \ + if ((x) == 0) \ + { \ + taskDISABLE_INTERRUPTS(); \ + printf("\nFREERTOS ASSERT ( %s )\n", #x); \ + for (;;) \ + ; \ + } +#define configASSERTNULL(x) \ + if ((x) == NULL) \ + { \ + taskDISABLE_INTERRUPTS(); \ + for (;;) \ + ; \ + } + +/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS +standard names. */ +#define vPortSVCHandler SVC_Handler +#define xPortPendSVHandler PendSV_Handler +#define xPortSysTickHandler SysTick_Handler + +#if defined(__GNUC__) +/* For the linker. */ +#define fabs __builtin_fabs +#endif + +#ifdef __cplusplus +} +#endif diff --git a/examples/pigweed-app/efr32/ldscripts/efr32-pigweed-example-MG12P.ld b/examples/pigweed-app/efr32/ldscripts/efr32-pigweed-example-MG12P.ld new file mode 100644 index 00000000000000..d20e4f84defdac --- /dev/null +++ b/examples/pigweed-app/efr32/ldscripts/efr32-pigweed-example-MG12P.ld @@ -0,0 +1,288 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/***************************************************************************//** + * Linker script for Silicon Labs EFR32MG12P devices + * @version 5.7.2 + ******************************************************************************* + * # License + * Copyright 2018 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 1048576 + RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 262144 +} + +/* Linker script to place sections and symbol values. Should be used together + * with other linker script that defines memory regions FLASH and RAM. + * It references following symbols, which must be defined in code: + * Reset_Handler : Entry of reset handler + * + * It defines following symbols, which code can use without definition: + * __exidx_start + * __exidx_end + * __copy_table_start__ + * __copy_table_end__ + * __zero_table_start__ + * __zero_table_end__ + * __etext + * __data_start__ + * __preinit_array_start + * __preinit_array_end + * __init_array_start + * __init_array_end + * __fini_array_start + * __fini_array_end + * __data_end__ + * __bss_start__ + * __bss_end__ + * __end__ + * end + * __HeapBase + * __HeapLimit + * __StackLimit + * __StackTop + * __stack + * __Vectors_End + * __Vectors_Size + */ +ENTRY(Reset_Handler) + +SECTIONS +{ + .text : + { + KEEP(*(.vectors)) + __Vectors_End = .; + __Vectors_Size = __Vectors_End - __Vectors; + __end__ = .; + + *(.text*) + + KEEP(*(.init)) + KEEP(*(.fini)) + + KEEP(*(.application_properties)) + KEEP(*(.gecko_configuration)) + KEEP(*(.xo_configuration)) + KEEP(*(.gatt_header)) + KEEP(*(.gatt_data)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + *(.rodata*) + + + KEEP(*(.eh_frame*)) + } > FLASH + + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + + + + /* To copy multiple ROM to RAM sections, + * uncomment .copy.table section and, + * define __STARTUP_COPY_MULTIPLE in startup_ARMCMx.S */ + /* + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + LONG (__etext) + LONG (__data_start__) + LONG (__data_end__ - __data_start__) + LONG (__etext2) + LONG (__data2_start__) + LONG (__data2_end__ - __data2_start__) + __copy_table_end__ = .; + } > FLASH + */ + + /* To clear multiple BSS sections, + * uncomment .zero.table section and, + * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_ARMCMx.S */ + /* + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + LONG (__bss_start__) + LONG (__bss_end__ - __bss_start__) + LONG (__bss2_start__) + LONG (__bss2_end__ - __bss2_start__) + __zero_table_end__ = .; + } > FLASH + */ + + __etext = .; + + /*******************************************************************/ + /* Define flash block for BLE-simee & chip-nvm3 */ + /* simee: 9000H (36k) bytes for BLE nvm3 */ + /* chipNvm3_section: 4000H (16k) bytes for chip nvm3. */ + /* 8K is reserved for OpenThread's NVM which is mapped directly at */ + /* the top of flash */ + /*******************************************************************/ + + OPENTHREAD_NVM_SIZE = 8192; + + .nvm_dummy (DSECT): + { + __nvm3_dummy_begin = .; + . = ALIGN (8192); + __nvm3_dummy_simee = .; + KEEP(*(.simee)); + . = ALIGN (8192); + __nvm3_dummy_chip = .; + KEEP(*(chipNvm3_section)); + . = ALIGN (8192); + . += OPENTHREAD_NVM_SIZE; + . = ALIGN (8192); + } > FLASH + + /* Set NVM to end of FLASH */ + __nvm3Base = LENGTH(FLASH) - SIZEOF(.nvm_dummy) + (__nvm3_dummy_simee - __nvm3_dummy_begin); + __chipNvm3Base = LENGTH(FLASH) - SIZEOF(.nvm_dummy) + (__nvm3_dummy_chip - __nvm3_dummy_begin); + + + /*******************************************************************/ + + .data : AT (__etext) + { + __data_start__ = .; + *(vtable) + *(.data*) + . = ALIGN (4); + PROVIDE (__ram_func_section_start = .); + *(.ram) + PROVIDE (__ram_func_section_end = .); + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + KEEP(*(.jcr*)) + . = ALIGN(4); + /* All data end */ + __data_end__ = .; + + } > RAM + + .bss : + { + . = ALIGN(4); + __bss_start__ = .; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > RAM + + .heap (COPY): + { + __HeapBase = .; + __end__ = .; + end = __end__; + _end = __end__; + __HeapLimit = .; + } > RAM + + /* .stack_dummy section doesn't contains any symbols. It is only + * used for linker to calculate size of stack sections, and assign + * values to stack symbols later */ + .stack_dummy (COPY): + { + KEEP(*(.stack*)) + } > RAM + + /* Set stack top to end of RAM, and stack limit move down by + * size of stack_dummy section */ + __StackTop = ORIGIN(RAM) + LENGTH(RAM); + __StackLimit = __StackTop - SIZEOF(.stack_dummy); + PROVIDE(__stack = __StackTop); + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") + + + /* Check if FLASH usage exceeds FLASH size */ + ASSERT( LENGTH(FLASH) >= (__etext + SIZEOF(.data)), "FLASH memory overflowed !") + ASSERT((__etext + SIZEOF(.data)) <= __nvm3Base, "FLASH memory overlapped with NVM section.") +} diff --git a/examples/pigweed-app/efr32/ldscripts/efr32-pigweed-example-MG21.ld b/examples/pigweed-app/efr32/ldscripts/efr32-pigweed-example-MG21.ld new file mode 100644 index 00000000000000..e8e870f65cf41f --- /dev/null +++ b/examples/pigweed-app/efr32/ldscripts/efr32-pigweed-example-MG21.ld @@ -0,0 +1,288 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/***************************************************************************//** + * Linker script for Silicon Labs EFR32MG21 devices + * @version 5.7.2 + ******************************************************************************* + * # License + * Copyright 2018 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 1048576 - 8192 /* 8K is reserved at top of flash on MG21 */ + RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 98304 +} + +/* Linker script to place sections and symbol values. Should be used together + * with other linker script that defines memory regions FLASH and RAM. + * It references following symbols, which must be defined in code: + * Reset_Handler : Entry of reset handler + * + * It defines following symbols, which code can use without definition: + * __exidx_start + * __exidx_end + * __copy_table_start__ + * __copy_table_end__ + * __zero_table_start__ + * __zero_table_end__ + * __etext + * __data_start__ + * __preinit_array_start + * __preinit_array_end + * __init_array_start + * __init_array_end + * __fini_array_start + * __fini_array_end + * __data_end__ + * __bss_start__ + * __bss_end__ + * __end__ + * end + * __HeapBase + * __HeapLimit + * __StackLimit + * __StackTop + * __stack + * __Vectors_End + * __Vectors_Size + */ +ENTRY(Reset_Handler) + +SECTIONS +{ + .text : + { + KEEP(*(.vectors)) + __Vectors_End = .; + __Vectors_Size = __Vectors_End - __Vectors; + __end__ = .; + + *(.text*) + + KEEP(*(.init)) + KEEP(*(.fini)) + + KEEP(*(.application_properties)) + KEEP(*(.gecko_configuration)) + KEEP(*(.xo_configuration)) + KEEP(*(.gatt_header)) + KEEP(*(.gatt_data)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + *(.rodata*) + + + KEEP(*(.eh_frame*)) + } > FLASH + + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + + + + /* To copy multiple ROM to RAM sections, + * uncomment .copy.table section and, + * define __STARTUP_COPY_MULTIPLE in startup_ARMCMx.S */ + /* + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + LONG (__etext) + LONG (__data_start__) + LONG (__data_end__ - __data_start__) + LONG (__etext2) + LONG (__data2_start__) + LONG (__data2_end__ - __data2_start__) + __copy_table_end__ = .; + } > FLASH + */ + + /* To clear multiple BSS sections, + * uncomment .zero.table section and, + * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_ARMCMx.S */ + /* + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + LONG (__bss_start__) + LONG (__bss_end__ - __bss_start__) + LONG (__bss2_start__) + LONG (__bss2_end__ - __bss2_start__) + __zero_table_end__ = .; + } > FLASH + */ + + __etext = .; + + /*******************************************************************/ + /* Define flash block for BLE-simee & CHIP-nvm3 */ + /* simee: 9000H (36k) bytes for BLE nvm3 */ + /* chipNvm3_section: 4000H (16k) bytes for CHIP nvm3. */ + /* 8K is reserved for OpenThread's NVM which is mapped directly at */ + /* the top of flash */ + /*******************************************************************/ + + OPENTHREAD_NVM_SIZE = 8192; + + .nvm_dummy (DSECT): + { + __nvm3_dummy_begin = .; + . = ALIGN (8192); + __nvm3_dummy_simee = .; + KEEP(*(.simee)); + . = ALIGN (8192); + __nvm3_dummy_chip = .; + KEEP(*(chipNvm3_section)); + . = ALIGN (8192); + . += OPENTHREAD_NVM_SIZE; + . = ALIGN (8192); + } > FLASH + + /* Set NVM to end of FLASH */ + __nvm3Base = LENGTH(FLASH) - SIZEOF(.nvm_dummy) + (__nvm3_dummy_simee - __nvm3_dummy_begin); + __nvm3ChipBase = LENGTH(FLASH) - SIZEOF(.nvm_dummy) + (__nvm3_dummy_chip - __nvm3_dummy_begin); + + + /*******************************************************************/ + + .data : AT (__etext) + { + __data_start__ = .; + *(vtable) + *(.data*) + . = ALIGN (4); + PROVIDE (__ram_func_section_start = .); + *(.ram) + PROVIDE (__ram_func_section_end = .); + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + KEEP(*(.jcr*)) + . = ALIGN(4); + /* All data end */ + __data_end__ = .; + + } > RAM + + .bss : + { + . = ALIGN(4); + __bss_start__ = .; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > RAM + + .heap (COPY): + { + __HeapBase = .; + __end__ = .; + end = __end__; + _end = __end__; + __HeapLimit = .; + } > RAM + + /* .stack_dummy section doesn't contains any symbols. It is only + * used for linker to calculate size of stack sections, and assign + * values to stack symbols later */ + .stack_dummy (COPY): + { + KEEP(*(.stack*)) + } > RAM + + /* Set stack top to end of RAM, and stack limit move down by + * size of stack_dummy section */ + __StackTop = ORIGIN(RAM) + LENGTH(RAM); + __StackLimit = __StackTop - SIZEOF(.stack_dummy); + PROVIDE(__stack = __StackTop); + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") + + + /* Check if FLASH usage exceeds FLASH size */ + ASSERT( LENGTH(FLASH) >= (__etext + SIZEOF(.data)), "FLASH memory overflowed !") + ASSERT((__etext + SIZEOF(.data)) <= __nvm3Base, "FLASH memory overlapped with NVM section.") +} diff --git a/examples/pigweed-app/efr32/src/main.cpp b/examples/pigweed-app/efr32/src/main.cpp new file mode 100644 index 00000000000000..ff36d1f483a35d --- /dev/null +++ b/examples/pigweed-app/efr32/src/main.cpp @@ -0,0 +1,48 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "AppConfig.h" +#include "LEDWidget.h" +#include "init_board.h" +#include "init_mcu.h" + +#include "pw_sys_io/sys_io.h" +#include "pw_sys_io_efr32/init.h" +#include "uart.h" + +static LEDWidget sStatusLED; + +namespace hdlc_example { +extern void Start(); +} // namespace hdlc_example + +using namespace ::pw::sys_io; +int main(void) +{ + initMcu(); + initBoard(); + efr32LogInit(); + EFR32_LOG("***** CHIP EFR32 pigweed example *****\r\n"); + + pw_sys_io_Init(); + // Initialize LEDs + LEDWidget::InitGpio(); + sStatusLED.Init(SYSTEM_STATE_LED); + sStatusLED.Set(true); + + hdlc_example::Start(); +} diff --git a/examples/pigweed-app/efr32/third_party/connectedhomeip b/examples/pigweed-app/efr32/third_party/connectedhomeip new file mode 120000 index 00000000000000..80527d5e8de354 --- /dev/null +++ b/examples/pigweed-app/efr32/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../connectedhomeip \ No newline at end of file diff --git a/examples/platform/efr32/args.gni b/examples/platform/efr32/args.gni index f27551634e1b75..233080c6c92570 100644 --- a/examples/platform/efr32/args.gni +++ b/examples/platform/efr32/args.gni @@ -13,18 +13,8 @@ # limitations under the License. import("//build_overrides/chip.gni") - import("${chip_root}/src/platform/EFR32/args.gni") -import("//build_overrides/pigweed.gni") - -declare_args() { - dir_pw_log_chip = "$chip_root/src/lib/support/pw_log_chip" -} - -pw_log_BACKEND = "$dir_pw_log_chip" -pw_assert_BACKEND = "$dir_pw_assert_log" - openthread_project_core_config_file = "OpenThreadConfig.h" openthread_core_config_deps = [] openthread_core_config_deps = [ "${chip_root}/examples/platform/efr32:openthread_core_config_efr32_chip_examples" ] diff --git a/examples/lighting-app/efr32/include/board_features.h b/examples/platform/efr32/board_features.h similarity index 99% rename from examples/lighting-app/efr32/include/board_features.h rename to examples/platform/efr32/board_features.h index e1ccb846160ada..182cdd9bb9ae2c 100644 --- a/examples/lighting-app/efr32/include/board_features.h +++ b/examples/platform/efr32/board_features.h @@ -34,9 +34,6 @@ #pragma once -// Top level macros -#define SILABS_AF_DEVICE_NAME "lighting-example" - // Generated plugin macros #ifdef EMBER_AF_BOARD_TYPE diff --git a/examples/platform/efr32/efr32mg12/BRD4161A/init_board.c b/examples/platform/efr32/efr32mg12/BRD4161A/init_board.c index 75f7074c329a90..517408d5ccd795 100644 --- a/examples/platform/efr32/efr32mg12/BRD4161A/init_board.c +++ b/examples/platform/efr32/efr32mg12/BRD4161A/init_board.c @@ -41,6 +41,7 @@ #include "board_features.h" #include "em_cmu.h" +#include "hal-config-board.h" #include "em_cmu.h" diff --git a/examples/platform/efr32/efr32mg12/BRD4163A/init_board.c b/examples/platform/efr32/efr32mg12/BRD4163A/init_board.c index 75f7074c329a90..517408d5ccd795 100644 --- a/examples/platform/efr32/efr32mg12/BRD4163A/init_board.c +++ b/examples/platform/efr32/efr32mg12/BRD4163A/init_board.c @@ -41,6 +41,7 @@ #include "board_features.h" #include "em_cmu.h" +#include "hal-config-board.h" #include "em_cmu.h" diff --git a/examples/platform/efr32/efr32mg12/BRD4164A/hal-config.h b/examples/platform/efr32/efr32mg12/BRD4164A/hal-config.h index 889ca2b8ce7730..d31f1e5c098728 100644 --- a/examples/platform/efr32/efr32mg12/BRD4164A/hal-config.h +++ b/examples/platform/efr32/efr32mg12/BRD4164A/hal-config.h @@ -82,7 +82,7 @@ #define HAL_USART0_RX_QUEUE_SIZE (128UL) #ifndef HAL_VCOM_ENABLE -#define HAL_VCOM_ENABLE (0) +#define HAL_VCOM_ENABLE (1) #endif #ifndef HAL_I2CSENSOR_ENABLE #define HAL_I2CSENSOR_ENABLE (0) diff --git a/examples/platform/efr32/efr32mg12/BRD4164A/init_board.c b/examples/platform/efr32/efr32mg12/BRD4164A/init_board.c index 75f7074c329a90..517408d5ccd795 100644 --- a/examples/platform/efr32/efr32mg12/BRD4164A/init_board.c +++ b/examples/platform/efr32/efr32mg12/BRD4164A/init_board.c @@ -41,6 +41,7 @@ #include "board_features.h" #include "em_cmu.h" +#include "hal-config-board.h" #include "em_cmu.h" diff --git a/examples/platform/efr32/efr32mg12/BRD4166A/init_board.c b/examples/platform/efr32/efr32mg12/BRD4166A/init_board.c index 4a74535b5c7f09..bc7c3b99efe1bb 100644 --- a/examples/platform/efr32/efr32mg12/BRD4166A/init_board.c +++ b/examples/platform/efr32/efr32mg12/BRD4166A/init_board.c @@ -41,6 +41,7 @@ #include "board_features.h" #include "em_cmu.h" +#include "hal-config-board.h" #include "em_cmu.h" diff --git a/examples/platform/efr32/efr32mg12/BRD4170A/init_board.c b/examples/platform/efr32/efr32mg12/BRD4170A/init_board.c index 75f7074c329a90..517408d5ccd795 100644 --- a/examples/platform/efr32/efr32mg12/BRD4170A/init_board.c +++ b/examples/platform/efr32/efr32mg12/BRD4170A/init_board.c @@ -41,6 +41,7 @@ #include "board_features.h" #include "em_cmu.h" +#include "hal-config-board.h" #include "em_cmu.h" diff --git a/examples/platform/efr32/efr32mg12/BRD4304A/init_board.c b/examples/platform/efr32/efr32mg12/BRD4304A/init_board.c index e57a3735c90d5f..609aad15e5dab5 100644 --- a/examples/platform/efr32/efr32mg12/BRD4304A/init_board.c +++ b/examples/platform/efr32/efr32mg12/BRD4304A/init_board.c @@ -41,6 +41,7 @@ #include "board_features.h" #include "em_cmu.h" +#include "hal-config-board.h" #include "em_cmu.h" diff --git a/examples/platform/efr32/efr32mg21/BRD4180A/init_board.c b/examples/platform/efr32/efr32mg21/BRD4180A/init_board.c index 0d05740062b16f..cdaead06790bee 100644 --- a/examples/platform/efr32/efr32mg21/BRD4180A/init_board.c +++ b/examples/platform/efr32/efr32mg21/BRD4180A/init_board.c @@ -41,6 +41,7 @@ #include "board_features.h" #include "em_cmu.h" +#include "hal-config-board.h" #include "bsp.h" diff --git a/examples/lighting-app/efr32/include/hal-config-app-common.h b/examples/platform/efr32/hal-config-app-common.h similarity index 100% rename from examples/lighting-app/efr32/include/hal-config-app-common.h rename to examples/platform/efr32/hal-config-app-common.h diff --git a/examples/platform/efr32/pw_sys_io/BUILD.gn b/examples/platform/efr32/pw_sys_io/BUILD.gn new file mode 100644 index 00000000000000..9028bbc4eabca9 --- /dev/null +++ b/examples/platform/efr32/pw_sys_io/BUILD.gn @@ -0,0 +1,37 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/chip.gni") +import("//build_overrides/pigweed.gni") +import("$dir_pw_build/target_types.gni") + +examples_plat_dir = "${chip_root}/examples/platform/efr32" + +config("default_config") { + include_dirs = [ "public" ] +} + +pw_source_set("pw_sys_io_efr32") { + public_configs = [ ":default_config" ] + + public_deps = [] + + deps = [ + "$dir_pw_sys_io:default_putget_bytes", + "$dir_pw_sys_io:facade", + ] + + include_dirs = [ "${examples_plat_dir}" ] + sources = [ "sys_io_efr32.cc" ] +} diff --git a/examples/platform/efr32/pw_sys_io/public/pw_sys_io_efr32/init.h b/examples/platform/efr32/pw_sys_io/public/pw_sys_io_efr32/init.h new file mode 100644 index 00000000000000..f11f5e928f3e14 --- /dev/null +++ b/examples/platform/efr32/pw_sys_io/public/pw_sys_io_efr32/init.h @@ -0,0 +1,27 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "pw_preprocessor/util.h" + +PW_EXTERN_C_START + +// The actual implement of PreMainInit() in sys_io_BACKEND. +void pw_sys_io_Init(); + +PW_EXTERN_C_END diff --git a/examples/platform/efr32/pw_sys_io/sys_io_efr32.cc b/examples/platform/efr32/pw_sys_io/sys_io_efr32.cc new file mode 100644 index 00000000000000..a7a99d06db86e2 --- /dev/null +++ b/examples/platform/efr32/pw_sys_io/sys_io_efr32.cc @@ -0,0 +1,74 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "pw_sys_io/sys_io.h" +#include +#include +#include +#include + +#include "uart.h" + +int16_t console_getchar(char * chr) +{ + return uartConsoleRead(chr, 1); +} + +int16_t console_putchar(const char * chr) +{ + return uartConsoleWrite(chr, 1); +} + +extern "C" void pw_sys_io_Init() +{ + uartConsoleInit(); +} + +namespace pw::sys_io { + +Status ReadByte(std::byte * dest) +{ + if (!dest) + return Status::InvalidArgument(); + + int16_t ret = console_getchar(reinterpret_cast(dest)); + return ret < 0 ? Status::FailedPrecondition() : OkStatus(); +} + +Status WriteByte(std::byte b) +{ + int16_t ret = console_putchar(reinterpret_cast(&b)); + return ret < 0 ? Status::FailedPrecondition() : OkStatus(); +} + +// Writes a string using pw::sys_io, and add newline characters at the end. +StatusWithSize WriteLine(const std::string_view & s) +{ + size_t chars_written = 0; + StatusWithSize result = WriteBytes(std::as_bytes(std::span(s))); + if (!result.ok()) + { + return result; + } + chars_written += result.size(); + result = WriteBytes(std::as_bytes(std::span("\r\n", 2))); + chars_written += result.size(); + + return StatusWithSize(result.status(), chars_written); +} + +} // namespace pw::sys_io diff --git a/examples/platform/efr32/uart.c b/examples/platform/efr32/uart.c new file mode 100644 index 00000000000000..1099555319e70c --- /dev/null +++ b/examples/platform/efr32/uart.c @@ -0,0 +1,66 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "uart.h" +#include "em_core.h" +#include "em_usart.h" +#include "hal-config-board.h" +#include "hal-config.h" +#include "init_board.h" +#include "uartdrv.h" +#include +#include + +void uartConsoleInit(void) +{ + RETARGET_SerialCrLf(0); + RETARGET_SerialInit(); + initVcomEnable(); +} + +int16_t uartConsoleWrite(const char * Buf, uint16_t BufLength) +{ + if (Buf == NULL || BufLength < 1) + { + return -1; + } + + for (int i = 0; i < BufLength; i++) + { + RETARGET_WriteChar(Buf[i]); + } + return (int16_t) BufLength; +} + +int16_t uartConsoleRead(char * Buf, uint16_t BufLength) +{ + if (Buf == NULL || BufLength < 1) + { + return -1; + } + + for (int i = 0; i < BufLength; i++) + { + int readVal = -1; + while (readVal == -1) + { + readVal = RETARGET_ReadChar(); + } + Buf[i] = (char) readVal; + } + return (int16_t) BufLength; +} diff --git a/examples/platform/efr32/uart.h b/examples/platform/efr32/uart.h new file mode 100644 index 00000000000000..76e83b7a879ae7 --- /dev/null +++ b/examples/platform/efr32/uart.h @@ -0,0 +1,33 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void uartConsoleInit(void); +int16_t uartConsoleWrite(const char * Buf, uint16_t BufLength); +int16_t uartConsoleRead(char * Buf, uint16_t BufLength); + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/src/platform/EFR32/Logging.cpp b/src/platform/EFR32/Logging.cpp index d9e0c43b77c9db..d7f13e9ce890a0 100644 --- a/src/platform/EFR32/Logging.cpp +++ b/src/platform/EFR32/Logging.cpp @@ -43,10 +43,25 @@ #define LOG_RTT_BUFFER_INDEX 0 #endif +/** + * @def LOG_RTT_BUFFER_NAME + * + * RTT's name. Only used if LOG_RTT_BUFFER_INDEX is not 0. Otherwise, + * the buffer name is fixed to "Terminal". + * + */ #ifndef LOG_RTT_BUFFER_NAME #define LOG_RTT_BUFFER_NAME "Terminal" #endif +/** + * @def LOG_RTT_BUFFER_SIZE + * + * LOG RTT's buffer size. Only used if LOG_RTT_BUFFER_INDEX is not 0. To + * configure buffer #0 size, check the BUFFER_SIZE_UP definition in + * SEGGER_RTT_Conf.h + * + */ #ifndef LOG_RTT_BUFFER_SIZE #define LOG_RTT_BUFFER_SIZE 256 #endif @@ -67,7 +82,10 @@ using namespace ::chip::DeviceLayer; using namespace ::chip::DeviceLayer::Internal; static bool sLogInitialized = false; +#if LOG_RTT_BUFFER_INDEX != 0 static uint8_t sLogBuffer[LOG_RTT_BUFFER_SIZE]; +static uint8_t sCmdLineBuffer[LOG_RTT_BUFFER_SIZE]; +#endif /** * Print a log message to RTT @@ -79,11 +97,11 @@ static void PrintLog(const char * msg) { size_t sz; sz = strlen(msg); - SEGGER_RTT_WriteNoLock(0, msg, sz); + SEGGER_RTT_WriteNoLock(LOG_RTT_BUFFER_INDEX, msg, sz); const char * newline = "\r\n"; sz = strlen(newline); - SEGGER_RTT_WriteNoLock(0, newline, sz); + SEGGER_RTT_WriteNoLock(LOG_RTT_BUFFER_INDEX, newline, sz); } #endif // EFR32_LOG_ENABLED } @@ -94,8 +112,15 @@ static void PrintLog(const char * msg) extern "C" void efr32LogInit(void) { #if EFR32_LOG_ENABLED +#if LOG_RTT_BUFFER_INDEX != 0 SEGGER_RTT_ConfigUpBuffer(LOG_RTT_BUFFER_INDEX, LOG_RTT_BUFFER_NAME, sLogBuffer, LOG_RTT_BUFFER_SIZE, SEGGER_RTT_MODE_NO_BLOCK_TRIM); + + SEGGER_RTT_ConfigDownBuffer(LOG_RTT_BUFFER_INDEX, LOG_RTT_BUFFER_NAME, sCmdLineBuffer, LOG_RTT_BUFFER_SIZE, + SEGGER_RTT_MODE_NO_BLOCK_SKIP); +#else + SEGGER_RTT_SetFlagsUpBuffer(LOG_RTT_BUFFER_INDEX, SEGGER_RTT_MODE_NO_BLOCK_TRIM); +#endif sLogInitialized = true; #endif // EFR32_LOG_ENABLED }