Lines Matching refs:serial

102 _tme_posix_serial_callout(struct tme_posix_serial *serial)  in _tme_posix_serial_callout()  argument
114 if (serial->tme_posix_serial_callouts_running) { in _tme_posix_serial_callout()
119 serial->tme_posix_serial_callouts_running = TRUE; in _tme_posix_serial_callout()
126 conn_serial = serial->tme_posix_serial_connection; in _tme_posix_serial_callout()
130 ctrl = serial->tme_posix_serial_ctrl_callout; in _tme_posix_serial_callout()
131 if (ctrl != serial->tme_posix_serial_ctrl_callout_last) { in _tme_posix_serial_callout()
134 tme_mutex_unlock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_callout()
140 tme_mutex_lock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_callout()
145 serial->tme_posix_serial_ctrl_callout_last = ctrl; in _tme_posix_serial_callout()
152 if ((serial->tme_posix_serial_ctrl_callin & TME_SERIAL_CTRL_OK_READ) in _tme_posix_serial_callout()
153 && !tme_serial_buffer_is_full(&serial->tme_posix_serial_buffer_out)) { in _tme_posix_serial_callout()
157 buffer_input_size = tme_serial_buffer_space_free(&serial->tme_posix_serial_buffer_out); in _tme_posix_serial_callout()
161 tme_mutex_unlock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_callout()
171 tme_mutex_lock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_callout()
176 (void) tme_serial_buffer_copyin(&serial->tme_posix_serial_buffer_out, in _tme_posix_serial_callout()
181 tme_cond_notify(&serial->tme_posix_serial_cond_writer, TRUE); in _tme_posix_serial_callout()
190 serial->tme_posix_serial_ctrl_callin &= ~TME_SERIAL_CTRL_OK_READ; in _tme_posix_serial_callout()
197 serial->tme_posix_serial_callouts_running = FALSE; in _tme_posix_serial_callout()
202 _tme_posix_serial_th_ctrl(struct tme_posix_serial *serial) in _tme_posix_serial_th_ctrl() argument
211 if (ioctl(serial->tme_posix_serial_fd_in, TIOCMGET, &modem_state) < 0) { in _tme_posix_serial_th_ctrl()
217 if (serial->tme_posix_serial_fd_out in _tme_posix_serial_th_ctrl()
218 != serial->tme_posix_serial_fd_in) { in _tme_posix_serial_th_ctrl()
219 if (ioctl(serial->tme_posix_serial_fd_in, TIOCMGET, &modem_state_out) < 0) { in _tme_posix_serial_th_ctrl()
227 tme_mutex_lock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_th_ctrl()
230 ctrl = (serial->tme_posix_serial_ctrl_callout in _tme_posix_serial_th_ctrl()
244 if (serial->tme_posix_serial_ctrl_callout_break > 0) { in _tme_posix_serial_th_ctrl()
246 serial->tme_posix_serial_ctrl_callout_break--; in _tme_posix_serial_th_ctrl()
250 if (ctrl != serial->tme_posix_serial_ctrl_callout) { in _tme_posix_serial_th_ctrl()
251 serial->tme_posix_serial_ctrl_callout = ctrl; in _tme_posix_serial_th_ctrl()
252 _tme_posix_serial_callout(serial); in _tme_posix_serial_th_ctrl()
256 tme_mutex_unlock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_th_ctrl()
266 _tme_posix_serial_th_writer(struct tme_posix_serial *serial) in _tme_posix_serial_th_writer() argument
273 tme_mutex_lock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_th_writer()
280 if (tme_serial_buffer_is_empty(&serial->tme_posix_serial_buffer_out)) { in _tme_posix_serial_th_writer()
281 tme_cond_wait_yield(&serial->tme_posix_serial_cond_writer, in _tme_posix_serial_th_writer()
282 &serial->tme_posix_serial_mutex); in _tme_posix_serial_th_writer()
287 tme_serial_buffer_copyout(&serial->tme_posix_serial_buffer_out, in _tme_posix_serial_th_writer()
295 tme_mutex_unlock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_th_writer()
298 rc = tme_thread_write_yield(serial->tme_posix_serial_fd_out, in _tme_posix_serial_th_writer()
303 tme_mutex_lock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_th_writer()
309 tme_serial_buffer_copyout(&serial->tme_posix_serial_buffer_out, in _tme_posix_serial_th_writer()
316 _tme_posix_serial_callout(serial); in _tme_posix_serial_th_writer()
324 _tme_posix_serial_th_reader(struct tme_posix_serial *serial) in _tme_posix_serial_th_reader() argument
337 rc = tme_thread_read_yield(serial->tme_posix_serial_fd_in, in _tme_posix_serial_th_reader()
353 tme_mutex_lock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_th_reader()
357 tme_serial_buffer_is_empty(&serial->tme_posix_serial_buffer_in); in _tme_posix_serial_th_reader()
361 scanner_state = serial->tme_posix_serial_input_scanner_state; in _tme_posix_serial_th_reader()
369 if (serial->tme_posix_serial_emulate_break) { in _tme_posix_serial_th_reader()
394 (void) tme_serial_buffer_copyin(&serial->tme_posix_serial_buffer_in, in _tme_posix_serial_th_reader()
410 else if (serial->tme_posix_serial_emulate_break in _tme_posix_serial_th_reader()
439 (void) tme_serial_buffer_copyin(&serial->tme_posix_serial_buffer_in, in _tme_posix_serial_th_reader()
464 if (!(serial->tme_posix_serial_ctrl_callout & TME_SERIAL_CTRL_BREAK)) { in _tme_posix_serial_th_reader()
465 serial->tme_posix_serial_ctrl_callout |= TME_SERIAL_CTRL_BREAK; in _tme_posix_serial_th_reader()
466 _tme_posix_serial_callout(serial); in _tme_posix_serial_th_reader()
468 serial->tme_posix_serial_ctrl_callout_break = 2; in _tme_posix_serial_th_reader()
474 (void) tme_serial_buffer_copyin(&serial->tme_posix_serial_buffer_in, in _tme_posix_serial_th_reader()
489 assert(serial->tme_posix_serial_emulate_break); in _tme_posix_serial_th_reader()
502 (void) tme_serial_buffer_copyin(&serial->tme_posix_serial_buffer_in, in _tme_posix_serial_th_reader()
516 if (!(serial->tme_posix_serial_ctrl_callout & TME_SERIAL_CTRL_BREAK)) { in _tme_posix_serial_th_reader()
517 serial->tme_posix_serial_ctrl_callout |= TME_SERIAL_CTRL_BREAK; in _tme_posix_serial_th_reader()
518 _tme_posix_serial_callout(serial); in _tme_posix_serial_th_reader()
520 serial->tme_posix_serial_ctrl_callout_break = 2; in _tme_posix_serial_th_reader()
532 serial->tme_posix_serial_input_scanner_state = scanner_state; in _tme_posix_serial_th_reader()
537 && !tme_serial_buffer_is_empty(&serial->tme_posix_serial_buffer_in)) { in _tme_posix_serial_th_reader()
538 serial->tme_posix_serial_ctrl_callout |= TME_SERIAL_CTRL_OK_READ; in _tme_posix_serial_th_reader()
539 _tme_posix_serial_callout(serial); in _tme_posix_serial_th_reader()
543 tme_mutex_unlock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_th_reader()
552 struct tme_posix_serial *serial; in _tme_posix_serial_config() local
559 serial = conn_serial->tme_serial_connection.tme_connection_element->tme_element_private; in _tme_posix_serial_config()
562 tme_mutex_lock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_config()
569 ? serial->tme_posix_serial_fd_in in _tme_posix_serial_config()
570 : serial->tme_posix_serial_fd_out), in _tme_posix_serial_config()
637 ? serial->tme_posix_serial_fd_in in _tme_posix_serial_config()
638 : serial->tme_posix_serial_fd_out), in _tme_posix_serial_config()
644 tme_mutex_unlock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_config()
654 struct tme_posix_serial *serial; in _tme_posix_serial_ctrl() local
659 serial = conn_serial->tme_serial_connection.tme_connection_element->tme_element_private; in _tme_posix_serial_ctrl()
662 tme_mutex_lock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_ctrl()
665 rc = ioctl(serial->tme_posix_serial_fd_out, TIOCMGET, &modem_state); in _tme_posix_serial_ctrl()
682 rc = ioctl(serial->tme_posix_serial_fd_out, TIOCMSET, &modem_state); in _tme_posix_serial_ctrl()
686 tcsendbreak(serial->tme_posix_serial_fd_out, 0); in _tme_posix_serial_ctrl()
690 serial->tme_posix_serial_ctrl_callin = control; in _tme_posix_serial_ctrl()
692 _tme_posix_serial_callout(serial); in _tme_posix_serial_ctrl()
696 tme_mutex_unlock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_ctrl()
708 struct tme_posix_serial *serial; in _tme_posix_serial_read() local
712 serial = conn_serial->tme_serial_connection.tme_connection_element->tme_element_private; in _tme_posix_serial_read()
715 tme_mutex_lock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_read()
718 rc = tme_serial_buffer_copyout(&serial->tme_posix_serial_buffer_in, in _tme_posix_serial_read()
728 serial->tme_posix_serial_ctrl_callout &= ~TME_SERIAL_CTRL_OK_READ; in _tme_posix_serial_read()
729 serial->tme_posix_serial_ctrl_callout_last &= ~TME_SERIAL_CTRL_OK_READ; in _tme_posix_serial_read()
733 tme_mutex_unlock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_read()
743 struct tme_posix_serial *serial; in _tme_posix_serial_connection_score() local
746 serial = conn->tme_connection_element->tme_element_private; in _tme_posix_serial_connection_score()
761 struct tme_posix_serial *serial; in _tme_posix_serial_connection_make() local
764 serial = conn->tme_connection_element->tme_element_private; in _tme_posix_serial_connection_make()
776 tme_mutex_lock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_connection_make()
779 serial->tme_posix_serial_connection = in _tme_posix_serial_connection_make()
783 _tme_posix_serial_callout(serial); in _tme_posix_serial_connection_make()
786 tme_mutex_unlock(&serial->tme_posix_serial_mutex); in _tme_posix_serial_connection_make()
806 struct tme_posix_serial *serial; in _tme_posix_serial_connections_new() local
811 serial = (struct tme_posix_serial *) element->tme_element_private; in _tme_posix_serial_connections_new()
814 if (serial->tme_posix_serial_connection != NULL) { in _tme_posix_serial_connections_new()
840 TME_ELEMENT_SUB_NEW_DECL(tme_host_posix,serial) { in TME_ELEMENT_SUB_NEW_DECL() argument
841 struct tme_posix_serial *serial; in TME_ELEMENT_SUB_NEW_DECL() local
957 serial = tme_new0(struct tme_posix_serial, 1); in TME_ELEMENT_SUB_NEW_DECL()
958 serial->tme_posix_serial_element = element; in TME_ELEMENT_SUB_NEW_DECL()
959 serial->tme_posix_serial_fd_in = fd_in; in TME_ELEMENT_SUB_NEW_DECL()
960 serial->tme_posix_serial_fd_out = fd_out; in TME_ELEMENT_SUB_NEW_DECL()
961 serial->tme_posix_serial_emulate_break = emulate_break; in TME_ELEMENT_SUB_NEW_DECL()
962 serial->tme_posix_serial_ctrl_callout = 0; in TME_ELEMENT_SUB_NEW_DECL()
963 serial->tme_posix_serial_ctrl_callout_last = 0; in TME_ELEMENT_SUB_NEW_DECL()
964 tme_serial_buffer_init(&serial->tme_posix_serial_buffer_in, in TME_ELEMENT_SUB_NEW_DECL()
966 tme_serial_buffer_init(&serial->tme_posix_serial_buffer_out, in TME_ELEMENT_SUB_NEW_DECL()
970 tme_mutex_init(&serial->tme_posix_serial_mutex); in TME_ELEMENT_SUB_NEW_DECL()
971 tme_cond_init(&serial->tme_posix_serial_cond_writer); in TME_ELEMENT_SUB_NEW_DECL()
972 tme_thread_create((tme_thread_t) _tme_posix_serial_th_writer, serial); in TME_ELEMENT_SUB_NEW_DECL()
973 tme_thread_create((tme_thread_t) _tme_posix_serial_th_reader, serial); in TME_ELEMENT_SUB_NEW_DECL()
974 tme_thread_create((tme_thread_t) _tme_posix_serial_th_ctrl, serial); in TME_ELEMENT_SUB_NEW_DECL()
977 element->tme_element_private = serial; in TME_ELEMENT_SUB_NEW_DECL()