| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- #ifndef RT_Vterm_H
- #define RT_Vterm_H
- #include "RT_tunnel.h"
- #include <stdarg.h>
- #include <stdlib.h>
- /**< tunnel handle for upstream data transmission */
- extern RT_tunnel_t up_tunnel;
- /**< tunnel handle for downstream data transmission */
- extern RT_tunnel_t down_tunnel;
- /**
- * @brief Write data to upstream buffer
- * @param[in] pBuffer Pointer to data buffer
- * @param[in] NumBytes Number of bytes to write
- * @retval uint32_t Actual bytes written
- */
- uint32_t RT_Vterm_Write(const void *pBuffer, uint32_t NumBytes);
- /**
- * @brief Write data to downstream buffer
- * @param[in] pBuffer Pointer to data buffer
- * @param[in] NumBytes Number of bytes to write
- * @retval uint32_t Actual bytes written
- */
- uint32_t RT_Vterm_WriteDownBuffer(const void *pBuffer, uint32_t NumBytes);
- /**
- * @brief Read data from upstream buffer
- * @param[out] pData Buffer to store read data
- * @param[in] BufferSize Maximum bytes to read
- * @retval uint32_t Actual bytes read
- */
- uint32_t RT_Vterm_ReadUpBuffer(void *pData, uint32_t BufferSize);
- /**
- * @brief Read data from downstream buffer
- * @param[out] pData Buffer to store read data
- * @param[in] BufferSize Maximum bytes to read
- * @retval uint32_t Actual bytes read
- */
- uint32_t RT_Vterm_Read(void *pData, uint32_t BufferSize);
- /**
- * @brief Write a single character to upstream buffer
- * @param[in] c Character to write
- * @retval uint32_t 1 if successful, 0 otherwise
- */
- uint32_t RT_Vterm_PutChar(char c);
- /**
- * @brief Write a single character to upstream buffer (direct operation)
- * @param[in] c Character to write
- * @retval uint32_t 1 if successful, 0 otherwise
- */
- uint32_t RT_Vterm_PutCharSkip(char c);
- /**
- * @brief Check available data in downstream buffer
- * @retval uint32_t Number of used bytes in downstream buffer
- */
- uint32_t RT_Vterm_HasData(void);
- /**
- * @brief Check available data in upstream buffer
- * @retval uint32_t Number of used bytes in upstream buffer
- */
- uint32_t RT_Vterm_HasDataUp(void);
- /**
- * @brief Check if there's available key data in downstream buffer
- * @retval int 1 if data exists, 0 otherwise
- */
- int RT_Vterm_HasKey(void);
- /**
- * @brief Block until a key is available in downstream buffer, then return it
- * @retval int The received character (as unsigned char)
- */
- int RT_Vterm_WaitKey(void);
- /**
- * @brief Read a key from downstream buffer (non-blocking)
- * @retval int The received character (as unsigned char) if available, -1 otherwise
- */
- int RT_Vterm_GetKey(void);
- /**
- * @brief Get available write space in upstream buffer
- * @retval uint32_t Number of free bytes in upstream buffer
- */
- uint32_t RT_Vterm_GetAvailWriteSpace(void);
- /**
- * @brief Formatted output to virtual terminal (upstream)
- * @param[in] sFormat Format string
- * @param[in] ... Variable arguments
- * @retval int Number of characters written, negative on error
- */
- int RT_Vterm_printf(const char *sFormat, ...);
- /**
- * @brief Formatted output with va_list to virtual terminal (upstream)
- * @param[in] sFormat Format string
- * @param[in] pParamList Pointer to va_list
- * @retval int Number of characters written, negative on error
- */
- int RT_Vterm_vprintf(const char *sFormat, va_list *pParamList);
- /**
- * @brief Callback function type for virtual terminal commands
- * @param[in] input Command input string
- */
- typedef void (*vterm_cmd_callback_t)(const char *input);
- /**
- * @struct vterm_cmd_entry_t
- * @brief Structure for virtual terminal command registration
- */
- typedef struct
- {
- char cmd[32]; /**< Command string (max 31 characters) */
- vterm_cmd_callback_t callback; /**< Corresponding callback function */
- } vterm_cmd_entry_t;
- /**
- * @brief Switch to virtual terminal mode
- */
- void vterm_console(void);
- /**
- * @brief Restore original terminal mode
- */
- void restore_original(void);
- /**
- * @brief Initialize virtual terminal
- * @retval int 0 on success, negative error code otherwise
- */
- int RT_Vterm_Init(void);
- /**< Default mode: Do not block, skip output when buffer is full */
- #define RT_Vterm_MODE_NO_BLOCK_SKIP (0)
- /**< Mode: Do not block, write partial data when buffer space is insufficient */
- #define RT_Vterm_MODE_NO_BLOCK_TRIM (1)
- /**< Mode: Block execution if buffer is full until space is available */
- #define RT_Vterm_MODE_BLOCK_IF_FIFO_FULL (2)
- /**< Mode: Overwrite old data when buffer is full */
- #define RT_Vterm_MODE_OVERWRITE (3)
- #endif
- /*************************** End of file ****************************/
|