kopia lustrzana https://github.com/Hamlib/Hamlib
added error code returns, vfo compensation
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@127 7ae35d74-ebe9-4afe-98af-79ac388436b8Hamlib-1.1.0
rodzic
21a3bea747
commit
2c8b44582c
105
common/rig.c
105
common/rig.c
|
@ -90,6 +90,7 @@ RIG *rig_init(rig_model_t rig_model)
|
||||||
rig->state.serial_handshake = rig->caps->serial_handshake;
|
rig->state.serial_handshake = rig->caps->serial_handshake;
|
||||||
rig->state.timeout = rig->caps->timeout;
|
rig->state.timeout = rig->caps->timeout;
|
||||||
rig->state.retry = rig->caps->retry;
|
rig->state.retry = rig->caps->retry;
|
||||||
|
rig->state.vfo_comp = 0.0; /* override it with preferences */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* let the backend a chance to setup his private data
|
* let the backend a chance to setup his private data
|
||||||
|
@ -106,7 +107,7 @@ int rig_open(RIG *rig)
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (!rig)
|
if (!rig)
|
||||||
return -1;
|
return RIG_EINVAL;
|
||||||
|
|
||||||
switch(rig->state.port_type) {
|
switch(rig->state.port_type) {
|
||||||
case RIG_PORT_SERIAL:
|
case RIG_PORT_SERIAL:
|
||||||
|
@ -117,7 +118,7 @@ int rig_open(RIG *rig)
|
||||||
|
|
||||||
case RIG_PORT_NETWORK: /* not implemented yet! */
|
case RIG_PORT_NETWORK: /* not implemented yet! */
|
||||||
default:
|
default:
|
||||||
return -3;
|
return RIG_ENIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -127,11 +128,11 @@ int rig_open(RIG *rig)
|
||||||
if (rig->caps->rig_open != NULL)
|
if (rig->caps->rig_open != NULL)
|
||||||
rig->caps->rig_open(rig);
|
rig->caps->rig_open(rig);
|
||||||
|
|
||||||
return 0;
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Examples of typical cmd_* wrapper
|
* Examples of typical rig_* wrapper
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -142,50 +143,102 @@ int rig_open(RIG *rig)
|
||||||
int rig_set_freq(RIG *rig, freq_t freq)
|
int rig_set_freq(RIG *rig, freq_t freq)
|
||||||
{
|
{
|
||||||
if (!rig || !rig->caps)
|
if (!rig || !rig->caps)
|
||||||
return -1; /* EINVAL */
|
return RIG_EINVAL;
|
||||||
|
|
||||||
if (rig->caps->rig_set_freq == NULL)
|
if (rig->state.vfo_comp != 0.0)
|
||||||
return -2; /* not implemented */
|
freq = (freq_t)(rig->state.vfo_comp * freq);
|
||||||
|
|
||||||
|
if (rig->caps->set_freq == NULL)
|
||||||
|
return RIG_ENIMPL; /* not implemented */
|
||||||
else
|
else
|
||||||
return rig->caps->rig_set_freq(rig, freq);
|
return rig->caps->set_freq(rig, freq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* cmd_get_freq
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
int rig_get_freq(RIG *rig, freq_t *freq)
|
||||||
|
{
|
||||||
|
if (!rig || !rig->caps || !freq)
|
||||||
|
return RIG_EINVAL;
|
||||||
|
|
||||||
|
if (rig->caps->get_freq == NULL)
|
||||||
|
return RIG_ENIMPL; /* not implemented */
|
||||||
|
else
|
||||||
|
return rig->caps->get_freq(rig, freq);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cmd_set_mode
|
* cmd_set_mode
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
int rig_set_mode(RIG *rig, rmode_t mode)
|
int rig_set_mode(RIG *rig, rmode_t mode)
|
||||||
{
|
{
|
||||||
if (!rig || !rig->caps)
|
if (!rig || !rig->caps)
|
||||||
return -1; /* EINVAL */
|
return RIG_EINVAL;
|
||||||
|
|
||||||
if (rig->caps->rig_set_mode == NULL)
|
if (rig->caps->set_mode == NULL)
|
||||||
return -2; /* not implemented */
|
return RIG_ENIMPL; /* not implemented */
|
||||||
else
|
else
|
||||||
return rig->caps->rig_set_mode(rig, mode);
|
return rig->caps->set_mode(rig, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* cmd_get_mode
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
int rig_get_mode(RIG *rig, rmode_t *mode)
|
||||||
|
{
|
||||||
|
if (!rig || !rig->caps || !mode)
|
||||||
|
return RIG_EINVAL;
|
||||||
|
|
||||||
|
if (rig->caps->get_mode == NULL)
|
||||||
|
return RIG_ENIMPL; /* not implemented */
|
||||||
|
else
|
||||||
|
return rig->caps->get_mode(rig, mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cmd_set_vfo
|
* cmd_set_vfo
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
int rig_set_vfo(RIG *rig, vfo_t vfo)
|
int rig_set_vfo(RIG *rig, vfo_t vfo)
|
||||||
{
|
{
|
||||||
if (!rig || !rig->caps)
|
if (!rig || !rig->caps)
|
||||||
return -1; /* EINVAL */
|
return RIG_EINVAL;
|
||||||
|
|
||||||
if (rig->caps->rig_set_vfo == NULL)
|
if (rig->caps->set_vfo == NULL)
|
||||||
return -2; /* not implemented */
|
return RIG_ENIMPL; /* not implemented */
|
||||||
else
|
else
|
||||||
return rig->caps->rig_set_vfo(rig, vfo);
|
return rig->caps->set_vfo(rig, vfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* more cmd_* to come -- FS
|
* cmd_get_vfo
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
int rig_get_vfo(RIG *rig, vfo_t *vfo)
|
||||||
|
{
|
||||||
|
if (!rig || !rig->caps || !vfo)
|
||||||
|
return RIG_EINVAL;
|
||||||
|
|
||||||
|
if (rig->caps->get_vfo == NULL)
|
||||||
|
return RIG_ENIMPL; /* not implemented */
|
||||||
|
else
|
||||||
|
return rig->caps->get_vfo(rig, vfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* more rig_* to come -- FS
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -197,18 +250,20 @@ int rig_set_vfo(RIG *rig, vfo_t vfo)
|
||||||
int rig_close(RIG *rig)
|
int rig_close(RIG *rig)
|
||||||
{
|
{
|
||||||
if (rig == NULL || rig->caps)
|
if (rig == NULL || rig->caps)
|
||||||
return -1;
|
return RIG_EINVAL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Let the rig say 73s to the rig
|
* Let the backend say 73s to the rig
|
||||||
*/
|
*/
|
||||||
if (rig->caps->rig_close)
|
if (rig->caps->rig_close)
|
||||||
rig->caps->rig_close(rig);
|
rig->caps->rig_close(rig);
|
||||||
|
|
||||||
if (rig->state.fd != -1)
|
if (rig->state.fd != -1) {
|
||||||
close(rig->state.fd);
|
close(rig->state.fd);
|
||||||
|
rig->state.fd = -1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -217,7 +272,7 @@ int rig_close(RIG *rig)
|
||||||
int rig_cleanup(RIG *rig)
|
int rig_cleanup(RIG *rig)
|
||||||
{
|
{
|
||||||
if (rig == NULL || rig->caps)
|
if (rig == NULL || rig->caps)
|
||||||
return -1;
|
return RIG_EINVAL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* basically free up the priv struct
|
* basically free up the priv struct
|
||||||
|
@ -227,7 +282,7 @@ int rig_cleanup(RIG *rig)
|
||||||
|
|
||||||
free(rig);
|
free(rig);
|
||||||
|
|
||||||
return 0;
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue