Skip to content

Commit 611c9a8

Browse files
maxd-nordicrlubos
authored andcommitted
lib: nrfcloud: Split nRF Cloud into transport-specific parts
Refactor nRF Cloud library to reduce coupling between the three support transports (MQTT, REST, CoAP). Signed-off-by: Maximilian Deubel <[email protected]>
1 parent 810b478 commit 611c9a8

File tree

91 files changed

+3301
-3421
lines changed

Some content is hidden

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

91 files changed

+3301
-3421
lines changed

doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,10 @@ Libraries for networking
707707

708708
* Updated by adding a missing CONFIG prefix.
709709

710+
* :ref:`lib_nrf_cloud` library:
711+
712+
* Updated by refactoring the folder structure of the library to separate the different backend implementations.
713+
710714
Libraries for NFC
711715
-----------------
712716

scripts/checkpatch/typedefsfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ zb_uint64_t
1313
zb_time_t
1414
zb_ieee_addr_t
1515
zb_ret_t
16+
cJSON

subsys/net/lib/nrf_cloud/CMakeLists.txt

Lines changed: 109 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -5,80 +5,139 @@
55
#
66
zephyr_library()
77
zephyr_library_sources(
8-
src/nrf_cloud_codec_internal.c
9-
src/nrf_cloud_log.c
10-
src/nrf_cloud_codec.c
11-
src/nrf_cloud_mem.c
12-
src/nrf_cloud_client_id.c
13-
src/nrf_cloud_sec_tag.c
14-
src/nrf_cloud_info.c)
15-
zephyr_library_sources_ifdef(
16-
CONFIG_NRF_CLOUD_ALERT
17-
src/nrf_cloud_alert.c)
8+
common/src/nrf_cloud_codec_internal.c
9+
common/src/nrf_cloud_log.c
10+
common/src/nrf_cloud_codec.c
11+
common/src/nrf_cloud_mem.c
12+
common/src/nrf_cloud_client_id.c
13+
common/src/nrf_cloud_sec_tag.c
14+
common/src/nrf_cloud_info.c)
1815
zephyr_library_sources_ifdef(
1916
CONFIG_NRF_CLOUD_LOG_BACKEND
20-
src/nrf_cloud_log_backend.c)
17+
common/src/nrf_cloud_log_backend.c)
2118
zephyr_library_sources_ifdef(
2219
CONFIG_MODEM_JWT
23-
src/nrf_cloud_jwt.c)
20+
common/src/nrf_cloud_jwt.c)
2421
zephyr_library_sources_ifdef(
2522
CONFIG_NRF_CLOUD_JWT_SOURCE_CUSTOM
26-
src/nrf_cloud_jwt.c)
23+
common/src/nrf_cloud_jwt.c)
2724
zephyr_library_sources_ifdef(
2825
CONFIG_NRF_CLOUD_MQTT
29-
src/nrf_cloud.c
30-
src/nrf_cloud_fsm.c
31-
src/nrf_cloud_transport.c
32-
src/nrf_cloud_dns.c)
26+
mqtt/src/nrf_cloud.c
27+
mqtt/src/nrf_cloud_fsm.c
28+
mqtt/src/nrf_cloud_transport.c
29+
mqtt/src/nrf_cloud_codec_internal.c
30+
common/src/nrf_cloud_dns.c)
31+
3332
zephyr_library_sources_ifdef(
34-
CONFIG_NRF_CLOUD_AGNSS
35-
src/nrf_cloud_agnss.c
36-
src/nrf_cloud_agnss_utils.c)
33+
CONFIG_NRF_CLOUD_DOWNLOADS
34+
common/src/nrf_cloud_download.c
35+
)
36+
3737
zephyr_library_sources_ifdef(
38-
CONFIG_NRF_CLOUD_PGPS
39-
src/nrf_cloud_agnss.c
40-
src/nrf_cloud_agnss_utils.c
41-
src/nrf_cloud_pgps.c
42-
src/nrf_cloud_pgps_utils.c
43-
src/nrf_cloud_download.c)
38+
CONFIG_NRF_CLOUD_COAP_DOWNLOADS
39+
coap/src/nrf_cloud_coap_download.c
40+
)
41+
4442
zephyr_library_sources_ifdef(
45-
CONFIG_NRF_CLOUD_LOCATION
46-
src/nrf_cloud_location.c)
43+
CONFIG_NRF_CLOUD_HTTPS_DOWNLOADS
44+
common/src/nrf_cloud_https_download.c
45+
)
46+
if(CONFIG_NRF_CLOUD_AGNSS)
47+
zephyr_library_sources(
48+
common/src/nrf_cloud_agnss.c
49+
common/src/nrf_cloud_agnss_utils.c
50+
)
51+
zephyr_library_sources_ifdef(
52+
CONFIG_NRF_CLOUD_MQTT
53+
mqtt/src/nrf_cloud_agnss.c)
54+
endif()
55+
56+
zephyr_library_sources_ifdef(
57+
CONFIG_NRF_CLOUD_PGPS
58+
common/src/nrf_cloud_pgps.c
59+
common/src/nrf_cloud_pgps_utils.c
60+
# this is on purpose, P-GPS uses some AGNSS functions, even if AGNSS is not enabled
61+
common/src/nrf_cloud_agnss.c
62+
common/src/nrf_cloud_agnss_utils.c
63+
)
64+
65+
if(CONFIG_NRF_CLOUD_PGPS)
66+
zephyr_library_sources_ifdef(
67+
CONFIG_NRF_CLOUD_MQTT
68+
mqtt/src/nrf_cloud_pgps.c)
69+
endif()
70+
71+
if(CONFIG_NRF_CLOUD_LOCATION)
72+
zephyr_library_sources(
73+
common/src/nrf_cloud_location.c
74+
)
75+
zephyr_library_sources_ifdef(
76+
CONFIG_NRF_CLOUD_MQTT
77+
mqtt/src/nrf_cloud_location.c)
78+
endif()
79+
4780
zephyr_library_sources_ifdef(
4881
CONFIG_NRF_CLOUD_FOTA
49-
src/nrf_cloud_fota.c
50-
src/nrf_cloud_fota_common.c
51-
src/nrf_cloud_download.c)
82+
mqtt/src/nrf_cloud_fota.c
83+
common/src/nrf_cloud_fota_common.c
84+
)
5285
zephyr_library_sources_ifdef(
5386
CONFIG_NRF_CLOUD_FOTA_POLL
54-
src/nrf_cloud_download.c
55-
src/nrf_cloud_fota_common.c
56-
src/nrf_cloud_fota_poll.c)
87+
common/src/nrf_cloud_fota_common.c
88+
common/src/nrf_cloud_fota_poll.c
89+
)
5790
zephyr_library_sources_ifdef(
5891
CONFIG_NRF_CLOUD_REST
59-
src/nrf_cloud_rest.c)
60-
zephyr_compile_definitions_ifdef(
61-
CONFIG_NRF_CLOUD_COAP)
92+
rest/src/nrf_cloud_rest.c
93+
)
6294
zephyr_library_sources_ifdef(
6395
CONFIG_NRF_CLOUD_COAP
64-
coap/src/agnss_encode.c
65-
coap/src/nrf_cloud_coap_transport.c
66-
coap/src/coap_codec.c
67-
coap/src/nrfc_dtls.c
68-
coap/src/ground_fix_encode.c
69-
coap/src/ground_fix_decode.c
70-
coap/src/msg_encode.c
7196
coap/src/nrf_cloud_coap.c
72-
coap/src/pgps_decode.c
73-
coap/src/pgps_encode.c
74-
src/nrf_cloud_dns.c)
97+
coap/src/nrf_cloud_coap_transport.c
98+
coap/src/nrf_cloud_coap_codec.c
99+
coap/src/nrf_cloud_dtls.c
100+
coap/generated/src/agnss_encode.c
101+
coap/generated/src/ground_fix_encode.c
102+
coap/generated/src/ground_fix_decode.c
103+
coap/generated/src/msg_encode.c
104+
coap/generated/src/pgps_decode.c
105+
coap/generated/src/pgps_encode.c
106+
common/src/nrf_cloud_dns.c)
75107
zephyr_library_sources_ifdef(
76108
CONFIG_NRF_CLOUD_CHECK_CREDENTIALS
77-
src/nrf_cloud_credentials.c)
109+
common/src/nrf_cloud_credentials.c)
78110
zephyr_library_sources_ifdef(
79111
CONFIG_NRF_CLOUD_PROVISION_CERTIFICATES
80-
src/nrf_cloud_credentials.c)
81-
zephyr_include_directories(./include coap/include)
112+
common/src/nrf_cloud_credentials.c)
113+
zephyr_include_directories(include common/include coap/include mqtt/include coap/generated/include)
82114
if(CONFIG_MCUBOOT_IMG_MANAGER)
83115
zephyr_library_link_libraries(MCUBOOT_BOOTUTIL)
84116
endif()
117+
118+
if(CONFIG_NRF_CLOUD_ALERT)
119+
zephyr_library_sources(
120+
common/src/nrf_cloud_alert.c
121+
)
122+
zephyr_library_sources_ifdef(
123+
CONFIG_NRF_CLOUD_COAP
124+
coap/src/nrf_cloud_alert.c)
125+
zephyr_library_sources_ifdef(
126+
CONFIG_NRF_CLOUD_MQTT
127+
mqtt/src/nrf_cloud_alert.c)
128+
zephyr_library_sources_ifdef(
129+
CONFIG_NRF_CLOUD_REST
130+
rest/src/nrf_cloud_alert.c)
131+
endif()
132+
133+
if(CONFIG_NRF_CLOUD_LOG_DIRECT)
134+
zephyr_library_sources_ifdef(
135+
CONFIG_NRF_CLOUD_COAP
136+
coap/src/nrf_cloud_log.c)
137+
zephyr_library_sources_ifdef(
138+
CONFIG_NRF_CLOUD_MQTT
139+
mqtt/src/nrf_cloud_log.c)
140+
zephyr_library_sources_ifdef(
141+
CONFIG_NRF_CLOUD_REST
142+
rest/src/nrf_cloud_log.c)
143+
endif()

