added error code returns, vfo compensation

git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@127 7ae35d74-ebe9-4afe-98af-79ac388436b8
Hamlib-1.1.0
Stéphane Fillod, F8CFE 2000-09-19 07:00:33 +00:00
rodzic 21a3bea747
commit 2c8b44582c
1 zmienionych plików z 80 dodań i 25 usunięć

Wyświetl plik

@ -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;
} }