Пример #1
0
int tb_init(void)
{
	out = open("/dev/tty", O_WRONLY);
	in = fopen("/dev/tty", "r");

	if (out == -1 || !in)
		return TB_EFAILED_TO_OPEN_TTY;

	out_fileno = out;
	in_fileno = fileno(in);

	if (init_term() < 0)
		return TB_EUNSUPPORTED_TERMINAL;

	if (pipe(winch_fds) < 0)
		return TB_EPIPE_TRAP_ERROR;

	struct sigaction sa;
	sa.sa_handler = sigwinch_handler;
	sa.sa_flags = 0;
	sigaction(SIGWINCH, &sa, 0);

	tcgetattr(out_fileno, &orig_tios);

	struct termios tios;
	memcpy(&tios, &orig_tios, sizeof(tios));

	tios.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP
                           | INLCR | IGNCR | ICRNL | IXON);
	tios.c_oflag &= ~OPOST;
	tios.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
	tios.c_cflag &= ~(CSIZE | PARENB);
	tios.c_cflag |= CS8;
	tios.c_cc[VMIN] = 0;
	tios.c_cc[VTIME] = 0;
	tcsetattr(out_fileno, TCSAFLUSH, &tios);
	
	memstream_init(&write_buffer, out_fileno, write_buffer_data, sizeof(write_buffer_data));

	memstream_puts(&write_buffer, funcs[T_ENTER_CA]);
	memstream_puts(&write_buffer, funcs[T_ENTER_KEYPAD]);
	memstream_puts(&write_buffer, funcs[T_HIDE_CURSOR]);
	send_clear();

	update_term_size();
	cellbuf_init(&back_buffer, termw, termh);
	cellbuf_init(&front_buffer, termw, termh);
	cellbuf_clear(&back_buffer);
	cellbuf_clear(&front_buffer);
	init_ringbuffer(&inbuf, 4096);

	return 0;
}
Пример #2
0
/****************************************************************************
 *
 * NAME: SPM_vInit
 *
 * DESCRIPTION:
 * Stream Processing Machine(SPM) Init
 * Call this when you start the node,without this step,SPM will never work
 *
 * RETURNS:
 * void
 *
 ****************************************************************************/
void SPM_vInit()
{
	init_ringbuffer(&rb_rx_spm, spm_rx_mempool, SPM_RX_RB_LEN);
}
Пример #3
0
/****************************************************************************
 *
 * NAME: UPS_vInitRingbuffer
 *
 * DESCRIPTION:
 * init ringbuffer of user programming space
 *
 * PARAMETERS: Name         RW  Usage
 *
 * RETURNS:
 * void
 *
 ****************************************************************************/
void UPS_vInitRingbuffer()
{
    /* aups ringbuffer is required in Master mode */
    init_ringbuffer(&rb_uart_aups, aups_uart_mempool, AUPS_UART_RB_LEN);
    init_ringbuffer(&rb_air_aups, aups_air_mempool, AUPS_AIR_RB_LEN);
}