subsys/net/lib/nrf_cloud/Kconfig

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,34 @@ config NRF_CLOUD_GATEWAY
158158
Enables functionality in this device to be compatible with
159159
nRF Cloud LTE gateway support.
160160

161+
config NRF_CLOUD_DOWNLOADS
162+
bool
163+
default y
164+
depends on NRF_CLOUD_FOTA || NRF_CLOUD_PGPS || NRF_CLOUD_FOTA_POLL
165+
help
166+
Enable nRF Cloud file downloads for FOTA and P-GPS.
167+
168+
choice NRF_CLOUD_DOWNLOADS_PROTOCOL
169+
prompt "nRF Cloud file download protocol"
170+
depends on NRF_CLOUD_DOWNLOADS
171+
default NRF_CLOUD_COAP_DOWNLOADS if NRF_CLOUD_COAP
172+
173+
config NRF_CLOUD_COAP_DOWNLOADS
174+
bool "CoAP"
175+
depends on NRF_CLOUD_COAP
176+
select DOWNLOADER_TRANSPORT_COAP
177+
help
178+
Use nRF Cloud CoAP's proxy download resource to download files for FOTA and P-GPS.
179+
When enabled, the Kconfig option COAP_EXTENDED_OPTIONS_LEN_VALUE must be increased
180+
from the default value. Safe values are 80 for P-GPS and 192 for FOTA.
181+
182+
config NRF_CLOUD_HTTPS_DOWNLOADS
183+
bool "HTTPS"
184+
help
185+
Use HTTPS to download files for FOTA and P-GPS.
186+
187+
endchoice
188+
161189
module=NRF_CLOUD
162190
module-dep=LOG
163191
module-str=Log level for nRF Cloud

subsys/net/lib/nrf_cloud/Kconfig.nrf_cloud_coap

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,16 +69,6 @@ config NRF_CLOUD_COAP_SEND_SSIDS
6969

7070
endif # WIFI
7171

72-
config NRF_CLOUD_COAP_DOWNLOADS
73-
bool "Download files using CoAP instead of HTTP"
74-
depends on NRF_CLOUD_COAP
75-
select DOWNLOADER_TRANSPORT_COAP
76-
default y
77-
help
78-
Use nRF Cloud CoAP's proxy download resource to download files for FOTA and P-GPS.
79-
When enabled, the Kconfig option COAP_EXTENDED_OPTIONS_LEN_VALUE must be increased
80-
from the default value. Safe values are 80 for P-GPS and 192 for FOTA.
81-
8272
config NRF_CLOUD_COAP_DISCONNECT_ON_FAILED_REQUEST
8373
bool "Disconnect on failed request"
8474
help
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)