kopia lustrzana https://github.com/Hamlib/Hamlib
split serial_open in open and serial_setup
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1012 7ae35d74-ebe9-4afe-98af-79ac388436b8Hamlib-1.1.3
rodzic
cdb57dbaf4
commit
d5ef4f01b5
65
src/serial.c
65
src/serial.c
|
@ -1,10 +1,10 @@
|
||||||
/*
|
/*
|
||||||
* Hamlib Interface - serial communication low-level support
|
* Hamlib Interface - serial communication low-level support
|
||||||
* Copyright (c) 2000,2001,2002 by Stephane Fillod and Frank Singleton
|
* Copyright (c) 2000-2002 by Stephane Fillod and Frank Singleton
|
||||||
* Parts of the PTT handling are derived from soundmodem, an excellent
|
* Parts of the PTT handling are derived from soundmodem, an excellent
|
||||||
* ham packet softmodem written by Thomas Sailer, HB9JNX.
|
* ham packet softmodem written by Thomas Sailer, HB9JNX.
|
||||||
*
|
*
|
||||||
* $Id: serial.c,v 1.24 2002-01-22 21:17:54 fillods Exp $
|
* $Id: serial.c,v 1.25 2002-03-07 22:49:00 fillods Exp $
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or modify
|
* This library is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU Library General Public License as
|
* it under the terms of the GNU Library General Public License as
|
||||||
|
@ -86,17 +86,7 @@
|
||||||
int serial_open(port_t *rp) {
|
int serial_open(port_t *rp) {
|
||||||
|
|
||||||
int fd; /* File descriptor for the port */
|
int fd; /* File descriptor for the port */
|
||||||
speed_t speed; /* serial comm speed */
|
int err;
|
||||||
|
|
||||||
#ifdef HAVE_TERMIOS_H
|
|
||||||
struct termios options;
|
|
||||||
#elif defined(HAVE_TERMIO_H)
|
|
||||||
struct termio options;
|
|
||||||
#elif defined(HAVE_SGTTY_H)
|
|
||||||
struct sgttyb sg;
|
|
||||||
#else
|
|
||||||
#error "No term control supported!"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!rp)
|
if (!rp)
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
|
@ -115,6 +105,45 @@ int serial_open(port_t *rp) {
|
||||||
return -RIG_EIO;
|
return -RIG_EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rp->fd = fd;
|
||||||
|
|
||||||
|
err = serial_setup(rp);
|
||||||
|
if (err != RIG_OK) {
|
||||||
|
close(fd);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
rp->stream = fdopen(fd, "r+b");
|
||||||
|
if (rp->stream == NULL) {
|
||||||
|
rig_debug(RIG_DEBUG_ERR, "open_serial: fdopen failed: %s\n",
|
||||||
|
strerror(errno));
|
||||||
|
close(fd);
|
||||||
|
return -RIG_EIO; /* arg, so close! */
|
||||||
|
}
|
||||||
|
|
||||||
|
return RIG_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int serial_setup(port_t *rp)
|
||||||
|
{
|
||||||
|
speed_t speed; /* serial comm speed */
|
||||||
|
int fd;
|
||||||
|
#ifdef HAVE_TERMIOS_H
|
||||||
|
struct termios options;
|
||||||
|
#elif defined(HAVE_TERMIO_H)
|
||||||
|
struct termio options;
|
||||||
|
#elif defined(HAVE_SGTTY_H)
|
||||||
|
struct sgttyb sg;
|
||||||
|
#else
|
||||||
|
#error "No term control supported!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (!rp)
|
||||||
|
return -RIG_EINVAL;
|
||||||
|
|
||||||
|
fd = rp->fd;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get the current options for the port...
|
* Get the current options for the port...
|
||||||
*/
|
*/
|
||||||
|
@ -328,16 +357,6 @@ int serial_open(port_t *rp) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
rp->stream = fdopen(fd, "r+b");
|
|
||||||
if (rp->stream == NULL) {
|
|
||||||
rig_debug(RIG_DEBUG_ERR, "open_serial: fdopen failed: %s\n",
|
|
||||||
strerror(errno));
|
|
||||||
close(fd);
|
|
||||||
return -RIG_EIO; /* arg, so close! */
|
|
||||||
}
|
|
||||||
|
|
||||||
rp->fd = fd;
|
|
||||||
|
|
||||||
return RIG_OK;
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Hamlib Interface - serial communication header
|
* Hamlib Interface - serial communication header
|
||||||
* Copyright (c) 2000,2001 by Stephane Fillod and Frank Singleton
|
* Copyright (c) 2000-2002 by Stephane Fillod and Frank Singleton
|
||||||
*
|
*
|
||||||
* $Id: serial.h,v 1.16 2002-01-16 22:58:50 fillods Exp $
|
* $Id: serial.h,v 1.17 2002-03-07 22:49:00 fillods Exp $
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or modify
|
* This library is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU Library General Public License as
|
* it under the terms of the GNU Library General Public License as
|
||||||
|
@ -28,6 +28,7 @@
|
||||||
|
|
||||||
|
|
||||||
extern HAMLIB_EXPORT(int) serial_open(port_t *rs);
|
extern HAMLIB_EXPORT(int) serial_open(port_t *rs);
|
||||||
|
extern HAMLIB_EXPORT(int) serial_setup(port_t *rs);
|
||||||
extern HAMLIB_EXPORT(int) serial_flush(port_t *p);
|
extern HAMLIB_EXPORT(int) serial_flush(port_t *p);
|
||||||
|
|
||||||
/* Hamlib internal use, see rig.c */
|
/* Hamlib internal use, see rig.c */
|
||||||
|
|
Ładowanie…
Reference in New Issue