+ if (PcdGetBool (PcdSerialDetectCable)) {\r
+ //\r
+ // Wait for both DSR and CTS to be set\r
+ // DSR is set if a cable is connected.\r
+ // CTS is set if it is ok to transmit data\r
+ //\r
+ // DSR CTS Description Action\r
+ // === === ======================================== ========\r
+ // 0 0 No cable connected. Wait\r
+ // 0 1 No cable connected. Wait\r
+ // 1 0 Cable connected, but not clear to send. Wait\r
+ // 1 1 Cable connected, and clear to send. Transmit\r
+ //\r
+ while ((SerialPortReadRegister (R_UART_MSR) & (B_UART_MSR_DSR | B_UART_MSR_CTS)) != (B_UART_MSR_DSR | B_UART_MSR_CTS));\r
+ } else {\r
+ //\r
+ // Wait for both DSR and CTS to be set OR for DSR to be clear. \r
+ // DSR is set if a cable is connected.\r
+ // CTS is set if it is ok to transmit data\r
+ //\r
+ // DSR CTS Description Action\r
+ // === === ======================================== ========\r
+ // 0 0 No cable connected. Transmit\r
+ // 0 1 No cable connected. Transmit\r
+ // 1 0 Cable connected, but not clear to send. Wait\r
+ // 1 1 Cable connected, and clar to send. Transmit\r
+ //\r
+ while ((SerialPortReadRegister (R_UART_MSR) & (B_UART_MSR_DSR | B_UART_MSR_CTS)) == (B_UART_MSR_DSR));\r
+ }\r