Last active
August 11, 2023 16:03
-
-
Save ejohnso49/a6ea32e87a5f6c785812b1b3a68ad9f9 to your computer and use it in GitHub Desktop.
Memfault + Gecko SDK CLI (copy into memfault-firmware-sdk/ports/emlib)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//! @file | |
//! | |
//! @brief | |
//! Adds a basic set of commands for interacting with Memfault SDK | |
#include <stdlib.h> | |
#include "memfault/components.h" | |
#ifdef SL_COMPONENT_CATALOG_PRESENT | |
#include "sl_component_catalog.h" | |
#endif // SL_COMPONENT_CATALOG_PRESENT | |
#ifdef SL_CATALOG_CLI_PRESENT | |
#include "sl_cli.h" | |
#endif // SL_CATALOG_CLI_PRESENT | |
#ifdef SL_CATALOG_CLI_PRESENT | |
static void prv_adjust_arg_vars(sl_cli_command_arg_t *arguments, int *argc, void ***argv) { | |
*argc = arguments->argc; | |
*argv = arguments->argv; | |
if (arguments->arg_ofs) { | |
*argc = arguments->argc - arguments->arg_ofs + 1; | |
*argv = &arguments->argv[arguments->arg_ofs + 1]; | |
} | |
} | |
void memfault_emlib_cli_clear_core(sl_cli_command_arg_t *arguments) { | |
int argc = 0; | |
void **argv = NULL; | |
prv_adjust_arg_vars(arguments, &argc, &argv); | |
memfault_demo_cli_cmd_clear_core(argc, (char **)argv); | |
} | |
void memfault_emlib_cli_get_core(sl_cli_command_arg_t *arguments) { | |
int argc = 0; | |
void **argv = NULL; | |
prv_adjust_arg_vars(arguments, &argc, &argv); | |
memfault_demo_cli_cmd_get_core(argc, (char **)argv); | |
} | |
void memfault_emlib_cli_logs(sl_cli_command_arg_t *arguments) { | |
int argc = 0; | |
void **argv = NULL; | |
prv_adjust_arg_vars(arguments, &argc, &argv); | |
memfault_demo_cli_cmd_test_log(argc, (char **)argv); | |
} | |
void memfault_emlib_cli_log_capture(sl_cli_command_arg_t *arguments) { | |
(void)arguments; | |
memfault_demo_cli_cmd_trigger_logs(0, NULL); | |
} | |
void memfault_emlib_cli_get_device_info(sl_cli_command_arg_t *arguments) { | |
int argc = 0; | |
void **argv = NULL; | |
prv_adjust_arg_vars(arguments, &argc, &argv); | |
memfault_demo_cli_cmd_get_device_info(argc, (char **)argv); | |
} | |
void memfault_emlib_cli_export(sl_cli_command_arg_t *arguments) { | |
(void)arguments; | |
memfault_data_export_dump_chunks(); | |
} | |
void memfault_emlib_cli_trace(sl_cli_command_arg_t *arguments) { | |
// For more information on user-defined error reasons, see | |
// the MEMFAULT_TRACE_REASON_DEFINE macro in trace_reason_user.h . | |
MEMFAULT_TRACE_EVENT_WITH_LOG(MemfaultCli_Test, "Num args: %d", arguments->argc); | |
MEMFAULT_LOG_DEBUG("Trace Event Generated!"); | |
} | |
void memfault_emlib_cli_heartbeat(sl_cli_command_arg_t *arguments) { | |
(void)arguments; | |
memfault_metrics_heartbeat_debug_trigger(); | |
} | |
void memfault_emlib_cli_reboot(sl_cli_command_arg_t *arguments) { | |
(void)arguments; | |
memfault_reboot_tracking_mark_reset_imminent(kMfltRebootReason_UserReset, NULL); | |
memfault_platform_reboot(); | |
} | |
void memfault_emlib_cli_assert(sl_cli_command_arg_t *arguments) { | |
int argc = 0; | |
void **argv = NULL; | |
prv_adjust_arg_vars(arguments, &argc, &argv); | |
memfault_demo_cli_cmd_assert(argc, (char **)argv); | |
} | |
void memfault_emlib_cli_hang(sl_cli_command_arg_t *arguments) { | |
(void)arguments; | |
MEMFAULT_LOG_INFO("Hanging system and waiting for watchdog!"); | |
while (1) { | |
} | |
} | |
void memfault_emlib_cli_busfault(sl_cli_command_arg_t *arguments) { | |
int argc = 0; | |
void **argv = NULL; | |
prv_adjust_arg_vars(arguments, &argc, &argv); | |
memfault_demo_cli_cmd_busfault(argc, (char **)argv); | |
} | |
void memfault_emlib_cli_hardfault(sl_cli_command_arg_t *arguments) { | |
int argc = 0; | |
void **argv = NULL; | |
prv_adjust_arg_vars(arguments, &argc, &argv); | |
memfault_demo_cli_cmd_hardfault(argc, (char **)argv); | |
} | |
void memfault_emlib_cli_usagefault(sl_cli_command_arg_t *arguments) { | |
int argc = 0; | |
void **argv = NULL; | |
prv_adjust_arg_vars(arguments, &argc, &argv); | |
memfault_demo_cli_cmd_usagefault(argc, (char **)argv); | |
} | |
void memfault_emlib_cli_memmanage(sl_cli_command_arg_t *arguments) { | |
int argc = 0; | |
void **argv = NULL; | |
prv_adjust_arg_vars(arguments, &argc, &argv); | |
memfault_demo_cli_cmd_memmanage(argc, (char **)argv); | |
} | |
#endif // SL_CATALOG_CLI_PRESENT |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# In component section | |
component: | |
- instance: [example] | |
id: cli | |
# In template_contribution | |
template_contribution: | |
- condition: [cli] | |
name: cli_group | |
priority: 0 | |
value: { name: mflt } | |
- condition: [cli] | |
name: cli_group | |
priority: 0 | |
value: { name: test, id: mflt_test_root, group: mflt } | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: export, | |
group: mflt, | |
handler: memfault_emlib_cli_export, | |
help: Export data as base64 chunks, | |
} | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: get_core, | |
group: mflt, | |
handler: memfault_emlib_cli_get_core, | |
help: Get current coredump state, | |
} | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: clear_core, | |
group: mflt, | |
handler: memfault_emlib_cli_clear_core, | |
help: Clear coredump from storage, | |
} | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: get_device_info, | |
group: mflt, | |
handler: memfault_emlib_cli_get_device_info, | |
help: Read device info structure, | |
} | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: assert, | |
group: mflt_test_root, | |
handler: memfault_emlib_cli_assert, | |
help: Triggers assert to collect a coredump, | |
} | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: busfault, | |
group: mflt_test_root, | |
handler: memfault_emlib_cli_busfault, | |
help: Triggers busfault to collect a coredump, | |
} | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: hang, | |
group: mflt_test_root, | |
handler: memfault_emlib_cli_hang, | |
help: Triggers hang to collect a coredump, | |
} | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: hardfault, | |
group: mflt_test_root, | |
handler: memfault_emlib_cli_hardfault, | |
help: Triggers hardfault to collect a coredump, | |
} | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: memmanage, | |
group: mflt_test_root, | |
handler: memfault_emlib_cli_memmanage, | |
help: Triggers memory management fault to collect a coredump, | |
} | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: usagefault, | |
group: mflt_test_root, | |
handler: memfault_emlib_cli_usagefault, | |
help: Triggers usage fault to collect a coredump, | |
} | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: reboot, | |
group: mflt_test_root, | |
handler: memfault_emlib_cli_reboot, | |
help: Triggers reboot to test reboot reason tracking, | |
} | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: heartbeat, | |
group: mflt_test_root, | |
handler: memfault_emlib_cli_heartbeat, | |
help: Trigger capture of heartbeat metrics, | |
} | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: logs, | |
group: mflt_test_root, | |
handler: memfault_emlib_cli_logs, | |
help: Writes logs to internal buffers, | |
} | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: log_capture, | |
group: mflt_test_root, | |
handler: memfault_emlib_cli_log_capture, | |
help: Serializes current log buffer contents, | |
} | |
- condition: [cli] | |
name: cli_command | |
priority: 0 | |
value: | |
{ | |
name: trace, | |
group: mflt_test_root, | |
handler: memfault_emlib_cli_trace, | |
help: Captures a trace event, | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment