Ignore:
Timestamp:
Jan 30, 2001, 12:42:25 AM (25 years ago)
Author:
sandervl
Message:

MM: comm fix for palm hotsync & ibm com drivers

File:
1 edited

Legend:

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

    r4924 r5039  
    1 /* $Id: hmcomm.cpp,v 1.8 2001-01-10 20:38:51 sandervl Exp $ */
     1/* $Id: hmcomm.cpp,v 1.9 2001-01-29 23:42:25 sandervl Exp $ */
    22
    33/*
     
    4343#define ASYNC_STARTTRANSMIT  0x48
    4444#define ASYNC_STOPTRANSMIT   0x47
    45 
     45#define ASYNC_GETMODEMOUTPUT 0x66
    4646
    4747
     
    197197    ULONG ulLen;
    198198    APIRET rc;
    199 
    200199    pHMHandleData->lpHandlerData = new HMDEVCOMDATA();
    201200    // Init The handle instance with the default default device config
     
    207206
    208207    rc = OSLibDosDevIOCtl( pHMHandleData->hHMHandle,
    209                       IOCTL_ASYNC,
    210                       ASYNC_GETDCBINFO,
    211                       0,0,0,
    212                       &((PHMDEVCOMDATA)pHMHandleData->lpHandlerData)->dcbOS2,ulLen,&ulLen);
     208                           IOCTL_ASYNC,
     209                           ASYNC_GETDCBINFO,
     210                           0,0,0,
     211                           &((PHMDEVCOMDATA)pHMHandleData->lpHandlerData)->dcbOS2,ulLen,&ulLen);
     212    dprintf(("DCB Of %s :\n"
     213             " WriteTimeout           : %d\n"
     214             " ReadTimeout            : %d\n"
     215             " CtlHandshake           : 0x%x\n"
     216             " FlowReplace            : 0x%x\n"
     217             " Timeout                : 0x%x\n"
     218             " Error replacement Char : 0x%x\n"
     219             " Break replacement Char : 0x%x\n"
     220             " XON Char               : 0x%x\n"
     221             " XOFF Char              : 0x%x\n",
     222             comname,
     223             ((PHMDEVCOMDATA)pHMHandleData->lpHandlerData)->dcbOS2.usWriteTimeout,
     224             ((PHMDEVCOMDATA)pHMHandleData->lpHandlerData)->dcbOS2.usReadTimeout,
     225             ((PHMDEVCOMDATA)pHMHandleData->lpHandlerData)->dcbOS2.fbCtlHndShake,
     226             ((PHMDEVCOMDATA)pHMHandleData->lpHandlerData)->dcbOS2.fbFlowReplace,
     227             ((PHMDEVCOMDATA)pHMHandleData->lpHandlerData)->dcbOS2.fbTimeOut,
     228             ((PHMDEVCOMDATA)pHMHandleData->lpHandlerData)->dcbOS2.bErrorReplacementChar,
     229             ((PHMDEVCOMDATA)pHMHandleData->lpHandlerData)->dcbOS2.bBreakReplacementChar,
     230             ((PHMDEVCOMDATA)pHMHandleData->lpHandlerData)->dcbOS2.bXONChar,
     231             ((PHMDEVCOMDATA)pHMHandleData->lpHandlerData)->dcbOS2.bXOFFChar));
    213232
    214233    if(rc)
     
    216235      return -1;
    217236    }
     237    rc = SetBaud(pHMHandleData,9600);
     238    dprintf(("Init Baud to 9600 rc = %d",rc));
     239    rc = SetLine(pHMHandleData,8,0,0);
     240    dprintf(("Set Line to 8/N/1 rc = %d",rc));
    218241    return 0;
    219242  }
     
    416439                                   DWORD fdwAction)
    417440{
    418   dprintf(("HMDeviceCommClass::PurgeComm unimplemented stub!"));
     441  dprintf(("HMDeviceCommClass::PurgeComm (flags 0x%x) unimplemented stub!",fdwAction));
    419442  // ToDo: find a way to stop the current transmision didn't find
    420443  // any clue how to in Control Program Guide and reference
     
    596619  ULONG ulLen;
    597620  APIRET rc;
     621  UCHAR fbTimeOut;
     622  dprintf(("HMDeviceCommClass::SetCommTimeouts\n"
     623           " ReadIntervalTimeout         : 0x%x\n"
     624           " ReadTotalTimeoutMultiplier  : %d\n"
     625           " ReadTotalTimeoutConstant    : %d\n"
     626           " WriteTotalTimeoutMultiplier : %d\n"
     627           " WriteTotalTimeoutConstant   : %d\n",
     628           lpctmo->ReadIntervalTimeout,
     629           lpctmo->ReadTotalTimeoutMultiplier,
     630           lpctmo->ReadTotalTimeoutConstant,
     631           lpctmo->WriteTotalTimeoutMultiplier,
     632           lpctmo->WriteTotalTimeoutConstant
     633  ));
    598634
    599635  memcpy( &pDevData->CommTOuts,
     
    603639  memcpy(&os2dcb,&pDevData->dcbOS2,sizeof(DCBINFO));
    604640
    605   os2dcb.fbTimeOut = 0x01;
     641  fbTimeOut = 0x02;
    606642  if(MAXDWORD==pDevData->CommTOuts.ReadIntervalTimeout)
    607643  {
    608644    if( (0==pDevData->CommTOuts.ReadTotalTimeoutMultiplier) &&
    609645        (0==pDevData->CommTOuts.ReadTotalTimeoutConstant))
    610       os2dcb.fbTimeOut = 0x03;
     646      fbTimeOut = 0x05;
    611647    else
    612       os2dcb.fbTimeOut = 0x02;
     648      fbTimeOut = 0x04;
    613649  }
    614650  else
     
    616652    DWORD dwTimeout;
    617653    dwTimeout = pDevData->CommTOuts.ReadIntervalTimeout/10;
     654#if 0
    618655    if(dwTimeout)
    619656      dwTimeout--; // 0=10 ms unit is 10ms or .01s
     657#endif
    620658    os2dcb.usWriteTimeout = 0x0000FFFF & dwTimeout;
    621659    os2dcb.usReadTimeout  = 0x0000FFFF & dwTimeout;
    622660  }
     661  os2dcb.fbTimeOut = (os2dcb.fbTimeOut & 0xF9) | fbTimeOut;
     662
     663  dprintf((" New DCB:\n"
     664           " WriteTimeout           : %d\n"
     665           " ReadTimeout            : %d\n"
     666           " CtlHandshake           : 0x%x\n"
     667           " FlowReplace            : 0x%x\n"
     668           " Timeout                : 0x%x\n"
     669           " Error replacement Char : 0x%x\n"
     670           " Break replacement Char : 0x%x\n"
     671           " XON Char               : 0x%x\n"
     672           " XOFF Char              : 0x%x\n",
     673           os2dcb.usWriteTimeout,
     674           os2dcb.usReadTimeout,
     675           os2dcb.fbCtlHndShake,
     676           os2dcb.fbFlowReplace,
     677           os2dcb.fbTimeOut,
     678           os2dcb.bErrorReplacementChar,
     679           os2dcb.bBreakReplacementChar,
     680           os2dcb.bXONChar,
     681           os2dcb.bXOFFChar));
     682
    623683  ulLen = sizeof(DCBINFO);
    624684  rc = OSLibDosDevIOCtl( pHMHandleData->hHMHandle,
     
    627687                          &os2dcb,ulLen,&ulLen,
    628688                          NULL,0,NULL);
    629 
     689  dprintf(("IOCRL returned %d",rc));
    630690  return(0==rc);
    631691}
     
    691751  }
    692752
    693   ret = OSLibDosWrite(pHMHandleData->hHMHandle, (LPVOID)lpBuffer, nNumberOfBytesToWrite, 
     753  ret = OSLibDosWrite(pHMHandleData->hHMHandle, (LPVOID)lpBuffer, nNumberOfBytesToWrite,
    694754                      &ulBytesWritten);
    695755
     
    785845  }
    786846
    787   ret = OSLibDosRead(pHMHandleData->hHMHandle, (LPVOID)lpBuffer, nNumberOfBytesToRead, 
     847  ret = OSLibDosRead(pHMHandleData->hHMHandle, (LPVOID)lpBuffer, nNumberOfBytesToRead,
    788848                     &ulBytesRead);
    789849
     
    935995                             &mdm,ulPLen,&ulPLen,
    936996                             &COMErr,ulDLen,&ulDLen);
     997      dprintf(("CLRDTR rc = %d Comerror = 0x%x",rc,COMErr));
     998      rc = COMErr;
     999      if(rc==0)
     1000      {
     1001        BYTE bModem;
     1002        ulDLen = sizeof(BYTE);
     1003        rc = OSLibDosDevIOCtl( pHMHandleData->hHMHandle,
     1004                               IOCTL_ASYNC,
     1005                               ASYNC_GETMODEMOUTPUT,
     1006                               NULL,0,NULL,
     1007                               &bModem,ulDLen,&ulDLen);
     1008        dprintf(("Check DTR rc = %d Flags = 0x%x",rc,bModem));
     1009        rc = bModem & 0x01;
     1010      }
    9371011      break;
    9381012    case CLRRTS:
     
    10741148  ULONG ulLen;
    10751149  DCBINFO os2dcb;
    1076 
     1150  UCHAR  fbTimeOut;
    10771151  PHMDEVCOMDATA pDevData = (PHMDEVCOMDATA)pHMHandleData->lpHandlerData;
    10781152  DCB *pCurDCB = &pDevData->CommCfg.dcb;
     
    10911165                         (ucRtsControl<<6);
    10921166
    1093   os2dcb.fbTimeOut = 0x01;
     1167  fbTimeOut = 0x02;
    10941168  if(MAXDWORD==pDevData->CommTOuts.ReadIntervalTimeout)
    10951169  {
    10961170    if( (0==pDevData->CommTOuts.ReadTotalTimeoutMultiplier) &&
    10971171        (0==pDevData->CommTOuts.ReadTotalTimeoutConstant))
    1098       os2dcb.fbTimeOut = 0x03;
     1172      fbTimeOut = 0x05;
    10991173    else
    1100       os2dcb.fbTimeOut = 0x02;
     1174      fbTimeOut = 0x04;
    11011175  }
    11021176  else
     
    11091183    os2dcb.usReadTimeout  = 0x0000FFFF & dwTimeout;
    11101184  }
     1185  os2dcb.fbTimeOut = (os2dcb.fbTimeOut & 0xF9) | fbTimeOut;
    11111186  os2dcb.bErrorReplacementChar = ErrorChar;
    11121187  os2dcb.bXONChar              = XonChar;
     
    11781253}
    11791254
     1255
Note: See TracChangeset for help on using the changeset viewer.