- if (event == TxIrq && port->xmt.rix != port->xmt.wix) {\r
- int byte = port->xmt.buf[port->xmt.rix];\r
-\r
- uint64_t time0 = tdma_time();\r
- serial_putc(&port->uart, byte);\r
- uint64_t time1 = tdma_time();\r
-\r
- if (test_xmt_enab) {\r
- test_xmt_time0 = time0;\r
- test_xmt_time1 = time1;\r
- test_xmt_enab = 0;\r
+ // note: mbed seems to call TxIrq even it is not enabled,\r
+ // so we need to manually prevent transmitting when the\r
+ // port is set to buffered mode.\r
+ if (event == TxIrq && (port->irq || !port->buffered)) {\r
+ if (port->xmt.rix != port->xmt.wix) {\r
+ int byte = port->xmt.buf[port->xmt.rix];\r
+ serial_putc(&port->uart, byte);\r
+ port->xmt.rix = (port->xmt.rix+1) % SIRQ_LEN;\r
+ } else {\r
+ serial_irq_set(&port->uart, TxIrq, 0);\r
+ port->irq = 0;\r