kopia lustrzana https://github.com/Hamlib/Hamlib
win32termios: fix warnings found by w64-mingw32 4.6.x, plus misc rxtx update
rodzic
874ca8c79d
commit
3d93b8ccbb
|
@ -67,7 +67,9 @@
|
||||||
#define SIGIO 0
|
#define SIGIO 0
|
||||||
|
|
||||||
int my_errno;
|
int my_errno;
|
||||||
|
#if 0
|
||||||
extern int errno;
|
extern int errno;
|
||||||
|
#endif
|
||||||
struct termios_list
|
struct termios_list
|
||||||
{
|
{
|
||||||
char filename[80];
|
char filename[80];
|
||||||
|
@ -344,8 +346,8 @@ static int CBR_to_B( int Baud )
|
||||||
case CBR_3500000: return( B3500000 );
|
case CBR_3500000: return( B3500000 );
|
||||||
case CBR_4000000: return( B4000000 );
|
case CBR_4000000: return( B4000000 );
|
||||||
default:
|
default:
|
||||||
set_errno(EINVAL );
|
/* assume custom baudrate */
|
||||||
return -1;
|
return( Baud );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -382,12 +384,13 @@ static int B_to_CBR( int Baud )
|
||||||
case B9600: ret = CBR_9600; break;
|
case B9600: ret = CBR_9600; break;
|
||||||
case B14400: ret = CBR_14400; break;
|
case B14400: ret = CBR_14400; break;
|
||||||
case B19200: ret = CBR_19200; break;
|
case B19200: ret = CBR_19200; break;
|
||||||
|
case B28800: ret = CBR_28800; break;
|
||||||
case B38400: ret = CBR_38400; break;
|
case B38400: ret = CBR_38400; break;
|
||||||
case B57600: ret = CBR_57600; break;
|
case B57600: ret = CBR_57600; break;
|
||||||
case B115200: ret = CBR_115200; break;
|
case B115200: ret = CBR_115200; break;
|
||||||
case B128000: ret = CBR_128000; break;
|
case B128000: ret = CBR_128000; break;
|
||||||
case B256000: ret = CBR_256000; break;
|
|
||||||
case B230400: ret = CBR_230400; break;
|
case B230400: ret = CBR_230400; break;
|
||||||
|
case B256000: ret = CBR_256000; break;
|
||||||
case B460800: ret = CBR_460800; break;
|
case B460800: ret = CBR_460800; break;
|
||||||
case B500000: ret = CBR_500000; break;
|
case B500000: ret = CBR_500000; break;
|
||||||
case B576000: ret = CBR_576000; break;
|
case B576000: ret = CBR_576000; break;
|
||||||
|
@ -402,10 +405,8 @@ static int B_to_CBR( int Baud )
|
||||||
case B4000000: ret = CBR_4000000; break;
|
case B4000000: ret = CBR_4000000; break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fprintf( stderr, "B_to_CBR: invalid baudrate: %#o\n",
|
/* assume custom baudrate */
|
||||||
Baud );
|
return Baud;
|
||||||
set_errno( EINVAL );
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
LEAVE( "B_to_CBR" );
|
LEAVE( "B_to_CBR" );
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1353,9 +1354,9 @@ serial_read()
|
||||||
int win32_serial_read( int fd, void *vb, int size )
|
int win32_serial_read( int fd, void *vb, int size )
|
||||||
{
|
{
|
||||||
long start, now;
|
long start, now;
|
||||||
unsigned long nBytes = 0, total = 0, error;
|
unsigned long nBytes = 0, total = 0;
|
||||||
/* unsigned long waiting = 0; */
|
/* unsigned long waiting = 0; */
|
||||||
int err, vmin;
|
int err;
|
||||||
struct termios_list *index;
|
struct termios_list *index;
|
||||||
char message[80];
|
char message[80];
|
||||||
COMSTAT stat;
|
COMSTAT stat;
|
||||||
|
@ -1385,14 +1386,12 @@ int win32_serial_read( int fd, void *vb, int size )
|
||||||
|
|
||||||
if ( index->open_flags & O_NONBLOCK )
|
if ( index->open_flags & O_NONBLOCK )
|
||||||
{
|
{
|
||||||
int ret;
|
|
||||||
vmin = 0;
|
|
||||||
/* pull mucho-cpu here? */
|
/* pull mucho-cpu here? */
|
||||||
do {
|
do {
|
||||||
#ifdef DEBUG_VERBOSE
|
#ifdef DEBUG_VERBOSE
|
||||||
report( "vmin=0\n" );
|
report( "vmin=0\n" );
|
||||||
#endif /* DEBUG_VERBOSE */
|
#endif /* DEBUG_VERBOSE */
|
||||||
ret = ClearErrors( index, &stat);
|
ClearErrors( index, &stat);
|
||||||
/*
|
/*
|
||||||
usleep(1000);
|
usleep(1000);
|
||||||
usleep(50);
|
usleep(50);
|
||||||
|
@ -1416,11 +1415,11 @@ int win32_serial_read( int fd, void *vb, int size )
|
||||||
#ifdef DEBUG_VERBOSE
|
#ifdef DEBUG_VERBOSE
|
||||||
report( "vmin!=0\n" );
|
report( "vmin!=0\n" );
|
||||||
#endif /* DEBUG_VERBOSE */
|
#endif /* DEBUG_VERBOSE */
|
||||||
vmin = index->ttyset->c_cc[VMIN];
|
/* vmin = index->ttyset->c_cc[VMIN]; */
|
||||||
|
|
||||||
c = clock() + index->ttyset->c_cc[VTIME] * CLOCKS_PER_SEC / 10;
|
c = clock() + index->ttyset->c_cc[VTIME] * CLOCKS_PER_SEC / 10;
|
||||||
do {
|
do {
|
||||||
error = ClearErrors( index, &stat);
|
ClearErrors( index, &stat);
|
||||||
usleep(1000);
|
usleep(1000);
|
||||||
} while ( c > clock() );
|
} while ( c > clock() );
|
||||||
|
|
||||||
|
@ -1430,7 +1429,7 @@ int win32_serial_read( int fd, void *vb, int size )
|
||||||
while ( size > 0 )
|
while ( size > 0 )
|
||||||
{
|
{
|
||||||
nBytes = 0;
|
nBytes = 0;
|
||||||
/* ret = ClearErrors( index, &stat); */
|
/* ClearErrors( index, &stat); */
|
||||||
|
|
||||||
index->rol.Offset = index->rol.OffsetHigh = 0;
|
index->rol.Offset = index->rol.OffsetHigh = 0;
|
||||||
ResetEvent( index->rol.hEvent );
|
ResetEvent( index->rol.hEvent );
|
||||||
|
@ -1557,14 +1556,13 @@ int win32_serial_read( int fd, void *vb, int size )
|
||||||
ClearErrors( index, &Stat );
|
ClearErrors( index, &Stat );
|
||||||
if ( index->open_flags & O_NONBLOCK )
|
if ( index->open_flags & O_NONBLOCK )
|
||||||
{
|
{
|
||||||
int ret;
|
|
||||||
vmin = 0;
|
vmin = 0;
|
||||||
/* pull mucho-cpu here? */
|
/* pull mucho-cpu here? */
|
||||||
do {
|
do {
|
||||||
#ifdef DEBUG_VERBOSE
|
#ifdef DEBUG_VERBOSE
|
||||||
report( "vmin=0\n" );
|
report( "vmin=0\n" );
|
||||||
#endif /* DEBUG_VERBOSE */
|
#endif /* DEBUG_VERBOSE */
|
||||||
ret = ClearErrors( index, &Stat);
|
ClearErrors( index, &Stat);
|
||||||
/*
|
/*
|
||||||
usleep(1000);
|
usleep(1000);
|
||||||
usleep(50);
|
usleep(50);
|
||||||
|
@ -1604,7 +1602,7 @@ int win32_serial_read( int fd, void *vb, int size )
|
||||||
while ( size > 0 )
|
while ( size > 0 )
|
||||||
{
|
{
|
||||||
nBytes = 0;
|
nBytes = 0;
|
||||||
/* ret = ClearErrors( index, &Stat); */
|
/* ClearErrors( index, &Stat); */
|
||||||
|
|
||||||
index->rol.Offset = index->rol.OffsetHigh = 0;
|
index->rol.Offset = index->rol.OffsetHigh = 0;
|
||||||
ResetEvent( index->rol.hEvent );
|
ResetEvent( index->rol.hEvent );
|
||||||
|
@ -1713,16 +1711,17 @@ int cfsetospeed( struct termios *s_termios, speed_t speed )
|
||||||
{
|
{
|
||||||
char message[80];
|
char message[80];
|
||||||
ENTER( "cfsetospeed" );
|
ENTER( "cfsetospeed" );
|
||||||
|
/* clear baudrate */
|
||||||
|
s_termios->c_cflag &= ~CBAUD;
|
||||||
if ( speed & ~CBAUD )
|
if ( speed & ~CBAUD )
|
||||||
{
|
{
|
||||||
sprintf( message, "cfsetospeed: not speed: %#o\n", speed );
|
sprintf( message, "cfsetospeed: not speed: %#o\n", speed );
|
||||||
report( message );
|
report( message );
|
||||||
return 0;
|
/* continue assuming its a custom baudrate */
|
||||||
|
s_termios->c_cflag |= B38400; /* use 38400 during custom */
|
||||||
|
s_termios->c_cflag |= CBAUDEX; /* use CBAUDEX for custom */
|
||||||
}
|
}
|
||||||
s_termios->c_ispeed = s_termios->c_ospeed = speed;
|
else if( speed )
|
||||||
/* clear baudrate */
|
|
||||||
s_termios->c_cflag &= ~CBAUD;
|
|
||||||
if( speed )
|
|
||||||
{
|
{
|
||||||
s_termios->c_cflag |= speed;
|
s_termios->c_cflag |= speed;
|
||||||
}
|
}
|
||||||
|
@ -1731,6 +1730,7 @@ int cfsetospeed( struct termios *s_termios, speed_t speed )
|
||||||
/* PC blows up with speed 0 handled in Java */
|
/* PC blows up with speed 0 handled in Java */
|
||||||
s_termios->c_cflag |= B9600;
|
s_termios->c_cflag |= B9600;
|
||||||
}
|
}
|
||||||
|
s_termios->c_ispeed = s_termios->c_ospeed = speed;
|
||||||
LEAVE( "cfsetospeed" );
|
LEAVE( "cfsetospeed" );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -1833,7 +1833,8 @@ termios_to_DCB()
|
||||||
static int termios_to_DCB( struct termios *s_termios, DCB *dcb )
|
static int termios_to_DCB( struct termios *s_termios, DCB *dcb )
|
||||||
{
|
{
|
||||||
ENTER( "termios_to_DCB" );
|
ENTER( "termios_to_DCB" );
|
||||||
s_termios->c_ispeed = s_termios->c_ospeed = s_termios->c_cflag & CBAUD;
|
if ( !(s_termios->c_cflag & CBAUDEX) )
|
||||||
|
s_termios->c_ispeed = s_termios->c_ospeed = s_termios->c_cflag & CBAUD;
|
||||||
dcb->BaudRate = B_to_CBR( s_termios->c_ispeed );
|
dcb->BaudRate = B_to_CBR( s_termios->c_ispeed );
|
||||||
dcb->ByteSize = termios_to_bytesize( s_termios->c_cflag );
|
dcb->ByteSize = termios_to_bytesize( s_termios->c_cflag );
|
||||||
|
|
||||||
|
@ -2129,7 +2130,6 @@ int tcgetattr( int fd, struct termios *s_termios )
|
||||||
s_termios->c_cflag &= ~CSTOPB;
|
s_termios->c_cflag &= ~CSTOPB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* PARENB enable parity bit */
|
/* PARENB enable parity bit */
|
||||||
s_termios->c_cflag &= ~( PARENB | PARODD | CMSPAR );
|
s_termios->c_cflag &= ~( PARENB | PARODD | CMSPAR );
|
||||||
myDCB.fParity = 1;
|
myDCB.fParity = 1;
|
||||||
|
@ -2358,7 +2358,7 @@ int tcsetattr( int fd, int when, struct termios *s_termios )
|
||||||
/* FIXME: IMAXBEL: if input buffer full, send bell */
|
/* FIXME: IMAXBEL: if input buffer full, send bell */
|
||||||
|
|
||||||
/* no DTR control in termios? */
|
/* no DTR control in termios? */
|
||||||
dcb.fDtrControl = DTR_CONTROL_ENABLE;
|
dcb.fDtrControl = DTR_CONTROL_DISABLE;
|
||||||
/* no DSR control in termios? */
|
/* no DSR control in termios? */
|
||||||
dcb.fOutxDsrFlow = FALSE;
|
dcb.fOutxDsrFlow = FALSE;
|
||||||
/* DONT ignore rx bytes when DSR is OFF */
|
/* DONT ignore rx bytes when DSR is OFF */
|
||||||
|
@ -2719,7 +2719,7 @@ int win32_serial_ioctl( int fd, int request, ... )
|
||||||
{
|
{
|
||||||
unsigned long dwStatus = 0;
|
unsigned long dwStatus = 0;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
int *arg, ret, result, old_flag;
|
int *arg, ret, old_flag;
|
||||||
char message[80];
|
char message[80];
|
||||||
|
|
||||||
#ifdef TIOCGSERIAL
|
#ifdef TIOCGSERIAL
|
||||||
|
@ -2729,8 +2729,6 @@ int win32_serial_ioctl( int fd, int request, ... )
|
||||||
COMSTAT Stat;
|
COMSTAT Stat;
|
||||||
|
|
||||||
struct termios_list *index;
|
struct termios_list *index;
|
||||||
struct async_struct *astruct;
|
|
||||||
struct serial_multiport_struct *mstruct;
|
|
||||||
#ifdef TIOCGICOUNT
|
#ifdef TIOCGICOUNT
|
||||||
struct serial_icounter_struct *sistruct;
|
struct serial_icounter_struct *sistruct;
|
||||||
#endif /* TIOCGICOUNT */
|
#endif /* TIOCGICOUNT */
|
||||||
|
@ -2895,12 +2893,10 @@ int win32_serial_ioctl( int fd, int request, ... )
|
||||||
if ( *arg & TIOCM_RTS )
|
if ( *arg & TIOCM_RTS )
|
||||||
{
|
{
|
||||||
index->MSR |= TIOCM_RTS;
|
index->MSR |= TIOCM_RTS;
|
||||||
result &= SETRTS;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
index->MSR &= ~TIOCM_RTS;
|
index->MSR &= ~TIOCM_RTS;
|
||||||
result &= CLRRTS;
|
|
||||||
}
|
}
|
||||||
if( EscapeCommFunction( index->hComm,
|
if( EscapeCommFunction( index->hComm,
|
||||||
( *arg & TIOCM_RTS ) ? SETRTS : CLRRTS ) )
|
( *arg & TIOCM_RTS ) ? SETRTS : CLRRTS ) )
|
||||||
|
@ -3008,15 +3004,8 @@ int win32_serial_ioctl( int fd, int request, ... )
|
||||||
return(0);
|
return(0);
|
||||||
break;
|
break;
|
||||||
case TIOCSERGSTRUCT:
|
case TIOCSERGSTRUCT:
|
||||||
astruct = va_arg( ap, struct async_struct * );
|
|
||||||
va_end( ap );
|
|
||||||
return -ENOIOCTLCMD;
|
|
||||||
case TIOCSERGETMULTI:
|
case TIOCSERGETMULTI:
|
||||||
mstruct = va_arg( ap, struct serial_multiport_struct * );
|
|
||||||
va_end( ap );
|
|
||||||
return -ENOIOCTLCMD;
|
|
||||||
case TIOCSERSETMULTI:
|
case TIOCSERSETMULTI:
|
||||||
mstruct = va_arg( ap, struct serial_multiport_struct * );
|
|
||||||
va_end( ap );
|
va_end( ap );
|
||||||
return -ENOIOCTLCMD;
|
return -ENOIOCTLCMD;
|
||||||
case TIOCMIWAIT:
|
case TIOCMIWAIT:
|
||||||
|
|
|
@ -22,6 +22,9 @@
|
||||||
| This file was taken from rxtx-2.1-7pre16 and adaptated for Hamlib.
|
| This file was taken from rxtx-2.1-7pre16 and adaptated for Hamlib.
|
||||||
--------------------------------------------------------------------------*/
|
--------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef _WIN32TERMIOS_H
|
||||||
|
#define _WIN32TERMIOS_H
|
||||||
|
|
||||||
#ifndef _WIN32S_H_
|
#ifndef _WIN32S_H_
|
||||||
#define _WIN32S_H_
|
#define _WIN32S_H_
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
@ -37,9 +40,8 @@
|
||||||
#define YACK() \
|
#define YACK() \
|
||||||
{ \
|
{ \
|
||||||
char *allocTextBuf, message[80]; \
|
char *allocTextBuf, message[80]; \
|
||||||
unsigned long nChars; \
|
|
||||||
unsigned int errorCode = GetLastError(); \
|
unsigned int errorCode = GetLastError(); \
|
||||||
nChars = FormatMessage ( \
|
FormatMessage ( \
|
||||||
FORMAT_MESSAGE_ALLOCATE_BUFFER | \
|
FORMAT_MESSAGE_ALLOCATE_BUFFER | \
|
||||||
FORMAT_MESSAGE_FROM_SYSTEM, \
|
FORMAT_MESSAGE_FROM_SYSTEM, \
|
||||||
NULL, \
|
NULL, \
|
||||||
|
@ -455,3 +457,5 @@ find a way to get/set buad_base and divisor directly.
|
||||||
|
|
||||||
|
|
||||||
#define CMSPAR 010000000000 /* mark or space parity */
|
#define CMSPAR 010000000000 /* mark or space parity */
|
||||||
|
|
||||||
|
#endif /* _WIN32TERMIOS_H */
|
||||||
|
|
Ładowanie…
Reference in New Issue