Skip to content

Commit 6859b47

Browse files
committed
app: gnss: Move A-GNSS buffer to heap
Moving 4kB A-GNSS buffer from RAM to heap. Signed-off-by: Tommi Rantanen <tommi.rantanen@nordicsemi.no>
1 parent b209fed commit 6859b47

1 file changed

Lines changed: 19 additions & 7 deletions

File tree

app/src/sm_at_gnss.c

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <zephyr/kernel.h>
88
#include <assert.h>
99
#include <stdio.h>
10+
#include <stdlib.h>
1011
#include <zephyr/logging/log.h>
1112
#include <zephyr/sys_clock.h>
1213
#include <date_time.h>
@@ -320,41 +321,52 @@ static void agnss_requestor(struct k_work *)
320321
{
321322
int err;
322323
struct nrf_modem_gnss_agnss_data_frame req;
323-
static char agnss_rest_data_buf[NRF_CLOUD_AGNSS_MAX_DATA_SIZE];
324324
struct nrf_cloud_coap_agnss_request request = {
325325
NRF_CLOUD_COAP_AGNSS_REQ_CUSTOM,
326326
&req,
327327
};
328+
char *agnss_rest_data_buf = calloc(1, NRF_CLOUD_AGNSS_MAX_DATA_SIZE);
329+
330+
if (!agnss_rest_data_buf) {
331+
LOG_ERR("Failed to allocate A-GNSS data buffer.");
332+
return;
333+
}
328334

329335
err = read_agnss_req(&req);
330336
if (err) {
331337
LOG_ERR("Failed to read A-GNSS request (%d).", err);
332-
return;
338+
goto cleanup;
333339
}
334340

335-
struct nrf_cloud_coap_agnss_result result = {agnss_rest_data_buf,
336-
sizeof(agnss_rest_data_buf), 0};
341+
struct nrf_cloud_coap_agnss_result result = {
342+
agnss_rest_data_buf,
343+
NRF_CLOUD_AGNSS_MAX_DATA_SIZE,
344+
0
345+
};
337346
struct lte_lc_cells_info net_info = {0};
338347

339348
err = get_single_cell_info(&net_info.current_cell);
340349
if (err) {
341350
LOG_ERR("Failed to obtain single-cell cellular network information (%d).", err);
342-
return;
351+
goto cleanup;
343352
}
344353
request.net_info = &net_info;
345354

346355
err = nrf_cloud_coap_agnss_data_get(&request, &result);
347356
if (err) {
348357
LOG_ERR("Failed to request A-GNSS data via CoAP (%d).", err);
349-
return;
358+
goto cleanup;
350359
}
351360

352361
err = nrf_cloud_agnss_process(result.buf, result.agnss_sz);
353362
if (err) {
354363
LOG_ERR("Failed to process A-GNSS data, error: %d", err);
355-
return;
364+
goto cleanup;
356365
}
357366
LOG_INF("A-GNSS data received via CoAP.");
367+
368+
cleanup:
369+
free(agnss_rest_data_buf);
358370
}
359371
#endif /* CONFIG_NRF_CLOUD_AGNSS */
360372

0 commit comments

Comments
 (0)