WSJT-X/lib/rig_control.c

100 lines
2.2 KiB
C

#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "tstrig.h"
RIG *my_rig; // handle to rig
int set_conf(RIG *my_rig, char *conf_parms);
//------------------------------------------------------------------------
int set_conf(RIG *my_rig, char *conf_parms)
{
char *p, *q, *n;
int iret;
p = conf_parms;
while (p && *p != '\0') {
/* FIXME: left hand value of = cannot be null */
q = strchr(p, '=');
if ( !q )
return -RIG_EINVAL;
*q++ = '\0';
n = strchr(q, ',');
if (n) *n++ = '\0';
iret = rig_set_conf(my_rig, rig_token_lookup(my_rig, p), q);
if (iret != RIG_OK)
return iret;
p = n;
}
return RIG_OK;
}
//------------------------------------------------------------------------
int rigOpen(int verbose, rig_model_t my_model, const char* rig_file,
int serial_rate, const char* conf_parms2)
{
int iret; /* generic return code from functions */
char *civaddr = NULL; /* NULL means no need to set conf */
// const char *rig_file;
// const char *conf_parms2;
// int serial_rate;
rig_set_debug(verbose);
my_rig=rig_init(my_model);
if (!my_rig) {
// fprintf(stderr, "Unknown rig num %d, or initialization error.\n",my_model);
return -1;
}
// rig_file="COM1";
// serial_rate=4800;
// conf_parms2="data_bits=8,stop_bits=2,serial_handshake=Hardware";
iret=set_conf(my_rig, conf_parms2);
if (iret!=RIG_OK) {
// fprintf(stderr, "Config parameter error: %s\n", rigerror(iret));
return -2;
}
if (rig_file)
strncpy(my_rig->state.rigport.pathname, rig_file, FILPATHLEN - 1);
if (serial_rate!=0)
my_rig->state.rigport.parm.serial.rate = serial_rate;
if (civaddr)
rig_set_conf(my_rig, rig_token_lookup(my_rig, "civaddr"), civaddr);
iret = rig_open(my_rig);
if(iret!=0) return -3;
return 0;
}
int rigSetFreq(int fHz)
{
return rig_set_freq(my_rig,RIG_VFO_CURR,fHz);
}
int rigFreq(int *fHz)
{
int iret=0;
freq_t freq;
iret=rig_get_freq(my_rig, RIG_VFO_CURR, &freq);
*fHz=freq;
return iret;
}
int rigSetPTT(int iptt)
{
return rig_set_ptt(my_rig, RIG_VFO_CURR, iptt);
}
void rigClose()
{
rig_close(my_rig);
rig_cleanup(my_rig);
}