Skip to content

Commit 2a77d8f

Browse files
Damian-Nordicrlubos
authored andcommitted
logging: rpc: disable overwriting while history transfer
While the log history is being transferred to the logging RPC client, do not overwrite the least recent logs in the log history, so that the history being transferred doesn't have gaps. Signed-off-by: Damian Krolik <[email protected]>
1 parent 941d44a commit 2a77d8f

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

subsys/logging/log_backend_rpc.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,7 @@ static void history_transfer_task(struct k_work *work)
518518
} else {
519519
log_rpc_history_free(history_cur_msg);
520520
history_cur_msg = NULL;
521+
log_rpc_history_set_overwriting(true);
521522
}
522523

523524
k_mutex_unlock(&history_transfer_mtx);
@@ -541,6 +542,7 @@ static void log_rpc_fetch_history_handler(const struct nrf_rpc_group *group,
541542

542543
k_mutex_lock(&history_transfer_mtx, K_FOREVER);
543544
history_transfer_id = transfer_id;
545+
log_rpc_history_set_overwriting(false);
544546
k_work_submit_to_queue(&history_transfer_workq, &history_transfer_work);
545547
k_mutex_unlock(&history_transfer_mtx);
546548

subsys/logging/log_backend_rpc_history.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
void log_rpc_history_init(void);
1313

1414
void log_rpc_history_push(const union log_msg_generic *msg);
15+
void log_rpc_history_set_overwriting(bool overwriting);
1516

1617
union log_msg_generic *log_rpc_history_pop(void);
1718
void log_rpc_history_free(const union log_msg_generic *msg);

subsys/logging/log_backend_rpc_history_ram.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,19 @@ void log_rpc_history_push(const union log_msg_generic *msg)
4747
mpsc_pbuf_commit(&log_history_pbuf, &copy->buf);
4848
}
4949

50+
void log_rpc_history_set_overwriting(bool overwriting)
51+
{
52+
k_sched_lock();
53+
54+
if (overwriting) {
55+
log_history_pbuf.flags |= MPSC_PBUF_MODE_OVERWRITE;
56+
} else {
57+
log_history_pbuf.flags &= (~MPSC_PBUF_MODE_OVERWRITE);
58+
}
59+
60+
k_sched_unlock();
61+
}
62+
5063
union log_msg_generic *log_rpc_history_pop(void)
5164
{
5265
return (union log_msg_generic *)mpsc_pbuf_claim(&log_history_pbuf);

0 commit comments

Comments
 (0)