Skip to content

Commit 513042b

Browse files
eivindj-nordiclemreytokangas
authored andcommitted
manifest: nrf_modem: v2.5.0 release
See CHANGELOG file in nrfxlib for details about library features. Co-authored-by: Emanuele Di Santo <emdi@nordicsemi.no> Co-authored-by: Tommi Kangas <tommi.kangas@nordicsemi.no> Signed-off-by: Eivind Jølsgard <eivind.jolsgard@nordicsemi.no>
1 parent 435544d commit 513042b

File tree

80 files changed

+1408
-935
lines changed

Some content is hidden

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

80 files changed

+1408
-935
lines changed

applications/asset_tracker_v2/sample.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@ tests:
124124
platform_allow: nrf9160dk_nrf9160_ns thingy91_nrf9160_ns
125125
integration_platforms:
126126
- nrf9160dk_nrf9160_ns
127-
- thingy91_nrf9160_ns
128127
extra_args: EXTRA_CONF_FILE=overlay-carrier.conf
129128
tags: ci_build
130129
applications.asset_tracker_v2.carrier.nrf9161dk:

applications/asset_tracker_v2/src/cloud/cloud_codec/cloud_codec.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ struct cloud_data_agps_request {
254254
/** Area Code. */
255255
uint32_t area;
256256
/** AGPS request types */
257-
struct nrf_modem_gnss_agps_data_frame request;
257+
struct nrf_modem_gnss_agnss_data_frame request;
258258
/** Flag signifying that the data entry is to be encoded. */
259259
bool queued : 1;
260260
};

applications/asset_tracker_v2/src/cloud/cloud_codec/json_common.c

+14-8
Original file line numberDiff line numberDiff line change
@@ -820,7 +820,7 @@ int json_common_agps_request_data_add(cJSON *parent,
820820
return -ENOMEM;
821821
}
822822

