From f26f14d0dfce321d7d9d3907334864ae2ed5fa8f Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 10 Jul 2016 23:27:24 -0400 Subject: bridge: added state machine definitions. --- src/internal/ptycon_bridge_impl.h | 55 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/internal/ptycon_bridge_impl.h (limited to 'src/internal/ptycon_bridge_impl.h') diff --git a/src/internal/ptycon_bridge_impl.h b/src/internal/ptycon_bridge_impl.h new file mode 100644 index 0000000..b70497e --- /dev/null +++ b/src/internal/ptycon_bridge_impl.h @@ -0,0 +1,55 @@ +#ifndef PTYCON_BRIDGE_IMPL_H +#define PTYCON_BRIDGE_IMPL_H + +#include + +enum ptyc_ctrl_state { + PTYC_CTRL_STATE_ESI, + PTYC_CTRL_STATE_PARAM_HANDLERS, + PTYC_CTRL_STATE_COMMAND_HANDLERS, + PTYC_CTRL_STATE_CAP +}; + +#define PTYC_BUFFER_ELEMENTS 0x8000 +#define PTYC_CTRL_PARAMS 0x20 + +#define PTYC_ESI_ARRAY_SIZE 0x5F +#define PTYC_CSI_ARRAY_SIZE 0x6F +#define PTYC_SGR_ARRAY_SIZE 0x6D + + +struct ptyc_term_data { + unsigned char in [PTYC_BUFFER_ELEMENTS]; + wchar16_t out [PTYC_BUFFER_ELEMENTS]; + wchar16_t screen [PTYC_BUFFER_ELEMENTS]; +}; + +struct ptyc_term_ctx; + +typedef void * __fastcall ptyc_term_handler (struct ptyc_term_ctx *); + +struct ptyc_term_ctx { + void * hin; + void * hout; + wchar16_t * wch_pty; + wchar16_t * wch_con; + unsigned char * ctrl; + uint32_t ctrl_cap; + uint32_t * ctrl_mark; + uint32_t ctrl_state; + uint32_t * ctrl_param; + uint32_t ctrl_params[PTYC_CTRL_PARAMS]; + ptyc_term_handler * handler; + ptyc_term_handler * char_handler; + ptyc_term_handler * ctrl_handler; + ptyc_term_handler * const * ctrl_handlers[PTYC_CTRL_STATE_CAP]; + ptyc_term_handler * ctrl_command; + struct ptyc_term_data data; +}; + +extern ptyc_term_handler * const ptyc_esi_handlers[]; +extern ptyc_term_handler * const ptyc_cmd_handlers[]; +extern ptyc_term_handler * const ptyc_csi_handlers[]; +extern ptyc_term_handler * const ptyc_sgr_handlers[]; + +#endif -- cgit v1.2.3