aboutsummaryrefslogtreecommitdiff
path: root/projects/cli-test/mgmt-cli.c
diff options
context:
space:
mode:
Diffstat (limited to 'projects/cli-test/mgmt-cli.c')
-rw-r--r--projects/cli-test/mgmt-cli.c99
1 files changed, 22 insertions, 77 deletions
diff --git a/projects/cli-test/mgmt-cli.c b/projects/cli-test/mgmt-cli.c
index 073b045..8f5db9d 100644
--- a/projects/cli-test/mgmt-cli.c
+++ b/projects/cli-test/mgmt-cli.c
@@ -116,19 +116,19 @@ static void uart_cli_print(struct cli_def *cli __attribute__ ((unused)), const c
uart_send_string2(STM_UART_MGMT, crlf);
}
-static int uart_cli_read(struct cli_def *cli __attribute__ ((unused)), void *buf, size_t count)
+static ssize_t uart_cli_read(struct cli_def *cli __attribute__ ((unused)), void *buf, size_t count)
{
for (int i = 0; i < count; ++i) {
while (ringbuf_read_char(&uart_ringbuf, (uint8_t *)(buf + i)) == 0)
osSemaphoreWait(uart_sem, osWaitForever);
}
- return count;
+ return (ssize_t)count;
}
-static int uart_cli_write(struct cli_def *cli __attribute__ ((unused)), const void *buf, size_t count)
+static ssize_t uart_cli_write(struct cli_def *cli __attribute__ ((unused)), const void *buf, size_t count)
{
uart_send_bytes(STM_UART_MGMT, (uint8_t *) buf, count);
- return (int) count;
+ return (ssize_t)count;
}
int control_mgmt_uart_dma_rx(mgmt_cli_dma_state_t state)
@@ -148,72 +148,16 @@ int control_mgmt_uart_dma_rx(mgmt_cli_dma_state_t state)
return 0;
}
-static int embedded_cli_loop(struct cli_def *cli)
+static struct cli_def *mgmt_cli_init(void)
{
- unsigned char c;
- int n = 0;
- static struct cli_loop_ctx ctx;
-
- memset(&ctx, 0, sizeof(ctx));
- ctx.insertmode = 1;
-
- cli->state = CLI_STATE_LOGIN;
-
- /* start off in unprivileged mode */
- cli_set_privilege(cli, PRIVILEGE_UNPRIVILEGED);
- cli_set_configmode(cli, MODE_EXEC, NULL);
-
- cli_error(cli, "%s", cli->banner);
-
- while (1) {
- cli_loop_start_new_command(cli, &ctx);
-
- control_mgmt_uart_dma_rx(DMA_RX_START);
-
- while (1) {
- cli_loop_show_prompt(cli, &ctx);
-
- n = cli_loop_read_next_char(cli, &ctx, &c);
-
- /*
- cli_print(cli, "Next char: '%c'/%i, ringbuf ridx %i, widx %i",
- c, (int) c,
- uart_ringbuf.ridx,
- RINGBUF_WIDX(uart_ringbuf)
- */
- if (n == CLI_LOOP_CTRL_BREAK)
- break;
- if (n == CLI_LOOP_CTRL_CONTINUE)
- continue;
-
- n = cli_loop_process_char(cli, &ctx, c);
- if (n == CLI_LOOP_CTRL_BREAK)
- break;
- if (n == CLI_LOOP_CTRL_CONTINUE)
- continue;
- }
-
- if (ctx.l < 0)
- continue;
-
- /* cli_print(cli, "Process command: '%s'", ctx.cmd); */
- n = cli_loop_process_cmd(cli, &ctx);
- if (n == CLI_LOOP_CTRL_BREAK)
- break;
- }
-
- return CLI_OK;
-}
-
-static void mgmt_cli_init(struct cli_def *cli)
-{
- cli_init(cli);
+ struct cli_def *cli;
+ cli = cli_init();
cli_read_callback(cli, uart_cli_read);
cli_write_callback(cli, uart_cli_write);
cli_print_callback(cli, uart_cli_print);
cli_set_banner(cli, "Cryptech Alpha test CLI");
cli_set_hostname(cli, "cryptech");
- cli_telnet_protocol(cli, 0);
+ return cli;
}
hal_user_t user;
@@ -229,24 +173,25 @@ static int check_auth(const char *username, const char *password)
int cli_main(void)
{
- static struct cli_def cli;
-
uart_sem = osSemaphoreCreate(osSemaphore(uart_sem), 0);
- mgmt_cli_init(&cli);
- cli_set_auth_callback(&cli, check_auth);
+ struct cli_def *cli;
+ cli = mgmt_cli_init();
+ cli_set_auth_callback(cli, check_auth);
- configure_cli_show(&cli);
- configure_cli_fpga(&cli);
- configure_cli_misc(&cli);
- configure_cli_test(&cli);
- configure_cli_keystore(&cli);
- configure_cli_masterkey(&cli);
+ configure_cli_show(cli);
+ configure_cli_fpga(cli);
+ configure_cli_misc(cli);
+ configure_cli_test(cli);
+ configure_cli_keystore(cli);
+ configure_cli_masterkey(cli);
while (1) {
- embedded_cli_loop(&cli);
- /* embedded_cli_loop returns when the user enters 'quit' or 'exit' */
- cli_print(&cli, "\nLogging out...\n");
+ control_mgmt_uart_dma_rx(DMA_RX_START);
+
+ cli_loop(cli, 0);
+ /* cli_loop returns when the user enters 'quit' or 'exit' */
+ cli_print(cli, "\nLogging out...\n");
user = HAL_USER_NONE;
}