48 lines
1.3 KiB
C
48 lines
1.3 KiB
C
/**
|
|
* @file cli_core.h
|
|
* @brief CLI core: command table, command handlers and line execution,
|
|
* decoupled from the transport (UART / BLE frame frontends).
|
|
*/
|
|
#ifndef __CLI_CORE_H__
|
|
#define __CLI_CORE_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <stdint.h>
|
|
|
|
/* Output callback: one string (not necessarily NUL-terminated style-safe;
|
|
* always a C string here) per call. */
|
|
typedef void (*cli_out_fn)(const char* str);
|
|
|
|
/**
|
|
* @brief Set the output callback used by cli_write/cli_printf and by command
|
|
* handlers during cli_exec_line(). Pass NULL to restore the default
|
|
* UART DMA output.
|
|
* @note The callback is a single global: the UART and BLE frontends must not
|
|
* run cli_exec_line() concurrently (simple set/exec/restore policy,
|
|
* see app_ble_proto.c).
|
|
*/
|
|
void cli_set_output(cli_out_fn out);
|
|
|
|
/**
|
|
* @brief Tokenize @p line in place and run the matching command.
|
|
* @return 0 on success (or empty line), 1 on unknown command.
|
|
*/
|
|
int cli_exec_line(char* line);
|
|
|
|
/* Output helpers routed through the current out callback */
|
|
void cli_write(const char* str);
|
|
void cli_printf(const char* fmt, ...);
|
|
|
|
/* Command table iteration (used by the UART frontend for TAB completion) */
|
|
uint32_t cli_cmd_count(void);
|
|
const char* cli_cmd_name(uint32_t idx);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __CLI_CORE_H__ */
|