| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | 
#ifndef MICRORL_H_#define MICRORL_H_#include "config.h"#define true  1#define false 0 /* define the Key codes */#define KEY_NUL 0 /**< ^@ Null character */#define KEY_SOH 1 /**< ^A Start of heading, = console interrupt */#define KEY_STX 2 /**< ^B Start of text, maintenance mode on HP console */#define KEY_ETX 3 /**< ^C End of text */#define KEY_EOT 4 /**< ^D End of transmission, not the same as ETB */#define KEY_ENQ 5 /**< ^E Enquiry, goes with ACK; old HP flow control */#define KEY_ACK 6 /**< ^F Acknowledge, clears ENQ logon hand */#define KEY_BEL 7 /**< ^G Bell, rings the bell... */#define KEY_BS  8 /**< ^H Backspace, works on HP terminals/computers */#define KEY_HT  9 /**< ^I Horizontal tab, move to next tab stop */#define KEY_LF  10  /**< ^J Line Feed */#define KEY_VT  11  /**< ^K Vertical tab */#define KEY_FF  12  /**< ^L Form Feed, page eject */#define KEY_CR  13  /**< ^M Carriage Return*/#define KEY_SO  14  /**< ^N Shift Out, alternate character set */#define KEY_SI  15  /**< ^O Shift In, resume defaultn character set */#define KEY_DLE 16  /**< ^P Data link escape */#define KEY_DC1 17  /**< ^Q XON, with XOFF to pause listings; "okay to send". */#define KEY_DC2 18  /**< ^R Device control 2, block-mode flow control */#define KEY_DC3 19  /**< ^S XOFF, with XON is TERM=18 flow control */#define KEY_DC4 20  /**< ^T Device control 4 */#define KEY_NAK 21  /**< ^U Negative acknowledge */#define KEY_SYN 22  /**< ^V Synchronous idle */#define KEY_ETB 23  /**< ^W End transmission block, not the same as EOT */#define KEY_CAN 24  /**< ^X Cancel line, MPE echoes !!! */#define KEY_EM  25  /**< ^Y End of medium, Control-Y interrupt */#define KEY_SUB 26  /**< ^Z Substitute */#define KEY_ESC 27  /**< ^[ Escape, next character is not echoed */#define KEY_FS  28  /**< ^\ File separator */#define KEY_GS  29  /**< ^] Group separator */#define KEY_RS  30  /**< ^^ Record separator, block-mode terminator */#define KEY_US  31  /**< ^_ Unit separator */#define KEY_DEL 127 /**< Delete (not a real control character...) */#define IS_CONTROL_CHAR(x) ((x)<=31)// direction of history navigation#define _HIST_UP   0#define _HIST_DOWN 1// esc seq internal codes#define _ESC_BRACKET  1#define _ESC_HOME     2#define _ESC_END      3#ifdef _USE_HISTORY// history struct, contain internal variable// history store in static ring buffer for memory savingtypedef struct {	char ring_buf [_RING_HISTORY_LEN];	int begin;	int end;	int cur;} ring_history_t;#endif// microrl struct, contain internal library datatypedef struct {#ifdef _USE_ESC_SEQ	char escape_seq;	char escape;#endif#if (defined(_ENDL_CRLF) || defined(_ENDL_LFCR))	char tmpch;#endif#ifdef _USE_HISTORY	ring_history_t ring_hist;          // history object#endif	char * prompt_str;                 // pointer to prompt string	char cmdline [_COMMAND_LINE_LEN];  // cmdline buffer	int cmdlen;                        // last position in command line	int cursor;                        // input cursor	int (*execute) (int argc, const char * const * argv );            // ptr to 'execute' callback	char ** (*get_completion) (int argc, const char * const * argv ); // ptr to 'completion' callback	void (*print) (const char *);                                     // ptr to 'print' callback#ifdef _USE_CTLR_C	void (*sigint) (void);#endif} microrl_t;// init internal data, calls once at start upvoid microrl_init (microrl_t * pThis, void (*print)(const char*));// set echo mode (true/false), using for disabling echo for password input// echo mode will enabled after user press Enter.void microrl_set_echo (int);// set pointer to callback complition func, that called when user press 'Tab'// callback func description://   param: argc - argument count, argv - pointer array to token string//   must return NULL-terminated string, contain complite variant splitted by 'Whitespace'//   If complite token found, it's must contain only one token to be complitted//   Empty string if complite not found, and multiple string if there are some tokenvoid microrl_set_complete_callback (microrl_t * pThis, char ** (*get_completion)(int, const char* const*));// pointer to callback func, that called when user press 'Enter'// execute func param: argc - argument count, argv - pointer array to token stringvoid microrl_set_execute_callback (microrl_t * pThis, int (*execute)(int, const char* const*));// set callback for Ctrl+C terminal signal#ifdef _USE_CTLR_Cvoid microrl_set_sigint_callback (microrl_t * pThis, void (*sigintf)(void));#endif// insert char to cmdline (for example call in usart RX interrupt)void microrl_insert_char (microrl_t * pThis, int ch);#endif
 |