Ignore:
Timestamp:
Nov 8, 2001, 4:10:39 PM (24 years ago)
Author:
phaller
Message:

.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/hmparport.cpp

    r7298 r7300  
    1 /* $Id: hmparport.cpp,v 1.1 2001-11-08 14:49:27 phaller Exp $ */
     1/* $Id: hmparport.cpp,v 1.2 2001-11-08 15:10:39 phaller Exp $ */
    22
    33/*
     
    2626#define MAGIC_PARPORT 0x4c505431
    2727
     28#define IOCTL_PRINTER                      0x0005
     29#define PRT_QUERYJOBHANDLE                 0x0021
     30#define PRT_SETFRAMECTL                    0x0042
     31#define PRT_SETINFINITERETRY               0x0044
     32#define PRT_INITPRINTER                    0x0046
     33#define PRT_ACTIVATEFONT                   0x0048
     34#define PRT_SETPRINTJOBTITLE               0x004D
     35#define PRT_SETIRQTIMEOUT                  0x004E
     36#define PRT_SETCOMMMODE                    0x0052
     37#define PRT_SETDATAXFERMODE                0x0053
     38#define PRT_GETFRAMECTL                    0x0062
     39#define PRT_GETINFINITERETRY               0x0064
     40#define PRT_GETPRINTERSTATUS               0x0066
     41#define PRT_QUERYACTIVEFONT                0x0069
     42#define PRT_VERIFYFONT                     0x006A
     43#define PRT_QUERYIRQTIMEOUT                0x006E
     44#define PRT_QUERYCOMMMODE                  0x0072
     45#define PRT_QUERYDATAXFERMODE              0x0073
     46#define PRT_QUERDEVICEID                   0x0074
     47
     48
    2849#if 0
    29 
    30 #define IOCTL_ASYNC          0x01
    31 #define ASYNC_GETDCBINFO     0x73
    32 #define ASYNC_SETDCBINFO     0x53
    33 #define ASYNC_SETLINECTRL    0x42
    34 #define ASYNC_GETCOMMEVENT   0x72
    35 #define ASYNC_EXTGETBAUDRATE 0x63
    36 #define ASYNC_EXTSETBAUDRATE 0x43
    37 #define ASYNC_GETCOMMERROR   0x6D
    38 #define ASYNC_GETCOMMSTATUS  0x65
    39 #define ASYNC_GETINQUECOUNT  0x68
    40 #define ASYNC_GETOUTQUECOUNT 0x69
    41 #define ASYNC_GETMODEMINPUT  0x67
    42 #define ASYNC_TRANSMITIMM    0x44
    43 #define ASYNC_SETBREAKON     0x4B
    44 #define ASYNC_SETBREAKOFF    0x45
    45 #define ASYNC_SETMODEMCTRL   0x46
    46 #define ASYNC_STARTTRANSMIT  0x48
    47 #define ASYNC_STOPTRANSMIT   0x47
    48 #define ASYNC_GETMODEMOUTPUT 0x66
    49 
    50 
    5150#pragma pack(1)
    5251typedef struct _DCBINFO
     
    433432}
    434433
     434BOOL HMDeviceParPortClass::GetCommProperties( PHMHANDLEDATA pHMHandleData,
     435                                           LPCOMMPROP lpcmmp)
     436{
     437  APIRET rc;
     438  ULONG ulLen;
     439  int i;
     440  dprintf(("HMDeviceParPortClass::GetCommProperties"));
     441 
     442#if 0
     443  USHORT COMErr;
     444  EXTBAUDGET BaudInfo;
     445  ulLen = sizeof(EXTBAUDGET);
     446  rc = OSLibDosDevIOCtl( pHMHandleData->hHMHandle,
     447                    IOCTL_ASYNC,
     448                    ASYNC_EXTGETBAUDRATE,
     449                    0,0,0,
     450                        &BaudInfo,ulLen,&ulLen);
     451#endif
     452  rc = NO_ERROR;
     453 
     454  memset(lpcmmp,0,sizeof(COMMPROP));
     455  lpcmmp->wPacketLength  = sizeof(COMMPROP);
     456  lpcmmp->wPacketVersion = 1; //???
     457  lpcmmp->dwProvSubType =  PST_PARALLELPORT;
     458 
     459#if 0
     460  lpcmmp->dwServiceMask  = SP_SERIALCOMM;
     461  for(i=0;i<BaudTableSize && BaudInfo.ulMaxBaud <= BaudTable[i].dwBaudRate;i++);
     462  lpcmmp->dwMaxBaud      = BaudTable[i].dwBaudFlag;
     463  lpcmmp->dwProvCapabilities = PCF_DTRDSR | PCF_PARITY_CHECK |
     464                               PCF_RTSCTS | PCF_SETXCHAR |
     465                               PCF_XONXOFF;
     466  lpcmmp->dwSettableParams   = SP_BAUD | SP_DATABITS |
     467                               SP_HANDSHAKEING | SP_PARITY |
     468                               SP_PARITY_CHECK | SP_STOPBIT;
     469  lpcmmp->dwSettableBaud = 0;
     470  for(i=0;i<BaudTableSize;i++)
     471  {
     472    if ( (BaudTable[i].dwBaudRate>=BaudInfo.ulMinBaud) &&
     473         (BaudTable[i].dwBaudRate<=BaudInfo.ulMaxBaud) )
     474      lpcmmp->dwSettableBaud |= BaudTable[i].dwBaudFlag;
     475  }
     476  lpcmmp->dwSettableBaud |= BAUD_USER;
     477  lpcmmp->wSettableData = DATABITS_5 | DATABITS_6 | DATABITS_7 | DATABITS_8;
     478  lpcmmp->wSettableStopParity = STOPBITS_10 | STOPBITS_15 | STOPBITS_20 |
     479                                PARITY_NONE | PARITY_ODD | PARITY_EVEN |
     480    PARITY_MARK | PARITY_SPACE;
     481#endif
     482 
     483  return(rc==0);
     484}
     485
     486BOOL HMDeviceParPortClass::ClearCommError( PHMHANDLEDATA pHMHandleData,
     487                                          LPDWORD lpdwErrors,
     488                                          LPCOMSTAT lpcst)
     489{
     490  APIRET rc;
     491  ULONG ulLen;
     492  USHORT COMErr;
     493
     494  dprintf(("HMDeviceParPortClass::ClearCommError"));
     495  ulLen = sizeof(USHORT);
     496 
     497  *lpdwErrors = 0;
     498  rc = NO_ERROR;
     499 
     500#if 0
     501  // ParPort: CE_DNS, CE_OOP CE_PTO
     502 
     503  rc = OSLibDosDevIOCtl( pHMHandleData->hHMHandle,
     504                    IOCTL_ASYNC,
     505                    ASYNC_GETCOMMERROR,
     506                    0,0,0,
     507                    &COMErr,2,&ulLen);
     508  *lpdwErrors |= (COMErr & 0x0001)?CE_OVERRUN:0;
     509  *lpdwErrors |= (COMErr & 0x0002)?CE_RXOVER:0;
     510  *lpdwErrors |= (COMErr & 0x0004)?CE_RXPARITY:0;
     511  *lpdwErrors |= (COMErr & 0x0008)?CE_FRAME:0;
     512
     513  if(lpcst)
     514  {
     515    UCHAR ucStatus;
     516    RXQUEUE qInfo;
     517    ulLen = 1;
     518    rc = OSLibDosDevIOCtl( pHMHandleData->hHMHandle,
     519                      IOCTL_ASYNC,
     520                      ASYNC_GETCOMMSTATUS,
     521                      0,0,0,
     522                      &ucStatus,ulLen,&ulLen);
     523    if(!rc)
     524    {
     525      lpcst->fCtsHold  = ((ucStatus & 0x01)>0);
     526      lpcst->fDsrHold  = ((ucStatus & 0x02)>0);
     527      lpcst->fRlsdHold = FALSE;//(ucStatus & 0x04)>0);
     528      lpcst->fXoffHold = ((ucStatus & 0x08)>0);
     529      lpcst->fXoffSend = ((ucStatus & 0x10)>0);
     530      lpcst->fEof      = ((ucStatus & 0x20)>0);// Is break = Eof ??
     531      lpcst->fTxim     = ((ucStatus & 0x40)>0);
     532
     533      ulLen = sizeof(qInfo);
     534      rc = OSLibDosDevIOCtl( pHMHandleData->hHMHandle,
     535                        IOCTL_ASYNC,
     536                        ASYNC_GETINQUECOUNT,
     537                        0,0,0,
     538                        &qInfo,ulLen,&ulLen);
     539      if(!rc)
     540      {
     541        lpcst->cbInQue   = qInfo.cch;
     542        rc = OSLibDosDevIOCtl( pHMHandleData->hHMHandle,
     543                          IOCTL_ASYNC,
     544                          ASYNC_GETOUTQUECOUNT,
     545                          0,0,0,
     546                          &qInfo,ulLen,&ulLen);
     547        if(!rc)
     548          lpcst->cbOutQue = qInfo.cch;
     549      }
     550    }
     551  }
     552#endif
     553 
     554  return(rc==0);
     555}
Note: See TracChangeset for help on using the changeset viewer.