avr-fw-modules/core/include/hwo/terminal.h

52 lines
1.4 KiB
C
Executable File

#pragma once
/***********************************************************************
terminal.h
ANSI Terminal Code Interface for avr8os
***********************************************************************/
#include <stdint.h>
#define TERM_ESC "\x1b"
#define TERM_CSI TERM_ESC "["
#define TERM_HOME TERM_CSI "H"
#define TERM_CLEAR TERM_CSI "2J"
#define TERM_SAVE_POS TERM_CSI "s"
#define TERM_REST_POS TERM_CSI "u"
#define TERM_HIDE TERM_CSI "?25l"
#define TERM_SHOW TERM_CSI "?25h"
#define TERM_CLEAR_LINE TERM_CSI "2K"
#define TERM_CLEAR_EOL TERM_CSI "K"
#define TERM_ENA_SCROLL TERM_CSI "r"
#define TERM_SAVE_CURSOR TERM_ESC "7"
#define TERM_REST_CURSOR TERM_ESC "8"
#include <stdio.h>
#define term_clear(s) fprintf(s,TERM_CLEAR)
#define term_home(s) fprintf(s,TERM_HOME)
#define term_save(s) fprintf(s,TERM_SAVE_POS)
#define term_restore(s) fprintf(s,TERM_REST_POS)
#define term_hide(s) fprintf(s,TERM_HIDE)
#define term_show(s) fprintf(s,TERM_SHOW)
#define term_clear_line(s) fprintf(s,TERM_CLEAR_LINE)
#define term_clear_eol(s) fprintf(s,TERM_CLEAR_EOL)
#define term_ena_scroll(s) fprintf(s,TERM_ENA_SCROLL)
#define term_scroll(s,start,end) term_p2(s,'r',start,end)
#define term_goto(s,x,y) term_p2(s,'H',y,x)
#define term_save_cursor(s) fprintf(s,TERM_SAVE_CURSOR)
#define term_restore_cursor(s) fprintf(s,TERM_REST_CURSOR)
void term_p2(FILE* stream,uint8_t cmd,uint8_t a,uint8_t b);