kopia lustrzana https://github.com/Hamlib/Hamlib
* started some work on PTT signaling through serial/parallel ports.
RIG_PTT_SERIAL is no more, it is replaced by RIG_PTT_SERIAL_RTS and RIG_PTT_SERIAL_DTR. * added comments for rig_get_level and RIG_LEVEL_STRENGTH git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@331 7ae35d74-ebe9-4afe-98af-79ac388436b8Hamlib-1.1.1
rodzic
4285d4a992
commit
50576d9502
38
src/rig.c
38
src/rig.c
|
@ -2,7 +2,7 @@
|
||||||
Copyright (C) 2000 Stephane Fillod and Frank Singleton
|
Copyright (C) 2000 Stephane Fillod and Frank Singleton
|
||||||
This file is part of the hamlib package.
|
This file is part of the hamlib package.
|
||||||
|
|
||||||
$Id: rig.c,v 1.13 2001-01-05 18:24:20 f4cfe Exp $
|
$Id: rig.c,v 1.14 2001-01-28 22:17:12 f4cfe Exp $
|
||||||
|
|
||||||
Hamlib is free software; you can redistribute it and/or modify it
|
Hamlib is free software; you can redistribute it and/or modify it
|
||||||
under the terms of the GNU General Public License as published by
|
under the terms of the GNU General Public License as published by
|
||||||
|
@ -203,7 +203,6 @@ RIG *rig_init(rig_model_t rig_model)
|
||||||
|
|
||||||
rig->state.port_type = RIG_PORT_SERIAL; /* default is serial port */
|
rig->state.port_type = RIG_PORT_SERIAL; /* default is serial port */
|
||||||
strncpy(rig->state.rig_path, DEFAULT_SERIAL_PORT, FILPATHLEN);
|
strncpy(rig->state.rig_path, DEFAULT_SERIAL_PORT, FILPATHLEN);
|
||||||
rig->state.port_type = RIG_PORT_SERIAL; /* default is serial port */
|
|
||||||
rig->state.serial_rate = rig->caps->serial_rate_max; /* fastest ! */
|
rig->state.serial_rate = rig->caps->serial_rate_max; /* fastest ! */
|
||||||
rig->state.serial_data_bits = rig->caps->serial_data_bits;
|
rig->state.serial_data_bits = rig->caps->serial_data_bits;
|
||||||
rig->state.serial_stop_bits = rig->caps->serial_stop_bits;
|
rig->state.serial_stop_bits = rig->caps->serial_stop_bits;
|
||||||
|
@ -219,6 +218,9 @@ RIG *rig_init(rig_model_t rig_model)
|
||||||
rig->state.vfo_comp = 0.0; /* override it with preferences */
|
rig->state.vfo_comp = 0.0; /* override it with preferences */
|
||||||
rig->state.current_vfo = RIG_VFO_CURR; /* we don't know yet! */
|
rig->state.current_vfo = RIG_VFO_CURR; /* we don't know yet! */
|
||||||
|
|
||||||
|
rig->state.fd = -1;
|
||||||
|
rig->state.ptt_fd = -1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* let the backend a chance to setup his private data
|
* let the backend a chance to setup his private data
|
||||||
* FIXME: check rig_init() return code
|
* FIXME: check rig_init() return code
|
||||||
|
@ -270,6 +272,16 @@ int rig_open(RIG *rig)
|
||||||
|
|
||||||
rig->state.stream = fdopen(rig->state.fd, "r+b");
|
rig->state.stream = fdopen(rig->state.fd, "r+b");
|
||||||
|
|
||||||
|
if (rig->state.ptt_type == RIG_PTT_SERIAL_DTR ||
|
||||||
|
rig->state.ptt_type == RIG_PTT_SERIAL_RTS ||
|
||||||
|
rig->state.ptt_type == RIG_PTT_PARALLEL) {
|
||||||
|
if ((rig->state.ptt_fd = open(rig->state.ptt_path, O_RDWR, 0)) < 0) {
|
||||||
|
rig_debug(RIG_DEBUG_ERR, "Cannot open PTT device \"%s\"\n",
|
||||||
|
rig->state.ptt_path);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
add_opened_rig(rig);
|
add_opened_rig(rig);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -317,6 +329,10 @@ int rig_close(RIG *rig)
|
||||||
else
|
else
|
||||||
close(rig->state.fd);
|
close(rig->state.fd);
|
||||||
rig->state.fd = -1;
|
rig->state.fd = -1;
|
||||||
|
if (rig->state.ptt_fd >= 0) {
|
||||||
|
close(rig->state.ptt_fd);
|
||||||
|
rig->state.ptt_fd = -1;
|
||||||
|
}
|
||||||
rig->state.stream = NULL;
|
rig->state.stream = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -632,9 +648,13 @@ int rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RIG_PTT_SERIAL:
|
case RIG_PTT_SERIAL_DTR:
|
||||||
|
case RIG_PTT_SERIAL_RTS:
|
||||||
case RIG_PTT_PARALLEL:
|
case RIG_PTT_PARALLEL:
|
||||||
return -RIG_ENIMPL; /* not implemented */
|
return -RIG_ENIMPL; /* not implemented(experimental) */
|
||||||
|
|
||||||
|
ptt_set(rig->state.ptt_fd, rig->state.ptt_type, ptt);
|
||||||
|
break;
|
||||||
|
|
||||||
case RIG_PTT_NONE:
|
case RIG_PTT_NONE:
|
||||||
default:
|
default:
|
||||||
|
@ -687,7 +707,8 @@ int rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RIG_PTT_SERIAL:
|
case RIG_PTT_SERIAL_RTS: /* DCD through CTS */
|
||||||
|
case RIG_PTT_SERIAL_DTR: /* DCD through DSR */
|
||||||
case RIG_PTT_PARALLEL:
|
case RIG_PTT_PARALLEL:
|
||||||
return -RIG_ENIMPL; /* not implemented */
|
return -RIG_ENIMPL; /* not implemented */
|
||||||
|
|
||||||
|
@ -1789,6 +1810,13 @@ int rig_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
||||||
* The level value @val can be a float or an integer. See &value_t
|
* The level value @val can be a float or an integer. See &value_t
|
||||||
* for more information.
|
* for more information.
|
||||||
*
|
*
|
||||||
|
* %RIG_LEVEL_STRENGTH: @val is an integer, representing the S Meter
|
||||||
|
* level in dB, according to the ideal S Meter scale. The ideal
|
||||||
|
* S Meter scale is as follow: S0=-54, S1=-48, S2=-42, S3=-36,
|
||||||
|
* S4=-30, S5=-24, S6=-18, S7=-12, S8=-6, S9=0, +10=10, +20=20,
|
||||||
|
* +30=30, +40=40, +50=50 and +60=60. This is the responsability
|
||||||
|
* of the backend to return values calibrated for this scale.
|
||||||
|
*
|
||||||
* RETURN VALUE: The rig_get_level() function returns %RIG_OK
|
* RETURN VALUE: The rig_get_level() function returns %RIG_OK
|
||||||
* if the operation has been sucessful, or a negative value
|
* if the operation has been sucessful, or a negative value
|
||||||
* if an error occured (in which case, cause is set appropriately).
|
* if an error occured (in which case, cause is set appropriately).
|
||||||
|
|
Ładowanie…
Reference in New Issue