Skip to content

Commit aa0bcf3

Browse files
authored
Merge branch 'master' into feature/minor-fix
2 parents 2347fb6 + c565622 commit aa0bcf3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+6184
-4062
lines changed

.github/workflows/examples-efr32.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ jobs:
6868
"./scripts/build/build_examples.py \
6969
--enable-flashbundle \
7070
--target efr32-brd4187c-thermostat-openthread-mtd \
71+
--target efr32-brd4187c-air-quality-sensor-app-openthread-mtd \
7172
--target efr32-brd4187c-switch-shell-use-ot-coap-lib \
7273
--target efr32-brd4187c-unit-test \
7374
build \

examples/air-quality-sensor-app/air-quality-sensor-common/include/air-quality-sensor-manager.h

+5
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ class AirQualitySensorManager
2929
}
3030
};
3131

32+
/**
33+
* @return The current AirQuality value.
34+
*/
35+
AirQuality::AirQualityEnum GetAirQuality();
36+
3237
/**
3338
* @brief Get an Air Quality Manager object - this class acts as a singleton device manager for the air quality device
3439
* @param[in] aEndpointId Endpoint that the air quality is on

examples/air-quality-sensor-app/air-quality-sensor-common/src/air-quality-sensor-manager.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,11 @@ void AirQualitySensorManager::Init()
134134
mFormaldehydeConcentrationMeasurementInstance.SetLevelValue(LevelValueEnum::kLow);
135135
}
136136

137+
AirQualityEnum AirQualitySensorManager::GetAirQuality()
138+
{
139+
return mAirQualityInstance.GetAirQuality();
140+
}
141+
137142
void AirQualitySensorManager::OnAirQualityChangeHandler(AirQualityEnum newValue)
138143
{
139144
mAirQualityInstance.UpdateAirQuality(newValue);
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Copyright (c) 2020 Project CHIP Authors
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
import("//build_overrides/build.gni")
16+
17+
# The location of the build configuration file.
18+
buildconfig = "${build_root}/config/BUILDCONFIG.gn"
19+
20+
# CHIP uses angle bracket includes.
21+
check_system_includes = true
22+
23+
default_args = {
24+
target_cpu = "arm"
25+
target_os = "freertos"
26+
chip_openthread_ftd = true
27+
28+
import("//openthread.gni")
29+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,226 @@
1+
# Copyright (c) 2020 Project CHIP Authors
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
import("//build_overrides/build.gni")
16+
import("//build_overrides/chip.gni")
17+
import("//build_overrides/efr32_sdk.gni")
18+
import("//build_overrides/pigweed.gni")
19+
20+
import("${build_root}/config/defaults.gni")
21+
import("${efr32_sdk_build_root}/silabs_executable.gni")
22+
23+
import("${chip_root}/examples/common/pigweed/pigweed_rpcs.gni")
24+
import("${chip_root}/src/platform/device.gni")
25+
import("${chip_root}/third_party/silabs/silabs_board.gni")
26+
27+
if (chip_enable_pw_rpc) {
28+
import("//build_overrides/pigweed.gni")
29+
import("$dir_pw_build/target_types.gni")
30+
}
31+
32+
assert(current_os == "freertos")
33+
34+
silabs_project_dir = "${chip_root}/examples/air-quality-sensor-app/silabs"
35+
examples_common_plat_dir = "${chip_root}/examples/platform/silabs"
36+
37+
if (wifi_soc) {
38+
import("${chip_root}/third_party/silabs/SiWx917_sdk.gni")
39+
examples_plat_dir = "${chip_root}/examples/platform/silabs/SiWx917"
40+
} else {
41+
import("${efr32_sdk_build_root}/efr32_sdk.gni")
42+
examples_plat_dir = "${chip_root}/examples/platform/silabs/efr32"
43+
}
44+
45+
import("${examples_common_plat_dir}/args.gni")
46+
47+
declare_args() {
48+
# Dump memory usage at link time.
49+
chip_print_memory_usage = false
50+
51+
# Enable the air quality sensor
52+
# Some boards do not have a air quality sensor
53+
use_air_quality_sensor = false
54+
}
55+
56+
if (wifi_soc) {
57+
siwx917_sdk("sdk") {
58+
sources = [
59+
"${examples_common_plat_dir}/FreeRTOSConfig.h",
60+
"${silabs_project_dir}/include/CHIPProjectConfig.h",
61+
]
62+
63+
include_dirs = [
64+
"${chip_root}/src/platform/silabs/SiWx917",
65+
"${silabs_project_dir}/include",
66+
"${examples_plat_dir}",
67+
"${chip_root}/src/lib",
68+
"${examples_common_plat_dir}",
69+
]
70+
71+
defines = []
72+
if (chip_enable_pw_rpc) {
73+
defines += [
74+
"HAL_VCOM_ENABLE=1",
75+
"PW_RPC_ENABLED",
76+
]
77+
}
78+
}
79+
} else {
80+
efr32_sdk("sdk") {
81+
sources = [
82+
"${examples_common_plat_dir}/FreeRTOSConfig.h",
83+
"${silabs_project_dir}/include/CHIPProjectConfig.h",
84+
]
85+
86+
include_dirs = [
87+
"${chip_root}/src/platform/silabs/efr32",
88+
"${silabs_project_dir}/include",
89+
"${examples_plat_dir}",
90+
"${chip_root}/src/lib",
91+
"${examples_common_plat_dir}",
92+
]
93+
94+
defines = []
95+
if (chip_enable_pw_rpc) {
96+
defines += [
97+
"HAL_VCOM_ENABLE=1",
98+
"PW_RPC_ENABLED",
99+
]
100+
}
101+
102+
#TODO: This is a placeholder for the actual implementation
103+
if (use_air_quality_sensor) {
104+
include_dirs +=
105+
[ "${efr32_sdk_root}/examples/platform/silabs/sensors/AirQuality" ]
106+
107+
defines += [ "USE_AIR_QUALITY_SENSOR" ]
108+
}
109+
}
110+
}
111+
112+
#ENDTODO
113+
114+
silabs_executable("air_quality_sensor_app") {
115+
output_name = "matter-silabs-air-quality-sensor-example.out"
116+
include_dirs = [
117+
"include",
118+
"${chip_root}/examples/air-quality-sensor-app/air-quality-sensor-common/include",
119+
]
120+
defines = []
121+
122+
sources = [
123+
"${chip_root}/examples/air-quality-sensor-app/air-quality-sensor-common/src/air-quality-sensor-manager.cpp",
124+
"${examples_common_plat_dir}/main.cpp",
125+
"src/AppTask.cpp",
126+
"src/SensorManager.cpp",
127+
"src/ZclCallbacks.cpp",
128+
]
129+
130+
#TODO: This is a placeholder for the actual implementation
131+
if (use_air_quality_sensor) {
132+
sources += [ "${efr32_sdk_root}/examples/platform/silabs/sensors/AirQuality/AirQualitySensor.cpp" ]
133+
}
134+
135+
#ENDTODO
136+
137+
if (!disable_lcd) {
138+
sources += [ "src/AirQualitySensorUI.cpp" ]
139+
}
140+
141+
deps = [
142+
":sdk",
143+
"${chip_root}/src/platform/logging:default",
144+
app_data_model,
145+
]
146+
147+
if (wifi_soc) {
148+
deps += [ "${examples_plat_dir}:siwx917-common" ]
149+
} else {
150+
deps += [ "${examples_plat_dir}:efr32-common" ]
151+
}
152+
153+
if (chip_enable_pw_rpc) {
154+
defines += [
155+
"PW_RPC_ENABLED",
156+
"PW_RPC_ATTRIBUTE_SERVICE=1",
157+
"PW_RPC_BUTTON_SERVICE=1",
158+
"PW_RPC_DESCRIPTOR_SERVICE=1",
159+
"PW_RPC_DEVICE_SERVICE=1",
160+
"PW_RPC_LIGHTING_SERVICE=1",
161+
]
162+
163+
sources += [
164+
"${chip_root}/examples/common/pigweed/RpcService.cpp",
165+
"${chip_root}/examples/common/pigweed/efr32/PigweedLoggerMutex.cpp",
166+
"${examples_common_plat_dir}/PigweedLogger.cpp",
167+
"${examples_common_plat_dir}/Rpc.cpp",
168+
]
169+
170+
deps += [
171+
"$dir_pw_hdlc:default_addresses",
172+
"$dir_pw_hdlc:rpc_channel_output",
173+
"$dir_pw_stream:sys_io_stream",
174+
"${chip_root}/config/efr32/lib/pw_rpc:pw_rpc",
175+
"${chip_root}/examples/common/pigweed:attributes_service.nanopb_rpc",
176+
"${chip_root}/examples/common/pigweed:button_service.nanopb_rpc",
177+
"${chip_root}/examples/common/pigweed:descriptor_service.nanopb_rpc",
178+
"${chip_root}/examples/common/pigweed:device_service.nanopb_rpc",
179+
"${chip_root}/examples/common/pigweed:lighting_service.nanopb_rpc",
180+
]
181+
182+
if (wifi_soc) {
183+
deps += [ "${examples_plat_dir}/pw_sys_io:pw_sys_io_siwx917" ]
184+
} else {
185+
deps += [ "${examples_common_plat_dir}/pw_sys_io:pw_sys_io_silabs" ]
186+
}
187+
188+
deps += pw_build_LINK_DEPS
189+
190+
include_dirs += [
191+
"${chip_root}/examples/common",
192+
"${chip_root}/examples/common/pigweed/efr32",
193+
]
194+
}
195+
196+
ldscript = "${examples_common_plat_dir}/ldscripts/${silabs_family}.ld"
197+
198+
inputs = [ ldscript ]
199+
200+
ldflags = [ "-T" + rebase_path(ldscript, root_build_dir) ]
201+
202+
if (chip_print_memory_usage) {
203+
ldflags += [
204+
"-Wl,--print-memory-usage",
205+
"-fstack-usage",
206+
]
207+
}
208+
209+
# WiFi Settings
210+
if (chip_enable_wifi) {
211+
ldflags += [
212+
"-Wl,--defsym",
213+
"-Wl,SILABS_WIFI=1",
214+
]
215+
}
216+
217+
output_dir = root_out_dir
218+
}
219+
220+
group("silabs") {
221+
deps = [ ":air_quality_sensor_app" ]
222+
}
223+
224+
group("default") {
225+
deps = [ ":silabs" ]
226+
}

0 commit comments

Comments
 (0)