kopia lustrzana https://github.com/Hamlib/Hamlib
added support for set DTR/RTS state, useful to power external device from the serial port
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1378 7ae35d74-ebe9-4afe-98af-79ac388436b8Hamlib-1.1.4
rodzic
36ce8141ca
commit
8d707be2a4
56
src/conf.c
56
src/conf.c
|
@ -3,13 +3,13 @@
|
|||
* \ingroup rig
|
||||
* \brief Rig configuration interface
|
||||
* \author Stephane Fillod
|
||||
* \date 2000-2002
|
||||
* \date 2000-2003
|
||||
*/
|
||||
/*
|
||||
* Hamlib Interface - configuration interface
|
||||
* Copyright (c) 2000,2002 by Stephane Fillod
|
||||
* Copyright (c) 2000-2003 by Stephane Fillod
|
||||
*
|
||||
* $Id: conf.c,v 1.8 2002-11-04 22:21:42 fillods Exp $
|
||||
* $Id: conf.c,v 1.9 2003-02-23 22:38:54 fillods Exp $
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Library General Public License as
|
||||
|
@ -92,6 +92,14 @@ static const struct confparams frontend_cfg_params[] = {
|
|||
"VFO compensation in ppm",
|
||||
"0", RIG_CONF_NUMERIC, { .n = { 0.0, 1000.0, .001 } }
|
||||
},
|
||||
{ TOK_RTS_STATE, "rts_state", "RTS state",
|
||||
"Serial port set state of RTS signal for external powering",
|
||||
"Unset", RIG_CONF_COMBO, { .c = {{ "Unset", "ON", "OFF", NULL }} }
|
||||
},
|
||||
{ TOK_DTR_STATE, "dtr_state", "DTR state",
|
||||
"Serial port set state of DTR signal for external powering",
|
||||
"Unset", RIG_CONF_COMBO, { .c = {{ "Unset", "ON", "OFF", NULL }} }
|
||||
},
|
||||
|
||||
{ RIG_CONF_END, NULL, }
|
||||
};
|
||||
|
@ -156,6 +164,28 @@ static int frontend_set_conf(RIG *rig, token_t token, const char *val)
|
|||
return -RIG_EINVAL;
|
||||
break;
|
||||
|
||||
case TOK_RTS_STATE:
|
||||
if (!strcmp(val, "Unset"))
|
||||
rs->rigport.parm.serial.rts_state = RIG_SIGNAL_UNSET;
|
||||
else if (!strcmp(val, "ON"))
|
||||
rs->rigport.parm.serial.rts_state = RIG_SIGNAL_ON;
|
||||
else if (!strcmp(val, "OFF"))
|
||||
rs->rigport.parm.serial.rts_state = RIG_SIGNAL_OFF;
|
||||
else
|
||||
return -RIG_EINVAL;
|
||||
break;
|
||||
|
||||
case TOK_DTR_STATE:
|
||||
if (!strcmp(val, "Unset"))
|
||||
rs->rigport.parm.serial.dtr_state = RIG_SIGNAL_UNSET;
|
||||
else if (!strcmp(val, "ON"))
|
||||
rs->rigport.parm.serial.dtr_state = RIG_SIGNAL_ON;
|
||||
else if (!strcmp(val, "OFF"))
|
||||
rs->rigport.parm.serial.dtr_state = RIG_SIGNAL_OFF;
|
||||
else
|
||||
return -RIG_EINVAL;
|
||||
break;
|
||||
|
||||
case TOK_ITU_REGION:
|
||||
rs->itu_region = atoi(val);
|
||||
switch(rs->itu_region) {
|
||||
|
@ -247,6 +277,26 @@ static int frontend_get_conf(RIG *rig, token_t token, char *val)
|
|||
strcpy(val, s);
|
||||
break;
|
||||
|
||||
case TOK_RTS_STATE:
|
||||
switch (rs->rigport.parm.serial.rts_state) {
|
||||
case RIG_SIGNAL_UNSET: s = "Unset"; break;
|
||||
case RIG_SIGNAL_ON: s = "ON"; break;
|
||||
case RIG_SIGNAL_OFF: s = "OFF"; break;
|
||||
default: return -RIG_EINVAL;
|
||||
}
|
||||
strcpy(val, s);
|
||||
break;
|
||||
|
||||
case TOK_DTR_STATE:
|
||||
switch (rs->rigport.parm.serial.dtr_state) {
|
||||
case RIG_SIGNAL_UNSET: s = "Unset"; break;
|
||||
case RIG_SIGNAL_ON: s = "ON"; break;
|
||||
case RIG_SIGNAL_OFF: s = "OFF"; break;
|
||||
default: return -RIG_EINVAL;
|
||||
}
|
||||
strcpy(val, s);
|
||||
break;
|
||||
|
||||
case TOK_VFO_COMP:
|
||||
sprintf(val, "%f", rs->vfo_comp);
|
||||
break;
|
||||
|
|
21
src/rig.c
21
src/rig.c
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
* Hamlib Interface - main file
|
||||
* Copyright (c) 2000-2002 by Stephane Fillod and Frank Singleton
|
||||
* Copyright (c) 2000-2003 by Stephane Fillod and Frank Singleton
|
||||
*
|
||||
* $Id: rig.c,v 1.66 2003-01-29 22:31:18 fillods Exp $
|
||||
* $Id: rig.c,v 1.67 2003-02-23 22:38:54 fillods Exp $
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Library General Public License as
|
||||
|
@ -26,7 +26,7 @@
|
|||
* \brief Ham Radio Control Libraries interface
|
||||
* \author Stephane Fillod
|
||||
* \author Frank Singleton
|
||||
* \date 2000-2002
|
||||
* \date 2000-2003
|
||||
*
|
||||
* Hamlib interface is a frontend implementing wrapper functions.
|
||||
*/
|
||||
|
@ -380,6 +380,21 @@ int rig_open(RIG *rig)
|
|||
status = serial_open(&rs->rigport);
|
||||
if (status != 0)
|
||||
return status;
|
||||
if (rs->rigport.parm.serial.rts_state != RIG_SIGNAL_UNSET &&
|
||||
rs->rigport.type.ptt != RIG_PTT_SERIAL_RTS &&
|
||||
rs->rigport.parm.serial.handshake != RIG_HANDSHAKE_HARDWARE) {
|
||||
status = ser_set_rts(&rs->rigport,
|
||||
rs->rigport.parm.serial.rts_state == RIG_SIGNAL_ON);
|
||||
}
|
||||
if (status != 0)
|
||||
return status;
|
||||
if (rs->rigport.parm.serial.dtr_state != RIG_SIGNAL_UNSET &&
|
||||
rs->rigport.type.ptt != RIG_PTT_SERIAL_DTR) {
|
||||
status = ser_set_dtr(&rs->rigport,
|
||||
rs->rigport.parm.serial.dtr_state == RIG_SIGNAL_ON);
|
||||
}
|
||||
if (status != 0)
|
||||
return status;
|
||||
break;
|
||||
|
||||
case RIG_PORT_DEVICE:
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
* Hamlib Interface - token header
|
||||
* Copyright (c) 2000,2001,2002 by Stephane Fillod
|
||||
* Copyright (c) 2000-2003 by Stephane Fillod
|
||||
*
|
||||
* $Id: token.h,v 1.1 2002-01-27 14:48:49 fillods Exp $
|
||||
* $Id: token.h,v 1.2 2003-02-23 22:38:54 fillods Exp $
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Library General Public License as
|
||||
|
@ -47,6 +47,8 @@
|
|||
#define TOK_STOP_BITS TOKEN_FRONTEND(22)
|
||||
#define TOK_PARITY TOKEN_FRONTEND(23)
|
||||
#define TOK_HANDSHAKE TOKEN_FRONTEND(24)
|
||||
#define TOK_RTS_STATE TOKEN_FRONTEND(25)
|
||||
#define TOK_DTR_STATE TOKEN_FRONTEND(26)
|
||||
|
||||
/*
|
||||
* rig specific tokens
|
||||
|
|
Ładowanie…
Reference in New Issue