You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.8 KiB
78 lines
1.8 KiB
3 years ago
|
/**
|
||
|
* TODO file description
|
||
|
*
|
||
|
* Created on 2020/04/09.
|
||
|
*/
|
||
|
|
||
|
#ifndef CSPEMU_CONSOLE_IOIMPL_H
|
||
|
#define CSPEMU_CONSOLE_IOIMPL_H
|
||
|
|
||
|
#include <freertos/FreeRTOS.h>
|
||
|
#include <freertos/ringbuf.h>
|
||
|
#include <socket_server.h>
|
||
|
#include <console/console.h>
|
||
|
|
||
|
/** Console ring buffer capacity */
|
||
|
#define CONSOLE_BUFSIZE 512
|
||
|
|
||
|
/** Enum for tagging ioimpl kind */
|
||
|
enum console_iokind {
|
||
|
CONSOLE_IO_FILES,
|
||
|
CONSOLE_IO_TELNET,
|
||
|
};
|
||
|
|
||
|
#define CONSOLE_IOIMPL_MAGIC 0x079fbf72
|
||
|
|
||
|
struct console_ioimpl {
|
||
|
/** This is a tag for the following union */
|
||
|
enum console_iokind kind;
|
||
|
union {
|
||
|
/** STDIO variant data */
|
||
|
struct {
|
||
|
/** STDIN */
|
||
|
FILE *inf;
|
||
|
/** STDOUT */
|
||
|
FILE *outf;
|
||
|
} files;
|
||
|
|
||
|
/** Telnet variant data */
|
||
|
struct {
|
||
|
/** TCP client handle */
|
||
|
TcpdClient_t tcpcli;
|
||
|
/** Received data ring buffer */
|
||
|
RingbufHandle_t console_stdin_ringbuf;
|
||
|
} telnet;
|
||
|
};
|
||
|
|
||
|
/** Console context */
|
||
|
console_ctx_t ctx;
|
||
|
uint32_t __magic;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Setup UART IO for console
|
||
|
*/
|
||
|
void console_setup_uart_stdio(void);
|
||
|
|
||
|
/**
|
||
|
* Start console for stdin/stdout (UART)
|
||
|
*
|
||
|
* @param pIo - pointer where the allocated struct will be stored
|
||
|
* @param hdl - handle to the created task, can be NULL if not used
|
||
|
* @return success
|
||
|
*/
|
||
|
esp_err_t console_start_stdio(struct console_ioimpl **pIo, TaskHandle_t * hdl);
|
||
|
|
||
|
/**
|
||
|
* Start console for a TCP client
|
||
|
*
|
||
|
* @param pIo - pointer where the allocated struct will be stored
|
||
|
* @param hdl - handle to the created task, can be NULL if not used
|
||
|
* @param client - TCP server client handle
|
||
|
* @return success
|
||
|
*/
|
||
|
esp_err_t console_start_tcp(struct console_ioimpl **pIo, TaskHandle_t * hdl, TcpdClient_t client);
|
||
|
|
||
|
|
||
|
#endif //CSPEMU_CONSOLE_IOIMPL_H
|