com0com-cvs Mailing List for Null-modem emulator
The virtual serial port driver for Windows.
Brought to you by:
vfrolov
You can subscribe to this list here.
2005 |
Jan
|
Feb
(7) |
Mar
|
Apr
|
May
(13) |
Jun
(18) |
Jul
(9) |
Aug
(10) |
Sep
(15) |
Oct
(6) |
Nov
(9) |
Dec
(6) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(6) |
Feb
(4) |
Mar
(4) |
Apr
(2) |
May
(7) |
Jun
(11) |
Jul
(6) |
Aug
(9) |
Sep
(1) |
Oct
(27) |
Nov
(22) |
Dec
(3) |
2007 |
Jan
(13) |
Feb
(16) |
Mar
(2) |
Apr
(3) |
May
(7) |
Jun
(17) |
Jul
(9) |
Aug
(1) |
Sep
(13) |
Oct
(20) |
Nov
(18) |
Dec
(1) |
2008 |
Jan
|
Feb
(3) |
Mar
(46) |
Apr
(40) |
May
(4) |
Jun
(9) |
Jul
(7) |
Aug
(62) |
Sep
(25) |
Oct
(51) |
Nov
(67) |
Dec
(81) |
2009 |
Jan
(13) |
Feb
(31) |
Mar
(12) |
Apr
|
May
(10) |
Jun
|
Jul
(5) |
Aug
(2) |
Sep
(10) |
Oct
|
Nov
(3) |
Dec
(1) |
2010 |
Jan
|
Feb
(1) |
Mar
(4) |
Apr
|
May
(12) |
Jun
(9) |
Jul
(12) |
Aug
(7) |
Sep
(6) |
Oct
|
Nov
|
Dec
(1) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(11) |
Jun
|
Jul
(26) |
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
(23) |
2012 |
Jan
(7) |
Feb
(3) |
Mar
|
Apr
|
May
(2) |
Jun
(9) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Vyacheslav F. <vf...@us...> - 2012-06-18 07:32:15
|
Update of /cvsroot/com0com/hub4com In directory vz-cvs-4.sog:/tmp/cvs-serv26619 Modified Files: Changes.txt version.h Log Message: Pre-tagging version change Index: Changes.txt =================================================================== RCS file: /cvsroot/com0com/hub4com/Changes.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Changes.txt 16 Jun 2012 10:54:19 -0000 1.1 --- Changes.txt 18 Jun 2012 07:32:13 -0000 1.2 *************** *** 1,3 **** ! * The pinmap filter: added ability to set pins to ON/OFF. --- 1,3 ---- ! v2.1.0.0 (2012-06-18) * The pinmap filter: added ability to set pins to ON/OFF. Index: version.h =================================================================== RCS file: /cvsroot/com0com/hub4com/version.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** version.h 19 May 2011 16:27:49 -0000 1.8 --- version.h 18 Jun 2012 07:32:13 -0000 1.9 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2006-2011 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2006-2012 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 23,32 **** #define _H4C_VERSION_H_ ! #define H4C_COPYRIGHT_YEARS "2006-2011" #define H4C_V1 2 ! #define H4C_V2 0 ! #define H4C_V3 1 ! #define H4C_V4 1 #define MK_VERSION_STR1(V1, V2, V3, V4) #V1 "." #V2 "." #V3 "." #V4 --- 23,32 ---- #define _H4C_VERSION_H_ ! #define H4C_COPYRIGHT_YEARS "2006-2012" #define H4C_V1 2 ! #define H4C_V2 1 ! #define H4C_V3 0 ! #define H4C_V4 0 #define MK_VERSION_STR1(V1, V2, V3, V4) #V1 "." #V2 "." #V3 "." #V4 |
From: Vyacheslav F. <vf...@us...> - 2012-06-16 10:54:22
|
Update of /cvsroot/com0com/hub4com In directory vz-cvs-4.sog:/tmp/cvs-serv25710 Added Files: Changes.txt Log Message: Initial revision --- NEW FILE: Changes.txt --- * The pinmap filter: added ability to set pins to ON/OFF. * The pinmap filter: added --data option to control data stream by pin state. * Added --reconnect option to com2tcp-rfc2217.bat. * Implemented serial port share mode to allow use COM port by other applications when port is not used by hub4com. * Added --share-com-port option to com2tcp-rfc2217.bat. * The telnet filter: added --ascii-cr-padding option to insert padding following CR in the default ASCII mode. * The pin2con filter: added --delay-disconnect option to ignore the disconnect if the connect will raised shortly. * Added --delay-disconnect option to com2tcp-rfc2217.bat. * Implemented tag-sync filter to allow resynchronization data tagged by tag filter after data lost. * Added ability to divide incoming TCP sessions (prevent accepting new TCP connection until the connection counter is 0). * Fixed some bugs and made some improvements. v2.0.1.0 (2011-05-10) * Implemented priority and reject modifiers for TCP/IP listener. * Added ability disable writing to the TCP/IP or serial ports. * Fixed some TCP/IP bugs. * Added connection counter logic to pinmap filter. * Made some optimizations and improvements. v2.0.0.0 (2009-03-12) * Added TCP/IP ports support. * Implemented all com2tcp functionality. * Implemented RFC 2217 "Telnet Com Port Control Option" protocol. * New features can be added by implementing plugins. * Many other features added. v1.1.0.0 (2008-03-17) * Added read interval timeout option. * Added ability to send data received from port to the same port. * Fixed some bugs. 2007-02-26 - hub4com v1.0.0.0 released. 2007-01-23 - hub4com project moved to http://com0com.sourceforge.net/. 2006 - hub4com project started. |
From: Vyacheslav F. <vf...@us...> - 2012-06-04 06:21:45
|
Update of /cvsroot/com0com/com0com In directory vz-cvs-4.sog:/tmp/cvs-serv31898 Modified Files: Changes.txt cncport.inf com0com.inf comport.inf Log Message: Pre-tagging version change Index: comport.inf =================================================================== RCS file: /cvsroot/com0com/com0com/comport.inf,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** comport.inf 31 Jan 2012 05:50:16 -0000 1.3 --- comport.inf 4 Jun 2012 06:21:43 -0000 1.4 *************** *** 16,20 **** CatalogFile = com0com.cat ; MM/DD/YYYY ! DriverVer = 01/31/2012,3.0.0.0 UninstallInfTag = {df799e12-3c56-421b-b298-b6d3642bc878} --- 16,20 ---- CatalogFile = com0com.cat ; MM/DD/YYYY ! DriverVer = 06/04/2012,3.0.0.0 UninstallInfTag = {df799e12-3c56-421b-b298-b6d3642bc878} Index: com0com.inf =================================================================== RCS file: /cvsroot/com0com/com0com/com0com.inf,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** com0com.inf 6 Dec 2011 15:46:26 -0000 1.7 --- com0com.inf 4 Jun 2012 06:21:43 -0000 1.8 *************** *** 5,9 **** ; Installation file for the Null-modem emulator driver. ; ! ; Copyright (c) 2004-2011 Vyacheslav Frolov ; ;****************************************************************************** --- 5,9 ---- ; Installation file for the Null-modem emulator driver. ; ! ; Copyright (c) 2004-2012 Vyacheslav Frolov ; ;****************************************************************************** *************** *** 16,20 **** CatalogFile = com0com.cat ; MM/DD/YYYY ! DriverVer = 12/06/2011,3.0.0.0 UninstallInfTag = {df799e12-3c56-421b-b298-b6d3642bc878} --- 16,20 ---- CatalogFile = com0com.cat ; MM/DD/YYYY ! DriverVer = 06/04/2012,3.0.0.0 UninstallInfTag = {df799e12-3c56-421b-b298-b6d3642bc878} Index: Changes.txt =================================================================== RCS file: /cvsroot/com0com/com0com/Changes.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Changes.txt 2 Jun 2012 11:05:08 -0000 1.2 --- Changes.txt 4 Jun 2012 06:21:43 -0000 1.3 *************** *** 1,3 **** ! v3.0.0.0 (2012-06-02) * Added ability to put the port to the Ports class. --- 1,3 ---- ! v3.0.0.0 (2012-06-04) * Added ability to put the port to the Ports class. Index: cncport.inf =================================================================== RCS file: /cvsroot/com0com/com0com/cncport.inf,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** cncport.inf 7 Jun 2010 07:06:10 -0000 1.2 --- cncport.inf 4 Jun 2012 06:21:43 -0000 1.3 *************** *** 5,9 **** ; Installation file for the Null-modem emulator driver. ; ! ; Copyright (c) 2010 Vyacheslav Frolov ; ;****************************************************************************** --- 5,9 ---- ; Installation file for the Null-modem emulator driver. ; ! ; Copyright (c) 2010-2012 Vyacheslav Frolov ; ;****************************************************************************** *************** *** 16,20 **** CatalogFile = com0com.cat ; MM/DD/YYYY ! DriverVer = 06/07/2010,3.0.0.0 UninstallInfTag = {df799e12-3c56-421b-b298-b6d3642bc878} --- 16,20 ---- CatalogFile = com0com.cat ; MM/DD/YYYY ! DriverVer = 06/04/2012,3.0.0.0 UninstallInfTag = {df799e12-3c56-421b-b298-b6d3642bc878} |
From: Vyacheslav F. <vf...@us...> - 2012-06-04 06:15:39
|
Update of /cvsroot/com0com/com0com/setup In directory vz-cvs-4.sog:/tmp/cvs-serv30592 Modified Files: msg.cpp Log Message: Fixed previous commit Index: msg.cpp =================================================================== RCS file: /cvsroot/com0com/com0com/setup/msg.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** msg.cpp 4 Jun 2012 06:02:14 -0000 1.14 --- msg.cpp 4 Jun 2012 06:15:37 -0000 1.15 *************** *** 20,25 **** * * $Log$ * Revision 1.14 2012/06/04 06:02:14 vfrolov ! * Added commented code /* ... SetupSetNonInteractiveMode ...*/ * * Revision 1.13 2011/12/15 15:51:48 vfrolov --- 20,28 ---- * * $Log$ + * Revision 1.15 2012/06/04 06:15:37 vfrolov + * Fixed previous commit + * * Revision 1.14 2012/06/04 06:02:14 vfrolov ! * Added commented code with SetupSetNonInteractiveMode * * Revision 1.13 2011/12/15 15:51:48 vfrolov |
From: Vyacheslav F. <vf...@us...> - 2012-06-04 06:02:16
|
Update of /cvsroot/com0com/com0com/setup In directory vz-cvs-4.sog:/tmp/cvs-serv29914 Modified Files: msg.cpp Log Message: Added commented code /* ... SetupSetNonInteractiveMode ...*/ Index: msg.cpp =================================================================== RCS file: /cvsroot/com0com/com0com/setup/msg.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** msg.cpp 15 Dec 2011 15:51:48 -0000 1.13 --- msg.cpp 4 Jun 2012 06:02:14 -0000 1.14 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2006-2011 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2006-2012 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.14 2012/06/04 06:02:14 vfrolov + * Added commented code /* ... SetupSetNonInteractiveMode ...*/ + * * Revision 1.13 2011/12/15 15:51:48 vfrolov * Fixed types *************** *** 356,359 **** --- 359,379 ---- { silent = val; + + /* + typedef BOOL (WINAPI *PSETUPSETNONINTERACTIVEMODE)(IN BOOL); + static PSETUPSETNONINTERACTIVEMODE pSetupSetNonInteractiveMode = NULL; + + if(!pSetupSetNonInteractiveMode) { + HMODULE hModule = GetModuleHandle("setupapi.dll"); + + if (hModule) { + pSetupSetNonInteractiveMode = + (PSETUPSETNONINTERACTIVEMODE)GetProcAddress(hModule, "SetupSetNonInteractiveMode"); + } + } + + if (pSetupSetNonInteractiveMode) + pSetupSetNonInteractiveMode(silent); + */ } /////////////////////////////////////////////////////////////// |
From: Vyacheslav F. <vf...@us...> - 2012-06-02 19:44:02
|
Update of /cvsroot/com0com/hub4com In directory vz-cvs-4.sog:/tmp/cvs-serv11322 Modified Files: ReadMe.txt Log Message: Added session divisor to CVS proxy Index: ReadMe.txt =================================================================== RCS file: /cvsroot/com0com/hub4com/ReadMe.txt,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** ReadMe.txt 2 Jun 2012 10:52:43 -0000 1.11 --- ReadMe.txt 2 Jun 2012 19:44:00 -0000 1.12 *************** *** 160,164 **** 1. Start the hub4com.exe on the computer with address your.computer.addr: ! hub4com.exe --use-driver=tcp 2401 com0com.cvs.sourceforge.net:2401 2. On computer that has not access to the internet check out the hub4com --- 160,164 ---- 1. Start the hub4com.exe on the computer with address your.computer.addr: ! hub4com.exe --use-driver=tcp /2401 com0com.cvs.sourceforge.net:2401 2. On computer that has not access to the internet check out the hub4com *************** *** 180,184 **** 1. Start the hub4com.exe: ! hub4com.exe --use-driver=tcp <your-progect>.cvs.sourceforge.net:443 --interface=localhost 22 2. Check out the souce code from the CVS repository: --- 180,184 ---- 1. Start the hub4com.exe: ! hub4com.exe --use-driver=tcp <your-progect>.cvs.sourceforge.net:443 --interface=localhost /22 2. Check out the souce code from the CVS repository: |
From: Vyacheslav F. <vf...@us...> - 2012-06-02 19:37:22
|
Update of /cvsroot/com0com/hub4com/plugins/tcp In directory vz-cvs-4.sog:/tmp/cvs-serv9996 Modified Files: comport.cpp comport.h port.cpp Log Message: Added ability to divide incoming TCP sessions Index: comport.cpp =================================================================== RCS file: /cvsroot/com0com/hub4com/plugins/tcp/comport.cpp,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** comport.cpp 14 Sep 2010 18:34:30 -0000 1.22 --- comport.cpp 2 Jun 2012 19:37:20 -0000 1.23 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2008-2010 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2008-2012 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.23 2012/06/02 19:37:20 vfrolov + * Added ability to divide incoming TCP sessions + * * Revision 1.22 2010/09/14 18:34:30 vfrolov * Fixed rejected connections handling *************** *** 189,192 **** --- 192,196 ---- : pListener(NULL), rejectZeroConnectionCounter(FALSE), + busyTillZeroConnectionCounter(FALSE), priority(0), hSock(INVALID_SOCKET), *************** *** 194,197 **** --- 198,202 ---- isConnected(FALSE), isDisconnected(FALSE), + pendingListenerOnDisconnect(FALSE), connectionCounter(0), permanent(FALSE), *************** *** 223,226 **** --- 228,234 ---- rejectZeroConnectionCounter = TRUE; continue; + case '/': + busyTillZeroConnectionCounter = TRUE; + continue; } break; *************** *** 535,540 **** connectionCounter--; ! if (hSock != INVALID_SOCKET && !permanent && connectionCounter <= 0) ! PortTcp::Disconnect(name.c_str(), hSock); } break; --- 543,555 ---- connectionCounter--; ! if (connectionCounter <= 0) { ! if (hSock != INVALID_SOCKET && !permanent) ! PortTcp::Disconnect(name.c_str(), hSock); ! ! if (pendingListenerOnDisconnect && pListener) { ! pendingListenerOnDisconnect = FALSE; ! pListener->OnDisconnect(this); ! } ! } } break; *************** *** 670,674 **** if (pListener) { ! pListener->OnDisconnect(this); } else --- 685,692 ---- if (pListener) { ! if (!busyTillZeroConnectionCounter || connectionCounter <= 0) ! pListener->OnDisconnect(this); ! else ! pendingListenerOnDisconnect = TRUE; } else Index: comport.h =================================================================== RCS file: /cvsroot/com0com/hub4com/plugins/tcp/comport.h,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** comport.h 4 Aug 2009 11:36:49 -0000 1.10 --- comport.h 2 Jun 2012 19:37:20 -0000 1.11 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2008-2009 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2008-2012 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.11 2012/06/02 19:37:20 vfrolov + * Added ability to divide incoming TCP sessions + * * Revision 1.10 2009/08/04 11:36:49 vfrolov * Implemented priority and reject modifiers for <listen port> *************** *** 118,126 **** void Name(const char *pName) { name = pName; } HANDLE Handle() const { return (HANDLE)hSock; } - BOOL CanConnect() const { return (permanent || connectionCounter > 0); } - void StartConnect(); private: void FlowControlUpdate(); BOOL StartRead(); BOOL StartWaitEvent(SOCKET hSockWait); --- 121,129 ---- void Name(const char *pName) { name = pName; } HANDLE Handle() const { return (HANDLE)hSock; } private: void FlowControlUpdate(); + BOOL CanConnect() const { return (permanent || connectionCounter > 0); } + void StartConnect(); BOOL StartRead(); BOOL StartWaitEvent(SOCKET hSockWait); *************** *** 132,135 **** --- 135,139 ---- Listener *pListener; BOOL rejectZeroConnectionCounter; + BOOL busyTillZeroConnectionCounter; int priority; *************** *** 139,142 **** --- 143,147 ---- BOOL isConnected; BOOL isDisconnected; + BOOL pendingListenerOnDisconnect; int connectionCounter; BOOL permanent; Index: port.cpp =================================================================== RCS file: /cvsroot/com0com/hub4com/plugins/tcp/port.cpp,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** port.cpp 14 Sep 2010 16:33:34 -0000 1.16 --- port.cpp 2 Jun 2012 19:37:20 -0000 1.17 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2008-2010 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2008-2012 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.17 2012/06/02 19:37:20 vfrolov + * Added ability to divide incoming TCP sessions + * * Revision 1.16 2010/09/14 16:33:34 vfrolov * Implemented --write-limit=0 to disable writing to the port *************** *** 113,117 **** << " " << pProgPath << " ... [--use-driver=" << GetPluginAbout()->pName << "] [*]<host addr>:<host port> ..." << endl << "Usage (server mode):" << endl ! << " " << pProgPath << " ... [--use-driver=" << GetPluginAbout()->pName << "] [*][!]<listen port>[/<priority>] ..." << endl << endl << " The sign * above means that connection should be permanent as it's possible." << endl --- 116,120 ---- << " " << pProgPath << " ... [--use-driver=" << GetPluginAbout()->pName << "] [*]<host addr>:<host port> ..." << endl << "Usage (server mode):" << endl ! << " " << pProgPath << " ... [--use-driver=" << GetPluginAbout()->pName << "] [*][!][/]<listen port>[/<priority>] ..." << endl << endl << " The sign * above means that connection should be permanent as it's possible." << endl *************** *** 119,122 **** --- 122,127 ---- << " The sign ! above means that connection to <listen port> should be rejected if" << endl << " the connection counter is 0." << endl + << " The sign / above means that after disconnecting the port will be busy until" << endl + << " the connection counter is 0." << endl << " The <priority> above is an integer (default is 0). The port will be used only" << endl << " if all ports with the same <listen port> and higher <priority> are busy." << endl |
From: Vyacheslav F. <vf...@us...> - 2012-06-02 11:05:10
|
Update of /cvsroot/com0com/com0com In directory vz-cvs-4.sog:/tmp/cvs-serv32495 Modified Files: Changes.txt Log Message: Added latest changes Index: Changes.txt =================================================================== RCS file: /cvsroot/com0com/com0com/Changes.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Changes.txt 3 Feb 2012 17:10:17 -0000 1.1 --- Changes.txt 2 Jun 2012 11:05:08 -0000 1.2 *************** *** 1,2 **** --- 1,18 ---- + v3.0.0.0 (2012-06-02) + + * Added ability to put the port to the Ports class. + * Added ability to set selections for setup.exe by setting environment variables. + * Installers setupc.exe and setupg.exe marked as "require administrative access" + so Turning off UAC is not required now. + * Added tracing of dialogs while setup. + * Improved silent install and uninstall. + * Added cleaning high data bits for less then 8 bit data. For forcing backward + compatibility added AllDataBits option. + * Added ability to uninstall package w/o uninstalling devices and driver. + * Added ability to build installer with com0com.cat file. + * Added ability to build installer suitable for both 32-bit and 64-bit systems. + * Implemented setting friendly names. + * Fixed some bugs and made some improvements. + v2.2.2.0 (2009-12-17) |
From: Vyacheslav F. <vf...@us...> - 2012-06-02 10:52:45
|
Update of /cvsroot/com0com/hub4com In directory vz-cvs-4.sog:/tmp/cvs-serv31871 Modified Files: ReadMe.txt Log Message: Added CVS ssh to https proxy example Index: ReadMe.txt =================================================================== RCS file: /cvsroot/com0com/hub4com/ReadMe.txt,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ReadMe.txt 10 May 2011 10:30:14 -0000 1.10 --- ReadMe.txt 2 Jun 2012 10:52:43 -0000 1.11 *************** *** 151,156 **** ! CVS proxy ! --------- You have a computer that has not access to the internet and you'd like to --- 151,156 ---- ! CVS pserver proxy ! ----------------- You have a computer that has not access to the internet and you'd like to *************** *** 166,170 **** cvs -d:pserver:ano...@yo...dr:/cvsroot/com0com login ! cvs -z3 -d:pserver:anonymous@172.16.36.111:/cvsroot/com0com co -P hub4com --- 166,188 ---- cvs -d:pserver:ano...@yo...dr:/cvsroot/com0com login ! cvs -z3 -d:pserver:ano...@yo...dr:/cvsroot/com0com co -P hub4com ! ! ! CVS ssh to https proxy ! ---------------------- ! ! You have a computer that is behind firewall which block traffic on the SSH ! ports used to access SourceForge CVS servers for developers. SourceForge ! provides SSH access to CVS servers using port 443, to eliminate this problem ! but CVSNT does not allow specifying the port for using the SSH. To eliminate ! this problem (for <your-progect>, <developername> and <modulename>): ! ! 1. Start the hub4com.exe: ! ! hub4com.exe --use-driver=tcp <your-progect>.cvs.sourceforge.net:443 --interface=localhost 22 ! ! 2. Check out the souce code from the CVS repository: ! ! cvs -z3 -d:ssh:<developername>@localhost:/cvsroot/<your-progect> co -P <modulename> *************** *** 365,369 **** # is in raised state # ! --create-filter=pin2con:--connect=dsr --add-filters=0:pin2con # --- 383,387 ---- # is in raised state # ! --create-filter=pin2con:--connect=dsr --add-filters=0:pin2con # |
From: Vyacheslav F. <vf...@us...> - 2012-05-24 13:42:22
|
Update of /cvsroot/com0com/com0com In directory vz-cvs-4.sog:/tmp/cvs-serv30372 Modified Files: Building.txt Log Message: Added Windows 8 Index: Building.txt =================================================================== RCS file: /cvsroot/com0com/com0com/Building.txt,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Building.txt 3 Feb 2012 17:08:36 -0000 1.5 --- Building.txt 24 May 2012 13:42:20 -0000 1.6 *************** *** 49,53 **** 2. If you build driver for x64-based versions of ! Windows Vista/Windows Server 2008/Windows 7 then create a test certificate and sign com0com.sys file. --- 49,53 ---- 2. If you build driver for x64-based versions of ! Windows Vista/Windows Server 2008/Windows 7/8 then create a test certificate and sign com0com.sys file. *************** *** 70,74 **** It will create the C:\com0com\setupg\Release\setupg.exe file. ! 4. If you build driver for Windows Vista/Windows Server 2008/Windows 7 then embed requireAdministrator.manifest to the executables. --- 70,74 ---- It will create the C:\com0com\setupg\Release\setupg.exe file. ! 4. If you build driver for Windows Vista/Windows Server 2008/Windows 7/8 then embed requireAdministrator.manifest to the executables. |
From: Vyacheslav F. <vf...@us...> - 2012-05-24 13:41:08
|
Update of /cvsroot/com0com/com0com In directory vz-cvs-4.sog:/tmp/cvs-serv30277 Modified Files: ReadMe.txt Log Message: Added ability to build installer with both 32-bit and 64-bit drivers Index: ReadMe.txt =================================================================== RCS file: /cvsroot/com0com/com0com/ReadMe.txt,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** ReadMe.txt 31 Jan 2012 05:50:16 -0000 1.34 --- ReadMe.txt 24 May 2012 13:41:05 -0000 1.35 *************** *** 35,39 **** ========== ! NOTE (x64-based Windows Vista/Windows Server 2008/Windows 7): The com0com.sys is a test-signed kernel-mode driver that will not load by default. To enable test signing, enter command: --- 35,39 ---- ========== ! NOTE (x64-based Windows Vista/Windows Server 2008/Windows 7/8): The com0com.sys is a test-signed kernel-mode driver that will not load by default. To enable test signing, enter command: *************** *** 100,108 **** A. No, it is not possible. You need Windows 2000 platform or newer. - Q. I get an error message when I run the installer: - "The 32-bit driver cannot run under 64-bit System". What to do? - A. For 64-bit system download x64 package - (for example com0com-2.2.2.0-x64-fre-signed.zip). - Q. Is it possible to install or uninstall com0com silently (with no user intervention and no user interface)? --- 100,103 ---- |
From: Vyacheslav F. <vf...@us...> - 2012-02-03 17:14:26
|
Update of /cvsroot/com0com/com0com/sys In directory vz-cvs-4.sog:/tmp/cvs-serv10209 Modified Files: com0com.h startirp.c Log Message: Optimized GetIrpState() Index: startirp.c =================================================================== RCS file: /cvsroot/com0com/com0com/sys/startirp.c,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** startirp.c 4 Aug 2010 10:38:56 -0000 1.20 --- startirp.c 3 Feb 2012 17:14:24 -0000 1.21 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2004-2010 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2004-2012 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.21 2012/02/03 17:14:24 vfrolov + * Optimized GetIrpState() + * * Revision 1.20 2010/08/04 10:38:56 vfrolov * Minimized PREfast noise *************** *** 95,123 **** #define FILE_ID 2 - PC0C_IRP_STATE GetIrpState(IN PIRP pIrp) - { - PIO_STACK_LOCATION pIrpStack = IoGetCurrentIrpStackLocation(pIrp); - - switch (pIrpStack->MajorFunction) { - case IRP_MJ_WRITE: - return (PC0C_IRP_STATE)&pIrpStack->Parameters.Write.Key; - case IRP_MJ_READ: - return (PC0C_IRP_STATE)&pIrpStack->Parameters.Read.Key; - case IRP_MJ_DEVICE_CONTROL: - switch (pIrpStack->Parameters.DeviceIoControl.IoControlCode) { - case IOCTL_SERIAL_WAIT_ON_MASK: - case IOCTL_SERIAL_IMMEDIATE_CHAR: - case IOCTL_SERIAL_XOFF_COUNTER: - return (PC0C_IRP_STATE)&pIrpStack->Parameters.DeviceIoControl.Type3InputBuffer; - } - break; - case IRP_MJ_FLUSH_BUFFERS: - case IRP_MJ_CLOSE: - return (PC0C_IRP_STATE)&pIrpStack->Parameters.Others.Argument1; - } - - return NULL; - } - VOID ShiftQueue(PC0C_IRP_QUEUE pQueue) { --- 98,101 ---- Index: com0com.h =================================================================== RCS file: /cvsroot/com0com/com0com/sys/com0com.h,v retrieving revision 1.52 retrieving revision 1.53 diff -C2 -d -r1.52 -r1.53 *** com0com.h 6 Dec 2011 16:03:22 -0000 1.52 --- com0com.h 3 Feb 2012 17:14:24 -0000 1.53 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2004-2011 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2004-2012 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.53 2012/02/03 17:14:24 vfrolov + * Optimized GetIrpState() + * * Revision 1.52 2011/12/06 16:03:22 vfrolov * Added cleaning high data bits for less then 8 bit data *************** *** 517,521 **** } C0C_IRP_STATE, *PC0C_IRP_STATE; ! PC0C_IRP_STATE GetIrpState(IN PIRP pIrp); ULONG GetWriteLength(IN PIRP pIrp); --- 520,525 ---- } C0C_IRP_STATE, *PC0C_IRP_STATE; ! #define GetIrpState(pIrp) ((PC0C_IRP_STATE)&(pIrp)->Tail.Overlay.DriverContext[0]) ! ULONG GetWriteLength(IN PIRP pIrp); |
From: Vyacheslav F. <vf...@us...> - 2012-02-03 17:10:20
|
Update of /cvsroot/com0com/com0com In directory vz-cvs-4.sog:/tmp/cvs-serv9855 Added Files: Changes.txt Log Message: Initial revision --- NEW FILE: Changes.txt --- v2.2.2.0 (2009-12-17) * Added --wait option to the Setup Command Prompt. * Fixed some bugs. v2.2.1.0 (2009-05-29) * Added logging COMx names in the COM port database. * Added ability to get list of names that already in use (busynames command). * Added ability to speed up installing of multiple com port pairs (--no-update option). * Improved silent install and uninstall. * Fixed some bugs and made some improvements. v2.2.0.0 (2008-12-09) * Implemented noise emulation. * Added ability to monitor BREAK state. * Added ability to fix timeouts for read operations to compensate the network delays. * Added ability to do silent uninstalls (uninstall /S). * Fixed some bugs and made some improvements. v2.1.0.0 (2008-06-06) * Implemented ability to monitor and get the paired port settings (baud rate, byte size, parity, stop bits). * Implemented ability to change state of individual pins (OUT1 and OUT2 for example). * Added command to Setup Command Prompt for reloading driver. * Added ability to wire OUT2 pin. * Added ability to permanently hide port for port enumerators. * Fixed some bugs and made some improvements. v2.0.0.0 (2007-12-04) * Implemented graphics setup utility. * Added support for 64-bit systems. * Implemented pinout customization. * Implemented transmit FIFO buffer. * Implemented IOCTL_SERIAL_SET_MODEM_CONTROL device control request. * Fixed some bugs and made some improvements. v1.8.0.0 (2007-06-15) * Implemented IOCTL_SERIAL_XOFF_COUNTER. * Added ability to hide port interfaces (plug-in and exclusive modes). * Improved baudrate emulation. * Fixed some bugs. v1.7.0.0 (2006-12-14) * Implemented installer. * Implemented WMI functionality. * Added the device interface registration. * Fixed incompatibility with VMware. * Fixed some bugs. v1.6.0.0 (2006-06-29) * Implemented flow control, replacement and handshaking functionality. * Implemented IOCTL_SERIAL_SET_XON and IOCTL_SERIAL_SET_XOFF. * Implemented IOCTL_SERIAL_SET_BREAK_ON and IOCTL_SERIAL_SET_BREAK_OFF. * Implemented IOCTL_SERIAL_GET_MODEM_CONTROL. v1.5.0.0 (2005-12-29) * Implemented SERIAL_EV_RXFLAG and SERIAL_EV_RX80FULL. * Implemented IOCTL_SERIAL_GET_STATS and IOCTL_SERIAL_CLEAR_STATS. * Implemented IOCTL_SERIAL_IMMEDIATE_CHAR. * Implemented IOCTL_SERIAL_GET_DTRRTS. * Added stub for IOCTL_SERIAL_SET_XON. v1.4.0.0 (2005-10-17) * Implemented overrun emulation (configurable). * Implemented SERIAL_EV_TXEMPTY. * Implemented IRP_MJ_FLUSH_BUFFERS. * Implemented IRP_MJ_QUERY_INFORMATION and IRP_MJ_SET_INFORMATION. * Fixed DeviceType typo (fopen problem). v1.3.0.0 (2005-09-02) * Implemented baudrate emulation. * Fixed overlapped operations processing order. v1.2.0.0 (2005-07-15) * Fixed BSOD problem (#1237666). * Made some improvements. v1.1.1.0 (2005-06-23) * Improved port numbering. v1.1.0.0 (2005-05-18) * Implemented IOCTL_SERIAL_LSRMST_INSERT. * Implemented SERIAL_EV_RXCHAR * Added ability to change the port names * Fixed some bugs and made some improvements. 2005-02-21 - released v1.0.0.0. 2005-01-24 - project moved to http://com0com.sourceforge.net/. 2004 - project started. |
From: Vyacheslav F. <vf...@us...> - 2012-02-03 17:08:39
|
Update of /cvsroot/com0com/com0com In directory vz-cvs-4.sog:/tmp/cvs-serv9719 Modified Files: Building.txt Log Message: Added HOWTO build a single installer suitable for both 32-bit and 64-bit systems Index: Building.txt =================================================================== RCS file: /cvsroot/com0com/com0com/Building.txt,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Building.txt 12 Jul 2011 18:01:27 -0000 1.4 --- Building.txt 3 Feb 2012 17:08:36 -0000 1.5 *************** *** 84,88 **** For example execute in the DDK build environment window: ! "C:\Program Files\NSIS\makensis.exe" /V2 C:\com0com\NSIS\install.nsi It will create the installer in the C:\com0com\<CPU>\setup.exe file. --- 84,99 ---- For example execute in the DDK build environment window: ! "C:\Program Files\NSIS\makensis.exe" /V2 "C:\com0com\NSIS\install.nsi" It will create the installer in the C:\com0com\<CPU>\setup.exe file. + + + FAQs & HOWTOs + ============= + + Q. Is it possible to build a single installer suitable for both 32-bit and 64-bit systems? + A. Yes, it is possible. Use /DADD_TARGET_CPU_<CPU> and /DOUTPUT_FILE=<path> options, for example: + + "C:\Program Files\NSIS\makensis.exe" /V2 /DADD_TARGET_CPU_i386 /DADD_TARGET_CPU_amd64 /DOUTPUT_FILE="C:\com0com\setup.exe" "C:\com0com\NSIS\install.nsi" + + It will create the installer in the C:\com0com\setup.exe file suitable for both 32-bit and 64-bit systems. |
From: Vyacheslav F. <vf...@us...> - 2012-01-31 08:38:11
|
Update of /cvsroot/com0com/com0com/setupg In directory vz-cvs-4.sog:/tmp/cvs-serv20363 Modified Files: Form1.h Log Message: Use node name COM<n> instead COM# Index: Form1.h =================================================================== RCS file: /cvsroot/com0com/com0com/setupg/Form1.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Form1.h 31 Jan 2012 05:34:34 -0000 1.7 --- Form1.h 31 Jan 2012 08:38:09 -0000 1.8 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.8 2012/01/31 08:38:09 vfrolov + * Use node name COM<n> instead COM# + * * Revision 1.7 2012/01/31 05:34:34 vfrolov * Added "use Ports class" option *************** *** 804,808 **** try { ! port = pair->Nodes->Add(kvpPair.Value[i]["portname"]); } catch (Exception^ /*e*/) { --- 807,821 ---- try { ! String ^name = kvpPair.Value[i][(gcnew String("PortName"))->ToLower()]; ! ! if (name == "COM#") { ! try { ! name = kvpPair.Value[i][(gcnew String("RealPortName"))->ToLower()]; ! } ! catch (Exception^ /*e*/) { ! } ! } ! ! port = pair->Nodes->Add(name); } catch (Exception^ /*e*/) { |
From: Vyacheslav F. <vf...@us...> - 2012-01-31 05:50:18
|
Update of /cvsroot/com0com/com0com In directory vz-cvs-4.sog:/tmp/cvs-serv3728 Modified Files: ReadMe.txt comport.inf Log Message: Deprecated invoking of system-supplied advanced settings dialog box Index: comport.inf =================================================================== RCS file: /cvsroot/com0com/com0com/comport.inf,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** comport.inf 7 Jun 2010 07:06:10 -0000 1.2 --- comport.inf 31 Jan 2012 05:50:16 -0000 1.3 *************** *** 5,9 **** ; Installation file for the Null-modem emulator driver. ; ! ; Copyright (c) 2010 Vyacheslav Frolov ; ;****************************************************************************** --- 5,9 ---- ; Installation file for the Null-modem emulator driver. ; ! ; Copyright (c) 2010-2012 Vyacheslav Frolov ; ;****************************************************************************** *************** *** 16,20 **** CatalogFile = com0com.cat ; MM/DD/YYYY ! DriverVer = 06/07/2010,3.0.0.0 UninstallInfTag = {df799e12-3c56-421b-b298-b6d3642bc878} --- 16,20 ---- CatalogFile = com0com.cat ; MM/DD/YYYY ! DriverVer = 01/31/2012,3.0.0.0 UninstallInfTag = {df799e12-3c56-421b-b298-b6d3642bc878} *************** *** 63,68 **** [com0com_AddReg] ! HKR,,PortSubClass,1,01 ! HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" [com0com_HW_AddReg] --- 63,68 ---- [com0com_AddReg] ! ;HKR,,PortSubClass,1,01 ! ;HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" [com0com_HW_AddReg] Index: ReadMe.txt =================================================================== RCS file: /cvsroot/com0com/com0com/ReadMe.txt,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** ReadMe.txt 13 Dec 2011 15:25:40 -0000 1.33 --- ReadMe.txt 31 Jan 2012 05:50:16 -0000 1.34 *************** *** 139,143 **** CNC_UNINSTALL_SKIP_SETUP_UNINSTALL={YES|NO} - skip uninstalling devices and driver ! Q. Is it possible to change the names CNCA0 and CNCB0 to COM2 and COM3? A. Yes, it's possible. To change the names: --- 139,143 ---- CNC_UNINSTALL_SKIP_SETUP_UNINSTALL={YES|NO} - skip uninstalling devices and driver ! Q. Is it possible to change the names CNCA0 and CNCB0 to COM8 and COM9? A. Yes, it's possible. To change the names: *************** *** 145,150 **** 2. Enter the change commands, for example: ! command> change CNCA0 PortName=COM2 ! command> change CNCB0 PortName=COM3 Alternatively you can set names to 'COM#', for example: --- 145,150 ---- 2. Enter the change commands, for example: ! command> change CNCA0 PortName=COM8 ! command> change CNCB0 PortName=COM9 Alternatively you can set names to 'COM#', for example: *************** *** 153,164 **** command> change CNCB0 PortName=COM# ! In the last case the Ports class installer will be used to manage port names. ! The Ports class installer selects the COM port number and sets the port ! name to COM<n>, where <n> is the selected port number. ! After installing the Ports class ports you can invoke the system-supplied advanced ! settings dialog box to change the port number by this way: ! command> change CNCA0 PortName=? ! command> change CNCB0 PortName=? Q. The baud rate setting does not seem to make a difference: data is always --- 153,171 ---- command> change CNCB0 PortName=COM# ! If parameter 'PortName=COM#' is used then the Ports class installer will be ! invoked to set the real port name. The Ports class installer selects the COM ! port number and sets the real port name to COM<n>, where <n> is the selected ! port number. After installing the Ports class port you can use the list ! command to get the real port name and the parameter RealPortName=COM<n> to ! change the real port name, for example: ! command> list ! CNCA0 PortName=COM#,RealPortName=COM3 ! CNCB0 PortName=COM#,RealPortName=COM4 ! command> change CNCA0 RealPortName=COM8 ! command> change CNCB0 RealPortName=COM9 ! command> list ! CNCA0 PortName=COM#,RealPortName=COM8 ! CNCB0 PortName=COM#,RealPortName=COM9 Q. The baud rate setting does not seem to make a difference: data is always *************** *** 329,336 **** command> install 0 PortName=COM# - ! After installing the Ports class port you can invoke the system-supplied advanced ! settings dialog box to change the port name to COM3 by this way: ! command> change CNCA0 PortName=? Q. Is it possible to configure the com0com to randomly corrupt the data? It --- 336,345 ---- command> install 0 PortName=COM# - ! After installing the Ports class port you can use the list command to get ! the real port name, for example: ! command> list ! CNCA0 PortName=COM#,RealPortName=COM3 ! CNCB0 PortName=- Q. Is it possible to configure the com0com to randomly corrupt the data? It |
From: Vyacheslav F. <vf...@us...> - 2012-01-31 05:48:34
|
Update of /cvsroot/com0com/com0com/setup In directory vz-cvs-4.sog:/tmp/cvs-serv3623 Modified Files: params.h params.cpp Log Message: Deprecated invoking of system-supplied advanced settings dialog box Index: params.h =================================================================== RCS file: /cvsroot/com0com/com0com/setup/params.h,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** params.h 29 Dec 2011 14:34:23 -0000 1.13 --- params.h 31 Jan 2012 05:48:32 -0000 1.14 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2006-2011 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2006-2012 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.14 2012/01/31 05:48:32 vfrolov + * Deprecated invoking of system-supplied advanced settings dialog box + * * Revision 1.13 2011/12/29 14:34:23 vfrolov * Implemented RealPortName=COM<n> for PortName=COM# *************** *** 80,84 **** bool FillRealPortName(char *pRealPortName, int size); bool Changed() const { return maskChanged != 0; } - bool DialogRequested() const { return dialogRequested; } static const char *PortParameters::GetHelp(); --- 83,86 ---- *************** *** 98,102 **** bool SetBit(const char *pVal, const Bit &bit); - bool dialogRequested; DWORD maskChanged; DWORD maskExplicit; --- 100,103 ---- Index: params.cpp =================================================================== RCS file: /cvsroot/com0com/com0com/setup/params.cpp,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** params.cpp 29 Dec 2011 14:34:23 -0000 1.22 --- params.cpp 31 Jan 2012 05:48:32 -0000 1.23 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2006-2011 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2006-2012 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.23 2012/01/31 05:48:32 vfrolov + * Deprecated invoking of system-supplied advanced settings dialog box + * * Revision 1.22 2011/12/29 14:34:23 vfrolov * Implemented RealPortName=COM<n> for PortName=COM# *************** *** 173,177 **** addRITO = 0; - dialogRequested = FALSE; maskChanged = 0; maskExplicit = 0; --- 176,179 ---- *************** *** 180,187 **** bool PortParameters::SetPortName(const char *pNewPortName) { - if (lstrcmpi(pNewPortName, "?") == 0) { - dialogRequested = TRUE; - } - else if (lstrcmpi(portName, pNewPortName) != 0) { if (SNPRINTF(portName, sizeof(portName)/sizeof(portName[0]), "%s", pNewPortName) <= 0) { --- 182,185 ---- |
From: Vyacheslav F. <vf...@us...> - 2012-01-31 05:47:24
|
Update of /cvsroot/com0com/com0com/setup In directory vz-cvs-4.sog:/tmp/cvs-serv3560 Modified Files: setup.cpp Log Message: Deprecated invoking of system-supplied advanced settings dialog box Allowed re-use port name while migration from Ports class to CNCPorts class Index: setup.cpp =================================================================== RCS file: /cvsroot/com0com/com0com/setup/setup.cpp,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** setup.cpp 10 Jan 2012 11:24:27 -0000 1.54 --- setup.cpp 31 Jan 2012 05:47:22 -0000 1.55 *************** *** 20,23 **** --- 20,27 ---- * * $Log$ + * Revision 1.55 2012/01/31 05:47:22 vfrolov + * Deprecated invoking of system-supplied advanced settings dialog box + * Allowed re-use port name while migration from Ports class to CNCPorts class + * * Revision 1.54 2012/01/10 11:24:27 vfrolov * Added ability to repeate waiting for no pending device *************** *** 205,209 **** #include "portnum.h" #include "comdb.h" - #define SERIAL_ADVANCED_SETTINGS 1 #include <msports.h> --- 209,212 ---- *************** *** 740,757 **** }; - static CNC_DEV_CALLBACK ShowDialog; - static bool ShowDialog( - HDEVINFO hDevInfo, - PSP_DEVINFO_DATA pDevInfoData, - PCDevProperties /*pDevProperties*/, - BOOL * /*pRebootRequired*/, - void * /*pParam*/) - { - if (SerialDisplayAdvancedSettings(NULL, hDevInfo, pDevInfoData) != ERROR_SUCCESS) - return FALSE; - - return TRUE; - } - static CNC_DEV_CALLBACK ChangeDevice; static bool ChangeDevice( --- 743,746 ---- *************** *** 820,840 **** continue; ! if (lstrcmpi(portNameNew, portNameOld) != 0 && !IsValidPortName(portNameNew)) ! continue; ! ! bool isComClassNew = IsComClass(portNameNew); ! ! if (!Silent() && portParameters.DialogRequested()) { ! if (isComClassNew) { ! if (isComClassOld) { ! EnumDevices(EnumFilter, &devProperties, pRebootRequired, ShowDialog, NULL); ! } else { ! ShowMsg(MB_OK|MB_ICONWARNING, "Can't display the dialog while changing the class of port.\n"); ! } ! } else { ! ShowMsg(MB_OK|MB_ICONWARNING, "Can't display the dialog for non Ports class port.\n"); } } if (!isComClassNew || !isComClassOld) { realPortNameOld[0] = 0; --- 809,821 ---- continue; ! if (lstrcmpi(portNameNew, portNameOld) != 0) { ! if (!isComClassOld || lstrcmpi("", realPortNameOld) == 0 || lstrcmpi(portNameNew, realPortNameOld) != 0) { ! if (!IsValidPortName(portNameNew)) ! continue; } } + bool isComClassNew = IsComClass(portNameNew); + if (!isComClassNew || !isComClassOld) { realPortNameOld[0] = 0; *************** *** 1342,1348 **** portParameters.InitRealPortName(); // ignore RealPortName param - if (!Silent() && portParameters.DialogRequested()) - ShowMsg(MB_OK|MB_ICONWARNING, "Can't display the dialog while installing a pair of linked ports.\n"); - if (portParameters.Changed()) { err = portParameters.Save(); --- 1323,1326 ---- *************** *** 1955,1961 **** , pProgName, (pProgName && *pProgName) ? " " : ""); ConsoleWrite( - " %s%schange " C0C_PREF_PORT_NAME_A "0 PortName=?\n" - , pProgName, (pProgName && *pProgName) ? " " : ""); - ConsoleWrite( " %s%slist\n" , pProgName, (pProgName && *pProgName) ? " " : ""); --- 1933,1936 ---- |
From: Vyacheslav F. <vf...@us...> - 2012-01-31 05:36:01
|
Update of /cvsroot/com0com/com0com/setupg In directory vz-cvs-4.sog:/tmp/cvs-serv1954 Modified Files: setup.vcproj Log Message: Changed project name to setupg Index: setup.vcproj =================================================================== RCS file: /cvsroot/com0com/com0com/setupg/setup.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** setup.vcproj 31 Oct 2007 10:16:55 -0000 1.1 --- setup.vcproj 31 Jan 2012 05:35:58 -0000 1.2 *************** *** 3,7 **** ProjectType="Visual C++" Version="8,00" ! Name="setup" ProjectGUID="{6ACC2F57-86A2-41D4-8744-5982985E99DA}" RootNamespace="SetupApp" --- 3,7 ---- ProjectType="Visual C++" Version="8,00" ! Name="setupg" ProjectGUID="{6ACC2F57-86A2-41D4-8744-5982985E99DA}" RootNamespace="SetupApp" |
From: Vyacheslav F. <vf...@us...> - 2012-01-31 05:34:38
|
Update of /cvsroot/com0com/com0com/setupg In directory vz-cvs-4.sog:/tmp/cvs-serv1884 Modified Files: Form1.h Form1.resx portprms.cpp Log Message: Added "use Ports class" option Added waiting install completion Index: Form1.h =================================================================== RCS file: /cvsroot/com0com/com0com/setupg/Form1.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Form1.h 27 May 2010 11:16:46 -0000 1.6 --- Form1.h 31 Jan 2012 05:34:34 -0000 1.7 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2007-2009 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2007-2012 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,27 ---- * * $Log$ + * Revision 1.7 2012/01/31 05:34:34 vfrolov + * Added "use Ports class" option + * Added waiting install completion + * * Revision 1.6 2010/05/27 11:16:46 vfrolov * Added ability to put the port to the Ports class *************** *** 126,129 **** --- 130,135 ---- private: System::Windows::Forms::Label^ pinNameB_DTR; private: System::Windows::Forms::Label^ pinNameB_RX; + private: System::Windows::Forms::CheckBox^ UsePortsClassB; + private: System::Windows::Forms::CheckBox^ UsePortsClassA; private: System::Windows::Forms::TreeView^ pairList; *************** *** 145,148 **** --- 151,156 ---- this->PortNameB = (gcnew System::Windows::Forms::TextBox()); this->PortNameA = (gcnew System::Windows::Forms::TextBox()); + this->UsePortsClassB = (gcnew System::Windows::Forms::CheckBox()); + this->UsePortsClassA = (gcnew System::Windows::Forms::CheckBox()); this->pinNameON = (gcnew System::Windows::Forms::Label()); this->picturePinMap = (gcnew System::Windows::Forms::PictureBox()); *************** *** 202,205 **** --- 210,229 ---- this->PortNameA->TextChanged += gcnew System::EventHandler(this, &Form1::PortNameA_Changed); // + // UsePortsClassB + // + resources->ApplyResources(this->UsePortsClassB, L"UsePortsClassB"); + this->UsePortsClassB->Name = L"UsePortsClassB"; + this->toolTip1->SetToolTip(this->UsePortsClassB, resources->GetString(L"UsePortsClassB.ToolTip")); + this->UsePortsClassB->UseVisualStyleBackColor = true; + this->UsePortsClassB->CheckedChanged += gcnew System::EventHandler(this, &Form1::UsePortsClassB_Changed); + // + // UsePortsClassA + // + resources->ApplyResources(this->UsePortsClassA, L"UsePortsClassA"); + this->UsePortsClassA->Name = L"UsePortsClassA"; + this->toolTip1->SetToolTip(this->UsePortsClassA, resources->GetString(L"UsePortsClassA.ToolTip")); + this->UsePortsClassA->UseVisualStyleBackColor = true; + this->UsePortsClassA->CheckedChanged += gcnew System::EventHandler(this, &Form1::UsePortsClassA_Changed); + // // pinNameON // *************** *** 281,285 **** // EmuBrA // - this->EmuBrA->ForeColor = System::Drawing::SystemColors::ControlText; resources->ApplyResources(this->EmuBrA, L"EmuBrA"); this->EmuBrA->Name = L"EmuBrA"; --- 305,308 ---- *************** *** 441,444 **** --- 464,468 ---- resources->ApplyResources(this->pairList, L"pairList"); this->pairList->Name = L"pairList"; + this->toolTip1->SetToolTip(this->pairList, resources->GetString(L"pairList.ToolTip")); this->pairList->AfterSelect += gcnew System::Windows::Forms::TreeViewEventHandler(this, &Form1::pairsList_AfterSelect); this->pairList->BeforeSelect += gcnew System::Windows::Forms::TreeViewCancelEventHandler(this, &Form1::pairsList_BeforeSelect); *************** *** 448,451 **** --- 472,476 ---- resources->ApplyResources(this->buttonRemovePair, L"buttonRemovePair"); this->buttonRemovePair->Name = L"buttonRemovePair"; + this->toolTip1->SetToolTip(this->buttonRemovePair, resources->GetString(L"buttonRemovePair.ToolTip")); this->buttonRemovePair->UseVisualStyleBackColor = true; this->buttonRemovePair->Click += gcnew System::EventHandler(this, &Form1::buttonRemovePair_Click); *************** *** 455,458 **** --- 480,484 ---- resources->ApplyResources(this->buttonAddPair, L"buttonAddPair"); this->buttonAddPair->Name = L"buttonAddPair"; + this->toolTip1->SetToolTip(this->buttonAddPair, resources->GetString(L"buttonAddPair.ToolTip")); this->buttonAddPair->UseVisualStyleBackColor = true; this->buttonAddPair->Click += gcnew System::EventHandler(this, &Form1::buttonAddPair_Click); *************** *** 462,465 **** --- 488,492 ---- resources->ApplyResources(this->buttonApply, L"buttonApply"); this->buttonApply->Name = L"buttonApply"; + this->toolTip1->SetToolTip(this->buttonApply, resources->GetString(L"buttonApply.ToolTip")); this->buttonApply->UseVisualStyleBackColor = true; this->buttonApply->Click += gcnew System::EventHandler(this, &Form1::buttonApply_Click); *************** *** 469,472 **** --- 496,500 ---- resources->ApplyResources(this->buttonReset, L"buttonReset"); this->buttonReset->Name = L"buttonReset"; + this->toolTip1->SetToolTip(this->buttonReset, resources->GetString(L"buttonReset.ToolTip")); this->buttonReset->UseVisualStyleBackColor = true; this->buttonReset->Click += gcnew System::EventHandler(this, &Form1::buttonReset_Click); *************** *** 476,479 **** --- 504,509 ---- resources->ApplyResources(this, L"$this"); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; + this->Controls->Add(this->UsePortsClassA); + this->Controls->Add(this->UsePortsClassB); this->Controls->Add(this->HiddenModeA); this->Controls->Add(this->HiddenModeB); *************** *** 534,563 **** } - String ^GetControlValue(TextBox ^control) { - return control->Text; - } - Void SetControlValue(CheckBox ^control, String ^value) { control->Checked = (value->ToUpper() == "YES") ? true : false; } - Void SetControlValue(TextBox ^control, String ^value) { - control->Text = value; - } - - bool IsValidValue(String ^key, String ^value) { - if (key == "portname") { - if (!pairs->IsValidName(value)) - return false; - } - - return true; - } - ///////////////////////////////////////////////////////////////////// #define DeclareControlPair(controlClass, control) \ ! array<controlClass ^> ^control##s; \ Void control##_Init() { \ ! control##s = gcnew array<controlClass ^>{control##A, control##B}; \ } \ Void control##A_Changed(Object ^/*sender*/, EventArgs ^/*e*/) { \ --- 564,576 ---- } Void SetControlValue(CheckBox ^control, String ^value) { control->Checked = (value->ToUpper() == "YES") ? true : false; } ///////////////////////////////////////////////////////////////////// #define DeclareControlPair(controlClass, control) \ ! array<controlClass ^> ^control##_pair; \ Void control##_Init() { \ ! control##_pair = gcnew array<controlClass ^>{control##A, control##B}; \ } \ Void control##A_Changed(Object ^/*sender*/, EventArgs ^/*e*/) { \ *************** *** 567,576 **** control##_Changed(1); \ } \ Void control##_Changed(int i) { \ try { \ String ^key = (gcnew String(#control))->ToLower(); \ ! String ^value = GetControlValue(control##s[i])->ToUpper(); \ if (pairs[pairList->SelectedNode->Name][i][key] != value) { \ ! control##s[i]->ForeColor = (IsValidValue(key, value) ? Color::Blue : Color::Red); \ return; \ } \ --- 580,592 ---- control##_Changed(1); \ } \ + + #define DeclareControlPairCheckBox(control) \ + DeclareControlPair(CheckBox, control) \ Void control##_Changed(int i) { \ try { \ String ^key = (gcnew String(#control))->ToLower(); \ ! String ^value = GetControlValue(control##_pair[i])->ToUpper(); \ if (pairs[pairList->SelectedNode->Name][i][key] != value) { \ ! control##_pair[i]->ForeColor = Color::Blue; \ return; \ } \ *************** *** 578,587 **** catch (Exception^ /*e*/) { \ } \ ! control##s[i]->ForeColor = System::Drawing::SystemColors::ControlText; \ } \ Void control##_GetChanges(int i, PortPair ^portChanges) { \ try { \ String ^key = (gcnew String(#control))->ToLower(); \ ! String ^value = GetControlValue(control##s[i])->ToUpper(); \ if (pairs[pairList->SelectedNode->Name][i][key] != value) \ portChanges[i][key] = value; \ --- 594,603 ---- catch (Exception^ /*e*/) { \ } \ ! control##_pair[i]->ForeColor = System::Drawing::SystemColors::ControlText; \ } \ Void control##_GetChanges(int i, PortPair ^portChanges) { \ try { \ String ^key = (gcnew String(#control))->ToLower(); \ ! String ^value = GetControlValue(control##_pair[i])->ToUpper(); \ if (pairs[pairList->SelectedNode->Name][i][key] != value) \ portChanges[i][key] = value; \ *************** *** 593,600 **** try { \ String ^key = (gcnew String(#control))->ToLower(); \ ! SetControlValue(control##s[i], pairs[pairList->SelectedNode->Name][i][key]); \ } \ catch (Exception^ /*e*/) { \ ! SetControlValue(control##s[i], ""); \ } \ control##_Changed(i); \ --- 609,616 ---- try { \ String ^key = (gcnew String(#control))->ToLower(); \ ! SetControlValue(control##_pair[i], pairs[pairList->SelectedNode->Name][i][key]); \ } \ catch (Exception^ /*e*/) { \ ! SetControlValue(control##_pair[i], ""); \ } \ control##_Changed(i); \ *************** *** 605,616 **** DeclareControlPair(TextBox, PortName) ! DeclareControlPair(CheckBox, EmuBr) ! DeclareControlPair(CheckBox, EmuOverrun) ! DeclareControlPair(CheckBox, PlugInMode) ! DeclareControlPair(CheckBox, ExclusiveMode) ! DeclareControlPair(CheckBox, HiddenMode) #define ForEachControlPair(func) \ PortName_##func; \ EmuBr_##func; \ EmuOverrun_##func; \ --- 621,754 ---- DeclareControlPair(TextBox, PortName) ! DeclareControlPair(CheckBox, UsePortsClass) ! ! Void PortName_GetCurrent(int i, String ^&name, bool &enabled, bool &checked) { ! try { ! name = pairs[pairList->SelectedNode->Name][i][(gcnew String("PortName"))->ToLower()]; ! ! if (name->ToUpper() == "COM#") { ! checked = true; ! ! try { ! name = pairs[pairList->SelectedNode->Name][i][(gcnew String("RealPortName"))->ToLower()]; ! enabled = true; ! } ! catch (Exception^ /*e*/) { ! name = ""; ! enabled = false; ! } ! } else { ! checked = false; ! enabled = true; ! } ! } ! catch (Exception^ /*e*/) { ! checked = false; ! name = ""; ! enabled = true; ! } ! } ! ! Void PortName_Changed(int i) { ! String ^name = gcnew String(""); ! bool enabled; ! bool checked; ! ! PortName_GetCurrent(i, name, enabled, checked); ! ! String ^value = PortName_pair[i]->Text->ToUpper(); ! ! if (name != value) { ! PortName_pair[i]->ForeColor = (pairs->IsValidName(value) ? Color::Blue : Color::Red); ! } else { ! PortName_pair[i]->ForeColor = System::Drawing::SystemColors::ControlText; ! } ! ! if (!checked != !UsePortsClass_pair[i]->Checked) { ! UsePortsClass_pair[i]->ForeColor = Color::Blue; ! } else { ! UsePortsClass_pair[i]->ForeColor = System::Drawing::SystemColors::ControlText; ! } ! ! PortName_pair[i]->Enabled = (!UsePortsClass_pair[i]->Checked || (checked && enabled)); ! } ! ! Void PortName_GetChanges(int i, PortPair ^portChanges) { ! String ^name = gcnew String(""); ! bool enabled; ! bool checked; ! ! PortName_GetCurrent(i, name, enabled, checked); ! ! String ^value = PortName_pair[i]->Text->ToUpper(); ! ! if (UsePortsClass_pair[i]->Checked) { ! if (checked) { ! if (name != value) { ! portChanges[i][(gcnew String("RealPortName"))->ToLower()] = value; ! } ! } else { ! portChanges[i][(gcnew String("PortName"))->ToLower()] = "COM#"; ! } ! } else { ! if (checked) { ! portChanges[i][(gcnew String("PortName"))->ToLower()] = value; ! } else { ! if (name != value) { ! portChanges[i][(gcnew String("PortName"))->ToLower()] = value; ! } ! } ! } ! } ! ! Void PortName_Reset(int i) { ! String ^name = gcnew String(""); ! bool enabled; ! bool checked; ! ! PortName_GetCurrent(i, name, enabled, checked); ! ! PortName_pair[i]->Text = name; ! PortName_pair[i]->Enabled = enabled; ! UsePortsClass_pair[i]->Checked = checked; ! ! PortName_Changed(i); ! } ! ! Void UsePortsClass_Changed(int i) { ! String ^name = gcnew String(""); ! bool enabled; ! bool checked; ! ! PortName_GetCurrent(i, name, enabled, checked); ! ! if (checked || !UsePortsClass_pair[i]->Checked) { ! if (!UsePortsClass_pair[i]->Checked && name == "") { ! PortName_pair[i]->Text = "-"; ! } else { ! PortName_pair[i]->Text = name; ! } ! } else { ! PortName_pair[i]->Text = ""; ! } ! ! PortName_Changed(i); ! } ! ! Void UsePortsClass_GetChanges(int /*i*/, PortPair ^/*portChanges*/) { ! } ! ! Void UsePortsClass_Reset(int /*i*/) { ! } ! ! DeclareControlPairCheckBox(EmuBr) ! DeclareControlPairCheckBox(EmuOverrun) ! DeclareControlPairCheckBox(PlugInMode) ! DeclareControlPairCheckBox(ExclusiveMode) ! DeclareControlPairCheckBox(HiddenMode) #define ForEachControlPair(func) \ PortName_##func; \ + UsePortsClass_##func; \ EmuBr_##func; \ EmuOverrun_##func; \ Index: portprms.cpp =================================================================== RCS file: /cvsroot/com0com/com0com/setupg/portprms.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** portprms.cpp 12 Jan 2009 13:04:07 -0000 1.2 --- portprms.cpp 31 Jan 2012 05:34:34 -0000 1.3 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2007-2009 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2007-2012 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,27 ---- * * $Log$ + * Revision 1.3 2012/01/31 05:34:34 vfrolov + * Added "use Ports class" option + * Added waiting install completion + * * Revision 1.2 2009/01/12 13:04:07 vfrolov * Added red painting InUse portnames *************** *** 112,116 **** } ! LoadBusyNames(); return res; --- 116,122 ---- } ! ExecCommand::ExecCommand(parent, "--wait +30"); ! ! Init(); return res; *************** *** 141,144 **** --- 147,152 ---- } + ExecCommand::ExecCommand(parent, "--wait +30"); + Init(); } Index: Form1.resx =================================================================== RCS file: /cvsroot/com0com/com0com/setupg/Form1.resx,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Form1.resx 1 Jun 2010 13:09:45 -0000 1.8 --- Form1.resx 31 Jan 2012 05:34:34 -0000 1.9 *************** *** 1,3 **** ! <?xml version="1.0" encoding="utf-8"?> <root> <!-- --- 1,3 ---- ! <?xml version="1.0" encoding="utf-8"?> <root> <!-- *************** *** 120,127 **** <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> [...1588 lines suppressed...] <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> --- 1630,1637 ---- </metadata> <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing"> ! <value>6, 13</value> </data> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> ! <value>445, 366</value> </data> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> *************** *** 1442,1445 **** --- 1657,1663 ---- </value> </data> + <data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> + <value>2, 2, 2, 2</value> + </data> <data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms"> <value>CenterScreen</value> |
From: Vyacheslav F. <vf...@us...> - 2012-01-10 11:24:30
|
Update of /cvsroot/com0com/com0com/setup In directory vz-cvs-4.sog:/tmp/cvs-serv20345 Modified Files: devutils.cpp devutils.h setup.cpp Log Message: Added ability to repeate waiting for no pending device installation activities Index: devutils.h =================================================================== RCS file: /cvsroot/com0com/com0com/setup/devutils.h,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** devutils.h 15 Dec 2011 15:51:48 -0000 1.13 --- devutils.h 10 Jan 2012 11:24:27 -0000 1.14 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2006-2011 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2006-2012 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,27 ---- * * $Log$ + * Revision 1.14 2012/01/10 11:24:27 vfrolov + * Added ability to repeate waiting for no pending device + * installation activities + * * Revision 1.13 2011/12/15 15:51:48 vfrolov * Fixed types *************** *** 171,175 **** bool WaitNoPendingInstallEvents( ! int timeLimit); /////////////////////////////////////////////////////////////// --- 175,180 ---- bool WaitNoPendingInstallEvents( ! int timeLimit, ! bool repeate = FALSE); /////////////////////////////////////////////////////////////// Index: setup.cpp =================================================================== RCS file: /cvsroot/com0com/com0com/setup/setup.cpp,v retrieving revision 1.53 retrieving revision 1.54 diff -C2 -d -r1.53 -r1.54 *** setup.cpp 29 Dec 2011 14:34:23 -0000 1.53 --- setup.cpp 10 Jan 2012 11:24:27 -0000 1.54 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2006-2011 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2006-2012 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,27 ---- * * $Log$ + * Revision 1.54 2012/01/10 11:24:27 vfrolov + * Added ability to repeate waiting for no pending device + * installation activities + * * Revision 1.53 2011/12/29 14:34:23 vfrolov * Implemented RealPortName=COM<n> for PortName=COM# *************** *** 290,293 **** --- 294,298 ---- /////////////////////////////////////////////////////////////// static int timeout = 0; + static bool repeate_timeout = FALSE; static bool detailPrms = FALSE; static bool no_update = FALSE; *************** *** 1853,1857 **** "Options:\n" " --output <file> - file for output, default is console\n" ! " --wait <to> - wait <to> seconds for install completion\n" " (by default <to> is 0 - no wait)\n" " --detail-prms - show detailed parameters\n" --- 1858,1864 ---- "Options:\n" " --output <file> - file for output, default is console\n" ! " --wait [+]<to> - wait <to> seconds for install completion. If\n" ! " <to> has '+' prefix then ask user to continue\n" ! " waiting after <to> seconds elapsing\n" " (by default <to> is 0 - no wait)\n" " --detail-prms - show detailed parameters\n" *************** *** 1967,1971 **** if (ok) { if (timeout > 0) ! WaitNoPendingInstallEvents(timeout); return 0; --- 1974,1978 ---- if (ok) { if (timeout > 0) ! WaitNoPendingInstallEvents(timeout, repeate_timeout); return 0; *************** *** 1982,1985 **** --- 1989,1993 ---- Silent(FALSE); timeout = 0; + repeate_timeout = FALSE; detailPrms = FALSE; no_update = FALSE; *************** *** 2002,2007 **** int num; ! if (StrToInt(argv[2], &num) && num >= 0) ! timeout = num; argv[2] = argv[0]; --- 2010,2022 ---- int num; ! if (!StrToInt(argv[2], &num) || num < 0) { ! ConsoleWrite("Invalid option %s %s\n", argv[1], argv[2]); ! return 1; ! } ! ! timeout = num; ! ! if (argv[2][0] == '+') ! repeate_timeout = TRUE; argv[2] = argv[0]; Index: devutils.cpp =================================================================== RCS file: /cvsroot/com0com/com0com/setup/devutils.cpp,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** devutils.cpp 15 Dec 2011 15:51:48 -0000 1.20 --- devutils.cpp 10 Jan 2012 11:24:27 -0000 1.21 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2006-2011 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2006-2012 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,27 ---- * * $Log$ + * Revision 1.21 2012/01/10 11:24:27 vfrolov + * Added ability to repeate waiting for no pending device + * installation activities + * * Revision 1.20 2011/12/15 15:51:48 vfrolov * Fixed types *************** *** 946,950 **** } /////////////////////////////////////////////////////////////// ! bool WaitNoPendingInstallEvents(int timeLimit) { typedef DWORD (WINAPI *PWAITNOPENDINGINSTALLEVENTS)(IN DWORD); --- 950,954 ---- } /////////////////////////////////////////////////////////////// ! bool WaitNoPendingInstallEvents(int timeLimit, bool repeate) { typedef DWORD (WINAPI *PWAITNOPENDINGINSTALLEVENTS)(IN DWORD); *************** *** 981,984 **** --- 985,989 ---- if (inTrace) Trace(" OK\n"); + SetLastError(ERROR_SUCCESS); break; *************** *** 997,1002 **** if (timeLimit != -1 && timeElapsed >= DWORD(timeLimit * 1000)) { ! if (inTrace) Trace(" timeout\n"); SetLastError(ERROR_TIMEOUT); break; --- 1002,1023 ---- if (timeLimit != -1 && timeElapsed >= DWORD(timeLimit * 1000)) { ! if (inTrace) { Trace(" timeout\n"); + inTrace = FALSE; + } + + if (!Silent() && repeate) { + if (ShowMsg(MB_YESNO, + "The device installation activities are still pending.\n" + "Continue to wait?\n") == IDYES) + { + startTime = GetTickCount(); + } else { + repeate = FALSE; + } + + continue; + } + SetLastError(ERROR_TIMEOUT); break; *************** *** 1005,1011 **** if (!inTrace) { if (timeLimit != -1) ! Trace("Wating for no pending device installation activities (%u secs) ", (unsigned)timeLimit); else ! Trace("Wating for no pending device installation activities (perpetually) "); inTrace = TRUE; --- 1026,1032 ---- if (!inTrace) { if (timeLimit != -1) ! Trace("Waiting for no pending device installation activities (%u secs) ", (unsigned)timeLimit); else ! Trace("Waiting for no pending device installation activities (perpetually) "); inTrace = TRUE; |
From: Vyacheslav F. <vf...@us...> - 2011-12-29 14:34:25
|
Update of /cvsroot/com0com/com0com/setup In directory vz-cvs-4.sog:/tmp/cvs-serv7978 Modified Files: comdb.cpp comdb.h params.cpp params.h setup.cpp Log Message: Implemented RealPortName=COM<n> for PortName=COM# Index: params.h =================================================================== RCS file: /cvsroot/com0com/com0com/setup/params.h,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** params.h 27 Dec 2011 11:38:13 -0000 1.12 --- params.h 29 Dec 2011 14:34:23 -0000 1.13 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.13 2011/12/29 14:34:23 vfrolov + * Implemented RealPortName=COM<n> for PortName=COM# + * * Revision 1.12 2011/12/27 11:38:13 vfrolov * Superseded incorrect PortParameters::ClassChanged() *************** *** 71,77 **** --- 74,82 ---- LONG Load(); LONG Save(); + bool InitRealPortName(const char *pRealPortName = ""); bool ParseParametersStr(const char *pParameters); bool FillParametersStr(char *pParameters, int size, bool detail); bool FillPortName(char *pPortName, int size); + bool FillRealPortName(char *pRealPortName, int size); bool Changed() const { return maskChanged != 0; } bool DialogRequested() const { return dialogRequested; } *************** *** 86,89 **** --- 91,95 ---- bool SetPortName(const char *pNewPortName); + bool SetRealPortName(const char *pNewRealPortName); bool SetFlag(const char *pNewVal, DWORD bit); bool SetPin(const char *pNewVal, DWORD bit); *************** *** 96,99 **** --- 102,106 ---- DWORD maskExplicit; char portName[20]; + char realPortName[20]; DWORD emuBR; DWORD emuOverrun; Index: params.cpp =================================================================== RCS file: /cvsroot/com0com/com0com/setup/params.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** params.cpp 27 Dec 2011 11:38:13 -0000 1.21 --- params.cpp 29 Dec 2011 14:34:23 -0000 1.22 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.22 2011/12/29 14:34:23 vfrolov + * Implemented RealPortName=COM<n> for PortName=COM# + * * Revision 1.21 2011/12/27 11:38:13 vfrolov * Superseded incorrect PortParameters::ClassChanged() *************** *** 110,113 **** --- 113,117 ---- m_addRTTO = 0x00020000, m_addRITO = 0x00040000, + m_realPortName = 0x01000000, }; /////////////////////////////////////////////////////////////// *************** *** 125,128 **** --- 129,133 ---- } bits[] = { {m_portName, Bit::OTHER}, + {m_realPortName, Bit::OTHER}, {m_emuBR, Bit::FLAG}, {m_emuOverrun, Bit::FLAG}, *************** *** 151,154 **** --- 156,160 ---- { portName[0] = 0; + realPortName[0] = 0; emuBR = 0; emuOverrun = 0; *************** *** 179,185 **** else if (lstrcmpi(portName, pNewPortName) != 0) { ! maskChanged |= m_portName; ! SNPRINTF(portName, sizeof(portName)/sizeof(portName[0]), "%s", pNewPortName); CharUpper(portName); } --- 185,210 ---- else if (lstrcmpi(portName, pNewPortName) != 0) { ! if (SNPRINTF(portName, sizeof(portName)/sizeof(portName[0]), "%s", pNewPortName) <= 0) { ! Trace("Invalid port name '%s'\n", pNewPortName); ! return FALSE; ! } ! CharUpper(portName); + maskChanged |= m_portName; + } + + return TRUE; + } + /////////////////////////////////////////////////////////////// + bool PortParameters::SetRealPortName(const char *pNewRealPortName) + { + if (lstrcmpi(realPortName, pNewRealPortName) != 0) { + if (SNPRINTF(realPortName, sizeof(realPortName)/sizeof(realPortName[0]), "%s", pNewRealPortName) <= 0) { + Trace("Invalid real port name '%s'\n", pNewRealPortName); + return FALSE; + } + + CharUpper(realPortName); + maskChanged |= m_realPortName; } *************** *** 187,190 **** --- 212,237 ---- } /////////////////////////////////////////////////////////////// + bool PortParameters::InitRealPortName(const char *pRealPortName) + { + if (!lstrcmpi("", pRealPortName)) { + maskExplicit &= ~m_realPortName; + maskChanged &= ~m_realPortName; + + return TRUE; + } + + if (SNPRINTF(realPortName, sizeof(realPortName)/sizeof(realPortName[0]), "%s", pRealPortName) <= 0) { + Trace("Invalid real port name '%s'\n", pRealPortName); + return FALSE; + } + + CharUpper(realPortName); + + maskChanged &= ~m_realPortName; + maskExplicit |= m_realPortName; + + return TRUE; + } + /////////////////////////////////////////////////////////////// DWORD *PortParameters::GetDwPtr(DWORD bit) { *************** *** 247,250 **** --- 294,298 ---- switch (bit) { case m_portName: return "PortName"; + case m_realPortName: return "RealPortName"; case m_emuBR: return "EmuBR"; case m_emuOverrun: return "EmuOverrun"; *************** *** 479,482 **** --- 527,535 ---- return FALSE; } + else + if (bit.bit == m_realPortName) { + if (!SetRealPortName(pVal)) + return FALSE; + } else { return FALSE; *************** *** 761,767 **** size -= len; ! int i; ! for (i = 0 ; i < sizeof(bits)/sizeof(bits[0]) ; i++) { DWORD bit = bits[i].bit; --- 814,828 ---- size -= len; ! if (maskExplicit & m_realPortName) { ! len = SNPRINTF(pParameters, size, ",RealPortName=%s", realPortName); ! if (len < 0) ! return FALSE; ! ! pParameters += len; ! size -= len; ! } ! ! for (int i = 0 ; i < sizeof(bits)/sizeof(bits[0]) ; i++) { DWORD bit = bits[i].bit; *************** *** 876,879 **** --- 937,950 ---- } /////////////////////////////////////////////////////////////// + bool PortParameters::FillRealPortName(char *pRealPortName, int size) + { + int len; + + len = SNPRINTF(pRealPortName, size, "%s", + (maskExplicit & m_realPortName) ? realPortName : ""); + + return len >= 0; + } + /////////////////////////////////////////////////////////////// const char *PortParameters::GetHelp() { Index: setup.cpp =================================================================== RCS file: /cvsroot/com0com/com0com/setup/setup.cpp,v retrieving revision 1.52 retrieving revision 1.53 diff -C2 -d -r1.52 -r1.53 *** setup.cpp 28 Dec 2011 06:23:50 -0000 1.52 --- setup.cpp 29 Dec 2011 14:34:23 -0000 1.53 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.53 2011/12/29 14:34:23 vfrolov + * Implemented RealPortName=COM<n> for PortName=COM# + * * Revision 1.52 2011/12/28 06:23:50 vfrolov * Added setting friendly names for ports after changing port class *************** *** 313,316 **** --- 316,335 ---- } /////////////////////////////////////////////////////////////// + static bool FillPortDevProperties(DevProperties &devProperties, int iBus, bool isA) + { + char phDevName[40]; + + SNPRINTF(phDevName, sizeof(phDevName)/sizeof(phDevName[0]), "%s%d", + isA ? C0C_PREF_DEVICE_NAME_A : C0C_PREF_DEVICE_NAME_B, iBus); + + if (!devProperties.DevId(C0C_PORT_DEVICE_ID)) + return FALSE; + + if (!devProperties.PhObjName(phDevName)) + return FALSE; + + return TRUE; + } + /////////////////////////////////////////////////////////////// static bool IsValidPortNum(int num) { *************** *** 337,342 **** { int res; ! if (lstrlen(pPortName) > C0C_PORT_NAME_LEN) { res = ShowMsg(MB_OKCANCEL|MB_ICONWARNING, "The length of port name %s\n" --- 356,367 ---- { int res; + int len = lstrlen(pPortName); ! if (len <= 0) { ! ShowMsg(MB_OK|MB_ICONSTOP, "The port name is empty.\n"); ! return FALSE; ! } ! else ! if (len > C0C_PORT_NAME_LEN) { res = ShowMsg(MB_OKCANCEL|MB_ICONWARNING, "The length of port name %s\n" *************** *** 459,462 **** --- 484,490 ---- //Trace("SetFriendlyNamePort pPhObjName=%s\n", pPhObjName); + if (!pPhObjName) + return; + char phPortName[20]; *************** *** 508,513 **** Trace(" %s FriendlyName=\"%s\"\n", phPortName, friendlyNameOld); ! if (IsComClass(portName)) ! return; if (!no_update_fnames) { --- 536,554 ---- Trace(" %s FriendlyName=\"%s\"\n", phPortName, friendlyNameOld); ! if (IsComClass(portName)) { ! HKEY hKey = SetupDiOpenDevRegKey(hDevInfo, pDevInfoData, DICS_FLAG_GLOBAL, 0, DIREG_DEV, KEY_READ); ! ! if (hKey == INVALID_HANDLE_VALUE) ! return; ! ! DWORD len = sizeof(portName); ! ! LONG err = RegQueryValueEx(hKey, "PortName", NULL, NULL, (PBYTE)portName, &len); ! ! RegCloseKey(hKey); ! ! if (err != ERROR_SUCCESS) ! return; ! } if (!no_update_fnames) { *************** *** 570,582 **** for (int j = 0 ; j < 2 ; j++) { - char phDevName[40]; - - SNPRINTF(phDevName, sizeof(phDevName)/sizeof(phDevName[0]), "%s%d", - j ? C0C_PREF_DEVICE_NAME_B : C0C_PREF_DEVICE_NAME_A, num); - DevProperties devProperties; ! if (!devProperties.DevId(C0C_PORT_DEVICE_ID)) ! return FALSE; ! if (!devProperties.PhObjName(phDevName)) return FALSE; --- 611,617 ---- for (int j = 0 ; j < 2 ; j++) { DevProperties devProperties; ! ! if (!FillPortDevProperties(devProperties, num, j == 0)) return FALSE; *************** *** 616,619 **** --- 651,727 ---- } /////////////////////////////////////////////////////////////// + static CNC_DEV_CALLBACK LoadRealPortName; + static bool LoadRealPortName( + HDEVINFO hDevInfo, + PSP_DEVINFO_DATA pDevInfoData, + PCDevProperties pDevProperties, + BOOL * /*pRebootRequired*/, + void *pParam) + { + if (!lstrcmp(pDevProperties->DevId(), C0C_PORT_DEVICE_ID)) { + HKEY hKey = SetupDiOpenDevRegKey(hDevInfo, pDevInfoData, DICS_FLAG_GLOBAL, 0, DIREG_DEV, KEY_READ); + + if (hKey != INVALID_HANDLE_VALUE) { + char portNameOld[20]; + DWORD len = sizeof(portNameOld); + + LONG err = RegQueryValueEx(hKey, "PortName", NULL, NULL, (PBYTE)portNameOld, &len); + + if (err == ERROR_SUCCESS) + ((PortParameters *)pParam)->InitRealPortName(portNameOld); + + RegCloseKey(hKey); + } + + return TRUE; + } + + // we never should be here + return FALSE; + } + + static CNC_DEV_CALLBACK UpdateRealPortName; + static bool UpdateRealPortName( + HDEVINFO hDevInfo, + PSP_DEVINFO_DATA pDevInfoData, + PCDevProperties pDevProperties, + BOOL * /*pRebootRequired*/, + void *pParam) + { + if (!lstrcmp(pDevProperties->DevId(), C0C_PORT_DEVICE_ID)) { + HKEY hKey = SetupDiOpenDevRegKey(hDevInfo, pDevInfoData, DICS_FLAG_GLOBAL, 0, DIREG_DEV, KEY_READ|KEY_WRITE); + + if (hKey != INVALID_HANDLE_VALUE) { + char portNameOld[20]; + DWORD len = sizeof(portNameOld); + + LONG err = RegQueryValueEx(hKey, "PortName", NULL, NULL, (PBYTE)portNameOld, &len); + + if (err == ERROR_SUCCESS) { + const char*pPortNameNew = (const char*)pParam; + + if (ComDbClaim(pPortNameNew)) { + err = RegSetValueEx(hKey, "PortName", 0, REG_SZ, + (PBYTE)pPortNameNew, (lstrlen(pPortNameNew) + 1) * sizeof(pPortNameNew[0])); + + if (err == ERROR_SUCCESS) { + ComDbRelease((const char*)portNameOld); + SetFriendlyNamePort(hDevInfo, pDevInfoData, pDevProperties->PhObjName()); + } else { + ComDbRelease(pPortNameNew); + } + } + } + + RegCloseKey(hKey); + } + + return TRUE; + } + + // we never should be here + return FALSE; + } + struct ChangeDeviceParams { ChangeDeviceParams( *************** *** 656,659 **** --- 764,768 ---- for (int j = 0 ; j < 2 ; j++) { + char buf[200]; char phPortName[20]; *************** *** 662,748 **** PortParameters portParameters(C0C_SERVICE, phPortName); - LONG err = portParameters.Load(); ! char buf[200]; portParameters.FillParametersStr(buf, sizeof(buf)/sizeof(buf[0]), detailPrms); Trace(" %s %s\n", phPortName, buf); ! if (err == ERROR_SUCCESS) { ! if (pPhPortName && lstrcmpi(pPhPortName, phPortName) == 0 && pParameters) { ! char portNameOld[20]; ! portParameters.FillPortName(portNameOld, sizeof(portNameOld)/sizeof(portNameOld[0])); ! if (!portParameters.ParseParametersStr(pParameters)) ! return FALSE; ! char phDevName[40]; ! SNPRINTF(phDevName, sizeof(phDevName)/sizeof(phDevName[0]), "%s%d", ! j ? C0C_PREF_DEVICE_NAME_B : C0C_PREF_DEVICE_NAME_A, i); ! char portName[20]; ! portParameters.FillPortName(portName, sizeof(portName)/sizeof(portName[0])); ! if (!Silent() && portParameters.DialogRequested()) { ! if (IsComClass(portName)) { ! if (IsComClass(portNameOld)) { ! DevProperties devProperties; ! if (!devProperties.DevId(C0C_PORT_DEVICE_ID)) ! return FALSE; ! if (!devProperties.PhObjName(phDevName)) ! return FALSE; ! EnumDevices(EnumFilter, &devProperties, pRebootRequired, ShowDialog, NULL); ! } else { ! ShowMsg(MB_OK|MB_ICONWARNING, "Can't display the dialog while changing the class of port.\n"); ! } ! } else { ! ShowMsg(MB_OK|MB_ICONWARNING, "Can't display the dialog for non Ports class port.\n"); ! } } ! if (portParameters.Changed() && ! (!lstrcmpi(portName, portNameOld) || IsValidPortName(portName))) ! { ! err = portParameters.Save(); ! if (err == ERROR_SUCCESS) { ! ((ChangeDeviceParams *)pParam)->changed = TRUE; ! portParameters.FillParametersStr(buf, sizeof(buf)/sizeof(buf[0]), detailPrms); ! Trace("change %s %s\n", phPortName, buf); ! if (lstrcmpi(portName, portNameOld) != 0) ! UpdateFriendlyNameBus(hDevInfo, pDevInfoData, i); ! DevProperties devProperties; ! if (!devProperties.DevId(C0C_PORT_DEVICE_ID)) ! return FALSE; ! if (!devProperties.PhObjName(phDevName)) ! return FALSE; ! if (IsComClass(portName) != IsComClass(portNameOld)) { ! Trace("Changed port class for %s (renamed %s to %s)\n", phPortName, portNameOld, portName); ! DisableDevices(EnumFilter, &devProperties, pRebootRequired, NULL); // show msg if in use ! RemoveDevices(EnumFilter, &devProperties, pRebootRequired); ! ReenumerateDeviceNode(pDevInfoData); ! EnumDevices(EnumFilter, &devProperties, pRebootRequired, UpdateFriendlyNamePort, NULL); ! } else { ! if (lstrcmpi(portName, portNameOld) != 0) ! EnumDevices(EnumFilter, &devProperties, pRebootRequired, UpdateFriendlyNamePort, NULL); ! RestartDevices(EnumFilter, &devProperties, pRebootRequired); ! } ! } else { ! ShowError(MB_OK|MB_ICONWARNING, err, "portParameters.Save(%s)", phPortName); ! } ! } ! } } else { ! ShowError(MB_OK|MB_ICONWARNING, err, "portParameters.Load(%s)", phPortName); } } --- 771,882 ---- PortParameters portParameters(C0C_SERVICE, phPortName); LONG err = portParameters.Load(); ! if (err != ERROR_SUCCESS) { ! portParameters.FillParametersStr(buf, sizeof(buf)/sizeof(buf[0]), detailPrms); ! Trace(" %s %s\n", phPortName, buf); ! ShowError(MB_OK|MB_ICONWARNING, err, "portParameters.Load(%s)", phPortName); ! continue; ! } ! ! char portNameOld[20]; ! ! if (!portParameters.FillPortName(portNameOld, sizeof(portNameOld)/sizeof(portNameOld[0]))) ! continue; ! ! bool isComClassOld = IsComClass(portNameOld); ! ! DevProperties devProperties; ! ! if (!FillPortDevProperties(devProperties, i, j == 0)) ! continue; ! ! if (isComClassOld) ! EnumDevices(EnumFilter, &devProperties, pRebootRequired, LoadRealPortName, &portParameters); portParameters.FillParametersStr(buf, sizeof(buf)/sizeof(buf[0]), detailPrms); + Trace(" %s %s\n", phPortName, buf); ! if (!pPhPortName || lstrcmpi(pPhPortName, phPortName) != 0 || !pParameters) ! continue; ! char realPortNameOld[20]; ! if (!portParameters.FillRealPortName(realPortNameOld, sizeof(realPortNameOld)/sizeof(realPortNameOld[0]))) ! continue; ! if (!portParameters.ParseParametersStr(pParameters)) ! continue; ! char portNameNew[20]; ! if (!portParameters.FillPortName(portNameNew, sizeof(portNameNew)/sizeof(portNameNew[0]))) ! continue; ! if (lstrcmpi(portNameNew, portNameOld) != 0 && !IsValidPortName(portNameNew)) ! continue; ! bool isComClassNew = IsComClass(portNameNew); ! if (!Silent() && portParameters.DialogRequested()) { ! if (isComClassNew) { ! if (isComClassOld) { ! EnumDevices(EnumFilter, &devProperties, pRebootRequired, ShowDialog, NULL); ! } else { ! ShowMsg(MB_OK|MB_ICONWARNING, "Can't display the dialog while changing the class of port.\n"); } + } else { + ShowMsg(MB_OK|MB_ICONWARNING, "Can't display the dialog for non Ports class port.\n"); + } + } ! if (!isComClassNew || !isComClassOld) { ! realPortNameOld[0] = 0; ! portParameters.InitRealPortName(); // ignore RealPortName param ! } ! if (!portParameters.Changed()) ! continue; ! char realPortNameNew[20]; ! if (!portParameters.FillRealPortName(realPortNameNew, sizeof(realPortNameNew)/sizeof(realPortNameNew[0]))) ! continue; ! if (lstrcmpi(realPortNameNew, realPortNameOld) != 0) { ! if (!IsValidPortName(realPortNameNew) || !ComDbIsValidName(realPortNameNew)) ! continue; ! } ! err = portParameters.Save(); ! if (err != ERROR_SUCCESS) { ! ShowError(MB_OK|MB_ICONWARNING, err, "portParameters.Save(%s)", phPortName); ! continue; ! } ! ! ((ChangeDeviceParams *)pParam)->changed = TRUE; ! ! portParameters.FillParametersStr(buf, sizeof(buf)/sizeof(buf[0]), detailPrms); ! Trace("change %s %s\n", phPortName, buf); ! ! if (lstrcmpi(portNameNew, portNameOld) != 0) ! UpdateFriendlyNameBus(hDevInfo, pDevInfoData, i); ! ! if (isComClassNew != isComClassOld) { ! Trace("Changed port class for %s (renamed %s to %s)\n", phPortName, portNameOld, portNameNew); ! DisableDevices(EnumFilter, &devProperties, pRebootRequired, NULL); // show msg if in use ! RemoveDevices(EnumFilter, &devProperties, pRebootRequired); ! ReenumerateDeviceNode(pDevInfoData); ! EnumDevices(EnumFilter, &devProperties, pRebootRequired, UpdateFriendlyNamePort, NULL); } else { ! if (lstrcmpi(portNameNew, portNameOld) != 0) ! EnumDevices(EnumFilter, &devProperties, pRebootRequired, UpdateFriendlyNamePort, NULL); ! ! if (lstrcmpi(realPortNameNew, realPortNameOld) != 0) ! EnumDevices(EnumFilter, &devProperties, pRebootRequired, UpdateRealPortName, realPortNameNew); ! ! RestartDevices(EnumFilter, &devProperties, pRebootRequired); } } *************** *** 1201,1204 **** --- 1335,1340 ---- goto err; + portParameters.InitRealPortName(); // ignore RealPortName param + if (!Silent() && portParameters.DialogRequested()) ShowMsg(MB_OK|MB_ICONWARNING, "Can't display the dialog while installing a pair of linked ports.\n"); *************** *** 1782,1787 **** "invoked to set the real port name. The Ports class installer selects the COM\n" "port number and sets the real port name to COM<n>, where <n> is the selected\n" ! "port number. Use parameter 'PortName=?' to invoke the system-supplied advanced\n" ! "settings dialog box to change the real port name.\n" ); --- 1918,1923 ---- "invoked to set the real port name. The Ports class installer selects the COM\n" "port number and sets the real port name to COM<n>, where <n> is the selected\n" ! "port number. Thereafter use parameter RealPortName=COM<n> to change the real\n" ! "port name.\n" ); Index: comdb.cpp =================================================================== RCS file: /cvsroot/com0com/com0com/setup/comdb.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** comdb.cpp 15 Dec 2011 15:51:48 -0000 1.4 --- comdb.cpp 29 Dec 2011 14:34:23 -0000 1.5 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.5 2011/12/29 14:34:23 vfrolov + * Implemented RealPortName=COM<n> for PortName=COM# + * * Revision 1.4 2011/12/15 15:51:48 vfrolov * Fixed types *************** *** 134,137 **** --- 137,145 ---- static bool ClaimReleasePort(DWORD num, bool claim) { + if (num == 0) { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + int res; *************** *** 161,164 **** --- 169,174 ---- continue; + } else { + Trace("ComDB: COM%u - logged as \"in use\"\n", unsigned(num)); } } else { *************** *** 170,173 **** --- 180,185 ---- res = ShowError(MB_RETRYCANCEL, err, "ComDBReleasePort(COM%u)", (unsigned)num); continue; + } else { + Trace("ComDB: COM%u - released\n", unsigned(num)); } } *************** *** 441,445 **** if (!comDbLocal.IsFreeNum(num)) { if (ClaimReleasePort(num + 1, FALSE)) { - Trace("ComDB: COM%u - released\n", unsigned(num + 1)); comDbLocal.DelNum(num); SaveComDbLocal(comDbLocal); --- 453,456 ---- *************** *** 449,453 **** if (comDbLocal.IsFreeNum(num)) { if (ClaimReleasePort(num + 1, TRUE)) { - Trace("ComDB: COM%u - logged as \"in use\"\n", unsigned(num + 1)); comDbLocal.AddNum(num); SaveComDbLocal(comDbLocal); --- 460,463 ---- *************** *** 497,498 **** --- 507,530 ---- } /////////////////////////////////////////////////////////////// + bool ComDbClaim(const char *pPortName) + { + return ClaimReleasePort(name2num(pPortName), TRUE); + } + /////////////////////////////////////////////////////////////// + bool ComDbRelease(const char *pPortName) + { + return ClaimReleasePort(name2num(pPortName), FALSE); + } + /////////////////////////////////////////////////////////////// + bool ComDbIsValidName(const char *pPortName) + { + if (name2num(pPortName) == 0) { + ShowMsg(MB_OK|MB_ICONSTOP, "The port name %s is not in COM<1-%u> format.\n", + pPortName, (unsigned)COMDB_MAX_PORTS_ARBITRATED); + + return FALSE; + } + + return name2num(pPortName) != 0; + } + /////////////////////////////////////////////////////////////// Index: comdb.h =================================================================== RCS file: /cvsroot/com0com/com0com/setup/comdb.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** comdb.h 15 Dec 2011 15:51:48 -0000 1.4 --- comdb.h 29 Dec 2011 14:34:23 -0000 1.5 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.5 2011/12/29 14:34:23 vfrolov + * Implemented RealPortName=COM<n> for PortName=COM# + * * Revision 1.4 2011/12/15 15:51:48 vfrolov * Fixed types *************** *** 41,44 **** --- 44,50 ---- void ComDbSync(PCNC_ENUM_FILTER pFilter); DWORD ComDbQueryNames(char *pBuf, DWORD maxChars); + bool ComDbClaim(const char *pPortName); + bool ComDbRelease(const char *pPortName); + bool ComDbIsValidName(const char *pPortName); /////////////////////////////////////////////////////////////// |
From: Vyacheslav F. <vf...@us...> - 2011-12-28 06:23:52
|
Update of /cvsroot/com0com/com0com/setup In directory vz-cvs-4.sog:/tmp/cvs-serv24155 Modified Files: setup.cpp Log Message: Added setting friendly names for ports after changing port class Index: setup.cpp =================================================================== RCS file: /cvsroot/com0com/com0com/setup/setup.cpp,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** setup.cpp 27 Dec 2011 11:38:13 -0000 1.51 --- setup.cpp 28 Dec 2011 06:23:50 -0000 1.52 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.52 2011/12/28 06:23:50 vfrolov + * Added setting friendly names for ports after changing port class + * * Revision 1.51 2011/12/27 11:38:13 vfrolov * Superseded incorrect PortParameters::ClassChanged() *************** *** 728,731 **** --- 731,735 ---- RemoveDevices(EnumFilter, &devProperties, pRebootRequired); ReenumerateDeviceNode(pDevInfoData); + EnumDevices(EnumFilter, &devProperties, pRebootRequired, UpdateFriendlyNamePort, NULL); } else { if (lstrcmpi(portName, portNameOld) != 0) |
From: Vyacheslav F. <vf...@us...> - 2011-12-27 11:38:15
|
Update of /cvsroot/com0com/com0com/setup In directory vz-cvs-4.sog:/tmp/cvs-serv22310 Modified Files: params.cpp params.h setup.cpp Log Message: Superseded incorrect PortParameters::ClassChanged() Index: params.h =================================================================== RCS file: /cvsroot/com0com/com0com/setup/params.h,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** params.h 15 Dec 2011 15:51:48 -0000 1.11 --- params.h 27 Dec 2011 11:38:13 -0000 1.12 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.12 2011/12/27 11:38:13 vfrolov + * Superseded incorrect PortParameters::ClassChanged() + * * Revision 1.11 2011/12/15 15:51:48 vfrolov * Fixed types *************** *** 72,76 **** bool FillPortName(char *pPortName, int size); bool Changed() const { return maskChanged != 0; } - bool ClassChanged() const { return classChanged; } bool DialogRequested() const { return dialogRequested; } --- 75,78 ---- *************** *** 90,94 **** bool SetBit(const char *pVal, const Bit &bit); - bool classChanged; bool dialogRequested; DWORD maskChanged; --- 92,95 ---- Index: params.cpp =================================================================== RCS file: /cvsroot/com0com/com0com/setup/params.cpp,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** params.cpp 15 Dec 2011 15:51:48 -0000 1.20 --- params.cpp 27 Dec 2011 11:38:13 -0000 1.21 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.21 2011/12/27 11:38:13 vfrolov + * Superseded incorrect PortParameters::ClassChanged() + * * Revision 1.20 2011/12/15 15:51:48 vfrolov * Fixed types *************** *** 164,168 **** addRITO = 0; - classChanged = FALSE; dialogRequested = FALSE; maskChanged = 0; --- 167,170 ---- *************** *** 177,182 **** else if (lstrcmpi(portName, pNewPortName) != 0) { - classChanged = ((lstrcmpi(C0C_PORT_NAME_COMCLASS, portName) == 0) != - (lstrcmpi(C0C_PORT_NAME_COMCLASS, pNewPortName) == 0)); maskChanged |= m_portName; SNPRINTF(portName, sizeof(portName)/sizeof(portName[0]), "%s", pNewPortName); --- 179,182 ---- *************** *** 918,927 **** "used to invert the value.\n" "\n" - "If <portname> above is '" C0C_PORT_NAME_COMCLASS "' then the Ports class installer will be used to\n" - "manage port name. The Ports class installer selects the COM port number and\n" - "sets the port name to COM<n>, where <n> is the selected port number.\n" - "Use 'PortName=?' to invoke the system-supplied advanced settings dialog box to\n" - "change the port number.\n" - "\n" "Special values:\n" " - - use driver's default value\n" --- 918,921 ---- Index: setup.cpp =================================================================== RCS file: /cvsroot/com0com/com0com/setup/setup.cpp,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** setup.cpp 23 Dec 2011 05:37:21 -0000 1.50 --- setup.cpp 27 Dec 2011 11:38:13 -0000 1.51 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.51 2011/12/27 11:38:13 vfrolov + * Superseded incorrect PortParameters::ClassChanged() + * * Revision 1.50 2011/12/23 05:37:21 vfrolov * Implemented setting friendly names for ports *************** *** 286,289 **** --- 289,297 ---- static bool show_fnames = FALSE; /////////////////////////////////////////////////////////////// + bool IsComClass(const char *pPortName) + { + return lstrcmpi(pPortName, C0C_PORT_NAME_COMCLASS) == 0; + } + /////////////////////////////////////////////////////////////// static CNC_ENUM_FILTER EnumFilter; static bool EnumFilter(const char *pHardwareId) *************** *** 497,501 **** Trace(" %s FriendlyName=\"%s\"\n", phPortName, friendlyNameOld); ! if (lstrcmpi(C0C_PORT_NAME_COMCLASS, portName) == 0) return; --- 505,509 ---- Trace(" %s FriendlyName=\"%s\"\n", phPortName, friendlyNameOld); ! if (IsComClass(portName)) return; *************** *** 581,630 **** } /////////////////////////////////////////////////////////////// - /* - static int SleepTillPortNotFound( - const char *pPortName, - int timeLimit) - { - if (lstrcmpi(C0C_PORT_NAME_COMCLASS, pPortName) == 0) - return 0; - - if (int(DWORD(timeLimit * 1000)/1000) != timeLimit) - timeLimit = -1; - - DWORD startTime = GetTickCount(); - char path[40]; - - SNPRINTF(path, sizeof(path)/sizeof(path[0]), "\\\\.\\%s", pPortName); - - Trace("Wating for %s ", path); - - for (;;) { - HANDLE handle = CreateFile(path, GENERIC_READ|GENERIC_WRITE, 0, NULL, - OPEN_EXISTING, 0, NULL); - - if (handle == INVALID_HANDLE_VALUE) { - if (GetLastError() != ERROR_FILE_NOT_FOUND) - break; - } else { - CloseHandle(handle); - break; - } - - Trace("."); - - if (timeLimit != -1 && GetTickCount() - startTime >= DWORD(timeLimit * 1000)) { - Trace(" timeout\n"); - return -1; - } - - Sleep(1000); - } - - Trace(". OK\n"); - - return int((GetTickCount() - startTime) / 1000); - } - */ - /////////////////////////////////////////////////////////////// static VOID CleanDevPropertiesStack( Stack &stack, --- 589,592 ---- *************** *** 724,729 **** if (!Silent() && portParameters.DialogRequested()) { ! if (lstrcmpi(C0C_PORT_NAME_COMCLASS, portName) == 0) { ! if (!portParameters.ClassChanged()) { DevProperties devProperties; if (!devProperties.DevId(C0C_PORT_DEVICE_ID)) --- 686,691 ---- if (!Silent() && portParameters.DialogRequested()) { ! if (IsComClass(portName)) { ! if (IsComClass(portNameOld)) { DevProperties devProperties; if (!devProperties.DevId(C0C_PORT_DEVICE_ID)) *************** *** 761,766 **** return FALSE; ! if (portParameters.ClassChanged()) { ! Trace("Changed port class for %s (%s -> %s)\n", phPortName, portNameOld, portName); DisableDevices(EnumFilter, &devProperties, pRebootRequired, NULL); // show msg if in use RemoveDevices(EnumFilter, &devProperties, pRebootRequired); --- 723,728 ---- return FALSE; ! if (IsComClass(portName) != IsComClass(portNameOld)) { ! Trace("Changed port class for %s (renamed %s to %s)\n", phPortName, portNameOld, portName); DisableDevices(EnumFilter, &devProperties, pRebootRequired, NULL); // show msg if in use RemoveDevices(EnumFilter, &devProperties, pRebootRequired); *************** *** 1256,1261 **** } ! if (lstrcmpi(portName[0], portName[1]) == 0 && ! lstrcmpi(portName[0], C0C_PORT_NAME_COMCLASS) != 0 && ShowMsg(MB_OKCANCEL|MB_ICONWARNING, "The same port name %s is used for both ports.\n", --- 1218,1222 ---- } ! if (lstrcmpi(portName[0], portName[1]) == 0 && !IsComClass(portName[0]) && ShowMsg(MB_OKCANCEL|MB_ICONWARNING, "The same port name %s is used for both ports.\n", *************** *** 1270,1292 **** ComDbSync(EnumFilter); - /* - if (timeout > 0 && !no_update) { - if (WaitNoPendingInstallEvents(timeout)) { - timeout = 0; - } else { - for (int j = 0 ; j < 2 ; j++) { - int timeElapsed = SleepTillPortNotFound(portName[j], timeout); - - if (timeElapsed < 0 || timeout < timeElapsed) { - timeout = 0; - break; - } - - timeout -= timeElapsed; - } - } - } - */ - return TRUE; --- 1231,1234 ---- *************** *** 1833,1836 **** --- 1775,1787 ---- ConsoleWrite( "\n" + "If parameter 'PortName=" C0C_PORT_NAME_COMCLASS "' is used then the Ports class installer will be\n" + "invoked to set the real port name. The Ports class installer selects the COM\n" + "port number and sets the real port name to COM<n>, where <n> is the selected\n" + "port number. Use parameter 'PortName=?' to invoke the system-supplied advanced\n" + "settings dialog box to change the real port name.\n" + ); + + ConsoleWrite( + "\n" "Examples:\n" ); *************** *** 1854,1857 **** --- 1805,1814 ---- , pProgName, (pProgName && *pProgName) ? " " : ""); ConsoleWrite( + " %s%schange " C0C_PREF_PORT_NAME_A "0 PortName=-\n" + , pProgName, (pProgName && *pProgName) ? " " : ""); + ConsoleWrite( + " %s%schange " C0C_PREF_PORT_NAME_A "0 PortName=?\n" + , pProgName, (pProgName && *pProgName) ? " " : ""); + ConsoleWrite( " %s%slist\n" , pProgName, (pProgName && *pProgName) ? " " : ""); |
From: Vyacheslav F. <vf...@us...> - 2011-12-27 11:23:14
|
Update of /cvsroot/com0com/com0com/sys In directory vz-cvs-4.sog:/tmp/cvs-serv18009 Modified Files: pnp.c Log Message: Changed DeviceTextDescription Index: pnp.c =================================================================== RCS file: /cvsroot/com0com/com0com/sys/pnp.c,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** pnp.c 29 Jul 2010 12:10:04 -0000 1.13 --- pnp.c 27 Dec 2011 11:23:11 -0000 1.14 *************** *** 2,6 **** * $Id$ * ! * Copyright (c) 2004-2010 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify --- 2,6 ---- * $Id$ * ! * Copyright (c) 2004-2011 Vyacheslav Frolov * * This program is free software; you can redistribute it and/or modify *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.14 2011/12/27 11:23:11 vfrolov + * Changed DeviceTextDescription + * * Revision 1.13 2010/07/29 12:10:04 vfrolov * Added handling of IRPs that must be handled *************** *** 274,279 **** RtlInitUnicodeString(&portText, NULL); ! StrAppendStr0(&status, &portText, L"Port "); ! StrAppendStr0(&status, &portText, pDevExt->portName); if (NT_SUCCESS(status)) --- 277,281 ---- RtlInitUnicodeString(&portText, NULL); ! StrAppendStr0(&status, &portText, L"com0com - serial port emulator"); if (NT_SUCCESS(status)) |