823-
if (data->request.data_flags & NRF_MODEM_GNSS_AGPS_GPS_UTC_REQUEST) {
823+
if (data->request.data_flags & NRF_MODEM_GNSS_AGNSS_GPS_UTC_REQUEST) {
824824
err = json_add_number_to_array(agps_types,
825825
DATA_AGPS_REQUEST_TYPE_UTC_PARAMETERS);
826826
if (err) {
@@ -829,7 +829,13 @@ int json_common_agps_request_data_add(cJSON *parent,
829829
}
830830
}
831831

832-
if (data->request.sv_mask_ephe) {
832+
/* GPS data need is always expected to be present and first in list. */
833+
__ASSERT(data->request.system_count > 0,
834+
"GNSS system data need not found");
835+
__ASSERT(data->request.system[0].system_id == NRF_MODEM_GNSS_SYSTEM_GPS,
836+
"GPS data need not found");
837+
838+
if (data->request.system[0].sv_mask_ephe) {
833839
err = json_add_number_to_array(agps_types,
834840
DATA_AGPS_REQUEST_TYPE_EPHEMERIDES);
835841
if (err) {
@@ -838,7 +844,7 @@ int json_common_agps_request_data_add(cJSON *parent,
838844
}
839845
}
840846

841-
if (data->request.sv_mask_alm) {
847+
if (data->request.system[0].sv_mask_alm) {
842848
err = json_add_number_to_array(agps_types,
843849
DATA_AGPS_REQUEST_TYPE_ALMANAC);
844850
if (err) {
@@ -847,7 +853,7 @@ int json_common_agps_request_data_add(cJSON *parent,
847853
}
848854
}
849855

850-
if (data->request.data_flags & NRF_MODEM_GNSS_AGPS_KLOBUCHAR_REQUEST) {
856+
if (data->request.data_flags & NRF_MODEM_GNSS_AGNSS_KLOBUCHAR_REQUEST) {
851857
err = json_add_number_to_array(agps_types,
852858
DATA_AGPS_REQUEST_TYPE_KLOBUCHAR_CORRECTION);
853859
if (err) {
@@ -856,7 +862,7 @@ int json_common_agps_request_data_add(cJSON *parent,
856862
}
857863
}
858864

859-
if (data->request.data_flags & NRF_MODEM_GNSS_AGPS_NEQUICK_REQUEST) {
865+
if (data->request.data_flags & NRF_MODEM_GNSS_AGNSS_NEQUICK_REQUEST) {
860866
err = json_add_number_to_array(agps_types,
861867
DATA_AGPS_REQUEST_TYPE_NEQUICK_CORRECTION);
862868
if (err) {
@@ -865,7 +871,7 @@ int json_common_agps_request_data_add(cJSON *parent,
865871
}
866872
}
867873

868-
if (data->request.data_flags & NRF_MODEM_GNSS_AGPS_SYS_TIME_AND_SV_TOW_REQUEST) {
874+
if (data->request.data_flags & NRF_MODEM_GNSS_AGNSS_GPS_SYS_TIME_AND_SV_TOW_REQUEST) {
869875
err = json_add_number_to_array(agps_types,
870876
DATA_AGPS_REQUEST_TYPE_GPS_TOWS);
871877
if (err) {
@@ -881,7 +887,7 @@ int json_common_agps_request_data_add(cJSON *parent,
881887
}
882888
}
883889

884-
if (data->request.data_flags & NRF_MODEM_GNSS_AGPS_POSITION_REQUEST) {
890+
if (data->request.data_flags & NRF_MODEM_GNSS_AGNSS_POSITION_REQUEST) {
885891
err = json_add_number_to_array(agps_types,
886892
DATA_AGPS_REQUEST_TYPE_LOCATION);
887893
if (err) {
@@ -890,7 +896,7 @@ int json_common_agps_request_data_add(cJSON *parent,
890896
}
891897
}
892898

893-
if (data->request.data_flags & NRF_MODEM_GNSS_AGPS_INTEGRITY_REQUEST) {
899+
if (data->request.data_flags & NRF_MODEM_GNSS_AGNSS_INTEGRITY_REQUEST) {
894900
err = json_add_number_to_array(agps_types,
895901
DATA_AGPS_REQUEST_TYPE_INTEGRITY);
896902
if (err) {

applications/asset_tracker_v2/src/events/location_module_event.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ enum location_module_event_type {
7272
LOCATION_MODULE_EVT_SHUTDOWN_READY,
7373

7474
/** The location library has reported that it needs GPS assistance data.
75-
* The event has associated payload of the type ``struct nrf_modem_gnss_agps_data_frame``
75+
* The event has associated payload of the type ``struct nrf_modem_gnss_agnss_data_frame``
7676
* in the event struct member ``data.agps_request``, which contains the types
7777
* of A-GPS data that the modem needs.
7878
*/
@@ -184,7 +184,7 @@ struct location_module_event {
184184
/** Data for event LOCATION_MODULE_EVT_CLOUD_LOCATION_DATA_READY. */
185185
struct location_module_cloud_location cloud_location;
186186
/** Data for event LOCATION_MODULE_EVT_AGPS_NEEDED. */
187-
struct nrf_modem_gnss_agps_data_frame agps_request;
187+
struct nrf_modem_gnss_agnss_data_frame agps_request;
188188
#if defined(CONFIG_NRF_CLOUD_PGPS)
189189
/** Data for event LOCATION_MODULE_EVT_PGPS_NEEDED. */
190190
struct gps_pgps_request pgps_request;

applications/asset_tracker_v2/src/main.c

+27-20
Original file line numberDiff line numberDiff line change
@@ -174,41 +174,48 @@ static void sub_state_set(enum sub_state_type new_state)
174174
}
175175

176176
#if defined(CONFIG_NRF_MODEM_LIB)
177-
/* Check the return code from nRF modem library initialization to ensure that
178-
* the modem is rebooted if a modem firmware update is ready to be applied or
179-
* an error condition occurred during firmware update or library initialization.
180-
*/
181-
static void modem_init(void)
182-
{
183-
int ret = nrf_modem_lib_init();
184177

185-
/* Handle return values relating to modem firmware update */
186-
switch (ret) {
187-
case 0:
188-
/* Initialization successful, no action required. */
189-
return;
178+
static void on_modem_lib_dfu(int dfu_res, void *ctx)
179+
{
180+
switch (dfu_res) {
190181
case NRF_MODEM_DFU_RESULT_OK:
191-
LOG_DBG("MODEM UPDATE OK. Will run new modem firmware after reboot");
182+
LOG_DBG("MODEM UPDATE OK. Running new firmware");
192183
break;
193184
case NRF_MODEM_DFU_RESULT_UUID_ERROR:
194185
case NRF_MODEM_DFU_RESULT_AUTH_ERROR:
195-
LOG_ERR("MODEM UPDATE ERROR %d. Will run old firmware", ret);
186+
LOG_ERR("MODEM UPDATE ERROR 0x%x. Running old firmware", dfu_res);
196187
break;
197188
case NRF_MODEM_DFU_RESULT_HARDWARE_ERROR:
198189
case NRF_MODEM_DFU_RESULT_INTERNAL_ERROR:
199-
LOG_ERR("MODEM UPDATE FATAL ERROR %d. Modem failure", ret);
190+
LOG_ERR("MODEM UPDATE FATAL ERROR 0x%x. Modem failure", dfu_res);
200191
break;
201192
case NRF_MODEM_DFU_RESULT_VOLTAGE_LOW:
202-
LOG_ERR("MODEM UPDATE CANCELLED %d.", ret);
193+
LOG_ERR("MODEM UPDATE CANCELLED 0x%x.", dfu_res);
203194
LOG_ERR("Please reboot once you have sufficient power for the DFU");
204195
break;
205196
default:
206-
/* All non-zero return codes other than DFU result codes are
207-
* considered irrecoverable and a reboot is needed.
208-
*/
209-
LOG_ERR("nRF modem lib initialization failed, error: %d", ret);
197+
/* Unknown DFU result code */
198+
LOG_ERR("nRF modem DFU failed, error: 0x%x", dfu_res);
210199
break;
211200
}
201+
}
202+
203+
NRF_MODEM_LIB_ON_DFU_RES(main_dfu_hook, on_modem_lib_dfu, NULL);
204+
205+
/* Check the return code from nRF modem library initialization to ensure that
206+
* the modem is rebooted or an error condition occurred during library initialization.
207+
*/
208+
static void modem_init(void)
209+
{
210+
int ret;
211+
212+
ret = nrf_modem_lib_init();
213+
if (ret == 0) {
214+
LOG_DBG("nRF Modem Library initialized successfully");
215+
return;
216+
}
217+
218+
LOG_ERR("nRF modem lib initialization failed, error: %d", ret);
212219

213220
#if defined(CONFIG_NRF_CLOUD_FOTA)
214221
/* Ignore return value, rebooting below */

applications/asset_tracker_v2/src/modules/data_module.c

+14-21
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ enum coneval_supported_data_type {
138138
bool agps_request_buffered;
139139

140140
/* Buffered A-GPS request. */
141-
struct nrf_modem_gnss_agps_data_frame agps_request_buffer;
141+
struct nrf_modem_gnss_agnss_data_frame agps_request_buffer;
142142

143143
/* Data module message queue. */
144144
#define DATA_QUEUE_ENTRY_COUNT 10
@@ -704,7 +704,7 @@ static int get_modem_info(struct modem_param_info *const modem_info)
704704
*
705705
* @return 0 on success, otherwise a negative error code indicating reason of failure.
706706
*/
707-
static int agps_request_encode(struct nrf_modem_gnss_agps_data_frame *incoming_request)
707+
static int agps_request_encode(struct nrf_modem_gnss_agnss_data_frame *incoming_request)
708708
{
709709
int err;
710710
struct cloud_codec_data codec = {0};
@@ -720,15 +720,16 @@ static int agps_request_encode(struct nrf_modem_gnss_agps_data_frame *incoming_r
720720
const uint32_t mask = IS_ENABLED(CONFIG_NRF_CLOUD_PGPS) ? 0u : 0xFFFFFFFFu;
721721

722722
LOG_DBG("Requesting all A-GPS elements");
723-
cloud_agps_request.request.sv_mask_ephe = mask,
724-
cloud_agps_request.request.sv_mask_alm = mask,
725723
cloud_agps_request.request.data_flags =
726-
NRF_MODEM_GNSS_AGPS_GPS_UTC_REQUEST |
727-
NRF_MODEM_GNSS_AGPS_KLOBUCHAR_REQUEST |
728-
NRF_MODEM_GNSS_AGPS_NEQUICK_REQUEST |
729-
NRF_MODEM_GNSS_AGPS_SYS_TIME_AND_SV_TOW_REQUEST |
730-
NRF_MODEM_GNSS_AGPS_POSITION_REQUEST |
731-
NRF_MODEM_GNSS_AGPS_INTEGRITY_REQUEST;
724+
NRF_MODEM_GNSS_AGNSS_GPS_UTC_REQUEST |
725+
NRF_MODEM_GNSS_AGNSS_KLOBUCHAR_REQUEST |
726+
NRF_MODEM_GNSS_AGNSS_NEQUICK_REQUEST |
727+
NRF_MODEM_GNSS_AGNSS_GPS_SYS_TIME_AND_SV_TOW_REQUEST |
728+
NRF_MODEM_GNSS_AGNSS_POSITION_REQUEST |
729+
NRF_MODEM_GNSS_AGNSS_INTEGRITY_REQUEST;
730+
cloud_agps_request.request.system_count = 1;
731+
cloud_agps_request.request.system[0].sv_mask_ephe = mask;
732+
cloud_agps_request.request.system[0].sv_mask_alm = mask;
732733
} else {
733734
cloud_agps_request.request = *incoming_request;
734735
}
@@ -1060,25 +1061,17 @@ static void new_config_handle(struct cloud_data_cfg *new_config)
10601061
* requested by the modem. If incoming_request is NULL, all A-GPS data
10611062
* types are requested.
10621063
*/
1063-
static void agps_request_handle(struct nrf_modem_gnss_agps_data_frame *incoming_request)
1064+
static void agps_request_handle(struct nrf_modem_gnss_agnss_data_frame *incoming_request)
10641065
{
10651066
int err;
10661067

10671068
#if defined(CONFIG_NRF_CLOUD_AGPS)
1068-
struct nrf_modem_gnss_agps_data_frame request;
1069-
1070-
if (incoming_request != NULL) {
1071-
request.sv_mask_ephe = incoming_request->sv_mask_ephe;
1072-
request.sv_mask_alm = incoming_request->sv_mask_alm;
1073-
request.data_flags = incoming_request->data_flags;
1074-
}
1075-
10761069
#if defined(CONFIG_NRF_CLOUD_MQTT)
10771070
/* If CONFIG_NRF_CLOUD_MQTT is enabled, the nRF Cloud MQTT transport library will be used
10781071
* to send the request.
10791072
*/
10801073
err = (incoming_request == NULL) ? nrf_cloud_agps_request_all() :
1081-
nrf_cloud_agps_request(&request);
1074+
nrf_cloud_agps_request(incoming_request);
10821075
if (err) {
10831076
LOG_WRN("Failed to request A-GPS data, error: %d", err);
10841077
LOG_DBG("This is expected to fail if we are not in a connected state");
@@ -1096,7 +1089,7 @@ static void agps_request_handle(struct nrf_modem_gnss_agps_data_frame *incoming_
10961089
* up and send to the cloud that is currently used.
10971090
*/
10981091
err = (incoming_request == NULL) ? agps_request_encode(NULL) :
1099-
agps_request_encode(&request);
1092+
agps_request_encode(incoming_request);
11001093
if (err) {
11011094
LOG_WRN("Failed to request A-GPS data, error: %d", err);
11021095
} else {

applications/asset_tracker_v2/tests/json_common/src/main.c

+8-8
Original file line numberDiff line numberDiff line change
@@ -701,15 +701,15 @@ void test_encode_agps_request_data_object(void)
701701
.mnc = 1,
702702
.cell = 21679716,
703703
.area = 40401,
704-
.request.sv_mask_ephe = UINT32_MAX,
705-
.request.sv_mask_alm = UINT32_MAX,
704+
.request.system[0].sv_mask_ephe = UINT32_MAX,
705+
.request.system[0].sv_mask_alm = UINT32_MAX,
706706
.request.data_flags =
707-
NRF_MODEM_GNSS_AGPS_GPS_UTC_REQUEST |
708-
NRF_MODEM_GNSS_AGPS_KLOBUCHAR_REQUEST |
709-
NRF_MODEM_GNSS_AGPS_NEQUICK_REQUEST |
710-
NRF_MODEM_GNSS_AGPS_SYS_TIME_AND_SV_TOW_REQUEST |
711-
NRF_MODEM_GNSS_AGPS_POSITION_REQUEST |
712-
NRF_MODEM_GNSS_AGPS_INTEGRITY_REQUEST,
707+
NRF_MODEM_GNSS_AGNSS_GPS_UTC_REQUEST |
708+
NRF_MODEM_GNSS_AGNSS_KLOBUCHAR_REQUEST |
709+
NRF_MODEM_GNSS_AGNSS_NEQUICK_REQUEST |
710+
NRF_MODEM_GNSS_AGNSS_GPS_SYS_TIME_AND_SV_TOW_REQUEST |
711+
NRF_MODEM_GNSS_AGNSS_POSITION_REQUEST |
712+
NRF_MODEM_GNSS_AGNSS_INTEGRITY_REQUEST,
713713
.queued = true
714714
};
715715

applications/asset_tracker_v2/tests/location_module/src/location_module_test.c

+18-15
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ static void validate_location_module_evt(struct app_event_header *aeh, int no_of
111111
uint32_t index = location_module_event_count;
112112
struct location_module_event *event = cast_location_module_event(aeh);
113113

114+
struct nrf_modem_gnss_agnss_data_frame *agps_req_exp =
115+
&expected_location_module_events[index].data.agps_request;
116+
114117
/* Make sure we don't get more events than expected. */
115118
TEST_ASSERT_LESS_THAN(expected_location_module_event_count, location_module_event_count);
116119

@@ -212,13 +215,13 @@ static void validate_location_module_evt(struct app_event_header *aeh, int no_of
212215
break;
213216
case LOCATION_MODULE_EVT_AGPS_NEEDED:
214217
TEST_ASSERT_EQUAL(
215-
expected_location_module_events[index].data.agps_request.sv_mask_ephe,
216-
event->data.agps_request.sv_mask_ephe);
218+
agps_req_exp->system[0].sv_mask_ephe,
219+
event->data.agps_request.system[0].sv_mask_ephe);
217220
TEST_ASSERT_EQUAL(
218-
expected_location_module_events[index].data.agps_request.sv_mask_alm,
219-
event->data.agps_request.sv_mask_alm);
221+
agps_req_exp->system[0].sv_mask_alm,
222+
event->data.agps_request.system[0].sv_mask_alm);
220223
TEST_ASSERT_EQUAL(
221-
expected_location_module_events[index].data.agps_request.data_flags,
224+
agps_req_exp->data_flags,
222225
event->data.agps_request.data_flags);
223226
break;
224227
case LOCATION_MODULE_EVT_PGPS_NEEDED:
@@ -358,12 +361,12 @@ void test_location_gnss_with_agps(void)
358361
expected_location_module_events[0].type = LOCATION_MODULE_EVT_ACTIVE;
359362

360363
expected_location_module_events[1].type = LOCATION_MODULE_EVT_AGPS_NEEDED;
361-
expected_location_module_events[1].data.agps_request.sv_mask_ephe = 0xabbaabba,
362-
expected_location_module_events[1].data.agps_request.sv_mask_alm = 0xdeaddead,
364+
expected_location_module_events[1].data.agps_request.system[0].sv_mask_ephe = 0xabbaabba,
365+
expected_location_module_events[1].data.agps_request.system[0].sv_mask_alm = 0xdeaddead,
363366
expected_location_module_events[1].data.agps_request.data_flags =
364-
NRF_MODEM_GNSS_AGPS_GPS_UTC_REQUEST |
365-
NRF_MODEM_GNSS_AGPS_NEQUICK_REQUEST |
366-
NRF_MODEM_GNSS_AGPS_POSITION_REQUEST;
367+
NRF_MODEM_GNSS_AGNSS_GPS_UTC_REQUEST |
368+
NRF_MODEM_GNSS_AGNSS_NEQUICK_REQUEST |
369+
NRF_MODEM_GNSS_AGNSS_POSITION_REQUEST;
367370

368371
expected_location_module_events[2].type = LOCATION_MODULE_EVT_GNSS_DATA_READY;
369372
expected_location_module_events[2].data.location.pvt.latitude = 34.087;
@@ -382,11 +385,11 @@ void test_location_gnss_with_agps(void)
382385
/* Location request is responded with location library events. */
383386
struct location_event_data event_data_agps = {
384387
.id = LOCATION_EVT_GNSS_ASSISTANCE_REQUEST,
385-
.agps_request.sv_mask_ephe = 0xabbaabba,
386-
.agps_request.sv_mask_alm = 0xdeaddead,
387-
.agps_request.data_flags = NRF_MODEM_GNSS_AGPS_GPS_UTC_REQUEST |
388-
NRF_MODEM_GNSS_AGPS_NEQUICK_REQUEST |
389-
NRF_MODEM_GNSS_AGPS_POSITION_REQUEST
388+
.agps_request.system[0].sv_mask_ephe = 0xabbaabba,
389+
.agps_request.system[0].sv_mask_alm = 0xdeaddead,
390+
.agps_request.data_flags = NRF_MODEM_GNSS_AGNSS_GPS_UTC_REQUEST |
391+
NRF_MODEM_GNSS_AGNSS_NEQUICK_REQUEST |
392+
NRF_MODEM_GNSS_AGNSS_POSITION_REQUEST
390393
};
391394
location_event_handler(&event_data_agps);
392395

applications/asset_tracker_v2/tests/lwm2m_codec_helpers/src/lwm2m_codec_helpers_test.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,8 @@ void test_codec_helpers_set_agps_data(void)
208208
.mcc = 242,
209209
.area = 30601,
210210
.cell = 52118273,
211-
.request.sv_mask_ephe = 0xFFFFFFFFu,
212-
.request.sv_mask_alm = 0xFFFFFFFFu,
211+
.request.system[0].sv_mask_ephe = 0xFFFFFFFFu,
212+
.request.system[0].sv_mask_alm = 0xFFFFFFFFu,
213213
.request.data_flags = 0xFFFFFFFFu,
214214
.queued = true,
215215
};

0 commit comments

Comments
 (0)