Cleaned up, returns an empty list if half-duplex and transmit.