Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Air Quality Sensor App for silabs #35488

Merged
merged 32 commits into from
Oct 2, 2024
Merged
Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
3e4e368
getter for air quality
Sarthak-Shaha Aug 14, 2024
3edd365
Added Air Quality Sample app for silabs
Sarthak-Shaha Aug 19, 2024
942d29c
Restyled by whitespace
restyled-commits Sep 9, 2024
049acbe
Restyled by clang-format
restyled-commits Sep 9, 2024
24a7d4b
Restyled by prettier-markdown
restyled-commits Sep 9, 2024
12e146f
Merge branch 'master' into silabs/add_air_quality_app
Sarthak-Shaha Sep 9, 2024
df4d287
Merge branch 'master' into silabs/add_air_quality_app
Sarthak-Shaha Sep 10, 2024
c2b1ff6
Merge branch 'master' into silabs/add_air_quality_app
Sarthak-Shaha Sep 10, 2024
ccc0e3d
Merge branch 'master' into silabs/add_air_quality_app
Sarthak-Shaha Sep 11, 2024
5a1fcda
added build in CI
Sarthak-Shaha Sep 11, 2024
8fa8df2
minor fix
Sarthak-Shaha Sep 11, 2024
0bdcb6b
Merge branch 'master' into silabs/add_air_quality_app
Sarthak-Shaha Sep 11, 2024
a4305a5
Merge branch 'master' into silabs/add_air_quality_app
Sarthak-Shaha Sep 11, 2024
0cb134e
Merge branch 'master' into silabs/add_air_quality_app
Sarthak-Shaha Sep 12, 2024
3dff510
Merge branch 'master' into silabs/add_air_quality_app
Sarthak-Shaha Sep 17, 2024
9e4e13b
Revert "added build in CI"
Sarthak-Shaha Sep 17, 2024
a87fbb5
Revert "minor fix"
Sarthak-Shaha Sep 17, 2024
d0b3ca0
added build for app
Sarthak-Shaha Sep 17, 2024
6360a5f
added app to target
Sarthak-Shaha Sep 20, 2024
6c1216e
Merge branch 'master' into silabs/add_air_quality_app
Sarthak-Shaha Sep 20, 2024
11989d5
Merge branch 'master' into silabs/add_air_quality_app
Sarthak-Shaha Sep 23, 2024
a531374
resolved comments
Sarthak-Shaha Sep 24, 2024
db4b361
Restyled by whitespace
restyled-commits Sep 24, 2024
2954f1b
Restyled by clang-format
restyled-commits Sep 24, 2024
c6f6c8d
Merge branch 'master' into silabs/add_air_quality_app
Sarthak-Shaha Sep 24, 2024
c65feae
using schedulework
Sarthak-Shaha Sep 25, 2024
97ed46b
using schedulework instead of chiplock
Sarthak-Shaha Sep 25, 2024
3dde81d
Restyled by clang-format
restyled-commits Sep 25, 2024
15b364c
removing unneccessary loggs, resolved memory leak
Sarthak-Shaha Sep 27, 2024
a02d851
Merge branch 'master' into silabs/add_air_quality_app
Sarthak-Shaha Sep 27, 2024
759f5f1
Merge branch 'master' into silabs/add_air_quality_app
Sarthak-Shaha Sep 27, 2024
e99ec3c
Merge branch 'master' into silabs/add_air_quality_app
Sarthak-Shaha Oct 2, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/examples-efr32.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ jobs:
"./scripts/build/build_examples.py \
--enable-flashbundle \
--target efr32-brd4187c-thermostat-openthread-mtd \
--target efr32-brd4187c-air-quality-sensor-app-openthread-mtd \
--target efr32-brd4187c-switch-shell-use-ot-coap-lib \
--target efr32-brd4187c-unit-test \
build \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ class AirQualitySensorManager
}
};

/**
* @return The current AirQuality value.
*/
AirQuality::AirQualityEnum GetAirQuality();

