Lines Matching refs:con

35 static void cdcconsole_handle_tx(cdcconsole_t *con) {  in cdcconsole_handle_tx()  argument
37 cbuf_peek(&con->tx_buf, regions); in cdcconsole_handle_tx()
39 cdcserial_write_async(&con->cdc_chan, &con->tx_transfer, cdcconsole_tx_cb, in cdcconsole_handle_tx()
41 con->transmitting = true; in cdcconsole_handle_tx()
43 con->transmitting = false; in cdcconsole_handle_tx()
48 cdcconsole_t *con = cb->context; in cdcconsole_print() local
50 cbuf_write(&con->tx_buf, str, len, false); in cdcconsole_print()
52 if (con->online) { in cdcconsole_print()
54 spin_lock_irqsave(&con->tx_lock, state); in cdcconsole_print()
55 if (!con->transmitting) { in cdcconsole_print()
56 cdcconsole_handle_tx(con); in cdcconsole_print()
58 spin_unlock_irqrestore(&con->tx_lock, state); in cdcconsole_print()
62 static void cdcconsole_queue_read(cdcconsole_t *con) { in cdcconsole_queue_read() argument
63 cdcserial_read_async(&con->cdc_chan, &con->rx_transfer, cdcconsole_rx_cb, in cdcconsole_queue_read()
64 sizeof(con->rx_buf), con->rx_buf); in cdcconsole_queue_read()
68 cdcconsole_t *con = containerof(t, cdcconsole_t, tx_transfer); in cdcconsole_tx_cb() local
70 spin_lock_irqsave(&con->tx_lock, state); in cdcconsole_tx_cb()
73 cbuf_read(&con->tx_buf, NULL, t->bufpos, false); in cdcconsole_tx_cb()
74 cdcconsole_handle_tx(con); in cdcconsole_tx_cb()
75 spin_unlock_irqrestore(&con->tx_lock, state); in cdcconsole_tx_cb()
80 cdcconsole_t *con = containerof(t, cdcconsole_t, rx_transfer); in cdcconsole_rx_cb() local
83 cdcconsole_queue_read(con); in cdcconsole_rx_cb()
88 cdcconsole_t *con = containerof(chan, cdcconsole_t, cdc_chan); in cdcconsole_online() local
89 con->online = online; in cdcconsole_online()
92 spin_lock_irqsave(&con->tx_lock, state); in cdcconsole_online()
93 if (!con->transmitting) { in cdcconsole_online()
95 cbuf_reset(&con->tx_buf); in cdcconsole_online()
97 spin_unlock_irqrestore(&con->tx_lock, state); in cdcconsole_online()
99 cdcconsole_queue_read(con); in cdcconsole_online()
103 void cdcconsole_init(cdcconsole_t *con, int data_ep_addr, int ctrl_ep_addr) { in cdcconsole_init() argument
104 memset(con, 0x0, sizeof(*con)); in cdcconsole_init()
106 cbuf_initialize(&con->tx_buf, CDCCONSOLE_TX_BUFFER_SIZE); in cdcconsole_init()
107 spin_lock_init(&con->tx_lock); in cdcconsole_init()
109 con->cdc_chan.online_cb = cdcconsole_online; in cdcconsole_init()
110 cdcserial_create_channel(&con->cdc_chan, data_ep_addr, ctrl_ep_addr); in cdcconsole_init()
112 con->print_cb.print = cdcconsole_print; in cdcconsole_init()
113 con->print_cb.context = con; in cdcconsole_init()
114 register_print_callback(&con->print_cb); in cdcconsole_init()