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; }
/**************************************************************************** * * 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); }
/**************************************************************************** * * 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); }