diff --git a/rpcrig/rpcrig.x b/rpcrig/rpcrig.x index 9e9d69fc0..eb4824132 100644 --- a/rpcrig/rpcrig.x +++ b/rpcrig/rpcrig.x @@ -2,7 +2,7 @@ % * Hamlib Interface - RPC definitions % * Copyright (c) 2000,2001 by Stephane Fillod and Frank Singleton % * -% * $Id: rpcrig.x,v 1.2 2001-12-26 23:40:54 fillods Exp $ +% * $Id: rpcrig.x,v 1.3 2001-12-27 21:52:07 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 @@ -23,6 +23,7 @@ /* This gets stuffed into the source files. */ #if RPC_HDR %#include +%#include #endif typedef unsigned int model_x; @@ -36,6 +37,8 @@ typedef int dcd_x; typedef long vfo_op_x; typedef long shortfreq_x; typedef unsigned hyper setting_x; +typedef long ant_x; +typedef long ann_x; struct mode_s { rmode_x mode; @@ -125,18 +128,31 @@ struct vfo_op_arg { vfo_op_x op; }; +struct freq_range_s { + freq_x start; + freq_x end; + rmode_x modes; + int low_power; + int high_power; + vfo_x vfo; + ant_x ant; +}; +struct tuning_step_s { + rmode_x modes; + shortfreq_x ts; +}; +struct filter_s { + rmode_x modes; + pbwidth_x width; +}; +struct chan_s { + int start; + int end; + unsigned int type; +}; struct rigstate_s { int itu_region; -#if 0 - freq_range_t rx_range_list[FRQRANGESIZ]; - freq_range_t tx_range_list[FRQRANGESIZ]; - - struct tuning_step_list tuning_steps[TSLSTSIZ]; - - struct filter_list filters[FLTLSTSIZ]; - - chan_t chan_list[CHANLSTSIZ]; shortfreq_x max_rit; shortfreq_x max_xit; @@ -144,16 +160,24 @@ struct rigstate_s { ann_x announces; - int preamp; - int attenuator; - -#endif setting_x has_get_func; setting_x has_set_func; setting_x has_get_level; setting_x has_set_level; setting_x has_get_parm; setting_x has_set_parm; + + int preamp[MAXDBLSTSIZ]; + int attenuator[MAXDBLSTSIZ]; + + freq_range_s rx_range_list[FRQRANGESIZ]; + freq_range_s tx_range_list[FRQRANGESIZ]; + + tuning_step_s tuning_steps[TSLSTSIZ]; + + filter_s filters[FLTLSTSIZ]; + + chan_s chan_list[CHANLSTSIZ]; }; union rigstate_res switch (int rigstatus) { @@ -198,8 +222,6 @@ program RIGPROG { #ifdef RPC_HDR % -%#include -% %#define freq_t2x(t, x) do { *(x) = (t); } while(0) %#define freq_x2t(x) ((freq_t)*(x)) % diff --git a/rpcrig/rpcrig_backend.c b/rpcrig/rpcrig_backend.c index 2e894dd20..7b12e4f3b 100644 --- a/rpcrig/rpcrig_backend.c +++ b/rpcrig/rpcrig_backend.c @@ -2,7 +2,7 @@ * Hamlib RPC backend - main file * Copyright (c) 2001 by Stephane Fillod * - * $Id: rpcrig_backend.c,v 1.4 2001-12-26 23:42:18 fillods Exp $ + * $Id: rpcrig_backend.c,v 1.5 2001-12-27 21:56:01 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 @@ -89,6 +89,7 @@ static int rpcrig_open(RIG *rig) rig_model_t model; const struct rig_caps *caps; char *server; + int i; rs = &rig->state; priv = (struct rpcrig_priv_data*)rs->priv; @@ -140,31 +141,34 @@ static int rpcrig_open(RIG *rig) rs->has_get_parm = rs_res->rigstate_res_u.state.has_get_parm; rs->has_set_parm = rs_res->rigstate_res_u.state.has_set_parm; -#if 0 - rs->vfo_list = 0; - for (i=0; irx_range_list[i].start != 0 && - rs->rx_range_list[i].end != 0) + rs->max_rit = rs_res->rigstate_res_u.state.max_rit; + rs->max_xit = rs_res->rigstate_res_u.state.max_xit; + rs->max_ifshift = rs_res->rigstate_res_u.state.max_ifshift; + rs->announces = rs_res->rigstate_res_u.state.announces; + + memcpy(rs->preamp, rs_res->rigstate_res_u.state.preamp, + sizeof(int)*MAXDBLSTSIZ); + memcpy(rs->attenuator, rs_res->rigstate_res_u.state.attenuator, + sizeof(int)*MAXDBLSTSIZ); + + memcpy(rs->tuning_steps, rs_res->rigstate_res_u.state.tuning_steps, + sizeof(struct tuning_step_list)*TSLSTSIZ); + memcpy(rs->filters, rs_res->rigstate_res_u.state.filters, + sizeof(struct filter_list)*FLTLSTSIZ); + memcpy(rs->chan_list, rs_res->rigstate_res_u.state.chan_list, + sizeof(chan_t)*CHANLSTSIZ); + memcpy(rs->rx_range_list, rs_res->rigstate_res_u.state.rx_range_list, + sizeof(freq_range_t)*FRQRANGESIZ); + memcpy(rs->tx_range_list, rs_res->rigstate_res_u.state.tx_range_list, + sizeof(freq_range_t)*FRQRANGESIZ); + + for (i=0; irx_range_list[i]); i++) { rs->vfo_list |= rs->rx_range_list[i].vfo; - if (rs->tx_range_list[i].start != 0 && - rs->tx_range_list[i].end != 0) + } + for (i=0; itx_range_list[i]); i++) { rs->vfo_list |= rs->tx_range_list[i].vfo; } - memcpy(rs->preamp, caps->preamp, sizeof(int)*MAXDBLSTSIZ); - memcpy(rs->attenuator, caps->attenuator, sizeof(int)*MAXDBLSTSIZ); - memcpy(rs->tuning_steps, caps->tuning_steps, - sizeof(struct tuning_step_list)*TSLSTSIZ); - memcpy(rs->filters, caps->filters, - sizeof(struct filter_list)*FLTLSTSIZ); - memcpy(rs->chan_list, caps->chan_list, sizeof(chan_t)*CHANLSTSIZ); - - rs->max_rit = caps->max_rit; - rs->max_xit = caps->max_xit; - rs->max_ifshift = caps->max_ifshift; - rs->announces = caps->announces; -#endif - return RIG_OK; } diff --git a/rpcrig/rpcrig_proc.c b/rpcrig/rpcrig_proc.c index 5d353948f..5f4756a27 100644 --- a/rpcrig/rpcrig_proc.c +++ b/rpcrig/rpcrig_proc.c @@ -2,7 +2,7 @@ * Hamlib RPC server - procedures * Copyright (c) 2001 by Stephane Fillod * - * $Id: rpcrig_proc.c,v 1.3 2001-12-26 23:44:05 fillods Exp $ + * $Id: rpcrig_proc.c,v 1.4 2001-12-27 21:56:01 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 @@ -55,6 +55,7 @@ model_x *getmodel_1_svc(void *arg, struct svc_req *svc) rigstate_res *getrigstate_1_svc(void *arg, struct svc_req *svc) { static rigstate_res res; + struct rig_state *rs; rig_debug(RIG_DEBUG_VERBOSE,__FUNCTION__ " called\n"); @@ -63,13 +64,36 @@ rigstate_res *getrigstate_1_svc(void *arg, struct svc_req *svc) return &res; } - res.rigstate_res_u.state.itu_region = the_rpc_rig->state.itu_region; - res.rigstate_res_u.state.has_set_func = the_rpc_rig->state.has_set_func; - res.rigstate_res_u.state.has_get_func = the_rpc_rig->state.has_get_func; - res.rigstate_res_u.state.has_set_level = the_rpc_rig->state.has_set_level; - res.rigstate_res_u.state.has_get_level = the_rpc_rig->state.has_get_level; - res.rigstate_res_u.state.has_set_parm = the_rpc_rig->state.has_set_parm; - res.rigstate_res_u.state.has_get_parm = the_rpc_rig->state.has_get_parm; + rs = &the_rpc_rig->state; + + res.rigstate_res_u.state.itu_region = rs->itu_region; + res.rigstate_res_u.state.has_set_func = rs->has_set_func; + res.rigstate_res_u.state.has_get_func = rs->has_get_func; + res.rigstate_res_u.state.has_set_level = rs->has_set_level; + res.rigstate_res_u.state.has_get_level = rs->has_get_level; + res.rigstate_res_u.state.has_set_parm = rs->has_set_parm; + res.rigstate_res_u.state.has_get_parm = rs->has_get_parm; + + res.rigstate_res_u.state.max_rit = rs->max_rit; + res.rigstate_res_u.state.max_xit = rs->max_xit; + res.rigstate_res_u.state.max_ifshift = rs->max_ifshift; + res.rigstate_res_u.state.announces = rs->announces; + + memcpy(res.rigstate_res_u.state.preamp, rs->preamp, + sizeof(int)*MAXDBLSTSIZ); + memcpy(res.rigstate_res_u.state.attenuator, rs->attenuator, + sizeof(int)*MAXDBLSTSIZ); + + memcpy(res.rigstate_res_u.state.tuning_steps, rs->tuning_steps, + sizeof(struct tuning_step_list)*TSLSTSIZ); + memcpy(res.rigstate_res_u.state.filters, rs->filters, + sizeof(struct filter_list)*FLTLSTSIZ); + memcpy(res.rigstate_res_u.state.chan_list, rs->chan_list, + sizeof(chan_t)*CHANLSTSIZ); + memcpy(res.rigstate_res_u.state.rx_range_list, rs->rx_range_list, + sizeof(freq_range_t)*FRQRANGESIZ); + memcpy(res.rigstate_res_u.state.tx_range_list, rs->tx_range_list, + sizeof(freq_range_t)*FRQRANGESIZ); res.rigstatus = RIG_OK;