Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
f57ef1d4
Commit
f57ef1d4
authored
Aug 07, 1999
by
Uwe Bonnes
Committed by
Alexandre Julliard
Aug 07, 1999
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- added some more Baudrates
- fixed a hang in tcsetattr when the input buffer isn't empty - added more verbosity for debugging
parent
742e1354
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
145 additions
and
17 deletions
+145
-17
comm.c
misc/comm.c
+145
-17
No files found.
misc/comm.c
View file @
f57ef1d4
...
...
@@ -1719,6 +1719,17 @@ BOOL WINAPI GetCommMask(HANDLE handle,LPDWORD evtmask)
}
close
(
fd
);
*
evtmask
=
eventmask
;
TRACE
(
"%s%s%s%s%s%s%s%s%s
\n
"
,
(
eventmask
&
EV_BREAK
)
?
"EV_BREAK"
:
""
,
(
eventmask
&
EV_CTS
)
?
"EV_CTS"
:
""
,
(
eventmask
&
EV_DSR
)
?
"EV_DSR"
:
""
,
(
eventmask
&
EV_ERR
)
?
"EV_ERR"
:
""
,
(
eventmask
&
EV_RING
)
?
"EV_RING"
:
""
,
(
eventmask
&
EV_RLSD
)
?
"EV_RLSD"
:
""
,
(
eventmask
&
EV_RXCHAR
)
?
"EV_RXCHAR"
:
""
,
(
eventmask
&
EV_RXFLAG
)
?
"EV_RXFLAG"
:
""
,
(
eventmask
&
EV_TXEMPTY
)
?
"EV_TXEMPTY"
:
""
);
return
TRUE
;
}
...
...
@@ -1730,6 +1741,17 @@ BOOL WINAPI SetCommMask(INT handle,DWORD evtmask)
int
fd
;
TRACE
(
"handle %d, mask %lx
\n
"
,
handle
,
evtmask
);
TRACE
(
"%s%s%s%s%s%s%s%s%s
\n
"
,
(
evtmask
&
EV_BREAK
)
?
"EV_BREAK"
:
""
,
(
evtmask
&
EV_CTS
)
?
"EV_CTS"
:
""
,
(
evtmask
&
EV_DSR
)
?
"EV_DSR"
:
""
,
(
evtmask
&
EV_ERR
)
?
"EV_ERR"
:
""
,
(
evtmask
&
EV_RING
)
?
"EV_RING"
:
""
,
(
evtmask
&
EV_RLSD
)
?
"EV_RLSD"
:
""
,
(
evtmask
&
EV_RXCHAR
)
?
"EV_RXCHAR"
:
""
,
(
evtmask
&
EV_RXFLAG
)
?
"EV_RXFLAG"
:
""
,
(
evtmask
&
EV_TXEMPTY
)
?
"EV_TXEMPTY"
:
""
);
if
(
0
>
(
fd
=
COMM_GetWriteFd
(
handle
)))
{
return
FALSE
;
}
...
...
@@ -1747,12 +1769,24 @@ BOOL WINAPI SetCommState(INT handle,LPDCB lpdcb)
int
fd
;
TRACE
(
"handle %d, ptr %p
\n
"
,
handle
,
lpdcb
);
TRACE
(
"bytesize %d baudrate %ld fParity %d Parity %d stopbits %d
\n
"
,
lpdcb
->
ByteSize
,
lpdcb
->
BaudRate
,
lpdcb
->
fParity
,
lpdcb
->
Parity
,
(
lpdcb
->
StopBits
==
ONESTOPBIT
)
?
1
:
(
lpdcb
->
StopBits
==
TWOSTOPBITS
)
?
2
:
0
);
TRACE
(
"%s %s
\n
"
,(
lpdcb
->
fInX
)
?
"IXON"
:
"~IXON"
,
(
lpdcb
->
fOutX
)
?
"IXOFF"
:
"~IXOFF"
);
if
((
fd
=
COMM_GetWriteFd
(
handle
))
<
0
)
return
FALSE
;
if
(
tcgetattr
(
fd
,
&
port
)
==
-
1
)
{
if
((
tcgetattr
(
fd
,
&
port
))
==
-
1
)
{
int
save_error
=
errno
;
commerror
=
WinError
();
close
(
fd
);
#ifdef HAVE_STRERROR
ERR
(
"tcgetattr error '%s'
\n
"
,
strerror
(
save_error
));
#else
ERR
(
"tcgetattr error %d
\n
"
,
save_error
);
#endif
return
FALSE
;
}
...
...
@@ -1817,9 +1851,30 @@ BOOL WINAPI SetCommState(INT handle,LPDCB lpdcb)
case
CBR_38400
:
port
.
c_cflag
|=
B38400
;
break
;
default:
#ifdef B57600
case
57600
:
port
.
c_cflag
|=
B57600
;
break
;
#endif
#ifdef B115200
case
115200
:
port
.
c_cflag
|=
B115200
;
break
;
#endif
#ifdef B230400
case
230400
:
port
.
c_cflag
|=
B230400
;
break
;
#endif
#ifdef B460800
case
460600
:
port
.
c_cflag
|=
B460800
;
break
;
#endif
default:
commerror
=
IE_BAUDRATE
;
close
(
fd
);
close
(
fd
);
ERR
(
"baudrate %ld
\n
"
,
lpdcb
->
BaudRate
);
return
FALSE
;
}
#elif !defined(__EMX__)
...
...
@@ -1863,11 +1918,11 @@ BOOL WINAPI SetCommState(INT handle,LPDCB lpdcb)
default:
commerror
=
IE_BAUDRATE
;
close
(
fd
);
ERR
(
"baudrate %d
\n
"
,
lpdcb
->
BaudRate
);
return
FALSE
;
}
port
.
c_ispeed
=
port
.
c_ospeed
;
#endif
TRACE
(
"bytesize %d
\n
"
,
lpdcb
->
ByteSize
);
port
.
c_cflag
&=
~
CSIZE
;
switch
(
lpdcb
->
ByteSize
)
{
case
5
:
...
...
@@ -1885,10 +1940,10 @@ BOOL WINAPI SetCommState(INT handle,LPDCB lpdcb)
default:
commerror
=
IE_BYTESIZE
;
close
(
fd
);
ERR
(
"ByteSize
\n
"
);
return
FALSE
;
}
TRACE
(
"fParity %d Parity %d
\n
"
,
lpdcb
->
fParity
,
lpdcb
->
Parity
);
port
.
c_cflag
&=
~
(
PARENB
|
PARODD
);
if
(
lpdcb
->
fParity
)
port
.
c_iflag
|=
INPCK
;
...
...
@@ -1906,11 +1961,11 @@ BOOL WINAPI SetCommState(INT handle,LPDCB lpdcb)
default:
commerror
=
IE_BYTESIZE
;
close
(
fd
);
ERR
(
"Parity
\n
"
);
return
FALSE
;
}
TRACE
(
"stopbits %d
\n
"
,
lpdcb
->
StopBits
);
switch
(
lpdcb
->
StopBits
)
{
case
ONESTOPBIT
:
port
.
c_cflag
&=
~
CSTOPB
;
...
...
@@ -1921,16 +1976,24 @@ BOOL WINAPI SetCommState(INT handle,LPDCB lpdcb)
default:
commerror
=
IE_BYTESIZE
;
close
(
fd
);
ERR
(
"StopBits
\n
"
);
return
FALSE
;
}
#ifdef CRTSCTS
if
(
lpdcb
->
fOutxCtsFlow
||
lpdcb
->
fDtrControl
==
DTR_CONTROL_ENABLE
||
lpdcb
->
fRtsControl
==
RTS_CONTROL_ENABLE
)
port
.
c_cflag
|=
CRTSCTS
;
)
{
port
.
c_cflag
|=
CRTSCTS
;
TRACE
(
"CRTSCTS
\n
"
);
}
if
(
lpdcb
->
fDtrControl
==
DTR_CONTROL_DISABLE
)
port
.
c_cflag
&=
~
CRTSCTS
;
{
port
.
c_cflag
&=
~
CRTSCTS
;
TRACE
(
"~CRTSCTS
\n
"
);
}
#endif
if
(
lpdcb
->
fInX
)
...
...
@@ -1942,9 +2005,15 @@ BOOL WINAPI SetCommState(INT handle,LPDCB lpdcb)
else
port
.
c_iflag
&=
~
IXOFF
;
if
(
tcsetattr
(
fd
,
TCSADRAIN
,
&
port
)
==-
1
)
{
if
(
tcsetattr
(
fd
,
TCSANOW
,
&
port
)
==-
1
)
{
/* otherwise it hangs with pending input*/
int
save_error
=
errno
;
commerror
=
WinError
();
close
(
fd
);
#ifdef HAVE_STRERROR
ERR
(
"tcgetattr error '%s'
\n
"
,
strerror
(
save_error
));
#else
ERR
(
"tcgetattr error %d
\n
"
,
save_error
);
#endif
return
FALSE
;
}
else
{
commerror
=
0
;
...
...
@@ -1960,14 +2029,22 @@ BOOL WINAPI SetCommState(INT handle,LPDCB lpdcb)
BOOL
WINAPI
GetCommState
(
INT
handle
,
LPDCB
lpdcb
)
{
struct
termios
port
;
int
fd
;
int
fd
,
speed
;
TRACE
(
"handle %d, ptr %p
\n
"
,
handle
,
lpdcb
);
if
((
fd
=
COMM_GetReadFd
(
handle
))
<
0
)
return
FALSE
;
if
((
fd
=
COMM_GetReadFd
(
handle
))
<
0
)
{
ERR
(
"can't get COMM_GetReadFd
\n
"
);
return
FALSE
;
}
if
(
tcgetattr
(
fd
,
&
port
)
==
-
1
)
{
TRACE
(
"tcgetattr(%d, ...) returned -1"
,
fd
);
int
save_error
=
errno
;
#ifdef HAVE_STRERROR
ERR
(
"tcgetattr error '%s'
\n
"
,
strerror
(
save_error
));
#else
ERR
(
"tcgetattr error %d
\n
"
,
save_error
);
#endif
commerror
=
WinError
();
close
(
fd
);
return
FALSE
;
...
...
@@ -1975,10 +2052,11 @@ BOOL WINAPI GetCommState(INT handle, LPDCB lpdcb)
close
(
fd
);
#ifndef __EMX__
#ifdef CBAUD
switch
(
port
.
c_cflag
&
CBAUD
)
{
speed
=
(
port
.
c_cflag
&
CBAUD
);
#else
switch
(
port
.
c_ospeed
)
{
speed
=
(
cfgetospeed
(
&
port
));
#endif
switch
(
speed
)
{
case
B110
:
lpdcb
->
BaudRate
=
110
;
break
;
...
...
@@ -2006,6 +2084,28 @@ BOOL WINAPI GetCommState(INT handle, LPDCB lpdcb)
case
B38400
:
lpdcb
->
BaudRate
=
38400
;
break
;
#ifdef B57600
case
B57600
:
lpdcb
->
BaudRate
=
57600
;
break
;
#endif
#ifdef B115200
case
B115200
:
lpdcb
->
BaudRate
=
115200
;
break
;
#endif
#ifdef B230400
case
B230400
:
lpdcb
->
BaudRate
=
230400
;
break
;
#endif
#ifdef B460800
case
B460800
:
lpdcb
->
BaudRate
=
460800
;
break
;
#endif
default:
ERR
(
"unknown speed %x
\n
"
,
speed
);
}
#endif
switch
(
port
.
c_cflag
&
CSIZE
)
{
...
...
@@ -2021,6 +2121,8 @@ BOOL WINAPI GetCommState(INT handle, LPDCB lpdcb)
case
CS8
:
lpdcb
->
ByteSize
=
8
;
break
;
default:
ERR
(
"unknown size %x
\n
"
,
port
.
c_cflag
&
CSIZE
);
}
if
(
port
.
c_iflag
&
INPCK
)
...
...
@@ -2078,8 +2180,25 @@ BOOL WINAPI GetCommState(INT handle, LPDCB lpdcb)
commerror
=
0
;
TRACE
(
"OK
\n
"
);
TRACE
(
"OK
\n
"
);
TRACE
(
"bytesize %d baudrate %ld fParity %d Parity %d stopbits %d
\n
"
,
lpdcb
->
ByteSize
,
lpdcb
->
BaudRate
,
lpdcb
->
fParity
,
lpdcb
->
Parity
,
(
lpdcb
->
StopBits
==
ONESTOPBIT
)
?
1
:
(
lpdcb
->
StopBits
==
TWOSTOPBITS
)
?
2
:
0
);
TRACE
(
"%s %s
\n
"
,(
lpdcb
->
fInX
)
?
"IXON"
:
"~IXON"
,
(
lpdcb
->
fOutX
)
?
"IXOFF"
:
"~IXOFF"
);
#ifdef CRTSCTS
if
(
lpdcb
->
fOutxCtsFlow
||
lpdcb
->
fDtrControl
==
DTR_CONTROL_ENABLE
||
lpdcb
->
fRtsControl
==
RTS_CONTROL_ENABLE
)
TRACE
(
"CRTSCTS
\n
"
);
if
(
lpdcb
->
fDtrControl
==
DTR_CONTROL_DISABLE
)
TRACE
(
"~CRTSCTS
\n
"
);
#endif
return
TRUE
;
}
...
...
@@ -2122,6 +2241,15 @@ BOOL WINAPI GetCommTimeouts(INT cid,LPCOMMTIMEOUTS lptimeouts)
*/
BOOL
WINAPI
SetCommTimeouts
(
INT
cid
,
LPCOMMTIMEOUTS
lptimeouts
)
{
FIXME
(
"(%x,%p):stub.
\n
"
,
cid
,
lptimeouts
);
TRACE
(
"ReadIntervalTimeout %ld
\n
"
,
lptimeouts
->
ReadIntervalTimeout
);
TRACE
(
"ReadTotalTimeoutMultiplier %ld
\n
"
,
lptimeouts
->
ReadTotalTimeoutMultiplier
);
TRACE
(
"ReadTotalTimeoutConstant %ld
\n
"
,
lptimeouts
->
ReadTotalTimeoutConstant
);
TRACE
(
"WriteTotalTimeoutMultiplier %ld
\n
"
,
lptimeouts
->
WriteTotalTimeoutMultiplier
);
TRACE
(
"WriteTotalTimeoutConstant %ld
\n
"
,
lptimeouts
->
WriteTotalTimeoutConstant
);
return
TRUE
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment