Skip to content

Commit 3d649fe

Browse files
committed
app: Add nRF9151 DK support
* Add nRF9151 DK support * Some ifdeffing needed to allow battery and environmental modules to be disabled. * Move Thingy:91 X-specific configs to board files. Signed-off-by: Jan Tore Guggedal <jantore.guggedal@nordicsemi.no>
1 parent 35ff64b commit 3d649fe

11 files changed

+171
-47
lines changed

app/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ project("Asset Tracker Template")
1313
add_subdirectory(src/common)
1414

1515
# Include mandatory module source folders
16-
add_subdirectory(src/modules/battery)
1716
add_subdirectory(src/modules/network)
1817
add_subdirectory(src/modules/cloud)
1918
add_subdirectory(src/modules/location)
2019
add_subdirectory(src/modules/app)
2120
add_subdirectory(src/modules/fota)
22-
add_subdirectory(src/modules/environmental)
2321
add_subdirectory(src/modules/button)
2422

2523
# Optional modules
24+
add_subdirectory_ifdef(CONFIG_APP_BATTERY src/modules/battery)
25+
add_subdirectory_ifdef(CONFIG_APP_ENVIRONMENTAL src/modules/environmental)
2626
add_subdirectory_ifdef(CONFIG_APP_LED src/modules/led)
2727
add_subdirectory_ifdef(CONFIG_APP_MEMFAULT src/modules/memfault)
2828
add_subdirectory_ifdef(CONFIG_APP_SHELL src/modules/shell)

app/Kconfig.sysbuild

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#
2+
# Copyright (c) 2025 Nordic Semiconductor ASA
3+
#
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
#
6+
7+
choice BOOTLOADER
8+
default BOOTLOADER_MCUBOOT if !BOARD_NATIVE_SIM
9+
endchoice
10+
11+
config SECURE_BOOT_APPCORE
12+
default y if BOARD_NRF9151DK_NRF9151_NS
13+
14+
config WIFI_NRF70
15+
default y if BOARD_THINGY91X_NRF9151_NS
16+
17+
choice WIFI_NRF70_OPER_MODES
18+
default WIFI_NRF70_SCAN_ONLY if BOARD_THINGY91X_NRF9151_NS
19+
endchoice
20+
21+
config PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY
22+
default y if BOARD_NRF9151DK_NRF9151_NS
23+
24+
source "${ZEPHYR_BASE}/share/sysbuild/Kconfig"

app/boards/nrf9151dk_nrf9151_ns.conf

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#
2+
# Copyright (c) 2025 Nordic Semiconductor ASA
3+
#
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
#
+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* Copyright (c) 2025 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
*/
6+
7+
/ {
8+
/* Configure partition manager to use gd25wb256 as the external flash */
9+
chosen {
10+
nordic,pm-ext-flash = &gd25wb256;
11+
};
12+
13+
pwmleds {
14+
compatible = "pwm-leds";
15+
pwm_led0: pwm_led_0 {
16+
pwms = <&pwm0 0 PWM_MSEC(8) PWM_POLARITY_NORMAL>;
17+
};
18+
pwm_led1: pwm_led_1 {
19+
pwms = <&pwm0 2 PWM_MSEC(8) PWM_POLARITY_NORMAL>;
20+
};
21+
pwm_led2: pwm_led_2 {
22+
pwms = <&pwm0 1 PWM_MSEC(8) PWM_POLARITY_NORMAL>;
23+
};
24+
};
25+
26+
aliases {
27+
ext-flash = &gd25wb256;
28+
pwm-led0 = &pwm_led0;
29+
pwm-led1 = &pwm_led1;
30+
pwm-led2 = &pwm_led2;
31+
};
32+
};
33+
34+
&gd25wb256 {
35+
status = "okay";
36+
};
37+
38+
&uart1 {
39+
status = "okay";
40+
};
41+
42+
&pinctrl {
43+
pwm0_default: pwm0_default {
44+
group1 {
45+
psels = <NRF_PSEL(PWM_OUT0, 0, 0)>,
46+
<NRF_PSEL(PWM_OUT1, 0, 1)>,
47+
<NRF_PSEL(PWM_OUT2, 0, 4)>;
48+
};
49+
};
50+
51+
pwm0_sleep: pwm0_sleep {
52+
group1 {
53+
psels = <NRF_PSEL(PWM_OUT0, 0, 0)>,
54+
<NRF_PSEL(PWM_OUT1, 0, 1)>,
55+
<NRF_PSEL(PWM_OUT2, 0, 4)>;
56+
low-power-enable;
57+
};
58+
};
59+
};

app/boards/thingy91x_nrf9151_ns.conf

+37
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,41 @@
44
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
55
#
66

7+
# Environmental module
8+
CONFIG_APP_ENVIRONMENTAL=y
9+
10+
# Enable BME680
711
CONFIG_BME680=y
12+
13+
# Battery module
14+
CONFIG_APP_BATTERY=y
15+
16+
# Fuel Gage
17+
CONFIG_NRF_FUEL_GAUGE=y
18+
CONFIG_NPM1300_CHARGER=y
19+
20+
# Wi-Fi
21+
CONFIG_WIFI=y
22+
CONFIG_WIFI_NRF70=y
23+
CONFIG_WIFI_NRF70_SKIP_LOCAL_ADMIN_MAC=y
24+
CONFIG_NRF70_BH_WQ_STACK_SIZE=1024
25+
CONFIG_NRF70_IRQ_WQ_STACK_SIZE=1024
26+
# Scan only using offload API
27+
CONFIG_WIFI_NM_WPA_SUPPLICANT=n
28+
# Wifi scan requires extended heap size
29+
CONFIG_HEAP_MEM_POOL_SIZE=20000
30+
CONFIG_NET_STATISTICS_WIFI=y
31+
32+
# Wi-Fi location
33+
CONFIG_LOCATION_METHOD_WIFI=y
34+
CONFIG_LOCATION_REQUEST_DEFAULT_WIFI_TIMEOUT=10000
35+
CONFIG_LOCATION_WORKQUEUE_STACK_SIZE=4244
36+
37+
# Align this with CONFIG_NRF_WIFI_SCAN_MAX_BSS_CNT
38+
CONFIG_LOCATION_METHOD_WIFI_SCANNING_RESULTS_MAX_CNT=10
39+
# Align this with CONFIG_LOCATION_METHOD_WIFI_SCANNING_RESULTS_MAX_CNT
40+
CONFIG_NRF_WIFI_SCAN_MAX_BSS_CNT=10
41+
42+
# Debug logging
43+
CONFIG_APP_BATTERY_LOG_LEVEL_DBG=y
44+
CONFIG_APP_ENVIRONMENTAL_LOG_LEVEL_DBG=y

app/prj.conf

+2-31
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ CONFIG_PWM=y
1717
CONFIG_MAIN_STACK_SIZE=4096
1818
# Extended AT host/monitor stack/heap sizes since some nrf_cloud credentials are longer than 1024 bytes.
1919
CONFIG_AT_MONITOR_HEAP_SIZE=2176
20-
# Wifi scan requires extended heap size
21-
CONFIG_HEAP_MEM_POOL_SIZE=20000
20+
CONFIG_HEAP_MEM_POOL_SIZE=10000
2221
CONFIG_HEAP_MEM_POOL_IGNORE_MIN=y
2322
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=1600
2423

@@ -119,6 +118,7 @@ CONFIG_FOTA_DOWNLOAD=y
119118
CONFIG_FOTA_DOWNLOAD_PROGRESS_EVT=y
120119
CONFIG_FOTA_DL_TIMEOUT_MIN=30
121120
CONFIG_DFU_TARGET=y
121+
122122
# COAP client
123123
CONFIG_COAP_CLIENT_THREAD_PRIORITY=0
124124
CONFIG_COAP_CLIENT_BLOCK_SIZE=1024
@@ -147,40 +147,18 @@ CONFIG_LOCATION_DATA_DETAILS=y
147147
CONFIG_LOCATION_METHOD_GNSS=y
148148
CONFIG_LOCATION_SERVICE_NRF_CLOUD_GNSS_POS_SEND=y
149149
CONFIG_LOCATION_REQUEST_DEFAULT_GNSS_TIMEOUT=60000
150-
CONFIG_LOCATION_REQUEST_DEFAULT_WIFI_TIMEOUT=10000
151150
CONFIG_LOCATION_REQUEST_DEFAULT_CELLULAR_TIMEOUT=30000
152151
CONFIG_LOCATION_REQUEST_DEFAULT_TIMEOUT=120000
153152
CONFIG_LOCATION_REQUEST_DEFAULT_CELLULAR_CELL_COUNT=3
154153
CONFIG_LOCATION_REQUEST_DEFAULT_GNSS_VISIBILITY_DETECTION=y
155154
CONFIG_LOCATION_REQUEST_DEFAULT_GNSS_PRIORITY_MODE=y
156155
CONFIG_LTE_NETWORK_MODE_LTE_M_NBIOT_GPS=y
157-
158-
# configs for Wi-Fi
159-
CONFIG_WIFI=y
160-
CONFIG_WIFI_NRF70=y
161-
CONFIG_WIFI_NRF70_SKIP_LOCAL_ADMIN_MAC=y
162-
CONFIG_WIFI_NRF70_LOG_LEVEL_ERR=y
163-
CONFIG_NRF70_BH_WQ_STACK_SIZE=1024
164-
CONFIG_NRF70_IRQ_WQ_STACK_SIZE=1024
165-
166-
# Align this with CONFIG_LOCATION_METHOD_WIFI_SCANNING_RESULTS_MAX_CNT
167-
CONFIG_NRF_WIFI_SCAN_MAX_BSS_CNT=10
168156
CONFIG_NRF_CLOUD_AGNSS=y
169157

170-
# Wi-Fi location
171-
CONFIG_LOCATION_METHOD_WIFI=y
172-
173-
# Align this with CONFIG_NRF_WIFI_SCAN_MAX_BSS_CNT
174-
CONFIG_LOCATION_METHOD_WIFI_SCANNING_RESULTS_MAX_CNT=10
175-
CONFIG_LOCATION_WORKQUEUE_STACK_SIZE=4244
176-
177158
# Not for LTE throughput testing
178159
CONFIG_NRF_MODEM_LIB_SHMEM_TX_SIZE=4096
179160
CONFIG_NRF_MODEM_LIB_SHMEM_RX_SIZE=4096
180161

181-
# Scan only using offload API
182-
CONFIG_WIFI_NM_WPA_SUPPLICANT=n
183-
184162
# For nRF9160 the default is socket interface
185163
CONFIG_NET_DEFAULT_IF_ETHERNET=y
186164
CONFIG_MBEDTLS=n
@@ -191,7 +169,6 @@ CONFIG_NET_NATIVE=y
191169
CONFIG_NET_IPV4=y
192170
CONFIG_NET_DHCPV4=y
193171
CONFIG_NET_STATISTICS=y
194-
CONFIG_NET_STATISTICS_WIFI=y
195172
CONFIG_NET_STATISTICS_USER_API=y
196173
CONFIG_NET_CONTEXT_SYNC_RECV=y
197174

@@ -215,19 +192,13 @@ CONFIG_THREAD_NAME=y
215192

