Add checking and verification support for includes using IWYU (#23092)
* Add new script with feature for checking includes in project
* Add build and install IWYU 0.16 on chip-build Docker image and repair lost Tizen env
* Fix includes for ConnectivityManagerImpl.cpp in Tizen
* Fix includes in Tizen platform - First IWYU scan
* Fix includes in ThreadStackManager and BLEManager
* Fix include after commit:
Remove using-directives namespaces in Tizen platform
* Add some rules to IWYU mapping files and fix logging in iwyu_check.py script
* Fix version and restyled
* Compile ChipDeviceScanner only when BLE support is enabled
* Small improvements for Tizen SDK installation script
* Cleanup IWYU mapping files
* Purge clang-12 after compiling IWYU from source
* Show stderr output of include-what-you-use tool
Co-authored-by: Arkadiusz Bokowy <a.bokowy@samsung.com>
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 f4c3222..99fd9c3 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 @@
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 @@
# ------------------------------------------------------------------------------
# Info print function
function info() {
- echo "$COLOR_GREEN$1$COLOR_NONE"
+ echo "$COLOR_GREEN[INFO]: $1$COLOR_NONE"
}
# ------------------------------------------------------------------------------
@@ -78,7 +78,7 @@
# ------------------------------------------------------------------------------
# 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 @@
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 @@
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 @@
"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 @@
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 @@
# 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 @@
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 @@
while (($#)); do
case $1 in
- --help)
+ -h | --help)
show_help
exit 0
;;
@@ -308,20 +312,19 @@
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 eb49bab..755bc4f 100644
--- a/integrations/docker/images/chip-build-vscode/Dockerfile
+++ b/integrations/docker/images/chip-build-vscode/Dockerfile
@@ -109,6 +109,7 @@
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 41e3687..00d2d47 100644
--- a/integrations/docker/images/chip-build/Dockerfile
+++ b/integrations/docker/images/chip-build/Dockerfile
@@ -57,6 +57,7 @@
ninja-build \
openjdk-8-jdk \
pkg-config \
+ python-is-python3 \
python3.9 \
python3.9-dev \
python3.9-venv \
@@ -120,6 +121,30 @@
&& 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 c20ee11..e0ef955 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 0000000..261544a
--- /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 0000000..0364fe5
--- /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 0000000..0364fe5
--- /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 0000000..0364fe5
--- /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 0000000..f314087
--- /dev/null
+++ b/scripts/helpers/platforms/Tizen/iwyu.imp
@@ -0,0 +1,10 @@
+[
+ { ref: "../iwyu.imp" },
+
+ { include: [ '"bluetooth_type.h"', private, '<bluetooth.h>', public ] },
+ { include: [ '"dns-sd.h"', private, '<dns-sd.h>', public ] },
+ { include: [ '"thread-type.h"', private, '<thread.h>', public ] },
+ { include: [ '"thread.h"', private, '<thread.h>', public ] },
+ { include: [ '<thread-type.h>', private, '<thread.h>', public ] },
+ { include: [ '<tizen_error.h>', private, '<tizen.h>', public ] },
+]
diff --git a/scripts/helpers/platforms/android/iwyu.imp b/scripts/helpers/platforms/android/iwyu.imp
new file mode 100644
index 0000000..0364fe5
--- /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 0000000..5a863b3
--- /dev/null
+++ b/scripts/helpers/platforms/iwyu.imp
@@ -0,0 +1,42 @@
+[
+ ## C/C++/*
+ { include: [ '"bits/shared_ptr.h"', private, '<memory>', public ] },
+ { include: [ '"cstdlib"', private, '<cstdlib>', public ] },
+ { include: [ '"iosfwd"', private, '<iosfwd>', public ] },
+ { include: [ '"ostream"', private, '<ostream>', public ] },
+ { include: [ '"stdlib.h"', private, '<cstdlib>', public ] },
+ { include: [ '"thread"', private, '<thread>', public ] },
+ { include: [ '"type_traits"', private, '<type_traits>', public ] },
+ { include: [ '<bits/shared_ptr.h>', private, '<memory>', public ] },
+ { symbol: [ 'declval', private, '<utility>', public ] },
+ { symbol: [ 'tm', private, '<sys/time.h>', public ] },
+
+ ## ble/*
+ { include: [ '"ble/CHIPBleServiceData.h"', private, '<ble/CHIPBleServiceData.h>', public ] },
+ { include: [ '@"ble/Ble.*.h"', private, '<ble/Ble.h>', public ] },
+
+ ## inet/*
+ { include: [ '"inet/InetInterface.h"', private, '<inet/InetInterface.h>', public ] },
+ { include: [ '"inet/IPAddress.h"', private, '<inet/IPAddress.h>', public ] },
+
+ ## lib/*
+ { include: [ '"lib/core/CHIPError.h"', private, '<lib/core/CHIPError.h>', public ] },
+ { include: [ '"lib/dnssd/ServiceNaming.h"', private, '<lib/dnssd/platform/Dnssd.h>', public ] },
+ { include: [ '"lib/support/logging/CHIPLogging.h"', private, '<lib/support/logging/CHIPLogging.h>', public ] },
+
+ ## platform/*
+ { include: [ '"platform/NetworkCommissioning.h"', private, '<platform/NetworkCommissioning.h>', public ] },
+ { include: [ '"platform/PersistedStorage.h"', private, '<platform/PersistedStorage.h>', public ] },
+
+ ## Do not include some Impl headers directly
+ { include: [ '@"platform/.*/BLEManagerImpl.h"', private, '"platform/internal/BLEManager.h"', private ] },
+ { include: [ '@"platform/.*/ConnectivityManagerImpl.h"', private, '<platform/ConnectivityManager.h>', public ] },
+ { include: [ '@"platform/.*/KeyValueStoreManagerImpl.h"', private, '<platform/KeyValueStoreManager.h>', public ] },
+ { include: [ '@"platform/.*/PlatformManagerImpl.h"', private, '<platform/PlatformManager.h>', public ] },
+ { include: [ '@<platform/.*/ThreadStackManagerImpl.h>', private, '<platform/ThreadStackManager.h>', public ] },
+
+ ## Config
+ { include: [ '@"platform/.*/CHIPDevicePlatformConfig.h"', private, '<platform/CHIPDeviceConfig.h>', public ] },
+ { include: [ '@"platform/.*/SystemPlatformConfig.h"', private, '<system/SystemConfig.h>', public ] },
+
+]
diff --git a/scripts/helpers/platforms/mbed/iwyu.imp b/scripts/helpers/platforms/mbed/iwyu.imp
new file mode 100644
index 0000000..0364fe5
--- /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 fb2f18b..df6adfd 100644
--- a/src/include/platform/ThreadStackManager.h
+++ b/src/include/platform/ThreadStackManager.h
@@ -26,6 +26,7 @@
#include <app-common/zap-generated/cluster-objects.h>
#include <app/AttributeAccessInterface.h>
#include <app/util/basic-types.h>
+#include <inet/IPAddress.h>
#include <lib/support/Span.h>
#include <platform/NetworkCommissioning.h>
diff --git a/src/platform/Tizen/AppPreference.cpp b/src/platform/Tizen/AppPreference.cpp
index 722a0fd..bc6e8f1 100644
--- a/src/platform/Tizen/AppPreference.cpp
+++ b/src/platform/Tizen/AppPreference.cpp
@@ -16,10 +16,21 @@
*/
#include "AppPreference.h"
-#include <app_preference.h>
-#include <lib/support/Base64.h>
-#include <lib/support/CHIPMem.h>
+
+#include <algorithm>
+#include <cstdint>
+#include <cstdlib>
+#include <cstring>
#include <memory>
+#include <utility>
+
+#include <app_preference.h>
+#include <tizen.h>
+
+#include <lib/support/Base64.h>
+#include <lib/support/CodeUtils.h>
+#include <lib/support/ScopedBuffer.h>
+#include <lib/support/logging/CHIPLogging.h>
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/Tizen/AppPreference.h b/src/platform/Tizen/AppPreference.h
index 2fee34c..26acf9d 100644
--- a/src/platform/Tizen/AppPreference.h
+++ b/src/platform/Tizen/AppPreference.h
@@ -17,8 +17,9 @@
#pragma once
-#include <app_preference.h>
-#include <platform/CHIPDeviceLayer.h>
+#include <cstddef>
+
+#include <lib/core/CHIPError.h>
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/Tizen/BLEManagerImpl.cpp b/src/platform/Tizen/BLEManagerImpl.cpp
index c60fb56..9b2d5e2 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 <platform/internal/CHIPDeviceLayerInternal.h>
-#include <ble/CHIPBleServiceData.h>
-#include <platform/internal/BLEManager.h>
+/**
+ * Note: BLEManager requires ConnectivityManager to be defined beforehand,
+ * otherwise we will face circular dependency between them. */
+#include <platform/ConnectivityManager.h>
-#if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
+/**
+ * Note: Use public include for BLEManager which includes our local
+ * platform/<PLATFORM>/BLEManagerImpl.h after defining interface class. */
+#include "platform/internal/BLEManager.h"
-#include "MainLoop.h"
+#include <strings.h>
+
+#include <cstdint>
+#include <cstring>
+#include <memory>
+#include <string>
+#include <type_traits>
+#include <utility>
+
#include <bluetooth.h>
+#include <glib.h>
+
+#include <ble/Ble.h>
+#include <ble/CHIPBleServiceData.h>
+#include <lib/core/CHIPError.h>
+#include <lib/support/BitFlags.h>
+#include <lib/support/CodeUtils.h>
+#include <lib/support/ErrorStr.h>
+#include <lib/support/SetupDiscriminator.h>
+#include <platform/CHIPDeviceEvent.h>
+#include <platform/CHIPDeviceLayer.h>
+#include <platform/ConfigurationManager.h>
+#include <platform/PlatformManager.h>
+#include <system/SystemClock.h>
+#include <system/SystemLayer.h>
+#include <system/SystemPacketBuffer.h>
+
+#include "CHIPDevicePlatformEvent.h"
+#include "ChipDeviceScanner.h"
+#include "MainLoop.h"
namespace chip {
namespace DeviceLayer {
@@ -1383,5 +1415,3 @@
} // 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 f4c8e90..7723d2d 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 <cstddef>
+#include <cstdint>
+#include <memory>
+#include <string>
+#include <utility>
#include <bluetooth.h>
#include <glib.h>
-#include <sys/param.h>
+
+#include <ble/Ble.h>
+#include <ble/CHIPBleServiceData.h>
+#include <lib/core/CHIPError.h>
+#include <lib/support/BitFlags.h>
+#include <lib/support/SetupDiscriminator.h>
+#include <platform/CHIPDeviceEvent.h>
+#include <system/SystemLayer.h>
+#include <system/SystemPacketBuffer.h>
#include "ChipDeviceScanner.h"
@@ -263,5 +275,3 @@
} // 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 e25ab00..03a858f 100644
--- a/src/platform/Tizen/BUILD.gn
+++ b/src/platform/Tizen/BUILD.gn
@@ -37,8 +37,6 @@
"CHIPDevicePlatformConfig.h",
"CHIPDevicePlatformEvent.h",
"CHIPPlatformConfig.h",
- "ChipDeviceScanner.cpp",
- "ChipDeviceScanner.h",
"ConfigurationManagerImpl.cpp",
"ConfigurationManagerImpl.h",
"ConnectivityManagerImpl.cpp",
@@ -88,6 +86,8 @@
"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 4a55360..2048953 100644
--- a/src/platform/Tizen/ChipDeviceScanner.cpp
+++ b/src/platform/Tizen/ChipDeviceScanner.cpp
@@ -22,14 +22,18 @@
*/
#include "ChipDeviceScanner.h"
-#include <platform/CHIPDeviceLayer.h>
-#include <sys/param.h>
-#if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
+#include <cstdint>
+#include <cstring>
+#include <utility>
+
+#include <bluetooth.h>
+
+#include <lib/support/CodeUtils.h>
+#include <lib/support/Span.h>
+#include <lib/support/logging/CHIPLogging.h>
#include "MainLoop.h"
-#include <lib/support/logging/CHIPLogging.h>
-#include <system/SystemTimer.h>
namespace chip {
namespace DeviceLayer {
@@ -308,5 +312,3 @@
} // 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 7eb2a9d..f95f478 100644
--- a/src/platform/Tizen/ChipDeviceScanner.h
+++ b/src/platform/Tizen/ChipDeviceScanner.h
@@ -23,18 +23,13 @@
#pragma once
-#include <platform/CHIPDeviceConfig.h>
-
-#if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
-
-#include <glib.h>
#include <memory>
+#include <bluetooth.h>
+#include <glib.h>
+
#include <ble/CHIPBleServiceData.h>
#include <lib/core/CHIPError.h>
-#include <system/SystemLayer.h>
-
-#include <bluetooth.h>
namespace chip {
namespace DeviceLayer {
@@ -115,5 +110,3 @@
} // 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 5d5dc5c..961df41 100644
--- a/src/platform/Tizen/ConfigurationManagerImpl.cpp
+++ b/src/platform/Tizen/ConfigurationManagerImpl.cpp
@@ -23,16 +23,16 @@
* for Tizen platforms.
*/
-#include <platform/internal/CHIPDeviceLayerInternal.h>
+#include "ConfigurationManagerImpl.h"
-#include <lib/core/CHIPVendorIdentifiers.hpp>
#include <lib/support/CodeUtils.h>
-#include <lib/support/logging/CHIPLogging.h>
+#include <platform/CHIPDeviceBuildConfig.h>
#include <platform/CHIPDeviceConfig.h>
#include <platform/ConfigurationManager.h>
-#include <platform/Tizen/PosixConfig.h>
-#include <platform/Tizen/WiFiManager.h>
-#include <platform/internal/GenericConfigurationManagerImpl.ipp>
+
+#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 2dd07d7..ee9ddc5 100644
--- a/src/platform/Tizen/ConfigurationManagerImpl.h
+++ b/src/platform/Tizen/ConfigurationManagerImpl.h
@@ -24,9 +24,15 @@
#pragma once
-#include <platform/internal/GenericConfigurationManagerImpl.h>
+#include <cstdint>
+#include <cstdlib>
-#include <platform/Tizen/PosixConfig.h>
+#include <lib/core/CHIPError.h>
+#include <platform/DeviceInstanceInfoProvider.h>
+#include <platform/PersistedStorage.h>
+
+#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 41671fa..75a5fb5 100644
--- a/src/platform/Tizen/ConnectivityManagerImpl.cpp
+++ b/src/platform/Tizen/ConnectivityManagerImpl.cpp
@@ -17,32 +17,42 @@
* limitations under the License.
*/
-#include <platform/internal/CHIPDeviceLayerInternal.h>
-
+/**
+ * Note: Use public include for ConnectivityManager which includes our local
+ * platform/<PLATFORM>/ConnectivityManagerImpl.h after defining interface
+ * class. */
#include <platform/ConnectivityManager.h>
-#include <platform/internal/BLEManager.h>
-#include <cstdlib>
+#if CHIP_DEVICE_CONFIG_ENABLE_WIFI
+#include <wifi-manager.h>
+#endif
+#include <inet/InetBuildConfig.h>
+#include <lib/core/CHIPError.h>
#include <lib/support/CodeUtils.h>
-#include <lib/support/logging/CHIPLogging.h>
+#include <platform/CHIPDeviceBuildConfig.h>
+#include <platform/CHIPDeviceConfig.h>
+#include <platform/CHIPDeviceEvent.h>
+#include <platform/CHIPDeviceLayer.h>
+#include <system/SystemClock.h>
+#include <system/SystemLayer.h>
-#include <platform/internal/GenericConnectivityManagerImpl_UDP.ipp>
-
+#include "platform/internal/GenericConnectivityManagerImpl_UDP.ipp"
#if INET_CONFIG_ENABLE_TCP_ENDPOINT
-#include <platform/internal/GenericConnectivityManagerImpl_TCP.ipp>
+#include "platform/internal/GenericConnectivityManagerImpl_TCP.ipp"
#endif
-
#if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
-#include <platform/internal/GenericConnectivityManagerImpl_BLE.ipp>
+#include "platform/internal/GenericConnectivityManagerImpl_BLE.ipp"
#endif
-
#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
-#include <platform/internal/GenericConnectivityManagerImpl_Thread.ipp>
+#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 <platform/internal/GenericConnectivityManagerImpl_WiFi.ipp>
+#include "WiFiManager.h"
#endif
namespace chip {
diff --git a/src/platform/Tizen/ConnectivityManagerImpl.h b/src/platform/Tizen/ConnectivityManagerImpl.h
index 69c4e05..b469b63 100644
--- a/src/platform/Tizen/ConnectivityManagerImpl.h
+++ b/src/platform/Tizen/ConnectivityManagerImpl.h
@@ -19,38 +19,37 @@
#pragma once
-#include <platform/ConnectivityManager.h>
-#include <platform/internal/GenericConnectivityManagerImpl.h>
-#include <platform/internal/GenericConnectivityManagerImpl_UDP.h>
+#include <cstdint>
+
+#include <inet/InetBuildConfig.h>
+#include <lib/core/CHIPError.h>
+#include <platform/CHIPDeviceBuildConfig.h>
+#include <platform/CHIPDeviceConfig.h>
+#include <platform/CHIPDeviceEvent.h>
+#include <system/SystemClock.h>
+#include <system/SystemLayer.h>
+
+#include "platform/internal/GenericConnectivityManagerImpl.h"
+#include "platform/internal/GenericConnectivityManagerImpl_UDP.h"
#if INET_CONFIG_ENABLE_TCP_ENDPOINT
-#include <platform/internal/GenericConnectivityManagerImpl_TCP.h>
+#include "platform/internal/GenericConnectivityManagerImpl_TCP.h"
#endif
#if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
-#include <platform/internal/GenericConnectivityManagerImpl_BLE.h>
+#include "platform/internal/GenericConnectivityManagerImpl_BLE.h"
#else
-#include <platform/internal/GenericConnectivityManagerImpl_NoBLE.h>
+#include "platform/internal/GenericConnectivityManagerImpl_NoBLE.h"
#endif
#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
-#include <platform/internal/GenericConnectivityManagerImpl_Thread.h>
+#include "platform/internal/GenericConnectivityManagerImpl_Thread.h"
#else
-#include <platform/internal/GenericConnectivityManagerImpl_NoThread.h>
+#include "platform/internal/GenericConnectivityManagerImpl_NoThread.h"
#endif
#if CHIP_DEVICE_CONFIG_ENABLE_WIFI
-#include <platform/internal/GenericConnectivityManagerImpl_WiFi.h>
+#include "platform/internal/GenericConnectivityManagerImpl_WiFi.h"
#else
-#include <platform/internal/GenericConnectivityManagerImpl_NoWiFi.h>
+#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 6ad5103..5c5d56b 100644
--- a/src/platform/Tizen/ConnectivityUtils.cpp
+++ b/src/platform/Tizen/ConnectivityUtils.cpp
@@ -15,8 +15,7 @@
* limitations under the License.
*/
-#include <platform/Tizen/ConnectivityUtils.h>
-#include <platform/internal/CHIPDeviceLayerInternal.h>
+#include "ConnectivityUtils.h"
// XXX: This is a workaround for a bug in the Tizen SDK header files. It is not
// possible to include both <net/if.h> and <linux/if.h> at the same time.
@@ -29,12 +28,16 @@
#include <linux/ethtool.h>
#include <linux/sockios.h>
#include <linux/wireless.h>
-#include <string.h>
+#include <net/if.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
-#include <sys/types.h>
+#include <unistd.h>
+#include <cstring>
+
+#include <app-common/zap-generated/cluster-enums.h>
#include <lib/support/CHIPMemString.h>
+#include <lib/support/logging/CHIPLogging.h>
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/Tizen/ConnectivityUtils.h b/src/platform/Tizen/ConnectivityUtils.h
index 439e427..6c8f5c8 100644
--- a/src/platform/Tizen/ConnectivityUtils.h
+++ b/src/platform/Tizen/ConnectivityUtils.h
@@ -17,8 +17,9 @@
#pragma once
-#include <platform/DiagnosticDataProvider.h>
-#include <platform/internal/CHIPDeviceLayerInternal.h>
+#include <app-common/zap-generated/cluster-enums.h>
+
+#include "platform/internal/CHIPDeviceLayerInternal.h"
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/Tizen/DeviceInstanceInfoProviderImpl.cpp b/src/platform/Tizen/DeviceInstanceInfoProviderImpl.cpp
index 67133ea..93ad7a1 100644
--- a/src/platform/Tizen/DeviceInstanceInfoProviderImpl.cpp
+++ b/src/platform/Tizen/DeviceInstanceInfoProviderImpl.cpp
@@ -18,7 +18,7 @@
#include "DeviceInstanceInfoProviderImpl.h"
-#include <platform/Tizen/PosixConfig.h>
+#include "PosixConfig.h"
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/Tizen/DeviceInstanceInfoProviderImpl.h b/src/platform/Tizen/DeviceInstanceInfoProviderImpl.h
index b3b7992..32e6a2c 100644
--- a/src/platform/Tizen/DeviceInstanceInfoProviderImpl.h
+++ b/src/platform/Tizen/DeviceInstanceInfoProviderImpl.h
@@ -18,8 +18,13 @@
#pragma once
-#include <platform/Tizen/ConfigurationManagerImpl.h>
-#include <platform/internal/GenericDeviceInstanceInfoProvider.h>
+#include <cstdint>
+
+#include <lib/core/CHIPError.h>
+
+#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 17e11e5..ad143a4 100644
--- a/src/platform/Tizen/DiagnosticDataProviderImpl.cpp
+++ b/src/platform/Tizen/DiagnosticDataProviderImpl.cpp
@@ -21,11 +21,9 @@
* for Tizen platform.
*/
-#include <platform/internal/CHIPDeviceLayerInternal.h>
+#include "DiagnosticDataProviderImpl.h"
-#include <lib/support/logging/CHIPLogging.h>
#include <platform/DiagnosticDataProvider.h>
-#include <platform/Tizen/DiagnosticDataProviderImpl.h>
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/Tizen/DnssdImpl.cpp b/src/platform/Tizen/DnssdImpl.cpp
index 698b70b..e2ab151 100644
--- a/src/platform/Tizen/DnssdImpl.cpp
+++ b/src/platform/Tizen/DnssdImpl.cpp
@@ -16,23 +16,32 @@
*/
#include "DnssdImpl.h"
-#include "MainLoop.h"
#include <algorithm>
+#include <cerrno>
+#include <cstdlib>
#include <cstring>
-#include <net/if.h>
#include <sstream>
+#include <string>
#include <utility>
+// Note: Include dns-sd-internal.h is needed, this source file uses some undocumented functions.
+#include <dns-sd-internal.h>
+#include <dns-sd.h>
+#include <glib.h>
#include <lib/dnssd/platform/Dnssd.h>
-#include <lib/support/CHIPMem.h>
+#include <net/if.h>
+
+#include <inet/InetBuildConfig.h>
#include <lib/support/CHIPMemString.h>
#include <lib/support/CodeUtils.h>
#include <lib/support/SafeInt.h>
-#include <lib/support/logging/CHIPLogging.h>
+#include <lib/support/Span.h>
+#include <platform/CHIPDeviceConfig.h>
+#include <platform/PlatformManager.h>
-#include <dns-sd-internal.h>
-#include <glib.h>
+#include "MainLoop.h"
+
#if CHIP_DEVICE_CONFIG_ENABLE_THREAD
#include <platform/ThreadStackManager.h>
#endif
diff --git a/src/platform/Tizen/DnssdImpl.h b/src/platform/Tizen/DnssdImpl.h
index 360f264..5872fa0 100644
--- a/src/platform/Tizen/DnssdImpl.h
+++ b/src/platform/Tizen/DnssdImpl.h
@@ -17,18 +17,22 @@
#pragma once
+#include <cstdint>
+#include <functional>
#include <memory>
#include <mutex>
#include <set>
-#include <string>
-#include <sys/param.h>
#include <vector>
-#include <lib/dnssd/platform/Dnssd.h>
-
#include <dns-sd.h>
#include <glib.h>
+#include <inet/IPAddress.h>
+#include <inet/InetInterface.h>
+#include <lib/core/CHIPError.h>
+#include <lib/dnssd/Constants.h>
+#include <lib/dnssd/platform/Dnssd.h>
+
namespace chip {
namespace Dnssd {
diff --git a/src/platform/Tizen/KeyValueStoreManagerImpl.cpp b/src/platform/Tizen/KeyValueStoreManagerImpl.cpp
index f1e1753..18e4c15 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/<PLATFORM>/KeyValueStoreManagerImpl.h after defining interface
+ * class. */
#include <platform/KeyValueStoreManager.h>
+#include <cstddef>
+
+#include <lib/core/CHIPError.h>
+
+#include "AppPreference.h"
+
namespace chip {
namespace DeviceLayer {
namespace PersistedStorage {
diff --git a/src/platform/Tizen/KeyValueStoreManagerImpl.h b/src/platform/Tizen/KeyValueStoreManagerImpl.h
index 42f5633..bf3395a 100644
--- a/src/platform/Tizen/KeyValueStoreManagerImpl.h
+++ b/src/platform/Tizen/KeyValueStoreManagerImpl.h
@@ -23,6 +23,10 @@
#pragma once
+#include <cstddef>
+
+#include <lib/core/CHIPError.h>
+
namespace chip {
namespace DeviceLayer {
namespace PersistedStorage {
diff --git a/src/platform/Tizen/Logging.cpp b/src/platform/Tizen/Logging.cpp
index 4c5c8b8..da29fc8 100644
--- a/src/platform/Tizen/Logging.cpp
+++ b/src/platform/Tizen/Logging.cpp
@@ -15,14 +15,15 @@
* limitations under the License.
*/
-#include <platform/logging/LogV.h>
-
-#include <lib/core/CHIPConfig.h>
-#include <lib/support/EnforceFormat.h>
-#include <lib/support/logging/Constants.h>
+#include <cstdint>
+#include <cstdio>
#include <dlog.h>
-#include <stdio.h>
+
+#include <core/CHIPBuildConfig.h>
+#include <lib/support/EnforceFormat.h>
+#include <lib/support/logging/Constants.h>
+#include <platform/logging/LogV.h>
namespace chip {
namespace Logging {
diff --git a/src/platform/Tizen/MainLoop.cpp b/src/platform/Tizen/MainLoop.cpp
index e3f2cf2..56b5f28 100644
--- a/src/platform/Tizen/MainLoop.cpp
+++ b/src/platform/Tizen/MainLoop.cpp
@@ -16,6 +16,10 @@
#include "MainLoop.h"
+#include <iterator>
+#include <memory>
+#include <utility>
+
#include <lib/support/CodeUtils.h>
#include <lib/support/logging/CHIPLogging.h>
diff --git a/src/platform/Tizen/MainLoop.h b/src/platform/Tizen/MainLoop.h
index a4a6701..618d45a 100644
--- a/src/platform/Tizen/MainLoop.h
+++ b/src/platform/Tizen/MainLoop.h
@@ -18,9 +18,7 @@
#include <memory>
#include <thread>
-
-#include <lib/core/CHIPError.h>
-#include <platform/CHIPDeviceLayer.h>
+#include <vector>
#include <glib.h>
diff --git a/src/platform/Tizen/NetworkCommissioningDriver.h b/src/platform/Tizen/NetworkCommissioningDriver.h
index 5013703..b9605c3 100644
--- a/src/platform/Tizen/NetworkCommissioningDriver.h
+++ b/src/platform/Tizen/NetworkCommissioningDriver.h
@@ -17,10 +17,11 @@
#pragma once
-#include <platform/NetworkCommissioning.h>
#include <string>
#include <vector>
+#include <platform/NetworkCommissioning.h>
+
namespace chip {
namespace DeviceLayer {
namespace NetworkCommissioning {
diff --git a/src/platform/Tizen/NetworkCommissioningEthernetDriver.cpp b/src/platform/Tizen/NetworkCommissioningEthernetDriver.cpp
index d9e721f..6a95f95 100644
--- a/src/platform/Tizen/NetworkCommissioningEthernetDriver.cpp
+++ b/src/platform/Tizen/NetworkCommissioningEthernetDriver.cpp
@@ -15,17 +15,22 @@
* limitations under the License.
*/
-#include <lib/support/SafePointerCast.h>
-#include <platform/CHIPDeviceLayer.h>
+#include <ifaddrs.h>
+
+#include <algorithm>
+#include <cerrno>
+#include <cstring>
+#include <iterator>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include <app-common/zap-generated/cluster-enums.h>
+#include <lib/support/CodeUtils.h>
+#include <platform/NetworkCommissioning.h>
#include <platform/Tizen/ConnectivityUtils.h>
#include <platform/Tizen/NetworkCommissioningDriver.h>
-#include <cerrno>
-#include <ifaddrs.h>
-#include <limits>
-#include <string>
-#include <vector>
-
namespace chip {
namespace DeviceLayer {
namespace NetworkCommissioning {
diff --git a/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp b/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp
index 6a393b6..8d61c5c 100644
--- a/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp
+++ b/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp
@@ -15,16 +15,20 @@
* limitations under the License.
*/
-#include <lib/support/CodeUtils.h>
-#include <lib/support/SafeInt.h>
-#include <platform/CHIPDeviceLayer.h>
-#include <platform/ThreadStackManager.h>
-#include <platform/Tizen/NetworkCommissioningDriver.h>
-#include <platform/Tizen/ThreadStackManagerImpl.h>
+#include <cstdint>
+#include <cstring>
-#include <limits>
-#include <string>
-#include <vector>
+#include <lib/core/CHIPError.h>
+#include <lib/support/CodeUtils.h>
+#include <lib/support/Span.h>
+#include <lib/support/ThreadOperationalDataset.h>
+#include <platform/CHIPDeviceConfig.h>
+#include <platform/ConnectivityManager.h>
+#include <platform/NetworkCommissioning.h>
+#include <platform/ThreadStackManager.h>
+
+#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 c45f1b2..a71c914 100644
--- a/src/platform/Tizen/NetworkCommissioningWiFiDriver.cpp
+++ b/src/platform/Tizen/NetworkCommissioningWiFiDriver.cpp
@@ -15,14 +15,21 @@
* limitations under the License.
*/
-#include <lib/support/CodeUtils.h>
-#include <lib/support/SafeInt.h>
-#include <platform/CHIPDeviceLayer.h>
-#include <platform/Tizen/NetworkCommissioningDriver.h>
-
+#include <cstdint>
+#include <cstring>
#include <limits>
-#include <string>
-#include <vector>
+
+#include <lib/core/CHIPError.h>
+#include <lib/support/CodeUtils.h>
+#include <lib/support/ErrorStr.h>
+#include <lib/support/Span.h>
+#include <lib/support/logging/CHIPLogging.h>
+#include <platform/CHIPDeviceBuildConfig.h>
+#include <platform/KeyValueStoreManager.h>
+#include <platform/NetworkCommissioning.h>
+
+#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 6842d00..f893eb9 100644
--- a/src/platform/Tizen/PlatformManagerImpl.cpp
+++ b/src/platform/Tizen/PlatformManagerImpl.cpp
@@ -23,13 +23,22 @@
* for Tizen platforms.
*/
-#include <platform/internal/CHIPDeviceLayerInternal.h>
-
-#include <platform/DeviceInstanceInfoProvider.h>
+/**
+ * Note: Use public include for PlatformManager which includes our local
+ * platform/<PLATFORM>/PlatformManager.h after defining interface
+ * class. */
#include <platform/PlatformManager.h>
+
+#include <lib/core/CHIPError.h>
+#include <lib/support/CodeUtils.h>
+#include <platform/DeviceInstanceInfoProvider.h>
#include <platform/Tizen/DeviceInstanceInfoProviderImpl.h>
-#include <platform/Tizen/DiagnosticDataProviderImpl.h>
-#include <platform/internal/GenericPlatformManagerImpl_POSIX.ipp>
+
+#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 f21cfea..1c8cfd5 100644
--- a/src/platform/Tizen/PlatformManagerImpl.h
+++ b/src/platform/Tizen/PlatformManagerImpl.h
@@ -23,7 +23,10 @@
#pragma once
-#include <platform/internal/GenericPlatformManagerImpl_POSIX.h>
+#include <lib/core/CHIPError.h>
+#include <platform/ConnectivityManager.h>
+
+#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 9b9e57a..f5c641a 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 <platform/internal/CHIPDeviceLayerInternal.h>
-#include <platform/internal/testing/ConfigUnitTest.h>
+#include "PosixConfig.h"
-#include <lib/core/CHIPEncoding.h>
#include <lib/support/CodeUtils.h>
#include <platform/KeyValueStoreManager.h>
-#include <platform/Tizen/PosixConfig.h>
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/Tizen/PosixConfig.h b/src/platform/Tizen/PosixConfig.h
index 459dd98..197adad 100644
--- a/src/platform/Tizen/PosixConfig.h
+++ b/src/platform/Tizen/PosixConfig.h
@@ -23,8 +23,8 @@
#pragma once
-#include <functional>
-#include <inttypes.h>
+#include <cstdint>
+#include <cstring>
#include <lib/core/CHIPError.h>
diff --git a/src/platform/Tizen/SystemPlatformConfig.h b/src/platform/Tizen/SystemPlatformConfig.h
index 761a1c3..d501e42 100644
--- a/src/platform/Tizen/SystemPlatformConfig.h
+++ b/src/platform/Tizen/SystemPlatformConfig.h
@@ -24,7 +24,7 @@
#pragma once
-#include <stdint.h>
+#include <cstdint>
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/Tizen/SystemTimeSupport.cpp b/src/platform/Tizen/SystemTimeSupport.cpp
index b885eda..bfc33b7 100644
--- a/src/platform/Tizen/SystemTimeSupport.cpp
+++ b/src/platform/Tizen/SystemTimeSupport.cpp
@@ -23,16 +23,20 @@
* time/clock functions that are suitable for use on the Tizen platform.
*/
-#include <platform/internal/CHIPDeviceLayerInternal.h>
-
-#include <lib/support/TimeUtils.h>
-#include <lib/support/logging/CHIPLogging.h>
-
-#include <chrono>
-#include <errno.h>
-#include <inttypes.h>
#include <sys/time.h>
+#include <cerrno>
+#include <chrono>
+#include <cstdint>
+#include <ctime>
+
+#include <core/CHIPBuildConfig.h>
+#include <lib/core/CHIPError.h>
+#include <lib/support/logging/CHIPLogging.h>
+#include <system/SystemClock.h>
+#include <system/SystemConfig.h>
+#include <system/SystemError.h>
+
namespace chip {
namespace System {
namespace Clock {
diff --git a/src/platform/Tizen/ThreadStackManagerImpl.cpp b/src/platform/Tizen/ThreadStackManagerImpl.cpp
index 1a70879..c7cca44 100644
--- a/src/platform/Tizen/ThreadStackManagerImpl.cpp
+++ b/src/platform/Tizen/ThreadStackManagerImpl.cpp
@@ -21,17 +21,38 @@
* for Tizen platform.
*/
-#include <platform/internal/CHIPDeviceLayerInternal.h>
-#include <platform/internal/DeviceNetworkInfo.h>
+/**
+ * Note: ThreadStackManager requires ConnectivityManager to be defined
+ * beforehand, otherwise we will face circular dependency between them. */
+#include <platform/ConnectivityManager.h>
-#include <lib/support/CodeUtils.h>
-#include <lib/support/logging/CHIPLogging.h>
-#include <platform/PlatformManager.h>
+/**
+ * Note: Use public include for ThreadStackManager which includes our local
+ * platform/<PLATFORM>/ThreadStackManagerImpl.h after defining interface
+ * class. */
#include <platform/ThreadStackManager.h>
-#include <platform/Tizen/NetworkCommissioningDriver.h>
-#include "ThreadStackManagerImpl.h"
+#include <endian.h>
+
+#include <cstring>
+
+#include <thread.h>
+
+#include <app/AttributeAccessInterface.h>
+#include <inet/IPAddress.h>
+#include <lib/core/CHIPError.h>
+#include <lib/core/DataModelTypes.h>
+#include <lib/dnssd/Constants.h>
#include <lib/dnssd/platform/Dnssd.h>
+#include <lib/support/CodeUtils.h>
+#include <lib/support/Span.h>
+#include <lib/support/ThreadOperationalDataset.h>
+#include <platform/CHIPDeviceConfig.h>
+#include <platform/CHIPDeviceEvent.h>
+#include <platform/NetworkCommissioning.h>
+#include <platform/PlatformManager.h>
+
+#include <platform/Tizen/ThreadStackManagerImpl.h>
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/Tizen/ThreadStackManagerImpl.h b/src/platform/Tizen/ThreadStackManagerImpl.h
index 40a4cdc..5671853 100644
--- a/src/platform/Tizen/ThreadStackManagerImpl.h
+++ b/src/platform/Tizen/ThreadStackManagerImpl.h
@@ -23,15 +23,22 @@
#pragma once
-#include <memory>
+#include <cstdint>
-#include <lib/support/ThreadOperationalDataset.h>
-#include <platform/internal/CHIPDeviceLayerInternal.h>
-#include <platform/internal/DeviceNetworkInfo.h>
-
-#include <gio/gio.h>
#include <thread.h>
+#include <app/AttributeAccessInterface.h>
+#include <inet/IPAddress.h>
+#include <lib/core/CHIPError.h>
+#include <lib/core/DataModelTypes.h>
+#include <lib/support/Span.h>
+#include <lib/support/ThreadOperationalDataset.h>
+#include <platform/CHIPDeviceConfig.h>
+#include <platform/CHIPDeviceEvent.h>
+#include <platform/NetworkCommissioning.h>
+
+#include "platform/internal/DeviceNetworkInfo.h"
+
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/Tizen/WiFiManager.cpp b/src/platform/Tizen/WiFiManager.cpp
index e0a6df9..7731ffc 100644
--- a/src/platform/Tizen/WiFiManager.cpp
+++ b/src/platform/Tizen/WiFiManager.cpp
@@ -15,14 +15,22 @@
* limitations under the License.
*/
-#include <platform/CHIPDeviceLayer.h>
+#include "WiFiManager.h"
-#if CHIP_DEVICE_CONFIG_ENABLE_WIFI
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
#include <memory>
+#include <utility>
+
+#include <tizen.h>
#include <wifi-manager.h>
+#include <lib/support/CodeUtils.h>
+#include <lib/support/Span.h>
+#include <lib/support/logging/CHIPLogging.h>
+
#include "MainLoop.h"
-#include "WiFiManager.h"
namespace {
static constexpr const char * __WiFiDeviceStateToStr(wifi_manager_device_state_e state)
@@ -867,4 +875,3 @@
} // 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 acbe231..f37e2f1 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 <platform/NetworkCommissioning.h>
-#include <platform/internal/DeviceNetworkInfo.h>
+#include <cstddef>
+#include <cstdint>
#include <glib.h>
#include <wifi-manager.h>
+#include <lib/core/CHIPError.h>
+#include <platform/NetworkCommissioning.h>
+
+#include "platform/internal/DeviceNetworkInfo.h"
+
namespace chip {
namespace DeviceLayer {
namespace Internal {
@@ -103,5 +107,3 @@
} // namespace Internal
} // namespace DeviceLayer
} // namespace chip
-
-#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI