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...:/cvsroot/com0com login
! cvs -z3 -d:pserver:anonymous@172.16.36.111:/cvsroot/com0com co -P hub4com
--- 166,188 ----
cvs -d:pserver:ano...@yo...:/cvsroot/com0com login
! cvs -z3 -d:pserver:ano...@yo...:/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))
|