[Com0com-cvs] hub4com/plugins/serial comio.cpp,1.6,1.7
The virtual serial port driver for Windows.
                
                Brought to you by:
                
                    vfrolov
                    
                
            
            
        
        
        
    | 
      
      
      From: Vyacheslav F. <vf...@us...> - 2008-08-26 14:23:35
      
     | 
| Update of /cvsroot/com0com/hub4com/plugins/serial In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv11017 Modified Files: comio.cpp Log Message: Added ability to SetEscMode() return LSR and MST for non com0com ports Index: comio.cpp =================================================================== RCS file: /cvsroot/com0com/hub4com/plugins/serial/comio.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** comio.cpp 22 Aug 2008 16:57:11 -0000 1.6 --- comio.cpp 26 Aug 2008 14:23:31 -0000 1.7 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.7 2008/08/26 14:23:31 vfrolov + * Added ability to SetEscMode() return LSR and MST for non com0com ports + * * Revision 1.6 2008/08/22 16:57:11 vfrolov * Added *************** *** 353,375 **** DWORD lenOutBufIoctl = 0; ! if (opts & C0CE_INSERT_IOCTL_GET) { ! if (opts & (C0CE_INSERT_ENABLE_LSR|C0CE_INSERT_ENABLE_LSR_BI)) ! lenOutBufIoctl += sizeof(UCHAR)*2 + sizeof(UCHAR); ! if (opts & C0CE_INSERT_ENABLE_MST) ! lenOutBufIoctl += sizeof(UCHAR)*2 + sizeof(UCHAR); ! if (opts & C0CE_INSERT_ENABLE_RBR) ! lenOutBufIoctl += sizeof(UCHAR)*2 + sizeof(ULONG); ! if (opts & C0CE_INSERT_ENABLE_RLC) ! lenOutBufIoctl += sizeof(UCHAR)*2 + sizeof(UCHAR)*3; ! if (lenOutBufIoctl) { ! *ppBuf = pBufAlloc(lenOutBufIoctl); ! if (!*ppBuf) ! lenOutBufIoctl = 0; ! } } --- 356,376 ---- DWORD lenOutBufIoctl = 0; ! if (opts & (C0CE_INSERT_ENABLE_LSR|C0CE_INSERT_ENABLE_LSR_BI)) ! lenOutBufIoctl += sizeof(UCHAR)*2 + sizeof(UCHAR); ! if (opts & C0CE_INSERT_ENABLE_MST) ! lenOutBufIoctl += sizeof(UCHAR)*2 + sizeof(UCHAR); ! if (opts & C0CE_INSERT_ENABLE_RBR) ! lenOutBufIoctl += sizeof(UCHAR)*2 + sizeof(ULONG); ! if (opts & C0CE_INSERT_ENABLE_RLC) ! lenOutBufIoctl += sizeof(UCHAR)*2 + sizeof(UCHAR)*3; ! if (lenOutBufIoctl) { ! *ppBuf = pBufAlloc(lenOutBufIoctl); ! if (!*ppBuf) ! lenOutBufIoctl = 0; } *************** *** 386,389 **** --- 387,412 ---- } + if (lenOutBufIoctl && (opts & C0CE_INSERT_IOCTL_GET) == 0) { + BYTE *pBuf = *ppBuf; + + if (opts & (C0CE_INSERT_ENABLE_LSR|C0CE_INSERT_ENABLE_LSR_BI)) { + *pBuf++ = escapeChar; + *pBuf++ = SERIAL_LSRMST_LSR_NODATA; + *pBuf++ = (LINE_STATUS_THRE | LINE_STATUS_TEMT); + } + + if (opts & C0CE_INSERT_ENABLE_MST) { + DWORD stat; + + if (::GetCommModemStatus(handle, &stat)) { + *pBuf++ = escapeChar; + *pBuf++ = SERIAL_LSRMST_MST; + *pBuf++ = (BYTE)stat; + } + } + + *pDone = (DWORD)(pBuf - *ppBuf); + } + if (opts & C0CE_INSERT_ENABLE_MST) escOptions &= ~ESC_OPTS_V2O_MST(MODEM_STATUS_BITS); |