Changeset 5039 for trunk/src/kernel32/hmcomm.cpp
- Timestamp:
- Jan 30, 2001, 12:42:25 AM (25 years ago)
- 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:51sandervl Exp $ */1 /* $Id: hmcomm.cpp,v 1.9 2001-01-29 23:42:25 sandervl Exp $ */ 2 2 3 3 /* … … 43 43 #define ASYNC_STARTTRANSMIT 0x48 44 44 #define ASYNC_STOPTRANSMIT 0x47 45 45 #define ASYNC_GETMODEMOUTPUT 0x66 46 46 47 47 … … 197 197 ULONG ulLen; 198 198 APIRET rc; 199 200 199 pHMHandleData->lpHandlerData = new HMDEVCOMDATA(); 201 200 // Init The handle instance with the default default device config … … 207 206 208 207 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)); 213 232 214 233 if(rc) … … 216 235 return -1; 217 236 } 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)); 218 241 return 0; 219 242 } … … 416 439 DWORD fdwAction) 417 440 { 418 dprintf(("HMDeviceCommClass::PurgeComm unimplemented stub!"));441 dprintf(("HMDeviceCommClass::PurgeComm (flags 0x%x) unimplemented stub!",fdwAction)); 419 442 // ToDo: find a way to stop the current transmision didn't find 420 443 // any clue how to in Control Program Guide and reference … … 596 619 ULONG ulLen; 597 620 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 )); 598 634 599 635 memcpy( &pDevData->CommTOuts, … … 603 639 memcpy(&os2dcb,&pDevData->dcbOS2,sizeof(DCBINFO)); 604 640 605 os2dcb.fbTimeOut = 0x01;641 fbTimeOut = 0x02; 606 642 if(MAXDWORD==pDevData->CommTOuts.ReadIntervalTimeout) 607 643 { 608 644 if( (0==pDevData->CommTOuts.ReadTotalTimeoutMultiplier) && 609 645 (0==pDevData->CommTOuts.ReadTotalTimeoutConstant)) 610 os2dcb.fbTimeOut = 0x03;646 fbTimeOut = 0x05; 611 647 else 612 os2dcb.fbTimeOut = 0x02;648 fbTimeOut = 0x04; 613 649 } 614 650 else … … 616 652 DWORD dwTimeout; 617 653 dwTimeout = pDevData->CommTOuts.ReadIntervalTimeout/10; 654 #if 0 618 655 if(dwTimeout) 619 656 dwTimeout--; // 0=10 ms unit is 10ms or .01s 657 #endif 620 658 os2dcb.usWriteTimeout = 0x0000FFFF & dwTimeout; 621 659 os2dcb.usReadTimeout = 0x0000FFFF & dwTimeout; 622 660 } 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 623 683 ulLen = sizeof(DCBINFO); 624 684 rc = OSLibDosDevIOCtl( pHMHandleData->hHMHandle, … … 627 687 &os2dcb,ulLen,&ulLen, 628 688 NULL,0,NULL); 629 689 dprintf(("IOCRL returned %d",rc)); 630 690 return(0==rc); 631 691 } … … 691 751 } 692 752 693 ret = OSLibDosWrite(pHMHandleData->hHMHandle, (LPVOID)lpBuffer, nNumberOfBytesToWrite, 753 ret = OSLibDosWrite(pHMHandleData->hHMHandle, (LPVOID)lpBuffer, nNumberOfBytesToWrite, 694 754 &ulBytesWritten); 695 755 … … 785 845 } 786 846 787 ret = OSLibDosRead(pHMHandleData->hHMHandle, (LPVOID)lpBuffer, nNumberOfBytesToRead, 847 ret = OSLibDosRead(pHMHandleData->hHMHandle, (LPVOID)lpBuffer, nNumberOfBytesToRead, 788 848 &ulBytesRead); 789 849 … … 935 995 &mdm,ulPLen,&ulPLen, 936 996 &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 } 937 1011 break; 938 1012 case CLRRTS: … … 1074 1148 ULONG ulLen; 1075 1149 DCBINFO os2dcb; 1076 1150 UCHAR fbTimeOut; 1077 1151 PHMDEVCOMDATA pDevData = (PHMDEVCOMDATA)pHMHandleData->lpHandlerData; 1078 1152 DCB *pCurDCB = &pDevData->CommCfg.dcb; … … 1091 1165 (ucRtsControl<<6); 1092 1166 1093 os2dcb.fbTimeOut = 0x01;1167 fbTimeOut = 0x02; 1094 1168 if(MAXDWORD==pDevData->CommTOuts.ReadIntervalTimeout) 1095 1169 { 1096 1170 if( (0==pDevData->CommTOuts.ReadTotalTimeoutMultiplier) && 1097 1171 (0==pDevData->CommTOuts.ReadTotalTimeoutConstant)) 1098 os2dcb.fbTimeOut = 0x03;1172 fbTimeOut = 0x05; 1099 1173 else 1100 os2dcb.fbTimeOut = 0x02;1174 fbTimeOut = 0x04; 1101 1175 } 1102 1176 else … … 1109 1183 os2dcb.usReadTimeout = 0x0000FFFF & dwTimeout; 1110 1184 } 1185 os2dcb.fbTimeOut = (os2dcb.fbTimeOut & 0xF9) | fbTimeOut; 1111 1186 os2dcb.bErrorReplacementChar = ErrorChar; 1112 1187 os2dcb.bXONChar = XonChar; … … 1178 1253 } 1179 1254 1255
Note:
See TracChangeset
for help on using the changeset viewer.