216193
# Extra Logging
217194
CONFIG_APP_FOTA_LOG_LEVEL_DBG=y
218-
CONFIG_APP_BATTERY_LOG_LEVEL_DBG=y
219195
CONFIG_APP_LOCATION_LOG_LEVEL_DBG=y
220196
CONFIG_APP_CLOUD_LOG_LEVEL_DBG=y
221197
CONFIG_APP_NETWORK_LOG_LEVEL_DBG=y
222198
CONFIG_APP_LED_LOG_LEVEL_DBG=y
223-
CONFIG_APP_ENVIRONMENTAL_LOG_LEVEL_DBG=y
224199
CONFIG_APP_SHELL_LOG_LEVEL_DBG=y
225200
CONFIG_APP_LOG_LEVEL_DBG=y
226201

227-
# Fuel Gage
228-
CONFIG_NRF_FUEL_GAUGE=y
229-
CONFIG_NPM1300_CHARGER=y
230-
231202
# Task Watchdog
232203
CONFIG_TASK_WDT=y
233204
CONFIG_TASK_WDT_CHANNELS=9

app/src/modules/app/app.c

+16-7
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,13 @@
1313

1414
#include "modules_common.h"
1515
#include "message_channel.h"
16-
#include "battery.h"
1716
#include "button.h"
1817
#include "network.h"
1918

19+
#if defined(CONFIG_APP_BATTERY)
20+
#include "battery.h"
21+
#endif /* CONFIG_APP_BATTERY */
22+
2023
/* Register log module */
2124
LOG_MODULE_REGISTER(app, CONFIG_APP_LOG_LEVEL);
2225

@@ -117,12 +120,6 @@ static void triggers_send(void)
117120
struct network_msg network_msg = {
118121
.type = NETWORK_QUALITY_SAMPLE_REQUEST,
119122
};
120-
struct battery_msg battery_msg = {
121-
.type = BATTERY_PERCENTAGE_SAMPLE_REQUEST,
122-
};
123-
struct battery_msg environmental_msg = {
124-
.type = ENVIRONMENTAL_SENSOR_SAMPLE_REQUEST,
125-
};
126123
enum trigger_type poll_trigger = TRIGGER_FOTA_POLL;
127124

128125
err = zbus_chan_pub(&NETWORK_CHAN, &network_msg, K_SECONDS(1));
@@ -132,19 +129,31 @@ static void triggers_send(void)
132129
return;
133130
}
134131

132+
#if defined(CONFIG_APP_BATTERY)
133+
struct battery_msg battery_msg = {
134+
.type = BATTERY_PERCENTAGE_SAMPLE_REQUEST,
135+
};
136+
135137
err = zbus_chan_pub(&BATTERY_CHAN, &battery_msg, K_SECONDS(1));
136138
if (err) {
137139
LOG_ERR("zbus_chan_pub, error: %d", err);
138140
SEND_FATAL_ERROR();
139141
return;
140142
}
143+
#endif /* CONFIG_APP_BATTERY */
144+
145+
#if defined(CONFIG_APP_ENVIRONMENTAL)
146+
struct battery_msg environmental_msg = {
147+
.type = ENVIRONMENTAL_SENSOR_SAMPLE_REQUEST,
148+
};
141149

142150
err = zbus_chan_pub(&ENVIRONMENTAL_CHAN, &environmental_msg, K_SECONDS(1));
143151
if (err) {
144152
LOG_ERR("zbus_chan_pub, error: %d", err);
145153
SEND_FATAL_ERROR();
146154
return;
147155
}
156+
#endif /* CONFIG_APP_ENVIRONMENTAL */
148157

149158
/* Send FOTA poll trigger */
150159
err = zbus_chan_pub(&TRIGGER_CHAN, &poll_trigger, K_SECONDS(1));

app/src/modules/battery/Kconfig.battery

+7
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66

77
menu "Battery"
88

9+
config APP_BATTERY
10+
bool "Battery module"
11+
12+
if APP_BATTERY
13+
914
config APP_BATTERY_THREAD_STACK_SIZE
1015
int "Thread stack size"
1116
default 1536
@@ -24,4 +29,6 @@ module = APP_BATTERY
2429
module-str = Battery
2530
source "subsys/logging/Kconfig.template.log_config"
2631

