diff --git a/integrations/docker/images/chip-build-tizen/tizen-sdk-installer/install.sh b/integrations/docker/images/chip-build-tizen/tizen-sdk-installer/install.sh index f4c3222cd5a599..99fd9c3334d153 100755 --- a/integrations/docker/images/chip-build-tizen/tizen-sdk-installer/install.sh +++ b/integrations/docker/images/chip-build-tizen/tizen-sdk-installer/install.sh @@ -44,17 +44,17 @@ function show_help() { echo "Example: $SCRIPT_NAME --tizen-sdk-path ~/tizen-sdk --tizen-version 6.0 --install-dependencies" echo echo "Options:" - echo " --help Display this information" + echo " -h, --help Display this information" echo " --tizen-sdk-path Set directory where Tizen will be installed. Default is $TIZEN_SDK_ROOT" echo " --tizen-sdk-data-path Set directory where Tizen have data. Default is $TIZEN_SDK_DATA_PATH" echo " --install-dependencies This options install all dependencies." echo " --tizen-version Select Tizen version. Default is $TIZEN_VERSION" - echo " --override-secret-tool Without password manager circumvents the requirement of having functional D-Bus Secrets service" + echo " --override-secret-tool Circumvent the requirement of having functional D-Bus Secrets service." echo echo "Note:" echo "The script should run fully with ubuntu. For other distributions you may have to manually" echo "install all needed dependencies. Use the script specifying --tizen-sdk-path with or" - echo "without --tizen-version. The script will only install the tizen platform for Matter." + echo "without --tizen-version. The script will only install Tizen platform for Matter." } # ------------------------------------------------------------------------------ @@ -66,7 +66,7 @@ function error() { # ------------------------------------------------------------------------------ # Info print function function info() { - echo "$COLOR_GREEN$1$COLOR_NONE" + echo "$COLOR_GREEN[INFO]: $1$COLOR_NONE" } # ------------------------------------------------------------------------------ @@ -78,7 +78,7 @@ function warning() { # ------------------------------------------------------------------------------ # Show dependencies function show_dependencies() { - warning "Need dependencies for use this script installation SDK: cpio wget unzip unrpm" + warning "Need dependencies for use this script installation SDK: cpio unrpm unzip wget" warning "Need dependencies for Tizen SDK: JAVA JRE >=8.0" } @@ -135,10 +135,11 @@ function install_tizen_sdk() { TIZEN_SDK_SYSROOT="$TIZEN_SDK_ROOT/platforms/tizen-$TIZEN_VERSION/mobile/rootstraps/mobile-$TIZEN_VERSION-device.core" - # Get tizen studio CLI - info "Get tizen studio CLI [...]" cd "$TMP_DIR" || return + # Get Tizen Studio CLI + info "Downloading Tizen Studio CLI..." + # Download URL="http://download.tizen.org/sdk/tizenstudio/official/binary/" PKG_ARR=( @@ -150,7 +151,7 @@ function install_tizen_sdk() { download "$URL" "${PKG_ARR[@]}" # Get toolchain - info "Get toolchain" + info "Downloading Tizen toolchain..." # Download URL="http://download.tizen.org/sdk/tizenstudio/official/binary/" @@ -159,11 +160,11 @@ function install_tizen_sdk() { "sbi-toolchain-gcc-9.2.cpp.app_2.2.16_ubuntu-64.zip") download "$URL" "${PKG_ARR[@]}" - # Get tizen sysroot - info "Get tizen sysroot" + # Get Tizen sysroot + info "Downloading Tizen sysroot..." # Base sysroot - # Different versions of tizen have different rootstrap versions + # Different versions of Tizen have different rootstrap versions URL="http://download.tizen.org/sdk/tizenstudio/official/binary/" PKG_ARR=( "mobile-$TIZEN_VERSION-core-add-ons_*_ubuntu-64.zip" @@ -224,7 +225,7 @@ function install_tizen_sdk() { download "$URL" "${PKG_ARR[@]}" # Install all - info "Installation Tizen SDK [...]" + info "Installing Tizen SDK..." unzip -o '*.zip' cp -rf data/* "$TIZEN_SDK_ROOT" @@ -234,12 +235,12 @@ function install_tizen_sdk() { # Install secret tool or not if ("$SECRET_TOOL"); then - info "Override secret tool" + info "Overriding secret tool..." cp "$SCRIPT_DIR/secret-tool.py" "$TIZEN_SDK_ROOT/tools/certificate-encryptor/secret-tool" chmod 0755 "$TIZEN_SDK_ROOT/tools/certificate-encryptor/secret-tool" fi - # Configure tizen cli + # Configure Tizen CLI echo "TIZEN_SDK_INSTALLED_PATH=$TIZEN_SDK_ROOT" >"$TIZEN_SDK_ROOT/sdk.info" echo "TIZEN_SDK_DATA_PATH=$TIZEN_SDK_DATA_PATH" >>"$TIZEN_SDK_ROOT/sdk.info" ln -sf "$TIZEN_SDK_DATA_PATH/.tizen-cli-config" "$TIZEN_SDK_ROOT/tools/.tizen-cli-config" @@ -251,9 +252,12 @@ function install_tizen_sdk() { ln -sf ../../lib/libcap.so.2 "$TIZEN_SDK_SYSROOT/usr/lib/libcap.so" ln -sf openssl1.1.pc "$TIZEN_SDK_SYSROOT/usr/lib/pkgconfig/openssl.pc" + info "Done." + echo + # Information on necessary environment variables - warning "You must add the appropriate environment variables before proceeding with matter." - echo "$COLOR_YELLOW" + warning "Before proceeding with Matter export environment variables as follows:" + echo -n "$COLOR_YELLOW" echo "export TIZEN_VESRSION=\"$TIZEN_VERSION\"" echo "export TIZEN_SDK_ROOT=\"$(realpath "$TIZEN_SDK_ROOT")\"" echo "export TIZEN_SDK_TOOLCHAIN=\"\$TIZEN_SDK_ROOT/tools/arm-linux-gnueabi-gcc-9.2\"" @@ -264,7 +268,7 @@ function install_tizen_sdk() { while (($#)); do case $1 in - --help) + -h | --help) show_help exit 0 ;; @@ -308,20 +312,19 @@ if [ "$INSTALL_DEPENDENCIES" = true ]; then show_dependencies exit 1 fi -else - show_dependencies fi # ------------------------------------------------------------------------------ -# Checking dependencies needed to install the tizen platform -for PKG in 'cpio' 'unzip' 'wget' 'unrpm'; do +# Checking dependencies needed to install Tizen platform +info "Checking required tools: cpio, java, unrpm, unzip, wget" +for PKG in 'cpio' 'java' 'unrpm' 'unzip' 'wget'; do if ! command -v "$PKG" &>/dev/null; then - warning "Not found $PKG" + error "Required tool not found: $PKG" dep_lost=1 fi done if [[ $dep_lost ]]; then - error "You need install dependencies before [HINT]: On Ubuntu-like distro run: sudo apt install ${DEPENDENCIES[@]}" + echo "[HINT]: sudo apt-get install ${DEPENDENCIES[*]}" exit 1 fi diff --git a/integrations/docker/images/chip-build-vscode/Dockerfile b/integrations/docker/images/chip-build-vscode/Dockerfile index eb49bab5f87f7c..755bc4f316a795 100644 --- a/integrations/docker/images/chip-build-vscode/Dockerfile +++ b/integrations/docker/images/chip-build-vscode/Dockerfile @@ -109,6 +109,7 @@ ENV ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb ENV TIZEN_VERSION 6.0 ENV TIZEN_SDK_ROOT /opt/tizen-sdk +ENV TIZEN_SDK_TOOLCHAIN $TIZEN_SDK_ROOT/tools/arm-linux-gnueabi-gcc-9.2 ENV TIZEN_SDK_SYSROOT $TIZEN_SDK_ROOT/platforms/tizen-$TIZEN_VERSION/mobile/rootstraps/mobile-$TIZEN_VERSION-device.core ENV FVP_CORSTONE_300_PATH=/opt/FVP_Corstone_SSE-300 diff --git a/integrations/docker/images/chip-build/Dockerfile b/integrations/docker/images/chip-build/Dockerfile index 41e3687bea317a..00d2d475dcb2f0 100644 --- a/integrations/docker/images/chip-build/Dockerfile +++ b/integrations/docker/images/chip-build/Dockerfile @@ -57,6 +57,7 @@ RUN set -x \ ninja-build \ openjdk-8-jdk \ pkg-config \ + python-is-python3 \ python3.9 \ python3.9-dev \ python3.9-venv \ @@ -120,6 +121,30 @@ RUN set -x \ && rm -rf bloaty \ && : # last line +# Need newer version of include-what-you-use +RUN set -x \ + && apt-get update \ + # Install build and runtime requirements for IWYU + && DEBIAN_FRONTEND=noninteractive apt-get install -fy --fix-missing clang-12 libclang-12-dev \ + # Build and install IWYU + && git clone --depth=1 --branch=clang_12 https://github.com/include-what-you-use/include-what-you-use.git \ + && mkdir -p include-what-you-use/build \ + && cd include-what-you-use/build \ + && cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr/lib/llvm-12 -DIWYU_LINK_CLANG_DYLIB=OFF .. \ + && make -j8 \ + && make install \ + # Save clang-12 files, so we can restore them after build dependencies cleanup + && tar -cf clang-12-files.tar $(dpkg -L libclang-common-12-dev |grep /include) /usr/lib/llvm-12/lib/libLLVM-12.so.1 \ + # Cleanup build dependencies + && apt autoremove -fy clang-12 libclang-12-dev \ + && rm -rf /var/lib/apt/lists/ \ + # Restore clang-12 files + && tar -xf clang-12-files.tar -C / \ + # Cleanup + && cd ../.. \ + && rm -rf include-what-you-use \ + && : # last line + # Build glib-2.0 from source with enabled thread sanitizer. This is needed for # running CHIP tests with TSAN enabled. When running applications with TSAN # all shared libraries should be built with TSAN enabled, otherwise TSAN might diff --git a/integrations/docker/images/chip-build/version b/integrations/docker/images/chip-build/version index c20ee11baccd68..e0ef95541880f0 100644 --- a/integrations/docker/images/chip-build/version +++ b/integrations/docker/images/chip-build/version @@ -1 +1 @@ -0.6.13 Version bump reason: Update zap to latest release +0.6.14 Version bump reason: Add checking and verification support for includes using IWYU diff --git a/scripts/helpers/iwyu-check.py b/scripts/helpers/iwyu-check.py new file mode 100755 index 00000000000000..261544a3ecaad9 --- /dev/null +++ b/scripts/helpers/iwyu-check.py @@ -0,0 +1,200 @@ +#!/usr/bin/env -S python3 -B + +# 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 contextlib +import glob +import json +import logging +import os +import re +import shutil +import subprocess +import sys +from pathlib import Path + +import click +import coloredlogs + +# Supported log levels, mapping string values required for argument +# parsing into logging constants +__LOG_LEVELS__ = { + 'debug': logging.DEBUG, + 'info': logging.INFO, + 'warn': logging.WARN, + 'fatal': logging.FATAL, +} + +root_dir = os.path.dirname(os.path.realpath(__file__)) +proj_root_dir = os.path.join(Path(root_dir).parent.parent) + + +def find_program(names): + for name in names: + found = shutil.which(name) + if found is not None: + return found + + +@click.command() +@click.option( + '--log-level', + default='INFO', + type=click.Choice(__LOG_LEVELS__.keys(), case_sensitive=False), + help='Determines the verbosity of script output.') +@click.option( + '--no-log-timestamps', + default=False, + is_flag=True, + help='Skip timestamps in log output') +@click.option( + '--compile-commands-glob', + show_default=True, + default=os.path.join(proj_root_dir, "out", "debug", "compile_commands*.json"), + help='Set global pattern for compile_commands.json files' +) +@click.option( + '--scanning-destination', + show_default=True, + default=os.path.join(proj_root_dir, "src", "platform"), + help='Set scanning destination file(s) or directory /ies in project' +) +@click.option( + '--mapping-file-dir', + help='Set mapping file directory /ies manually. File should have name iwyu.imp' +) +@click.option( + '--iwyu-args', + show_default=True, + default="-Xiwyu --no_fwd_decls", + help='Set custom arg(s) for include what you use' +) +@click.option( + '--clang-args', + default="", + help='Set custom arg(s) for clang' +) +def main(compile_commands_glob, scanning_destination, mapping_file_dir, + iwyu_args, clang_args, log_level, no_log_timestamps): + # Ensures somewhat pretty logging of what is going on + log_fmt = '%(asctime)s %(levelname)-7s %(message)s' + if no_log_timestamps: + log_fmt = '%(levelname)-7s %(message)s' + coloredlogs.install(level=__LOG_LEVELS__[log_level], fmt=log_fmt) + + # checking if a program IWYU exists + iwyu = find_program(('iwyu_tool', 'iwyu_tool.py')) + + if iwyu is None: + logging.error("Can't find IWYU") + sys.exit(1) + + # For iterating how many files had problems with includes + warning_in_files = 0 + + platform = "" + compile_commands_glob = glob.glob(compile_commands_glob) + + if not compile_commands_glob: + logging.error("Can't find compile_commands.json file(s)") + sys.exit(1) + + for compile_commands in compile_commands_glob: + + compile_commands_path = os.path.dirname(compile_commands) + compile_commands_file = os.path.join(compile_commands_path, "compile_commands.json") + logging.debug("Copy compile command file %s to %s", compile_commands, compile_commands_file) + + with contextlib.suppress(shutil.SameFileError): + shutil.copyfile(compile_commands, compile_commands_file) + + # Prase json file for find target name + with open(compile_commands, 'r') as json_data: + json_data = json.load(json_data) + + for key in json_data: + find_re = re.search(r'^.*/src/platform*?\/(.*)/.*$', key['file']) + if find_re is not None: + platform = find_re.group(1) + break + if not platform: + logging.error("Can't find platform") + sys.exit(1) + + if not mapping_file_dir: + mapping_file_dir = os.path.join(root_dir, "platforms", platform) + + # Platform specific clang arguments, as some platform + # may needed some hacks for clang compiler for work properly. + platform_clang_args = [] + + if platform == "Tizen": + platform_clang_args = [ + "--target=arm-linux-gnueabi", + "-I$TIZEN_SDK_TOOLCHAIN/arm-tizen-linux-gnueabi/include/c++/9.2.0", + "-I$TIZEN_SDK_TOOLCHAIN/arm-tizen-linux-gnueabi/include/c++/9.2.0/arm-tizen-linux-gnueabi", + "-I$TIZEN_SDK_TOOLCHAIN/lib/gcc/arm-tizen-linux-gnueabi/9.2.0/include", + ] + + # TODO: Add another platform for easy scanning + # Actually works scanning for platform: tizen, darwin, linux other not tested yet. + + command_arr = [ + iwyu, + "-p", compile_commands_path, scanning_destination, + "--", iwyu_args, + "-Xiwyu", "--mapping_file=" + mapping_file_dir + "/iwyu.imp", + ] + platform_clang_args + [clang_args] + + logging.info("Used compile commands: %s", compile_commands) + logging.info("Scanning includes for platform: %s", platform) + logging.info("Scanning destination: %s", scanning_destination) + + logging.debug("Command: %s", " ".join(command_arr)) + status = subprocess.Popen(" ".join(command_arr), + shell=True, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + + logging.info("============== IWYU output start ================") + + logger = logging.info + while status.poll() is None: + line = status.stdout.readline().rstrip() + + if re.match(r"^warning:.*$", line): + logger = logging.warning + elif re.match(r"^.*([A-Za-z0-9]+(/[A-Za-z0-9]+)+)\.cpp should [a-zA-Z]+ these lines:$", line): + logger = logging.warning + elif re.match(r"^.*([A-Za-z0-9]+(/[A-Za-z0-9]+)+)\.[a-zA-Z]+ has correct #includes/fwd-decls\)$", line): + logger = logging.info + elif re.match(r"^The full include-list for .*$", line): + logger = logging.warning + warning_in_files += 1 + + logger("%s", line) + + logging.info("============== IWYU output end ================") + + if warning_in_files: + logging.error("Number of files with include issues: %d", warning_in_files) + sys.exit(2) + else: + logging.info("Every include looks good!") + + +if __name__ == '__main__': + main() diff --git a/scripts/helpers/platforms/Darwin/iwyu.imp b/scripts/helpers/platforms/Darwin/iwyu.imp new file mode 100644 index 00000000000000..0364fe5e198361 --- /dev/null +++ b/scripts/helpers/platforms/Darwin/iwyu.imp @@ -0,0 +1,3 @@ +[ + { ref: "../iwyu.imp" }, +] diff --git a/scripts/helpers/platforms/EFR32/iwyu.imp b/scripts/helpers/platforms/EFR32/iwyu.imp new file mode 100644 index 00000000000000..0364fe5e198361 --- /dev/null +++ b/scripts/helpers/platforms/EFR32/iwyu.imp @@ -0,0 +1,3 @@ +[ + { ref: "../iwyu.imp" }, +] diff --git a/scripts/helpers/platforms/Linux/iwyu.imp b/scripts/helpers/platforms/Linux/iwyu.imp new file mode 100644 index 00000000000000..0364fe5e198361 --- /dev/null +++ b/scripts/helpers/platforms/Linux/iwyu.imp @@ -0,0 +1,3 @@ +[ + { ref: "../iwyu.imp" }, +] diff --git a/scripts/helpers/platforms/Tizen/iwyu.imp b/scripts/helpers/platforms/Tizen/iwyu.imp new file mode 100644 index 00000000000000..f314087060e005 --- /dev/null +++ b/scripts/helpers/platforms/Tizen/iwyu.imp @@ -0,0 +1,10 @@ +[ + { ref: "../iwyu.imp" }, + + { include: [ '"bluetooth_type.h"', private, '', public ] }, + { include: [ '"dns-sd.h"', private, '', public ] }, + { include: [ '"thread-type.h"', private, '', public ] }, + { include: [ '"thread.h"', private, '', public ] }, + { include: [ '', private, '', public ] }, + { include: [ '', private, '', public ] }, +] diff --git a/scripts/helpers/platforms/android/iwyu.imp b/scripts/helpers/platforms/android/iwyu.imp new file mode 100644 index 00000000000000..0364fe5e198361 --- /dev/null +++ b/scripts/helpers/platforms/android/iwyu.imp @@ -0,0 +1,3 @@ +[ + { ref: "../iwyu.imp" }, +] diff --git a/scripts/helpers/platforms/iwyu.imp b/scripts/helpers/platforms/iwyu.imp new file mode 100644 index 00000000000000..5a863b3f3a6208 --- /dev/null +++ b/scripts/helpers/platforms/iwyu.imp @@ -0,0 +1,42 @@ +[ + ## C/C++/* + { include: [ '"bits/shared_ptr.h"', private, '', public ] }, + { include: [ '"cstdlib"', private, '', public ] }, + { include: [ '"iosfwd"', private, '', public ] }, + { include: [ '"ostream"', private, '', public ] }, + { include: [ '"stdlib.h"', private, '', public ] }, + { include: [ '"thread"', private, '', public ] }, + { include: [ '"type_traits"', private, '', public ] }, + { include: [ '', private, '', public ] }, + { symbol: [ 'declval', private, '', public ] }, + { symbol: [ 'tm', private, '', public ] }, + + ## ble/* + { include: [ '"ble/CHIPBleServiceData.h"', private, '', public ] }, + { include: [ '@"ble/Ble.*.h"', private, '', public ] }, + + ## inet/* + { include: [ '"inet/InetInterface.h"', private, '', public ] }, + { include: [ '"inet/IPAddress.h"', private, '', public ] }, + + ## lib/* + { include: [ '"lib/core/CHIPError.h"', private, '', public ] }, + { include: [ '"lib/dnssd/ServiceNaming.h"', private, '', public ] }, + { include: [ '"lib/support/logging/CHIPLogging.h"', private, '', public ] }, + + ## platform/* + { include: [ '"platform/NetworkCommissioning.h"', private, '', public ] }, + { include: [ '"platform/PersistedStorage.h"', private, '', public ] }, + + ## Do not include some Impl headers directly + { include: [ '@"platform/.*/BLEManagerImpl.h"', private, '"platform/internal/BLEManager.h"', private ] }, + { include: [ '@"platform/.*/ConnectivityManagerImpl.h"', private, '', public ] }, + { include: [ '@"platform/.*/KeyValueStoreManagerImpl.h"', private, '', public ] }, + { include: [ '@"platform/.*/PlatformManagerImpl.h"', private, '', public ] }, + { include: [ '@', private, '', public ] }, + + ## Config + { include: [ '@"platform/.*/CHIPDevicePlatformConfig.h"', private, '', public ] }, + { include: [ '@"platform/.*/SystemPlatformConfig.h"', private, '', public ] }, + +] diff --git a/scripts/helpers/platforms/mbed/iwyu.imp b/scripts/helpers/platforms/mbed/iwyu.imp new file mode 100644 index 00000000000000..0364fe5e198361 --- /dev/null +++ b/scripts/helpers/platforms/mbed/iwyu.imp @@ -0,0 +1,3 @@ +[ + { ref: "../iwyu.imp" }, +] diff --git a/src/include/platform/ThreadStackManager.h b/src/include/platform/ThreadStackManager.h index fb2f18b94866ac..df6adfd73b9a62 100644 --- a/src/include/platform/ThreadStackManager.h +++ b/src/include/platform/ThreadStackManager.h @@ -26,6 +26,7 @@ #include #include #include +#include #include #include diff --git a/src/platform/Tizen/AppPreference.cpp b/src/platform/Tizen/AppPreference.cpp index 722a0fd9eb9f54..bc6e8f1097ec35 100644 --- a/src/platform/Tizen/AppPreference.cpp +++ b/src/platform/Tizen/AppPreference.cpp @@ -16,10 +16,21 @@ */ #include "AppPreference.h" + +#include +#include +#include +#include +#include +#include + #include +#include + #include -#include -#include +#include +#include +#include namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/AppPreference.h b/src/platform/Tizen/AppPreference.h index 2fee34cc3bb263..26acf9d7f8c438 100644 --- a/src/platform/Tizen/AppPreference.h +++ b/src/platform/Tizen/AppPreference.h @@ -17,8 +17,9 @@ #pragma once -#include -#include +#include + +#include namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/BLEManagerImpl.cpp b/src/platform/Tizen/BLEManagerImpl.cpp index c60fb56f70417d..9b2d5e2537fe51 100644 --- a/src/platform/Tizen/BLEManagerImpl.cpp +++ b/src/platform/Tizen/BLEManagerImpl.cpp @@ -21,15 +21,47 @@ * Provides an implementation of the BLEManager singleton object * for Tizen platforms. */ -#include -#include -#include +/** + * Note: BLEManager requires ConnectivityManager to be defined beforehand, + * otherwise we will face circular dependency between them. */ +#include -#if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE +/** + * Note: Use public include for BLEManager which includes our local + * platform//BLEManagerImpl.h after defining interface class. */ +#include "platform/internal/BLEManager.h" + +#include + +#include +#include +#include +#include +#include +#include -#include "MainLoop.h" #include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "CHIPDevicePlatformEvent.h" +#include "ChipDeviceScanner.h" +#include "MainLoop.h" namespace chip { namespace DeviceLayer { @@ -1383,5 +1415,3 @@ CHIP_ERROR BLEManagerImpl::CancelConnection() } // namespace Internal } // namespace DeviceLayer } // namespace chip - -#endif // CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE diff --git a/src/platform/Tizen/BLEManagerImpl.h b/src/platform/Tizen/BLEManagerImpl.h index f4c8e903b4e2d7..7723d2dcf62221 100644 --- a/src/platform/Tizen/BLEManagerImpl.h +++ b/src/platform/Tizen/BLEManagerImpl.h @@ -23,11 +23,23 @@ #pragma once -#if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE +#include +#include +#include +#include +#include #include #include -#include + +#include +#include +#include +#include +#include +#include +#include +#include #include "ChipDeviceScanner.h" @@ -263,5 +275,3 @@ inline bool BLEManagerImpl::_IsAdvertising() } // namespace Internal } // namespace DeviceLayer } // namespace chip - -#endif // CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE diff --git a/src/platform/Tizen/BUILD.gn b/src/platform/Tizen/BUILD.gn index e25ab001e591c7..03a858fd2ec1c5 100644 --- a/src/platform/Tizen/BUILD.gn +++ b/src/platform/Tizen/BUILD.gn @@ -37,8 +37,6 @@ static_library("Tizen") { "CHIPDevicePlatformConfig.h", "CHIPDevicePlatformEvent.h", "CHIPPlatformConfig.h", - "ChipDeviceScanner.cpp", - "ChipDeviceScanner.h", "ConfigurationManagerImpl.cpp", "ConfigurationManagerImpl.h", "ConnectivityManagerImpl.cpp", @@ -88,6 +86,8 @@ static_library("Tizen") { "BLEManagerImpl.cpp", "BLEManagerImpl.h", "BlePlatformConfig.h", + "ChipDeviceScanner.cpp", + "ChipDeviceScanner.h", ] } diff --git a/src/platform/Tizen/ChipDeviceScanner.cpp b/src/platform/Tizen/ChipDeviceScanner.cpp index 4a553603ead54e..204895347cb45c 100644 --- a/src/platform/Tizen/ChipDeviceScanner.cpp +++ b/src/platform/Tizen/ChipDeviceScanner.cpp @@ -22,14 +22,18 @@ */ #include "ChipDeviceScanner.h" -#include -#include -#if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE +#include +#include +#include -#include "MainLoop.h" +#include + +#include +#include #include -#include + +#include "MainLoop.h" namespace chip { namespace DeviceLayer { @@ -308,5 +312,3 @@ int ChipDeviceScanner::CreateLEScanFilter(ScanFilterType filterType, ScanFilterD } // namespace Internal } // namespace DeviceLayer } // namespace chip - -#endif // CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE diff --git a/src/platform/Tizen/ChipDeviceScanner.h b/src/platform/Tizen/ChipDeviceScanner.h index 7eb2a9de3e248c..f95f4782ece551 100644 --- a/src/platform/Tizen/ChipDeviceScanner.h +++ b/src/platform/Tizen/ChipDeviceScanner.h @@ -23,18 +23,13 @@ #pragma once -#include - -#if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE +#include +#include #include -#include #include #include -#include - -#include namespace chip { namespace DeviceLayer { @@ -115,5 +110,3 @@ class ChipDeviceScanner } // namespace Internal } // namespace DeviceLayer } // namespace chip - -#endif // CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE diff --git a/src/platform/Tizen/ConfigurationManagerImpl.cpp b/src/platform/Tizen/ConfigurationManagerImpl.cpp index 5d5dc5cc16f2ea..961df4130d4603 100644 --- a/src/platform/Tizen/ConfigurationManagerImpl.cpp +++ b/src/platform/Tizen/ConfigurationManagerImpl.cpp @@ -23,16 +23,16 @@ * for Tizen platforms. */ -#include +#include "ConfigurationManagerImpl.h" -#include #include -#include +#include #include #include -#include -#include -#include + +#include "PosixConfig.h" +#include "WiFiManager.h" +#include "platform/internal/GenericConfigurationManagerImpl.ipp" namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/ConfigurationManagerImpl.h b/src/platform/Tizen/ConfigurationManagerImpl.h index 2dd07d77879c31..ee9ddc5b427b07 100644 --- a/src/platform/Tizen/ConfigurationManagerImpl.h +++ b/src/platform/Tizen/ConfigurationManagerImpl.h @@ -24,9 +24,15 @@ #pragma once -#include +#include +#include -#include +#include +#include +#include + +#include "PosixConfig.h" +#include "platform/internal/GenericConfigurationManagerImpl.h" namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/ConnectivityManagerImpl.cpp b/src/platform/Tizen/ConnectivityManagerImpl.cpp index 41671fa3ba1d24..75a5fb5e5473e0 100644 --- a/src/platform/Tizen/ConnectivityManagerImpl.cpp +++ b/src/platform/Tizen/ConnectivityManagerImpl.cpp @@ -17,32 +17,42 @@ * limitations under the License. */ -#include - +/** + * Note: Use public include for ConnectivityManager which includes our local + * platform//ConnectivityManagerImpl.h after defining interface + * class. */ #include -#include -#include +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI +#include +#endif +#include +#include #include -#include - -#include - +#include +#include +#include +#include +#include +#include + +#include "platform/internal/GenericConnectivityManagerImpl_UDP.ipp" #if INET_CONFIG_ENABLE_TCP_ENDPOINT -#include +#include "platform/internal/GenericConnectivityManagerImpl_TCP.ipp" #endif - #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE -#include +#include "platform/internal/GenericConnectivityManagerImpl_BLE.ipp" #endif - #if CHIP_DEVICE_CONFIG_ENABLE_THREAD -#include +#include "platform/internal/GenericConnectivityManagerImpl_Thread.ipp" +#endif +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI +#include "platform/internal/GenericConnectivityManagerImpl_WiFi.ipp" #endif #if CHIP_DEVICE_CONFIG_ENABLE_WIFI -#include +#include "WiFiManager.h" #endif namespace chip { diff --git a/src/platform/Tizen/ConnectivityManagerImpl.h b/src/platform/Tizen/ConnectivityManagerImpl.h index 69c4e05abb996f..b469b631347b3d 100644 --- a/src/platform/Tizen/ConnectivityManagerImpl.h +++ b/src/platform/Tizen/ConnectivityManagerImpl.h @@ -19,38 +19,37 @@ #pragma once -#include -#include -#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "platform/internal/GenericConnectivityManagerImpl.h" +#include "platform/internal/GenericConnectivityManagerImpl_UDP.h" #if INET_CONFIG_ENABLE_TCP_ENDPOINT -#include +#include "platform/internal/GenericConnectivityManagerImpl_TCP.h" #endif #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE -#include +#include "platform/internal/GenericConnectivityManagerImpl_BLE.h" #else -#include +#include "platform/internal/GenericConnectivityManagerImpl_NoBLE.h" #endif #if CHIP_DEVICE_CONFIG_ENABLE_THREAD -#include +#include "platform/internal/GenericConnectivityManagerImpl_Thread.h" #else -#include +#include "platform/internal/GenericConnectivityManagerImpl_NoThread.h" #endif #if CHIP_DEVICE_CONFIG_ENABLE_WIFI -#include +#include "platform/internal/GenericConnectivityManagerImpl_WiFi.h" #else -#include +#include "platform/internal/GenericConnectivityManagerImpl_NoWiFi.h" #endif -#if CHIP_DEVICE_CONFIG_ENABLE_WIFI -#include "WiFiManager.h" -#endif - -namespace chip { -namespace Inet { -class IPAddress; -} // namespace Inet -} // namespace chip - namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/ConnectivityUtils.cpp b/src/platform/Tizen/ConnectivityUtils.cpp index 6ad5103d7a5b4d..5c5d56b8b9bf80 100644 --- a/src/platform/Tizen/ConnectivityUtils.cpp +++ b/src/platform/Tizen/ConnectivityUtils.cpp @@ -15,8 +15,7 @@ * limitations under the License. */ -#include -#include +#include "ConnectivityUtils.h" // XXX: This is a workaround for a bug in the Tizen SDK header files. It is not // possible to include both and at the same time. @@ -29,12 +28,16 @@ #include #include #include -#include +#include #include #include -#include +#include +#include + +#include #include +#include namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/ConnectivityUtils.h b/src/platform/Tizen/ConnectivityUtils.h index 439e427905ace1..6c8f5c85702d4f 100644 --- a/src/platform/Tizen/ConnectivityUtils.h +++ b/src/platform/Tizen/ConnectivityUtils.h @@ -17,8 +17,9 @@ #pragma once -#include -#include +#include + +#include "platform/internal/CHIPDeviceLayerInternal.h" namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/DeviceInstanceInfoProviderImpl.cpp b/src/platform/Tizen/DeviceInstanceInfoProviderImpl.cpp index 67133eaea0b170..93ad7a18015762 100644 --- a/src/platform/Tizen/DeviceInstanceInfoProviderImpl.cpp +++ b/src/platform/Tizen/DeviceInstanceInfoProviderImpl.cpp @@ -18,7 +18,7 @@ #include "DeviceInstanceInfoProviderImpl.h" -#include +#include "PosixConfig.h" namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/DeviceInstanceInfoProviderImpl.h b/src/platform/Tizen/DeviceInstanceInfoProviderImpl.h index b3b7992cb04aaf..32e6a2cc5abec0 100644 --- a/src/platform/Tizen/DeviceInstanceInfoProviderImpl.h +++ b/src/platform/Tizen/DeviceInstanceInfoProviderImpl.h @@ -18,8 +18,13 @@ #pragma once -#include -#include +#include + +#include + +#include "ConfigurationManagerImpl.h" +#include "PosixConfig.h" +#include "platform/internal/GenericDeviceInstanceInfoProvider.h" namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/DiagnosticDataProviderImpl.cpp b/src/platform/Tizen/DiagnosticDataProviderImpl.cpp index 17e11e56162f1e..ad143a4e642269 100644 --- a/src/platform/Tizen/DiagnosticDataProviderImpl.cpp +++ b/src/platform/Tizen/DiagnosticDataProviderImpl.cpp @@ -21,11 +21,9 @@ * for Tizen platform. */ -#include +#include "DiagnosticDataProviderImpl.h" -#include #include -#include namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/DnssdImpl.cpp b/src/platform/Tizen/DnssdImpl.cpp index 698b70b1c4b94b..e2ab151e948edf 100644 --- a/src/platform/Tizen/DnssdImpl.cpp +++ b/src/platform/Tizen/DnssdImpl.cpp @@ -16,23 +16,32 @@ */ #include "DnssdImpl.h" -#include "MainLoop.h" #include +#include +#include #include -#include #include +#include #include +// Note: Include dns-sd-internal.h is needed, this source file uses some undocumented functions. +#include +#include +#include #include -#include +#include + +#include #include #include #include -#include +#include +#include +#include + +#include "MainLoop.h" -#include -#include #if CHIP_DEVICE_CONFIG_ENABLE_THREAD #include #endif diff --git a/src/platform/Tizen/DnssdImpl.h b/src/platform/Tizen/DnssdImpl.h index 360f264bbbd158..5872fa01e58d14 100644 --- a/src/platform/Tizen/DnssdImpl.h +++ b/src/platform/Tizen/DnssdImpl.h @@ -17,18 +17,22 @@ #pragma once +#include +#include #include #include #include -#include -#include #include -#include - #include #include +#include +#include +#include +#include +#include + namespace chip { namespace Dnssd { diff --git a/src/platform/Tizen/KeyValueStoreManagerImpl.cpp b/src/platform/Tizen/KeyValueStoreManagerImpl.cpp index f1e1753f6399ab..18e4c15c97f190 100644 --- a/src/platform/Tizen/KeyValueStoreManagerImpl.cpp +++ b/src/platform/Tizen/KeyValueStoreManagerImpl.cpp @@ -21,9 +21,18 @@ * Platform-specific key value storage implementation for Tizen. */ -#include "AppPreference.h" +/** + * Note: Use public include for KeyValueStoreManager which includes our local + * platform//KeyValueStoreManagerImpl.h after defining interface + * class. */ #include +#include + +#include + +#include "AppPreference.h" + namespace chip { namespace DeviceLayer { namespace PersistedStorage { diff --git a/src/platform/Tizen/KeyValueStoreManagerImpl.h b/src/platform/Tizen/KeyValueStoreManagerImpl.h index 42f563346a926c..bf3395a38691c1 100644 --- a/src/platform/Tizen/KeyValueStoreManagerImpl.h +++ b/src/platform/Tizen/KeyValueStoreManagerImpl.h @@ -23,6 +23,10 @@ #pragma once +#include + +#include + namespace chip { namespace DeviceLayer { namespace PersistedStorage { diff --git a/src/platform/Tizen/Logging.cpp b/src/platform/Tizen/Logging.cpp index 4c5c8b8643cfa8..da29fc8926ef69 100644 --- a/src/platform/Tizen/Logging.cpp +++ b/src/platform/Tizen/Logging.cpp @@ -15,14 +15,15 @@ * limitations under the License. */ -#include +#include +#include + +#include -#include +#include #include #include - -#include -#include +#include namespace chip { namespace Logging { diff --git a/src/platform/Tizen/MainLoop.cpp b/src/platform/Tizen/MainLoop.cpp index e3f2cf2eceb592..56b5f28af87934 100644 --- a/src/platform/Tizen/MainLoop.cpp +++ b/src/platform/Tizen/MainLoop.cpp @@ -16,6 +16,10 @@ #include "MainLoop.h" +#include +#include +#include + #include #include diff --git a/src/platform/Tizen/MainLoop.h b/src/platform/Tizen/MainLoop.h index a4a67019c4de50..618d45aebe9803 100644 --- a/src/platform/Tizen/MainLoop.h +++ b/src/platform/Tizen/MainLoop.h @@ -18,9 +18,7 @@ #include #include - -#include -#include +#include #include diff --git a/src/platform/Tizen/NetworkCommissioningDriver.h b/src/platform/Tizen/NetworkCommissioningDriver.h index 50137033ccb95b..b9605c34e2b7a6 100644 --- a/src/platform/Tizen/NetworkCommissioningDriver.h +++ b/src/platform/Tizen/NetworkCommissioningDriver.h @@ -17,10 +17,11 @@ #pragma once -#include #include #include +#include + namespace chip { namespace DeviceLayer { namespace NetworkCommissioning { diff --git a/src/platform/Tizen/NetworkCommissioningEthernetDriver.cpp b/src/platform/Tizen/NetworkCommissioningEthernetDriver.cpp index d9e721f217ce0c..6a95f952d77429 100644 --- a/src/platform/Tizen/NetworkCommissioningEthernetDriver.cpp +++ b/src/platform/Tizen/NetworkCommissioningEthernetDriver.cpp @@ -15,17 +15,22 @@ * limitations under the License. */ -#include -#include -#include -#include +#include +#include #include -#include -#include +#include +#include #include +#include #include +#include +#include +#include +#include +#include + namespace chip { namespace DeviceLayer { namespace NetworkCommissioning { diff --git a/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp b/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp index 6a393b621f0a47..8d61c5c4bd3627 100644 --- a/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp +++ b/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp @@ -15,16 +15,20 @@ * limitations under the License. */ +#include +#include + +#include #include -#include -#include +#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include +#include "NetworkCommissioningDriver.h" +#include "ThreadStackManagerImpl.h" namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/NetworkCommissioningWiFiDriver.cpp b/src/platform/Tizen/NetworkCommissioningWiFiDriver.cpp index c45f1b2ec76440..a71c91455cdc59 100644 --- a/src/platform/Tizen/NetworkCommissioningWiFiDriver.cpp +++ b/src/platform/Tizen/NetworkCommissioningWiFiDriver.cpp @@ -15,14 +15,21 @@ * limitations under the License. */ -#include -#include -#include -#include - +#include +#include #include -#include -#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "NetworkCommissioningDriver.h" +#include "WiFiManager.h" namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/PlatformManagerImpl.cpp b/src/platform/Tizen/PlatformManagerImpl.cpp index 6842d008792561..f893eb94ec4f5a 100644 --- a/src/platform/Tizen/PlatformManagerImpl.cpp +++ b/src/platform/Tizen/PlatformManagerImpl.cpp @@ -23,13 +23,22 @@ * for Tizen platforms. */ -#include +/** + * Note: Use public include for PlatformManager which includes our local + * platform//PlatformManager.h after defining interface + * class. */ +#include +#include +#include #include -#include #include -#include -#include + +#include "PosixConfig.h" +#include "platform/internal/GenericPlatformManagerImpl.h" +#include "platform/internal/GenericPlatformManagerImpl.ipp" +#include "platform/internal/GenericPlatformManagerImpl_POSIX.h" +#include "platform/internal/GenericPlatformManagerImpl_POSIX.ipp" namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/PlatformManagerImpl.h b/src/platform/Tizen/PlatformManagerImpl.h index f21cfeae29e565..1c8cfd5502c623 100644 --- a/src/platform/Tizen/PlatformManagerImpl.h +++ b/src/platform/Tizen/PlatformManagerImpl.h @@ -23,7 +23,10 @@ #pragma once -#include +#include +#include + +#include "platform/internal/GenericPlatformManagerImpl_POSIX.h" namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/PosixConfig.cpp b/src/platform/Tizen/PosixConfig.cpp index 9b9e57a55ef0dc..f5c641a2fbc83e 100644 --- a/src/platform/Tizen/PosixConfig.cpp +++ b/src/platform/Tizen/PosixConfig.cpp @@ -24,13 +24,10 @@ * key-value config calls to the correct partition. */ -#include -#include +#include "PosixConfig.h" -#include #include #include -#include namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/PosixConfig.h b/src/platform/Tizen/PosixConfig.h index 459dd98c2ae9c9..197adad14e3907 100644 --- a/src/platform/Tizen/PosixConfig.h +++ b/src/platform/Tizen/PosixConfig.h @@ -23,8 +23,8 @@ #pragma once -#include -#include +#include +#include #include diff --git a/src/platform/Tizen/SystemPlatformConfig.h b/src/platform/Tizen/SystemPlatformConfig.h index 761a1c3a976516..d501e425c86516 100644 --- a/src/platform/Tizen/SystemPlatformConfig.h +++ b/src/platform/Tizen/SystemPlatformConfig.h @@ -24,7 +24,7 @@ #pragma once -#include +#include namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/SystemTimeSupport.cpp b/src/platform/Tizen/SystemTimeSupport.cpp index b885edae978713..bfc33b7dd23a9c 100644 --- a/src/platform/Tizen/SystemTimeSupport.cpp +++ b/src/platform/Tizen/SystemTimeSupport.cpp @@ -23,15 +23,19 @@ * time/clock functions that are suitable for use on the Tizen platform. */ -#include - -#include -#include +#include +#include #include -#include -#include -#include +#include +#include + +#include +#include +#include +#include +#include +#include namespace chip { namespace System { diff --git a/src/platform/Tizen/ThreadStackManagerImpl.cpp b/src/platform/Tizen/ThreadStackManagerImpl.cpp index 1a7087960c0ccc..c7cca4463a606a 100644 --- a/src/platform/Tizen/ThreadStackManagerImpl.cpp +++ b/src/platform/Tizen/ThreadStackManagerImpl.cpp @@ -21,17 +21,38 @@ * for Tizen platform. */ -#include -#include +/** + * Note: ThreadStackManager requires ConnectivityManager to be defined + * beforehand, otherwise we will face circular dependency between them. */ +#include -#include -#include -#include +/** + * Note: Use public include for ThreadStackManager which includes our local + * platform//ThreadStackManagerImpl.h after defining interface + * class. */ #include -#include -#include "ThreadStackManagerImpl.h" +#include + +#include + +#include + +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include + +#include namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/ThreadStackManagerImpl.h b/src/platform/Tizen/ThreadStackManagerImpl.h index 40a4cdca2ae9c8..5671853f24eb8f 100644 --- a/src/platform/Tizen/ThreadStackManagerImpl.h +++ b/src/platform/Tizen/ThreadStackManagerImpl.h @@ -23,14 +23,21 @@ #pragma once -#include +#include +#include + +#include +#include +#include +#include +#include #include -#include -#include +#include +#include +#include -#include -#include +#include "platform/internal/DeviceNetworkInfo.h" namespace chip { namespace DeviceLayer { diff --git a/src/platform/Tizen/WiFiManager.cpp b/src/platform/Tizen/WiFiManager.cpp index e0a6df934e7e5e..7731ffcb26aeb3 100644 --- a/src/platform/Tizen/WiFiManager.cpp +++ b/src/platform/Tizen/WiFiManager.cpp @@ -15,14 +15,22 @@ * limitations under the License. */ -#include +#include "WiFiManager.h" -#if CHIP_DEVICE_CONFIG_ENABLE_WIFI +#include +#include +#include #include +#include + +#include #include +#include +#include +#include + #include "MainLoop.h" -#include "WiFiManager.h" namespace { static constexpr const char * __WiFiDeviceStateToStr(wifi_manager_device_state_e state) @@ -867,4 +875,3 @@ CHIP_ERROR WiFiManager::GetConnectionState(wifi_manager_connection_state_e * con } // namespace Internal } // namespace DeviceLayer } // namespace chip -#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI diff --git a/src/platform/Tizen/WiFiManager.h b/src/platform/Tizen/WiFiManager.h index acbe23157a8fbe..f37e2f1240b7b8 100644 --- a/src/platform/Tizen/WiFiManager.h +++ b/src/platform/Tizen/WiFiManager.h @@ -17,13 +17,17 @@ #pragma once -#if CHIP_DEVICE_CONFIG_ENABLE_WIFI -#include -#include +#include +#include #include #include +#include +#include + +#include "platform/internal/DeviceNetworkInfo.h" + namespace chip { namespace DeviceLayer { namespace Internal { @@ -103,5 +107,3 @@ inline WiFiManager & WiFiMgr() } // namespace Internal } // namespace DeviceLayer } // namespace chip - -#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI