Jaa


Windows CE and the Serial Carrier Detect Signal

The Windows CE serial port based networking components have an historical affinity for the RS232 Carrier Detect (CD) signal. A key feature of Windows CE 1.0 was automatic synchronization of email and contacts when docked (ActiveSync). The device needed to detect when it was docked, and it needed to wake up when docked. Since this scenario was originally serial port based, CD was used as both the wake-source interrupt and the signal to start the ActiveSync application on the device.

The corresponding components (mostly Unimodem and PPP) in Windows NT/XP/Vista do not rely on CD, so many scenarios that work between non-CE devices do not work the same when a CE device is involved. It is often due to one of the following reasons:

1. The cable being used does not include the Carrier Detect line.

2. The platform specific serial port device driver does not properly report CD status. The serial driver’s SL_GetModemStatus indicates CD state with the MS_RLSD_ON flag for the Win32 serial port API function GetCommModemStatus(). EV_RLSD is used to indicate a change in state of the CD signal.

3. The hardware does not implement the CD signal. If this is the case, then a valid workaround is for the serial port device driver to always indicate that CD is asserted by always setting MS_RLSD_ON in its SL_GetModemStatus function.

Comments

  • Anonymous
    March 26, 2008
    I have a question about software flow control with ppp. I understand that CE 6.0 needs CD (carrier detect) to be reported as active. Let us suppose that one takes the approach that the serial driver will always set MS_RLSD_ON. Will the rest of the flow control work with just software flow control ? Does RTS/CTS need to be supported or is XON/OFF sufficient ? The MSDN documentation is kind of ambiguous on this at http://msdn2.microsoft.com/en-us/library/aa918890.aspx It looks like the position of unimodem on CE is stated, but the position of the ppp team is not stated. ppp does have options for software flow control, but I am not sure whether this will work. Any thoughts ?