From 14354702790e1615510c083bde967345f6647bcb Mon Sep 17 00:00:00 2001 From: Alex Tsitsiura Date: Tue, 29 Aug 2023 19:29:29 +0300 Subject: [PATCH] [Telink] Add chef app example (#28701) * Restyled by autopep8 * [Telink] add telink support to chef.py * [Telink] addtelink platform compatibility with chef example * [Telink] remove README * Restyled by whitespace * Restyled by clang-format * Restyled by autopep8 * [Telink] fix code style --------- Co-authored-by: Restyled.io Co-authored-by: UR6LAL --- examples/chef/chef.py | 40 ++- examples/chef/telink/.gitignore | 1 + examples/chef/telink/CHIPProjectConfig.h | 44 ++++ examples/chef/telink/CMakeLists.txt | 232 ++++++++++++++++++ examples/chef/telink/main.cpp | 148 +++++++++++ examples/chef/telink/prj.conf | 72 ++++++ examples/chef/telink/rpc.overlay | 47 ++++ .../chef/telink/third_party/connectedhomeip | 1 + 8 files changed, 581 insertions(+), 4 deletions(-) create mode 100644 examples/chef/telink/.gitignore create mode 100755 examples/chef/telink/CHIPProjectConfig.h create mode 100755 examples/chef/telink/CMakeLists.txt create mode 100644 examples/chef/telink/main.cpp create mode 100755 examples/chef/telink/prj.conf create mode 100644 examples/chef/telink/rpc.overlay create mode 120000 examples/chef/telink/third_party/connectedhomeip diff --git a/examples/chef/chef.py b/examples/chef/chef.py index aa594aef4c39fa..7e1b6238c69484 100755 --- a/examples/chef/chef.py +++ b/examples/chef/chef.py @@ -64,6 +64,7 @@ def load_config() -> None: config["esp32"] = dict() config["silabs-thread"] = dict() config["ameba"] = dict() + config["telink"] = dict() configFile = f"{_CHEF_SCRIPT_PATH}/config.yaml" if (os.path.exists(configFile)): configStream = open(configFile, 'r') @@ -88,6 +89,8 @@ def load_config() -> None: config["ameba"]["MATTER_SDK"] = None config["ameba"]["MODEL"] = 'D' config["ameba"]["TTY"] = None + config["telink"]["ZEPHYR_BASE"] = os.environ.get('ZEPHYR_BASE') + config["telink"]["TTY"] = None flush_print(yaml.dump(config)) yaml.dump(config, configStream) @@ -275,6 +278,7 @@ def main() -> int: linux silabs-thread ameba + telink Device Types: {deviceTypes} @@ -312,7 +316,7 @@ def main() -> int: dest="build_target", help="specifies target platform. See info below for currently supported target platforms", choices=['nrfconnect', 'esp32', - 'linux', 'silabs-thread', 'ameba'], + 'linux', 'silabs-thread', 'ameba', 'telink'], metavar="TARGET", default="linux") parser.add_option("-r", "--rpc", @@ -514,6 +518,16 @@ def main() -> int: if (config['ameba']['MODEL'] != 'D' and config['ameba']['MODEL'] != 'Z2'): flush_print("Ameba Model is not recognized, please input D or Z2") exit(1) + elif options.build_target == "telink": + if config['telink']['ZEPHYR_BASE'] is None: + flush_print( + 'Path for Telink SDK was not found. Make sure Telink_SDK is set on your config.yaml file') + exit(1) + shell.run_cmd("export ZEPHYR_TOOLCHAIN_VARIANT=zephyr") + shell.run_cmd( + f"export ZEPHYR_BASE={config['telink']['ZEPHYR_BASE']}") + shell.run_cmd( + f'source {config["telink"]["ZEPHYR_BASE"]}/zephyr-env.sh') else: flush_print(f"Target {options.build_target} not supported") @@ -536,7 +550,8 @@ def main() -> int: flush_print("Linux toolchain update not supported. Skipping") elif options.build_target == "Ameba": flush_print("Ameba toolchain update not supported. Skipping") - + elif options.build_target == "telink": + flush_print("Telink toolchain update not supported. Skipping") # # Clean environment # @@ -606,6 +621,8 @@ def main() -> int: flush_print("Menuconfig not available on Linux target. Skipping") elif options.build_target == "Ameba": flush_print("Menuconfig not available on Ameba target. Skipping") + elif options.build_target == "telink": + flush_print("Menuconfig not available on Telink target. Skipping") # # Build @@ -639,7 +656,7 @@ def main() -> int: shell.run_cmd(f"cd {_CHEF_SCRIPT_PATH}") - if (options.build_target == "esp32") or (options.build_target == "nrfconnect") or (options.build_target == "ameba"): + if options.build_target in "esp32 nrfconnect ameba telink".split(): with open("project_include.cmake", "w") as f: f.write(textwrap.dedent(f"""\ set(CONFIG_DEVICE_VENDOR_ID {options.vid}) @@ -725,6 +742,14 @@ def main() -> int: shell.run_cmd("make clean") shell.run_cmd("make chef") shell.run_cmd("make is") + elif options.build_target == "telink": + shell.run_cmd(f"cd {_CHEF_SCRIPT_PATH}/telink") + telink_build_cmds = ["west build"] + if options.do_clean: + telink_build_cmds.append("-p always") + if options.do_rpc: + telink_build_cmds.append("-- -DOVERLAY_CONFIG=rpc.overlay") + shell.run_cmd(" ".join(telink_build_cmds)) elif options.build_target == "linux": shell.run_cmd(f"cd {_CHEF_SCRIPT_PATH}/linux") @@ -900,7 +925,14 @@ def main() -> int: shell.run_cmd(f"screen {config['ameba']['TTY']} 115200") else: flush_print("Ameba Z2 image has not been flashed yet") - + elif options.build_target == "telink": + if config['telink']['TTY'] is None: + flush_print( + 'The path for the serial enumeration for telink is not set. ' + 'Make sure telink.TTY is set on your config.yaml file') + exit(1) + shell.run_cmd("killall screen") + shell.run_cmd(f"screen {config['telink']['TTY']} 115200") # # RPC Console # diff --git a/examples/chef/telink/.gitignore b/examples/chef/telink/.gitignore new file mode 100644 index 00000000000000..84c048a73cc2e5 --- /dev/null +++ b/examples/chef/telink/.gitignore @@ -0,0 +1 @@ +/build/ diff --git a/examples/chef/telink/CHIPProjectConfig.h b/examples/chef/telink/CHIPProjectConfig.h new file mode 100755 index 00000000000000..27aa5c0b14517a --- /dev/null +++ b/examples/chef/telink/CHIPProjectConfig.h @@ -0,0 +1,44 @@ +/* + * + * Copyright (c) 2023 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 + +// Use a default pairing code if one hasn't been provisioned in flash. +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021 +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00 + +/** + * CHIP_SYSTEM_CONFIG_PACKETBUFFER_POOL_SIZE + * + * Reduce packet buffer pool size to 8 (default 15) to reduce ram consumption + */ +#define CHIP_SYSTEM_CONFIG_PACKETBUFFER_POOL_SIZE 8 + +// Enable support functions for parsing command-line arguments +#define CHIP_CONFIG_ENABLE_ARG_PARSER 1 + +#define CHIP_DEVICE_CONFIG_DISABLE_SHELL_PING 1 diff --git a/examples/chef/telink/CMakeLists.txt b/examples/chef/telink/CMakeLists.txt new file mode 100755 index 00000000000000..e5216ef566359e --- /dev/null +++ b/examples/chef/telink/CMakeLists.txt @@ -0,0 +1,232 @@ +# +# Copyright (c) 2023 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. +# +cmake_minimum_required(VERSION 3.13.1) + +set(BOARD tlsr9518adk80d) + +get_filename_component(CHIP_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/third_party/connectedhomeip REALPATH) +get_filename_component(TELINK_COMMON ${CHIP_ROOT}/examples/platform/telink REALPATH) +get_filename_component(GEN_DIR ${CHIP_ROOT}/zzz_generated/ REALPATH) +get_filename_component(CHEF ${CMAKE_CURRENT_SOURCE_DIR}/../ REALPATH) + +include(${CHEF}/project_include.cmake) + +get_filename_component(GEN_DIR ${CHEF}/out/${SAMPLE_NAME}/zap-generated REALPATH) + +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD}.overlay") + set(LOCAL_DTC_OVERLAY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD}.overlay") +else() + unset(LOCAL_DTC_OVERLAY_FILE) +endif() + +if(EXISTS "${CHIP_ROOT}/src/platform/telink/${BOARD}.overlay") + set(GLOBAL_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BOARD}.overlay") +else() + unset(GLOBAL_DTC_OVERLAY_FILE) +endif() + +if(DTC_OVERLAY_FILE) + set(DTC_OVERLAY_FILE + "${DTC_OVERLAY_FILE} ${GLOBAL_DTC_OVERLAY_FILE} ${LOCAL_DTC_OVERLAY_FILE}" + CACHE STRING "" FORCE + ) +else() + set(DTC_OVERLAY_FILE ${GLOBAL_DTC_OVERLAY_FILE} ${LOCAL_DTC_OVERLAY_FILE}) +endif() + +set(CONF_FILE ${CHIP_ROOT}/config/telink/app/zephyr.conf prj.conf) + +# Load NCS/Zephyr build system +list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/telink/chip-module) +find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) + +project(chip-telink-chef-example) + +include(${CHIP_ROOT}/config/telink/app/enable-gnu-std.cmake) +include(${CHIP_ROOT}/src/app/chip_data_model.cmake) + +target_compile_options(app PRIVATE -fpermissive) + +target_include_directories(app PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + ${GEN_DIR}/app-common + ${GEN_DIR} + ${CHEF} + ${GEN_DIR}/../ + ${CHIP_ROOT}/src + ${CHEF}/shell_common/include + ${TELINK_COMMON}/common/include + ${TELINK_COMMON}/util/include +) + +if (CONFIG_CHIP_LIB_SHELL) + target_sources(app PRIVATE + ${CHEF}/shell_common/globals.cpp + ${CHEF}/shell_common/cmd_misc.cpp + ${CHEF}/shell_common/cmd_otcli.cpp + ) + + target_include_directories(app PRIVATE + ${CHEF}/shell_common/include + ) +endif() + +add_definitions( + "-DCHIP_ADDRESS_RESOLVE_IMPL_INCLUDE_HEADER=" +) + +target_sources(app PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp + ${CHEF}/common/stubs.cpp +) + +message(STATUS ${CHEF}/devices/${SAMPLE_NAME}.zap) + +chip_configure_data_model(app + INCLUDE_SERVER + ZAP_FILE ${CHEF}/devices/${SAMPLE_NAME}.zap +) + + +if(CONFIG_CHIP_OTA_REQUESTOR) + target_sources(app PRIVATE ${TELINK_COMMON}/util/src/OTAUtil.cpp) +endif() + +if (CONFIG_CHIP_PW_RPC) + +# Make all targets created below depend on zephyr_interface to inherit MCU-related compilation flags +link_libraries($) + +set(PIGWEED_ROOT "${CHIP_ROOT}/third_party/pigweed/repo") +include(${PIGWEED_ROOT}/pw_build/pigweed.cmake) +include(${PIGWEED_ROOT}/pw_protobuf_compiler/proto.cmake) + +include($ENV{PW_ROOT}/pw_assert/backend.cmake) +include($ENV{PW_ROOT}/pw_log/backend.cmake) +include($ENV{PW_ROOT}/pw_sys_io/backend.cmake) + +pw_set_module_config(pw_rpc_CONFIG pw_rpc.disable_global_mutex_config) +pw_set_backend(pw_log pw_log_basic) +pw_set_backend(pw_assert.check pw_assert_log.check_backend) +pw_set_backend(pw_assert.assert pw_assert.assert_compatibility_backend) +pw_set_backend(pw_sys_io pw_sys_io.telink) + +set(dir_pw_third_party_nanopb "${CHIP_ROOT}/third_party/nanopb/repo" CACHE STRING "" FORCE) + +add_subdirectory(third_party/connectedhomeip/third_party/pigweed/repo) +add_subdirectory(third_party/connectedhomeip/third_party/nanopb/repo) +add_subdirectory(third_party/connectedhomeip/examples/platform/telink/pw_sys_io) + +pw_proto_library(attributes_service + SOURCES + ${CHIP_ROOT}/examples/common/pigweed/protos/attributes_service.proto + INPUTS + ${CHIP_ROOT}/examples/common/pigweed/protos/attributes_service.options + PREFIX + attributes_service + STRIP_PREFIX + ${CHIP_ROOT}/examples/common/pigweed/protos + DEPS + pw_protobuf.common_proto +) + +pw_proto_library(descriptor_service + SOURCES + ${CHIP_ROOT}/examples/common/pigweed/protos/descriptor_service.proto + PREFIX + descriptor_service + STRIP_PREFIX + ${CHIP_ROOT}/examples/common/pigweed/protos + DEPS + pw_protobuf.common_proto +) + +pw_proto_library(device_service + SOURCES + ${CHIP_ROOT}/examples/common/pigweed/protos/device_service.proto + INPUTS + ${CHIP_ROOT}/examples/common/pigweed/protos/device_service.options + PREFIX + device_service + STRIP_PREFIX + ${CHIP_ROOT}/examples/common/pigweed/protos + DEPS + pw_protobuf.common_proto +) + +pw_proto_library(ot_cli_service + SOURCES + ${CHIP_ROOT}/examples/common/pigweed/protos/ot_cli_service.proto + INPUTS + ${CHIP_ROOT}/examples/common/pigweed/protos/ot_cli_service.options + STRIP_PREFIX + ${CHIP_ROOT}/examples/common/pigweed/protos + PREFIX + ot_cli_service + DEPS + pw_protobuf.common_proto +) + +pw_proto_library(thread_service + SOURCES + ${CHIP_ROOT}/examples/common/pigweed/protos/thread_service.proto + INPUTS + ${CHIP_ROOT}/examples/common/pigweed/protos/thread_service.options + STRIP_PREFIX + ${CHIP_ROOT}/examples/common/pigweed/protos + PREFIX + thread_service + DEPS + pw_protobuf.common_proto +) + +target_sources(app PRIVATE + ../../common/pigweed/RpcService.cpp + ../../common/pigweed/telink/PigweedLoggerMutex.cpp + ${TELINK_COMMON}/Rpc.cpp + ${TELINK_COMMON}/util/src/PigweedLogger.cpp +) + +target_include_directories(app PRIVATE + ${PIGWEED_ROOT}/pw_sys_io/public + ${CHIP_ROOT}/src/lib/support + ${CHIP_ROOT}/src/system + ${TELINK_COMMON} + ../../common + ../../common/pigweed + ../../common/pigweed/telink) + +target_compile_options(app PRIVATE + "-DPW_RPC_ATTRIBUTE_SERVICE=1" + "-DPW_RPC_DESCRIPTOR_SERVICE=1" + "-DPW_RPC_DEVICE_SERVICE=1" + "-DPW_RPC_THREAD_SERVICE=1" +) + +target_link_libraries(app PRIVATE + attributes_service.nanopb_rpc + descriptor_service.nanopb_rpc + device_service.nanopb_rpc + thread_service.nanopb_rpc + pw_checksum + pw_hdlc + pw_hdlc.pw_rpc + pw_log + pw_rpc.server + pw_sys_io +) + +endif(CONFIG_CHIP_PW_RPC) diff --git a/examples/chef/telink/main.cpp b/examples/chef/telink/main.cpp new file mode 100644 index 00000000000000..2df1c8378d0f78 --- /dev/null +++ b/examples/chef/telink/main.cpp @@ -0,0 +1,148 @@ +/* + * + * Copyright (c) 2023 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 + +#include + +#include "platform/CHIPDeviceLayer.h" +#include + +#include +#include + +#include +#include + +#if CONFIG_ENABLE_CHIP_SHELL || CONFIG_CHIP_LIB_SHELL +#include +#endif + +#ifdef CONFIG_ENABLE_PW_RPC +#include "Rpc.h" +#endif + +LOG_MODULE_DECLARE(app, CONFIG_CHIP_APP_LOG_LEVEL); + +using namespace chip; +using namespace chip::Shell; +using namespace chip::DeviceLayer; + +int main() +{ + CHIP_ERROR err = CHIP_NO_ERROR; + +#ifdef CONFIG_ENABLE_PW_RPC + rpc::Init(); +#endif + err = chip::Platform::MemoryInit(); + if (err != CHIP_NO_ERROR) + { + ChipLogError(AppServer, "Platform::MemoryInit() failed"); + return 1; + } + err = PlatformMgr().InitChipStack(); + if (err != CHIP_NO_ERROR) + { + ChipLogError(AppServer, "PlatformMgr().InitChipStack() failed"); + return 1; + } + + // Network connectivity +#if CHIP_DEVICE_CONFIG_ENABLE_WPA + ConnectivityManagerImpl().StartWiFiManagement(); +#endif + +#if defined(CHIP_ENABLE_OPENTHREAD) + err = ThreadStackMgr().InitThreadStack(); + if (err != CHIP_NO_ERROR) + { + ChipLogError(AppServer, "ThreadStackMgr().InitThreadStack() failed"); + return 1; + } + +#ifdef CONFIG_OPENTHREAD_MTD + err = ConnectivityMgr().SetThreadDeviceType(ConnectivityManager::kThreadDeviceType_MinimalEndDevice); +#else + err = ConnectivityMgr().SetThreadDeviceType(ConnectivityManager::kThreadDeviceType_Router); +#endif + if (err != CHIP_NO_ERROR) + { + ChipLogError(AppServer, "ConnectivityMgr().SetThreadDeviceType() failed"); + return 1; + } +#endif + + // Device Attestation & Onboarding codes + chip::Credentials::SetDeviceAttestationCredentialsProvider(chip::Credentials::Examples::GetExampleDACProvider()); +#if CHIP_DEVICE_CONFIG_ENABLE_EXTENDED_DISCOVERY + chip::app::DnssdServer::Instance().SetExtendedDiscoveryTimeoutSecs(kExtDiscoveryTimeoutSecs); +#endif /* CHIP_DEVICE_CONFIG_ENABLE_EXTENDED_DISCOVERY */ + + // Start IM server + static chip::CommonCaseDeviceServerInitParams initParams; + (void) initParams.InitializeStaticResourcesBeforeServerInit(); + err = chip::Server::GetInstance().Init(initParams); + if (err != CHIP_NO_ERROR) + { + return 1; + } + + chip::DeviceLayer::ConfigurationMgr().LogDeviceConfig(); + + err = chip::DeviceLayer::PlatformMgr().StartEventLoopTask(); + if (err != CHIP_NO_ERROR) + { + ChipLogError(AppServer, "PlatformMgr().StartEventLoopTask() failed"); + } + + // When SoftAP support becomes available, it should be added here. +#if CONFIG_NETWORK_LAYER_BLE + PrintOnboardingCodes(chip::RendezvousInformationFlag(chip::RendezvousInformationFlag::kBLE)); +#else + PrintOnboardingCodes(chip::RendezvousInformationFlag(chip::RendezvousInformationFlag::kOnNetwork)); +#endif /* CONFIG_NETWORK_LAYER_BLE */ + + // Starts commissioning window automatically. Starts BLE advertising when BLE enabled + if (chip::Server::GetInstance().GetCommissioningWindowManager().OpenBasicCommissioningWindow() != CHIP_NO_ERROR) + { + ChipLogError(AppServer, "OpenBasicCommissioningWindow() failed"); + } + +#if CONFIG_CHIP_LIB_SHELL + int rc = Engine::Root().Init(); + if (rc != 0) + { + ChipLogError(AppServer, "Streamer initialization failed: %d", rc); + return 1; + } + + cmd_misc_init(); + cmd_otcli_init(); +#endif + +#if CHIP_SHELL_ENABLE_CMD_SERVER + cmd_app_server_init(); +#endif + +#if CONFIG_CHIP_LIB_SHELL + Engine::Root().RunMainLoop(); +#endif + + return 0; +} diff --git a/examples/chef/telink/prj.conf b/examples/chef/telink/prj.conf new file mode 100755 index 00000000000000..d83c730a8f61e2 --- /dev/null +++ b/examples/chef/telink/prj.conf @@ -0,0 +1,72 @@ +# +# Copyright (c) 2023 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. +# + +# This sample uses sample-defaults.conf to set options common for all +# samples. This file should contain only options specific for this sample +# or overrides of default values. + +# enable GPIO +CONFIG_GPIO=y + +# enable PWM +CONFIG_PWM=y + +# OpenThread configs +CONFIG_OPENTHREAD_MTD=y +CONFIG_CHIP_ENABLE_SLEEPY_END_DEVICE_SUPPORT=y +CONFIG_CHIP_THREAD_SSED=n + +# Default OpenThread network settings +CONFIG_OPENTHREAD_PANID=4660 +CONFIG_OPENTHREAD_CHANNEL=15 +CONFIG_OPENTHREAD_NETWORK_NAME="OpenThreadDemo" +CONFIG_OPENTHREAD_XPANID="11:11:11:11:22:22:22:22" + +# Disable Matter OTA DFU +CONFIG_CHIP_OTA_REQUESTOR=n + +# CHIP configuration +CONFIG_CHIP_PROJECT_CONFIG="CHIPProjectConfig.h" +CONFIG_CHIP_OPENTHREAD_CONFIG="../../platform/telink/project_include/OpenThreadConfig.h" + +CONFIG_CHIP_DEVICE_VENDOR_ID=65521 +# 32774 == 0x8006 (example contact-sensor-app) +CONFIG_CHIP_DEVICE_PRODUCT_ID=32769 +CONFIG_CHIP_DEVICE_TYPE=65535 + +CONFIG_CHIP_DEVICE_SOFTWARE_VERSION=1 +CONFIG_CHIP_DEVICE_SOFTWARE_VERSION_STRING="2023" + +# Enable CHIP pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# CHIP shell +CONFIG_CHIP_LIB_SHELL=n +CONFIG_OPENTHREAD_SHELL=n +CONFIG_SHELL=n + +# Disable factory data support. +CONFIG_CHIP_FACTORY_DATA=n +CONFIG_CHIP_FACTORY_DATA_BUILD=n +CONFIG_CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE=n +CONFIG_CHIP_CERTIFICATION_DECLARATION_STORAGE=n + +# Enable Power Management +CONFIG_PM=n + +# Custom RF power values +CONFIG_B91_BLE_CTRL_RF_POWER_P9P11DBM=y +CONFIG_OPENTHREAD_DEFAULT_TX_POWER=9 diff --git a/examples/chef/telink/rpc.overlay b/examples/chef/telink/rpc.overlay new file mode 100644 index 00000000000000..a97621181efc75 --- /dev/null +++ b/examples/chef/telink/rpc.overlay @@ -0,0 +1,47 @@ +# +# Copyright (c) 2020 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. +# + +# This file should be used as a configuration overlay to build Pigweed RPCs to +# lighting-app. + +# Enable Pigweed RPC +CONFIG_CHIP_PW_RPC=y + +# Add support for C++17 to build Pigweed components +CONFIG_STD_CPP14=n +CONFIG_STD_CPP17=y + +# Add support for Zephyr console component to use it for Pigweed console purposes +CONFIG_CONSOLE_SUBSYS=y +CONFIG_CONSOLE_GETCHAR=y +CONFIG_CONSOLE_PUTCHAR_BUFSIZE=256 + +# Disable features which may interfere with Pigweed HDLC transport +CONFIG_SHELL=n +CONFIG_OPENTHREAD_SHELL=n +CONFIG_BOOT_BANNER=n + +# Configure Zephyr logger with defaults backends disabled as the app provides its own, +# based on Pigweed HDLC. +CONFIG_LOG=y +CONFIG_LOG_MODE_MINIMAL=n +CONFIG_LOG_MODE_IMMEDIATE=y +CONFIG_LOG_BACKEND_UART=n +CONFIG_LOG_BACKEND_RTT=n +CONFIG_LOG_OUTPUT=y + +# Increase zephyr tty rx buffer +CONFIG_CONSOLE_GETCHAR_BUFSIZE=128 diff --git a/examples/chef/telink/third_party/connectedhomeip b/examples/chef/telink/third_party/connectedhomeip new file mode 120000 index 00000000000000..c866b86874994d --- /dev/null +++ b/examples/chef/telink/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../.. \ No newline at end of file