blob: 5b28f9166cac5cd3fbbfbe27065ccbf42e04d30f [file] [log] [blame]
Stéphane Marchesinae37e6c2014-08-08 18:19:40 -07001/*
2 * Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
5 */
6
7#ifndef TERM_H
8#define TERM_H
9
Dominik Behr83010f82016-03-18 18:43:08 -070010#include "fb.h"
David Sodmanf0a925a2015-05-04 11:19:19 -070011#include "image.h"
Stéphane Marchesinae37e6c2014-08-08 18:19:40 -070012
Dominik Behrda6df412016-08-02 12:56:42 -070013#define TERM_MAX_TERMINALS 12
14#define TERM_SPLASH_TERMINAL 0
15#define TERM_FIRST_STD_VT 1
16
Dominik Behrb23b05b2016-08-15 16:29:02 -070017#define FRECON_VT_PATH FRECON_RUN_DIR "/vt%u"
18
Chris Morin255d9f02019-02-04 23:29:27 -080019
20/* Maximum length of buffer than can be passed to /dev/kmsg as defined in kernel
21 * sources. */
22#define KMSG_LINE_MAX (1024 - 32)
23
24
Dominik Behrda6df412016-08-02 12:56:42 -070025extern unsigned int term_num_terminals;
Stéphane Marchesin08c08e72016-01-07 16:44:08 -080026
David Sodmanf0a925a2015-05-04 11:19:19 -070027typedef struct _terminal_t terminal_t;
Dominik Behrda6df412016-08-02 12:56:42 -070028
29void term_set_num_terminals(unsigned new_num);
30terminal_t* term_init(unsigned vt, int pts_fd);
David Sodmanbbcb0522014-09-19 10:34:07 -070031void term_close(terminal_t* terminal);
David Sodmanbbcb0522014-09-19 10:34:07 -070032void term_close(terminal_t* terminal);
David Sodmanbf3f2842014-11-12 08:26:58 -080033void term_key_event(terminal_t* terminal, uint32_t keysym, int32_t unicode);
34bool term_is_child_done(terminal_t* terminal);
35
36void term_page_up(terminal_t* terminal);
37void term_page_down(terminal_t* terminal);
38void term_line_up(terminal_t* terminal);
39void term_line_down(terminal_t* terminal);
40
41bool term_is_valid(terminal_t* terminal);
42int term_fd(terminal_t* terminal);
43void term_dispatch_io(terminal_t* terminal, fd_set* read_set);
44bool term_exception(terminal_t*, fd_set* exception_set);
45bool term_is_active(terminal_t*);
David Sodman8ef20062015-01-06 09:23:40 -080046void term_activate(terminal_t*);
David Sodmanf0a925a2015-05-04 11:19:19 -070047void term_deactivate(terminal_t* terminal);
Dominik Behrb1abcba2016-04-14 14:57:21 -070048void term_add_fds(terminal_t* terminal, fd_set* read_set, fd_set* exception_set, int* maxfd);
David Sodman8ef20062015-01-06 09:23:40 -080049const char* term_get_ptsname(terminal_t* terminal);
David Sodmanf0a925a2015-05-04 11:19:19 -070050void term_set_background(terminal_t* term, uint32_t bg);
51int term_show_image(terminal_t* terminal, image_t* image);
52void term_write_message(terminal_t* terminal, char* message);
Dominik Behr83010f82016-03-18 18:43:08 -070053fb_t* term_getfb(terminal_t* terminal);
Stéphane Marchesin08c08e72016-01-07 16:44:08 -080054terminal_t* term_get_terminal(int num);
55void term_set_terminal(int num, terminal_t* terminal);
Dominik Behrda6df412016-08-02 12:56:42 -070056int term_create_splash_term(int pts_fd);
57void term_destroy_splash_term(void);
Dominik Behr4defb362016-01-13 12:36:14 -080058void term_set_current(uint32_t t);
59uint32_t term_get_current(void);
60terminal_t *term_get_current_terminal(void);
Dominik Behrb1abcba2016-04-14 14:57:21 -070061void term_set_current_terminal(terminal_t* terminal);
Dominik Behr4defb362016-01-13 12:36:14 -080062void term_set_current_to(terminal_t* terminal);
Dominik Behrda6df412016-08-02 12:56:42 -070063int term_switch_to(unsigned int vt);
Dominik Behr01a7a582016-01-28 17:02:21 -080064void term_monitor_hotplug(void);
Dominik Behrb1abcba2016-04-14 14:57:21 -070065void term_redrm(terminal_t* terminal);
66void term_clear(terminal_t* terminal);
Haixia Shi95285872016-11-08 15:26:35 -080067void term_zoom(bool zoom_in);
Dominik Behr33847332016-12-12 17:27:56 -080068void term_background(bool onetry);
Dominik Behr83864df2016-04-21 12:35:08 -070069void term_foreground(void);
Dominik Behr1883c042016-04-27 12:31:02 -070070void term_suspend_done(void*);
Dominik Behrda55e6c2017-02-28 18:12:10 -080071void term_input_enable(terminal_t* terminal, bool input_enable);
Stéphane Marchesinae37e6c2014-08-08 18:19:40 -070072#endif