12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /*
- * Copyright (c) 2019 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- #ifndef SHELL_TELNET_H__
- #define SHELL_TELNET_H__
- #include <shell/shell.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- extern const struct shell_transport_api shell_telnet_transport_api;
- /** Line buffer structure. */
- struct shell_telnet_line_buf {
- /** Line buffer. */
- char buf[CONFIG_SHELL_TELNET_LINE_BUF_SIZE];
- /** Current line length. */
- uint16_t len;
- };
- /** TELNET-based shell transport. */
- struct shell_telnet {
- /** Handler function registered by shell. */
- shell_transport_handler_t shell_handler;
- /** Context registered by shell. */
- void *shell_context;
- /** Buffer for outgoing line. */
- struct shell_telnet_line_buf line_out;
- /** Network context of TELNET client. */
- struct net_context *client_ctx;
- /** RX packet FIFO. */
- struct k_fifo rx_fifo;
- /** The delayed work is used to send non-lf terminated output that has
- * been around for "too long". This will prove to be useful
- * to send the shell prompt for instance.
- */
- struct k_work_delayable send_work;
- struct k_work_sync work_sync;
- /** If set, no output is sent to the TELNET client. */
- bool output_lock;
- };
- #define SHELL_TELNET_DEFINE(_name) \
- static struct shell_telnet _name##_shell_telnet; \
- struct shell_transport _name = { \
- .api = &shell_telnet_transport_api, \
- .ctx = (struct shell_telnet *)&_name##_shell_telnet \
- }
- /**
- * @brief This function provides pointer to shell telnet backend instance.
- *
- * Function returns pointer to the shell telnet instance. This instance can be
- * next used with shell_execute_cmd function in order to test commands behavior.
- *
- * @returns Pointer to the shell instance.
- */
- const struct shell *shell_backend_telnet_get_ptr(void);
- #ifdef __cplusplus
- }
- #endif
- #endif /* SHELL_TELNET_H__ */
|