blob: a1c2fa87a20852624cb5310dea88690413eba021 [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
Stéphane Marchesin08c08e72016-01-07 16:44:08 -080013#define MAX_STD_TERMINALS (3)
14#define NUM_SPLASH_TERMINAL (1)
15#define MAX_TERMINALS (MAX_STD_TERMINALS + NUM_SPLASH_TERMINAL)
16#define SPLASH_TERMINAL (MAX_TERMINALS - 1)
17
David Sodmanf0a925a2015-05-04 11:19:19 -070018typedef struct _terminal_t terminal_t;
Dominik Behr83010f82016-03-18 18:43:08 -070019terminal_t* term_init(bool interactive);
David Sodmanbbcb0522014-09-19 10:34:07 -070020void term_close(terminal_t* terminal);
David Sodmanbbcb0522014-09-19 10:34:07 -070021void term_close(terminal_t* terminal);
David Sodmanbf3f2842014-11-12 08:26:58 -080022void term_key_event(terminal_t* terminal, uint32_t keysym, int32_t unicode);
23bool term_is_child_done(terminal_t* terminal);
24
25void term_page_up(terminal_t* terminal);
26void term_page_down(terminal_t* terminal);
27void term_line_up(terminal_t* terminal);
28void term_line_down(terminal_t* terminal);
29
30bool term_is_valid(terminal_t* terminal);
31int term_fd(terminal_t* terminal);
32void term_dispatch_io(terminal_t* terminal, fd_set* read_set);
33bool term_exception(terminal_t*, fd_set* exception_set);
34bool term_is_active(terminal_t*);
David Sodman8ef20062015-01-06 09:23:40 -080035void term_activate(terminal_t*);
David Sodmanf0a925a2015-05-04 11:19:19 -070036void term_deactivate(terminal_t* terminal);
Dominik Behrb1abcba2016-04-14 14:57:21 -070037void term_add_fds(terminal_t* terminal, fd_set* read_set, fd_set* exception_set, int* maxfd);
David Sodman8ef20062015-01-06 09:23:40 -080038const char* term_get_ptsname(terminal_t* terminal);
David Sodmanf0a925a2015-05-04 11:19:19 -070039void term_set_background(terminal_t* term, uint32_t bg);
40int term_show_image(terminal_t* terminal, image_t* image);
41void term_write_message(terminal_t* terminal, char* message);
Dominik Behr83010f82016-03-18 18:43:08 -070042fb_t* term_getfb(terminal_t* terminal);
Stéphane Marchesin08c08e72016-01-07 16:44:08 -080043terminal_t* term_get_terminal(int num);
44void term_set_terminal(int num, terminal_t* terminal);
Stéphane Marchesin0a7ce422016-01-07 20:45:47 -080045terminal_t* term_create_term(int vt);
Dominik Behr83010f82016-03-18 18:43:08 -070046terminal_t* term_create_splash_term();
Stéphane Marchesinf75c8512016-01-07 16:53:21 -080047void term_destroy_splash_term();
Stéphane Marchesin92a297d2016-01-07 20:24:55 -080048unsigned int term_get_max_terminals();
Dominik Behr4defb362016-01-13 12:36:14 -080049void term_set_current(uint32_t t);
50uint32_t term_get_current(void);
51terminal_t *term_get_current_terminal(void);
Dominik Behrb1abcba2016-04-14 14:57:21 -070052void term_set_current_terminal(terminal_t* terminal);
Dominik Behr4defb362016-01-13 12:36:14 -080053void term_set_current_to(terminal_t* terminal);
Dominik Behr01a7a582016-01-28 17:02:21 -080054void term_monitor_hotplug(void);
Dominik Behrb1abcba2016-04-14 14:57:21 -070055void term_redrm(terminal_t* terminal);
56void term_clear(terminal_t* terminal);
Dominik Behr83864df2016-04-21 12:35:08 -070057void term_background(void);
58void term_foreground(void);
Stéphane Marchesinae37e6c2014-08-08 18:19:40 -070059#endif