void usbToUartService() { uint8 signals; // Data while(usbComRxAvailable() && uart1TxAvailable()) { uart1TxSendByte(usbComRxReceiveByte()); } while(uart1RxAvailable() && usbComTxAvailable()) { usbComTxSendByte(uart1RxReceiveByte()); } // Control lines controlled by computer. P1_0 = !(usbComRxControlSignals() & ACM_CONTROL_LINE_DTR); P1_1 = !(usbComRxControlSignals() & ACM_CONTROL_LINE_RTS); P1DIR |= (1<<0) | (1<<1); // Control lines controlled by device. signals = 0; if (!P1_2){ signals |= ACM_SERIAL_STATE_TX_CARRIER; } // TX Carrier = DSR if (!P1_3){ signals |= ACM_SERIAL_STATE_RX_CARRIER; } // RX Carrier = CD usbComTxControlSignals(signals); }
void uartToRadioService() { // Data while(uart1RxAvailable() && radioComTxAvailable()) { radioComTxSendByte(uart1RxReceiveByte()); } while(radioComRxAvailable() && uart1TxAvailable()) { uart1TxSendByte(radioComRxReceiveByte()); } // Control Signals. ioTxSignals(radioComRxControlSignals()); radioComTxControlSignals(ioRxSignals()); }
void usbToUartService() { uint8 signals; // Data while(usbComRxAvailable() && uart1TxAvailable()) { uart1TxSendByte(usbComRxReceiveByte()); } while(uart1RxAvailable() && usbComTxAvailable()) { usbComTxSendByte(uart1RxReceiveByte()); } ioTxSignals(usbComRxControlSignals()); // Need to switch bits 0 and 1 so that DTR pairs up with DSR. signals = ioRxSignals(); usbComTxControlSignals( ((signals & 1) ? 2 : 0) | ((signals & 2) ? 1 : 0)); // TODO: report framing, parity, and overrun errors to the USB host here }
void putchar(char c) { uart1TxSendByte(c); //Routine für die Ausgabe einzelner char }