/**
* @brief Get an Air Quality Manager object - this class acts as a singleton device manager for the air quality device
* @param[in] aEndpointId Endpoint that the air quality is on
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,11 @@ void AirQualitySensorManager::Init()
mFormaldehydeConcentrationMeasurementInstance.SetLevelValue(LevelValueEnum::kLow);
}

AirQualityEnum AirQualitySensorManager::GetAirQuality()
{
return mAirQualityInstance.GetAirQuality();
}

void AirQualitySensorManager::OnAirQualityChangeHandler(AirQualityEnum newValue)
{
mAirQualityInstance.UpdateAirQuality(newValue);
Expand Down
29 changes: 29 additions & 0 deletions examples/air-quality-sensor-app/silabs/.gn
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Copyright (c) 2020 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("//build_overrides/build.gni")

# The location of the build configuration file.
buildconfig = "${build_root}/config/BUILDCONFIG.gn"

# CHIP uses angle bracket includes.
check_system_includes = true

default_args = {
target_cpu = "arm"
target_os = "freertos"
chip_openthread_ftd = true

import("//openthread.gni")
}
226 changes: 226 additions & 0 deletions examples/air-quality-sensor-app/silabs/BUILD.gn
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
# Copyright (c) 2020 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("//build_overrides/build.gni")
import("//build_overrides/chip.gni")
import("//build_overrides/efr32_sdk.gni")
import("//build_overrides/pigweed.gni")

import("${build_root}/config/defaults.gni")
import("${efr32_sdk_build_root}/silabs_executable.gni")

import("${chip_root}/examples/common/pigweed/pigweed_rpcs.gni")
import("${chip_root}/src/platform/device.gni")
import("${chip_root}/third_party/silabs/silabs_board.gni")

if (chip_enable_pw_rpc) {
import("//build_overrides/pigweed.gni")
import("$dir_pw_build/target_types.gni")
}

assert(current_os == "freertos")

silabs_project_dir = "${chip_root}/examples/air-quality-sensor-app/silabs"
examples_common_plat_dir = "${chip_root}/examples/platform/silabs"

if (wifi_soc) {
import("${chip_root}/third_party/silabs/SiWx917_sdk.gni")
examples_plat_dir = "${chip_root}/examples/platform/silabs/SiWx917"
} else {
import("${efr32_sdk_build_root}/efr32_sdk.gni")
examples_plat_dir = "${chip_root}/examples/platform/silabs/efr32"
}

import("${examples_common_plat_dir}/args.gni")

declare_args() {
# Dump memory usage at link time.
chip_print_memory_usage = false

# Enable the air quality sensor
# Some boards do not have a air quality sensor
use_air_quality_sensor = false
}

if (wifi_soc) {
siwx917_sdk("sdk") {
sources = [
"${examples_common_plat_dir}/FreeRTOSConfig.h",
"${silabs_project_dir}/include/CHIPProjectConfig.h",
]

include_dirs = [
"${chip_root}/src/platform/silabs/SiWx917",
"${silabs_project_dir}/include",
"${examples_plat_dir}",
"${chip_root}/src/lib",
"${examples_common_plat_dir}",
]

defines = []
if (chip_enable_pw_rpc) {
defines += [
"HAL_VCOM_ENABLE=1",
"PW_RPC_ENABLED",
]
}
}
} else {
efr32_sdk("sdk") {
sources = [
"${examples_common_plat_dir}/FreeRTOSConfig.h",
"${silabs_project_dir}/include/CHIPProjectConfig.h",
]

include_dirs = [
"${chip_root}/src/platform/silabs/efr32",
"${silabs_project_dir}/include",
"${examples_plat_dir}",
"${chip_root}/src/lib",
"${examples_common_plat_dir}",
]

defines = []
if (chip_enable_pw_rpc) {
defines += [
"HAL_VCOM_ENABLE=1",
"PW_RPC_ENABLED",
]
}

#TODO: This is a placeholder for the actual implementation
if (use_air_quality_sensor) {
include_dirs +=
[ "${efr32_sdk_root}/examples/platform/silabs/sensors/AirQuality" ]

defines += [ "USE_AIR_QUALITY_SENSOR" ]
}
}
}

#ENDTODO

silabs_executable("air_quality_sensor_app") {
output_name = "matter-silabs-air-quality-sensor-example.out"
include_dirs = [
"include",
"${chip_root}/examples/air-quality-sensor-app/air-quality-sensor-common/include",
]
defines = []

sources = [
"${chip_root}/examples/air-quality-sensor-app/air-quality-sensor-common/src/air-quality-sensor-manager.cpp",
"${examples_common_plat_dir}/main.cpp",
"src/AppTask.cpp",
"src/SensorManager.cpp",
"src/ZclCallbacks.cpp",
]

#TODO: This is a placeholder for the actual implementation
if (use_air_quality_sensor) {
sources += [ "${efr32_sdk_root}/examples/platform/silabs/sensors/AirQuality/AirQualitySensor.cpp" ]
}

#ENDTODO

if (!disable_lcd) {
sources += [ "src/AirQualitySensorUI.cpp" ]
}

deps = [
":sdk",
"${chip_root}/src/platform/logging:default",
app_data_model,
]

if (wifi_soc) {
deps += [ "${examples_plat_dir}:siwx917-common" ]
} else {
deps += [ "${examples_plat_dir}:efr32-common" ]
}

if (chip_enable_pw_rpc) {
defines += [
"PW_RPC_ENABLED",
"PW_RPC_ATTRIBUTE_SERVICE=1",
"PW_RPC_BUTTON_SERVICE=1",
"PW_RPC_DESCRIPTOR_SERVICE=1",
"PW_RPC_DEVICE_SERVICE=1",
"PW_RPC_LIGHTING_SERVICE=1",
]

sources += [
"${chip_root}/examples/common/pigweed/RpcService.cpp",
"${chip_root}/examples/common/pigweed/efr32/PigweedLoggerMutex.cpp",
"${examples_common_plat_dir}/PigweedLogger.cpp",
"${examples_common_plat_dir}/Rpc.cpp",
]

deps += [
"$dir_pw_hdlc:default_addresses",
"$dir_pw_hdlc:rpc_channel_output",
"$dir_pw_stream:sys_io_stream",
"${chip_root}/config/efr32/lib/pw_rpc:pw_rpc",
"${chip_root}/examples/common/pigweed:attributes_service.nanopb_rpc",
"${chip_root}/examples/common/pigweed:button_service.nanopb_rpc",
"${chip_root}/examples/common/pigweed:descriptor_service.nanopb_rpc",
"${chip_root}/examples/common/pigweed:device_service.nanopb_rpc",
"${chip_root}/examples/common/pigweed:lighting_service.nanopb_rpc",
]

if (wifi_soc) {
deps += [ "${examples_plat_dir}/pw_sys_io:pw_sys_io_siwx917" ]
} else {
deps += [ "${examples_common_plat_dir}/pw_sys_io:pw_sys_io_silabs" ]
}

deps += pw_build_LINK_DEPS

include_dirs += [
"${chip_root}/examples/common",
"${chip_root}/examples/common/pigweed/efr32",
]
}

ldscript = "${examples_common_plat_dir}/ldscripts/${silabs_family}.ld"

inputs = [ ldscript ]

ldflags = [ "-T" + rebase_path(ldscript, root_build_dir) ]

if (chip_print_memory_usage) {
ldflags += [
"-Wl,--print-memory-usage",
"-fstack-usage",
]
}

# WiFi Settings
if (chip_enable_wifi) {
ldflags += [
"-Wl,--defsym",
"-Wl,SILABS_WIFI=1",
]
}

output_dir = root_out_dir
}

group("silabs") {
deps = [ ":air_quality_sensor_app" ]
}

group("default") {
deps = [ ":silabs" ]
}
Loading
Loading