Update of /cvsroot/com0com/com0com
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11739
Modified Files:
ioctl.c trace.c trace.h tracetbl.c
Log Message:
Implemented IOCTL_SERIAL_GET_DTRRTS
Index: trace.c
===================================================================
RCS file: /cvsroot/com0com/com0com/trace.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** trace.c 5 Dec 2005 10:54:55 -0000 1.16
--- trace.c 6 Dec 2005 13:01:54 -0000 1.17
***************
*** 20,23 ****
--- 20,26 ----
*
* $Log$
+ * Revision 1.17 2005/12/06 13:01:54 vfrolov
+ * Implemented IOCTL_SERIAL_GET_DTRRTS
+ *
* Revision 1.16 2005/12/05 10:54:55 vfrolov
* Implemented IOCTL_SERIAL_IMMEDIATE_CHAR
***************
*** 1258,1261 ****
--- 1261,1271 ----
}
break;
+ case IOCTL_SERIAL_GET_DTRRTS:
+ if ((flags & TRACE_FLAG_RESULTS) && inform >= sizeof(ULONG)) {
+ pDestStr = AnsiStrCopyStr(pDestStr, &size, " ");
+ pDestStr = AnsiStrCopyMask(pDestStr, &size,
+ codeNameTableDTRRTS, *((PULONG)pSysBuf));
+ }
+ break;
case IOCTL_SERIAL_SET_WAIT_MASK:
if ((flags & TRACE_FLAG_PARAMS) && inLength >= sizeof(ULONG)) {
Index: trace.h
===================================================================
RCS file: /cvsroot/com0com/com0com/trace.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** trace.h 28 Sep 2005 10:06:42 -0000 1.6
--- trace.h 6 Dec 2005 13:01:54 -0000 1.7
***************
*** 20,23 ****
--- 20,26 ----
*
* $Log$
+ * Revision 1.7 2005/12/06 13:01:54 vfrolov
+ * Implemented IOCTL_SERIAL_GET_DTRRTS
+ *
* Revision 1.6 2005/09/28 10:06:42 vfrolov
* Implemented IRP_MJ_QUERY_INFORMATION and IRP_MJ_SET_INFORMATION
***************
*** 112,115 ****
--- 115,119 ----
CODE2NAME codeNameTableDoType[];
CODE2NAME codeNameTableModemStatus[];
+ CODE2NAME codeNameTableDTRRTS[];
CODE2NAME codeNameTableStatus[];
CODE2NAME codeNameTableIrpMj[];
Index: tracetbl.c
===================================================================
RCS file: /cvsroot/com0com/com0com/tracetbl.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** tracetbl.c 28 Sep 2005 10:06:42 -0000 1.4
--- tracetbl.c 6 Dec 2005 13:01:54 -0000 1.5
***************
*** 20,23 ****
--- 20,26 ----
*
* $Log$
+ * Revision 1.5 2005/12/06 13:01:54 vfrolov
+ * Implemented IOCTL_SERIAL_GET_DTRRTS
+ *
* Revision 1.4 2005/09/28 10:06:42 vfrolov
* Implemented IRP_MJ_QUERY_INFORMATION and IRP_MJ_SET_INFORMATION
***************
*** 174,177 ****
--- 177,186 ----
};
+ CODE2NAME codeNameTableDTRRTS[] = {
+ {SERIAL_DTR_STATE, "DTR"},
+ {SERIAL_RTS_STATE, "RTS"},
+ {0, NULL}
+ };
+
FIELD2NAME codeNameTableControlHandShake[] = {
TOFIELD2NAME (SERIAL_, DTR_CONTROL, SERIAL_DTR_MASK),
Index: ioctl.c
===================================================================
RCS file: /cvsroot/com0com/com0com/ioctl.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** ioctl.c 5 Dec 2005 10:54:55 -0000 1.13
--- ioctl.c 6 Dec 2005 13:01:54 -0000 1.14
***************
*** 20,23 ****
--- 20,26 ----
*
* $Log$
+ * Revision 1.14 2005/12/06 13:01:54 vfrolov
+ * Implemented IOCTL_SERIAL_GET_DTRRTS
+ *
* Revision 1.13 2005/12/05 10:54:55 vfrolov
* Implemented IOCTL_SERIAL_IMMEDIATE_CHAR
***************
*** 134,137 ****
--- 137,161 ----
}
break;
+ case IOCTL_SERIAL_GET_DTRRTS: {
+ ULONG modemStatusRemote;
+
+ if (pIrpStack->Parameters.DeviceIoControl.OutputBufferLength < sizeof(ULONG)) {
+ status = STATUS_BUFFER_TOO_SMALL;
+ break;
+ }
+
+ KeAcquireSpinLock(pDevExt->pIoLock, &oldIrql);
+ modemStatusRemote = pDevExt->pIoPortRemote->modemStatus;
+ KeReleaseSpinLock(pDevExt->pIoLock, oldIrql);
+
+ *(PULONG)pIrp->AssociatedIrp.SystemBuffer =
+ ((modemStatusRemote & C0C_MSB_DSR) ? SERIAL_DTR_STATE : 0) |
+ ((modemStatusRemote & C0C_MSB_CTS) ? SERIAL_RTS_STATE : 0);
+
+ pIrp->IoStatus.Information = sizeof(ULONG);
+
+ TraceIrp("FdoPortIoCtl", pIrp, &status, TRACE_FLAG_RESULTS);
+ break;
+ }
case IOCTL_SERIAL_GET_MODEMSTATUS:
if (pIrpStack->Parameters.DeviceIoControl.OutputBufferLength < sizeof(ULONG)) {
|