32+
endif # APP_BATTERY
33+
2734
endmenu # Battery

app/src/modules/button/button.c

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#include <date_time.h>
1212

1313
#include "message_channel.h"
14-
#include "battery.h"
1514
#include "button.h"
1615

1716
/* Register log module */

app/src/modules/cloud/cloud_module.c

+19-3
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,29 @@
1919

2020
#include "modules_common.h"
2121
#include "message_channel.h"
22-
#include "battery.h"
2322
#include "network.h"
23+
#if defined(CONFIG_APP_BATTERY)
24+
#include "battery.h"
25+
#endif /* CONFIG_APP_BATTERY */
2426

2527
/* Register log module */
2628
LOG_MODULE_REGISTER(cloud, CONFIG_APP_CLOUD_LOG_LEVEL);
2729

2830
#define CUSTOM_JSON_APPID_VAL_CONEVAL "CONEVAL"
2931
#define CUSTOM_JSON_APPID_VAL_BATTERY "BATTERY"
32+
33+
#if defined(CONFIG_APP_BATTERY)
34+
#define BAT_MSG_SIZE sizeof(struct battery_msg)
35+
#else
36+
#define BAT_MSG_SIZE 0
37+
#endif /* CONFIG_APP_BATTERY */
38+
3039
#define MAX_MSG_SIZE (MAX(sizeof(struct cloud_payload), \
3140
MAX(sizeof(struct network_msg), \
32-
MAX(sizeof(struct battery_msg), sizeof(struct environmental_msg)))))
41+
MAX(BAT_MSG_SIZE, \
42+
sizeof(struct environmental_msg)))))
43+
44+
3345

3446
BUILD_ASSERT(CONFIG_APP_CLOUD_WATCHDOG_TIMEOUT_SECONDS >
3547
CONFIG_APP_CLOUD_EXEC_TIME_SECONDS_MAX,
@@ -41,9 +53,11 @@ ZBUS_MSG_SUBSCRIBER_DEFINE(cloud);
4153
/* Observe channels */
4254
ZBUS_CHAN_ADD_OBS(PAYLOAD_CHAN, cloud, 0);
4355
ZBUS_CHAN_ADD_OBS(NETWORK_CHAN, cloud, 0);
44-
ZBUS_CHAN_ADD_OBS(BATTERY_CHAN, cloud, 0);
4556
ZBUS_CHAN_ADD_OBS(TRIGGER_CHAN, cloud, 0);
4657
ZBUS_CHAN_ADD_OBS(ENVIRONMENTAL_CHAN, cloud, 0);
58+
#if defined(CONFIG_APP_BATTERY)
59+
ZBUS_CHAN_ADD_OBS(BATTERY_CHAN, cloud, 0);
60+
#endif /* CONFIG_APP_BATTERY */
4761

4862
/* Define channels provided by this module */
4963

@@ -532,6 +546,7 @@ static void state_connected_ready_run(void *o)
532546
}
533547
}
534548

549+
#if defined(CONFIG_APP_BATTERY)
535550
if (state_object->chan == &BATTERY_CHAN) {
536551
struct battery_msg msg = MSG_TO_BATTERY_MSG(state_object->msg_buf);
537552

@@ -547,6 +562,7 @@ static void state_connected_ready_run(void *o)
547562
return;
548563
}
549564
}
565+
#endif /* CONFIG_APP_BATTERY */
550566

551567
if (state_object->chan == &ENVIRONMENTAL_CHAN) {
552568
struct environmental_msg msg = MSG_TO_ENVIRONMENTAL_MSG(state_object->msg_buf);

app/sysbuild.conf

-3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,3 @@
33
#
44
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
55
#
6-
7-
SB_CONFIG_WIFI_NRF70=y
8-
SB_CONFIG_WIFI_NRF70_SCAN_ONLY=y

0 commit comments

Comments
 (0)