From: <fi...@us...> - 2008-01-05 18:13:18
|
Update of /cvsroot/hamlib/hamlib/tests In directory sc8-pr-cvs17.sourceforge.net:/tmp/cvs-serv5622 Modified Files: dumpcaps.c rigctl.c rigctl_parse.c rigctl_parse.h rigctld.c Log Message: make dumpcaps also through rigctld Index: dumpcaps.c =================================================================== RCS file: /cvsroot/hamlib/hamlib/tests/dumpcaps.c,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -r1.44 -r1.45 *** dumpcaps.c 3 Apr 2005 18:36:36 -0000 1.44 --- dumpcaps.c 5 Jan 2008 18:13:12 -0000 1.45 *************** *** 1,4 **** /* ! * dumpcaps.c - Copyright (C) 2000-2004 Stephane Fillod * This programs dumps the capabilities of a backend rig. * --- 1,4 ---- /* ! * dumpcaps.c - Copyright (C) 2000-2008 Stephane Fillod * This programs dumps the capabilities of a backend rig. * *************** *** 41,50 **** int range_sanity_check(const struct freq_range_list range_list[], int rx); int ts_sanity_check(const struct tuning_step_list tuning_step[]); ! static void dump_chan_caps(const channel_cap_t *chan); /* * the rig may be in rig_init state, but not openned */ ! int dumpcaps (RIG* rig) { const struct rig_caps *caps; --- 41,50 ---- int range_sanity_check(const struct freq_range_list range_list[], int rx); int ts_sanity_check(const struct tuning_step_list tuning_step[]); ! static void dump_chan_caps(const channel_cap_t *chan, FILE *fout); /* * the rig may be in rig_init state, but not openned */ ! int dumpcaps (RIG* rig, FILE *fout) { const struct rig_caps *caps; *************** *** 60,176 **** caps = rig->caps; ! printf("Caps dump for model %d\n",caps->rig_model); ! printf("Model name:\t%s\n",caps->model_name); ! printf("Mfg name:\t%s\n",caps->mfg_name); ! printf("Backend version:\t%s\n",caps->version); ! printf("Backend copyright:\t%s\n",caps->copyright); ! printf("Backend status:\t%s\n", rig_strstatus(caps->status)); ! printf("Rig type:\t"); switch (caps->rig_type & RIG_TYPE_MASK) { case RIG_TYPE_TRANSCEIVER: ! printf("Transceiver\n"); break; case RIG_TYPE_HANDHELD: ! printf("Handheld\n"); break; case RIG_TYPE_MOBILE: ! printf("Mobile\n"); break; case RIG_TYPE_RECEIVER: ! printf("Receiver\n"); break; case RIG_TYPE_PCRECEIVER: ! printf("PC Receiver\n"); break; case RIG_TYPE_SCANNER: ! printf("Scanner\n"); break; case RIG_TYPE_TRUNKSCANNER: ! printf("Trunking scanner\n"); break; case RIG_TYPE_COMPUTER: ! printf("Computer\n"); break; case RIG_TYPE_TUNER: ! printf("Tuner\n"); break; case RIG_TYPE_OTHER: ! printf("Other\n"); break; default: ! printf("Unknown\n"); backend_warnings++; } ! printf("PTT type:\t"); switch (caps->ptt_type) { case RIG_PTT_RIG: ! printf("rig capable\n"); break; case RIG_PTT_PARALLEL: ! printf("thru parallel port (DATA0)\n"); break; case RIG_PTT_SERIAL_RTS: ! printf("thru serial port (CTS/RTS)\n"); break; case RIG_PTT_SERIAL_DTR: ! printf("thru serial port (DTR/DSR)\n"); break; case RIG_PTT_NONE: ! printf("None\n"); break; default: ! printf("Unknown\n"); backend_warnings++; } ! printf("DCD type:\t"); switch (caps->dcd_type) { case RIG_DCD_RIG: ! printf("rig capable\n"); break; case RIG_DCD_PARALLEL: ! printf("thru parallel port (DATA1? STROBE?)\n"); break; case RIG_DCD_SERIAL_CTS: ! printf("thru serial port (CTS/RTS)\n"); break; case RIG_DCD_SERIAL_DSR: ! printf("thru serial port (DTR/DSR)\n"); break; case RIG_DCD_SERIAL_CAR: ! printf("thru serial port (CD)\n"); break; case RIG_DCD_NONE: ! printf("None\n"); break; default: ! printf("Unknown\n"); backend_warnings++; } ! printf("Port type:\t"); switch (caps->port_type) { case RIG_PORT_SERIAL: ! printf("RS-232\n"); break; case RIG_PORT_PARALLEL: ! printf("Parallel\n"); break; case RIG_PORT_DEVICE: ! printf("device driver\n"); break; case RIG_PORT_NETWORK: ! printf("network link\n"); break; case RIG_PORT_NONE: ! printf("None\n"); break; default: ! printf("Unknown\n"); backend_warnings++; } ! printf("Serial speed: %d..%d bauds, %d%c%d %s\n", caps->serial_rate_min, caps->serial_rate_max,caps->serial_data_bits, caps->serial_parity==RIG_PARITY_NONE?'N': --- 60,176 ---- caps = rig->caps; ! fprintf(fout, "Caps dump for model %d\n",caps->rig_model); ! fprintf(fout, "Model name:\t%s\n",caps->model_name); ! fprintf(fout, "Mfg name:\t%s\n",caps->mfg_name); ! fprintf(fout, "Backend version:\t%s\n",caps->version); ! fprintf(fout, "Backend copyright:\t%s\n",caps->copyright); ! fprintf(fout, "Backend status:\t%s\n", rig_strstatus(caps->status)); ! fprintf(fout, "Rig type:\t"); switch (caps->rig_type & RIG_TYPE_MASK) { case RIG_TYPE_TRANSCEIVER: ! fprintf(fout, "Transceiver\n"); break; case RIG_TYPE_HANDHELD: ! fprintf(fout, "Handheld\n"); break; case RIG_TYPE_MOBILE: ! fprintf(fout, "Mobile\n"); break; case RIG_TYPE_RECEIVER: ! fprintf(fout, "Receiver\n"); break; case RIG_TYPE_PCRECEIVER: ! fprintf(fout, "PC Receiver\n"); break; case RIG_TYPE_SCANNER: ! fprintf(fout, "Scanner\n"); break; case RIG_TYPE_TRUNKSCANNER: ! fprintf(fout, "Trunking scanner\n"); break; case RIG_TYPE_COMPUTER: ! fprintf(fout, "Computer\n"); break; case RIG_TYPE_TUNER: ! fprintf(fout, "Tuner\n"); break; case RIG_TYPE_OTHER: ! fprintf(fout, "Other\n"); break; default: ! fprintf(fout, "Unknown\n"); backend_warnings++; } ! fprintf(fout, "PTT type:\t"); switch (caps->ptt_type) { case RIG_PTT_RIG: ! fprintf(fout, "rig capable\n"); break; case RIG_PTT_PARALLEL: ! fprintf(fout, "thru parallel port (DATA0)\n"); break; case RIG_PTT_SERIAL_RTS: ! fprintf(fout, "thru serial port (CTS/RTS)\n"); break; case RIG_PTT_SERIAL_DTR: ! fprintf(fout, "thru serial port (DTR/DSR)\n"); break; case RIG_PTT_NONE: ! fprintf(fout, "None\n"); break; default: ! fprintf(fout, "Unknown\n"); backend_warnings++; } ! fprintf(fout, "DCD type:\t"); switch (caps->dcd_type) { case RIG_DCD_RIG: ! fprintf(fout, "rig capable\n"); break; case RIG_DCD_PARALLEL: ! fprintf(fout, "thru parallel port (DATA1? STROBE?)\n"); break; case RIG_DCD_SERIAL_CTS: ! fprintf(fout, "thru serial port (CTS/RTS)\n"); break; case RIG_DCD_SERIAL_DSR: ! fprintf(fout, "thru serial port (DTR/DSR)\n"); break; case RIG_DCD_SERIAL_CAR: ! fprintf(fout, "thru serial port (CD)\n"); break; case RIG_DCD_NONE: ! fprintf(fout, "None\n"); break; default: ! fprintf(fout, "Unknown\n"); backend_warnings++; } ! fprintf(fout, "Port type:\t"); switch (caps->port_type) { case RIG_PORT_SERIAL: ! fprintf(fout, "RS-232\n"); break; case RIG_PORT_PARALLEL: ! fprintf(fout, "Parallel\n"); break; case RIG_PORT_DEVICE: ! fprintf(fout, "device driver\n"); break; case RIG_PORT_NETWORK: ! fprintf(fout, "network link\n"); break; case RIG_PORT_NONE: ! fprintf(fout, "None\n"); break; default: ! fprintf(fout, "Unknown\n"); backend_warnings++; } ! fprintf(fout, "Serial speed: %d..%d bauds, %d%c%d %s\n", caps->serial_rate_min, caps->serial_rate_max,caps->serial_data_bits, caps->serial_parity==RIG_PARITY_NONE?'N': *************** *** 181,232 **** ); ! printf("Write delay %dms, timeout %dms, %d retry\n", caps->write_delay,caps->timeout,caps->retry); ! printf("Post Write delay %dms\n", caps->post_write_delay); ! printf("Has targetable VFO: %s\n", caps->targetable_vfo?"yes":"no"); ! printf("Has transceive: %s\n", caps->transceive?"yes":"no"); ! printf("Announce: 0x%x\n", caps->announces); ! printf("Max RIT: -%ld.%ldkHz/+%ld.%ldkHz\n", caps->max_rit/1000, caps->max_rit%1000, caps->max_rit/1000, caps->max_rit%1000); ! printf("Max XIT: -%ld.%ldkHz/+%ld.%ldkHz\n", caps->max_xit/1000, caps->max_xit%1000, caps->max_xit/1000, caps->max_xit%1000); ! printf("Max IF-SHIFT: -%ld.%ldkHz/+%ld.%ldkHz\n", caps->max_ifshift/1000, caps->max_ifshift%1000, caps->max_ifshift/1000, caps->max_ifshift%1000); ! printf("Preamp:"); for(i=0; i<MAXDBLSTSIZ && caps->preamp[i] != 0; i++) ! printf(" %ddB", caps->preamp[i]); if (i == 0) ! printf(" none"); ! printf("\n"); ! printf("Attenuator:"); for(i=0; i<MAXDBLSTSIZ && caps->attenuator[i] != 0; i++) ! printf(" %ddB",caps->attenuator[i]); if (i == 0) ! printf(" none"); ! printf("\n"); sprintf_func(prntbuf, caps->has_get_func); ! printf("Get functions: %s\n", prntbuf); sprintf_func(prntbuf, caps->has_set_func); ! printf("Set functions: %s\n", prntbuf); sprintf_level_gran(prntbuf, caps->has_get_level, caps->level_gran); ! printf("Get level: %s\n", prntbuf); if ((caps->has_get_level&RIG_LEVEL_SQLSTAT)) { ! printf("Warning: backend uses deprecated SQLSTAT level!\n"); backend_warnings++; } --- 181,232 ---- ); ! fprintf(fout, "Write delay %dms, timeout %dms, %d retry\n", caps->write_delay,caps->timeout,caps->retry); ! fprintf(fout, "Post Write delay %dms\n", caps->post_write_delay); ! fprintf(fout, "Has targetable VFO: %s\n", caps->targetable_vfo?"yes":"no"); ! fprintf(fout, "Has transceive: %s\n", caps->transceive?"yes":"no"); ! fprintf(fout, "Announce: 0x%x\n", caps->announces); ! fprintf(fout, "Max RIT: -%ld.%ldkHz/+%ld.%ldkHz\n", caps->max_rit/1000, caps->max_rit%1000, caps->max_rit/1000, caps->max_rit%1000); ! fprintf(fout, "Max XIT: -%ld.%ldkHz/+%ld.%ldkHz\n", caps->max_xit/1000, caps->max_xit%1000, caps->max_xit/1000, caps->max_xit%1000); ! fprintf(fout, "Max IF-SHIFT: -%ld.%ldkHz/+%ld.%ldkHz\n", caps->max_ifshift/1000, caps->max_ifshift%1000, caps->max_ifshift/1000, caps->max_ifshift%1000); ! fprintf(fout, "Preamp:"); for(i=0; i<MAXDBLSTSIZ && caps->preamp[i] != 0; i++) ! fprintf(fout, " %ddB", caps->preamp[i]); if (i == 0) ! fprintf(fout, " none"); ! fprintf(fout, "\n"); ! fprintf(fout, "Attenuator:"); for(i=0; i<MAXDBLSTSIZ && caps->attenuator[i] != 0; i++) ! fprintf(fout, " %ddB",caps->attenuator[i]); if (i == 0) ! fprintf(fout, " none"); ! fprintf(fout, "\n"); sprintf_func(prntbuf, caps->has_get_func); ! fprintf(fout, "Get functions: %s\n", prntbuf); sprintf_func(prntbuf, caps->has_set_func); ! fprintf(fout, "Set functions: %s\n", prntbuf); sprintf_level_gran(prntbuf, caps->has_get_level, caps->level_gran); ! fprintf(fout, "Get level: %s\n", prntbuf); if ((caps->has_get_level&RIG_LEVEL_SQLSTAT)) { ! fprintf(fout, "Warning: backend uses deprecated SQLSTAT level!\n"); backend_warnings++; } *************** *** 234,263 **** if ((caps->has_get_level&RIG_LEVEL_RAWSTR) && caps->str_cal.size == 0) { ! printf("Warning: backend has get RAWSTR, but not calibration data\n"); backend_warnings++; } sprintf_level_gran(prntbuf, caps->has_set_level, caps->level_gran); ! printf("Set level: %s\n", prntbuf); if (caps->has_set_level&RIG_LEVEL_READONLY_LIST) { ! printf("Warning: backend can set readonly levels!\n"); backend_warnings++; } ! printf("Extra levels:"); rig_ext_level_foreach(rig, print_ext, NULL); ! printf("\n"); sprintf_parm_gran(prntbuf, caps->has_get_parm, caps->parm_gran); ! printf("Get parameters: %s\n", prntbuf); sprintf_parm_gran(prntbuf, caps->has_set_parm, caps->parm_gran); ! printf("Set parameters: %s\n", prntbuf); if (caps->has_set_parm&RIG_PARM_READONLY_LIST) { ! printf("Warning: backend can set readonly parms!\n"); backend_warnings++; } ! printf("Extra parameters:"); ! rig_ext_parm_foreach(rig, print_ext, NULL); ! printf("\n"); --- 234,263 ---- if ((caps->has_get_level&RIG_LEVEL_RAWSTR) && caps->str_cal.size == 0) { ! fprintf(fout, "Warning: backend has get RAWSTR, but not calibration data\n"); backend_warnings++; } sprintf_level_gran(prntbuf, caps->has_set_level, caps->level_gran); ! fprintf(fout, "Set level: %s\n", prntbuf); if (caps->has_set_level&RIG_LEVEL_READONLY_LIST) { ! fprintf(fout, "Warning: backend can set readonly levels!\n"); backend_warnings++; } ! fprintf(fout, "Extra levels:"); rig_ext_level_foreach(rig, print_ext, NULL); ! fprintf(fout, "\n"); sprintf_parm_gran(prntbuf, caps->has_get_parm, caps->parm_gran); ! fprintf(fout, "Get parameters: %s\n", prntbuf); sprintf_parm_gran(prntbuf, caps->has_set_parm, caps->parm_gran); ! fprintf(fout, "Set parameters: %s\n", prntbuf); if (caps->has_set_parm&RIG_PARM_READONLY_LIST) { ! fprintf(fout, "Warning: backend can set readonly parms!\n"); backend_warnings++; } ! fprintf(fout, "Extra parameters:"); ! rig_ext_parm_foreach(rig, print_ext, fout); ! fprintf(fout, "\n"); *************** *** 266,308 **** else strcpy(prntbuf," none! This backend might be bogus!\n"); ! printf("VFO list: %s\n", prntbuf); sprintf_vfop(prntbuf, caps->vfo_ops); ! printf("VFO Ops: %s\n", prntbuf); sprintf_scan(prntbuf, caps->scan_ops); ! printf("Scan Ops: %s\n", prntbuf); ! printf("Number of banks:\t%d\n", caps->bank_qty); ! printf("Memory name desc size:\t%d\n", caps->chan_desc_sz); ! printf("Memories:"); for (i=0; i<CHANLSTSIZ && caps->chan_list[i].type; i++) { ! printf("\n\t%d..%d: \t%s", caps->chan_list[i].start, caps->chan_list[i].end, decode_mtype(caps->chan_list[i].type)); ! printf("\n\t mem caps: "); ! dump_chan_caps(&caps->chan_list[i].mem_caps); } if (i == 0) ! printf(" none"); ! printf("\n"); /* TODO: print rx/tx ranges here */ status = range_sanity_check(caps->tx_range_list1,0); ! printf("TX ranges status, region 1:\t%s (%d)\n",status?"Bad":"OK",status); if (status) backend_warnings++; status = range_sanity_check(caps->rx_range_list1,1); ! printf("RX ranges status, region 1:\t%s (%d)\n",status?"Bad":"OK",status); if (status) backend_warnings++; status = range_sanity_check(caps->tx_range_list2,0); ! printf("TX ranges status, region 2:\t%s (%d)\n",status?"Bad":"OK",status); if (status) backend_warnings++; status = range_sanity_check(caps->rx_range_list2,1); ! printf("RX ranges status, region 2:\t%s (%d)\n",status?"Bad":"OK",status); if (status) backend_warnings++; ! printf("Tuning steps:"); for (i=0; i<TSLSTSIZ && !RIG_IS_TS_END(caps->tuning_steps[i]); i++) { if (caps->tuning_steps[i].ts == RIG_TS_ANY) --- 266,308 ---- else strcpy(prntbuf," none! This backend might be bogus!\n"); ! fprintf(fout, "VFO list: %s\n", prntbuf); sprintf_vfop(prntbuf, caps->vfo_ops); ! fprintf(fout, "VFO Ops: %s\n", prntbuf); sprintf_scan(prntbuf, caps->scan_ops); ! fprintf(fout, "Scan Ops: %s\n", prntbuf); ! fprintf(fout, "Number of banks:\t%d\n", caps->bank_qty); ! fprintf(fout, "Memory name desc size:\t%d\n", caps->chan_desc_sz); ! fprintf(fout, "Memories:"); for (i=0; i<CHANLSTSIZ && caps->chan_list[i].type; i++) { ! fprintf(fout, "\n\t%d..%d: \t%s", caps->chan_list[i].start, caps->chan_list[i].end, decode_mtype(caps->chan_list[i].type)); ! fprintf(fout, "\n\t mem caps: "); ! dump_chan_caps(&caps->chan_list[i].mem_caps, fout); } if (i == 0) ! fprintf(fout, " none"); ! fprintf(fout, "\n"); /* TODO: print rx/tx ranges here */ status = range_sanity_check(caps->tx_range_list1,0); ! fprintf(fout, "TX ranges status, region 1:\t%s (%d)\n",status?"Bad":"OK",status); if (status) backend_warnings++; status = range_sanity_check(caps->rx_range_list1,1); ! fprintf(fout, "RX ranges status, region 1:\t%s (%d)\n",status?"Bad":"OK",status); if (status) backend_warnings++; status = range_sanity_check(caps->tx_range_list2,0); ! fprintf(fout, "TX ranges status, region 2:\t%s (%d)\n",status?"Bad":"OK",status); if (status) backend_warnings++; status = range_sanity_check(caps->rx_range_list2,1); ! fprintf(fout, "RX ranges status, region 2:\t%s (%d)\n",status?"Bad":"OK",status); if (status) backend_warnings++; ! fprintf(fout, "Tuning steps:"); for (i=0; i<TSLSTSIZ && !RIG_IS_TS_END(caps->tuning_steps[i]); i++) { if (caps->tuning_steps[i].ts == RIG_TS_ANY) *************** *** 311,326 **** sprintf_freq(freqbuf,caps->tuning_steps[i].ts); sprintf_mode(prntbuf,caps->tuning_steps[i].modes); ! printf("\n\t%s: \t%s", freqbuf, prntbuf); } if (i==0) { ! printf(" none! This backend might be bogus!"); backend_warnings++; } ! printf("\n"); status = ts_sanity_check(caps->tuning_steps); ! printf("Tuning steps status:\t%s (%d)\n",status?"Bad":"OK",status); if (status) backend_warnings++; ! printf("Filters:"); for (i=0; i<FLTLSTSIZ && !RIG_IS_FLT_END(caps->filters[i]); i++) { if (caps->filters[i].width == RIG_FLT_ANY) --- 311,326 ---- sprintf_freq(freqbuf,caps->tuning_steps[i].ts); sprintf_mode(prntbuf,caps->tuning_steps[i].modes); ! fprintf(fout, "\n\t%s: \t%s", freqbuf, prntbuf); } if (i==0) { ! fprintf(fout, " none! This backend might be bogus!"); backend_warnings++; } ! fprintf(fout, "\n"); status = ts_sanity_check(caps->tuning_steps); ! fprintf(fout, "Tuning steps status:\t%s (%d)\n",status?"Bad":"OK",status); if (status) backend_warnings++; ! fprintf(fout, "Filters:"); for (i=0; i<FLTLSTSIZ && !RIG_IS_FLT_END(caps->filters[i]); i++) { if (caps->filters[i].width == RIG_FLT_ANY) *************** *** 329,341 **** sprintf_freq(freqbuf,caps->filters[i].width); sprintf_mode(prntbuf,caps->filters[i].modes); ! printf("\n\t%s: \t%s", freqbuf, prntbuf); } if (i==0) { ! printf(" none! This backend might be bogus!"); backend_warnings++; } ! printf("\n"); ! printf("Bandwidths:"); for (i=1; i < 1<<10; i<<=1) { pbwidth_t pbnorm = rig_passband_normal(rig, i); --- 329,341 ---- sprintf_freq(freqbuf,caps->filters[i].width); sprintf_mode(prntbuf,caps->filters[i].modes); ! fprintf(fout, "\n\t%s: \t%s", freqbuf, prntbuf); } if (i==0) { ! fprintf(fout, " none! This backend might be bogus!"); backend_warnings++; } ! fprintf(fout, "\n"); ! fprintf(fout, "Bandwidths:"); for (i=1; i < 1<<10; i<<=1) { pbwidth_t pbnorm = rig_passband_normal(rig, i); *************** *** 345,359 **** sprintf_freq(freqbuf, pbnorm); ! printf("\n\t%s\tnormal: %s,\t", rig_strrmode(i), freqbuf); sprintf_freq(freqbuf, rig_passband_narrow(rig, i)); ! printf("narrow: %s,\t", freqbuf); sprintf_freq(freqbuf, rig_passband_wide(rig, i)); ! printf("wide: %s", freqbuf); } ! printf("\n"); ! printf("Has priv data:\t%c\n",caps->priv!=NULL?'Y':'N'); /* * Status is either 'Y'es, 'E'mulated, 'N'o --- 345,359 ---- sprintf_freq(freqbuf, pbnorm); ! fprintf(fout, "\n\t%s\tnormal: %s,\t", rig_strrmode(i), freqbuf); sprintf_freq(freqbuf, rig_passband_narrow(rig, i)); ! fprintf(fout, "narrow: %s,\t", freqbuf); sprintf_freq(freqbuf, rig_passband_wide(rig, i)); ! fprintf(fout, "wide: %s", freqbuf); } ! fprintf(fout, "\n"); ! fprintf(fout, "Has priv data:\t%c\n",caps->priv!=NULL?'Y':'N'); /* * Status is either 'Y'es, 'E'mulated, 'N'o *************** *** 361,444 **** * TODO: keep me up-to-date with API call list! */ ! printf("Has init:\t%c\n",caps->rig_init!=NULL?'Y':'N'); ! printf("Has cleanup:\t%c\n",caps->rig_cleanup!=NULL?'Y':'N'); ! printf("Has open:\t%c\n",caps->rig_open!=NULL?'Y':'N'); ! printf("Has close:\t%c\n",caps->rig_close!=NULL?'Y':'N'); ! printf("Can set conf:\t%c\n",caps->set_conf!=NULL?'Y':'N'); ! printf("Can get conf:\t%c\n",caps->get_conf!=NULL?'Y':'N'); ! printf("Can set frequency:\t%c\n",caps->set_freq!=NULL?'Y':'N'); ! printf("Can get frequency:\t%c\n",caps->get_freq!=NULL?'Y':'N'); ! printf("Can set mode:\t%c\n",caps->set_mode!=NULL?'Y':'N'); ! printf("Can get mode:\t%c\n",caps->get_mode!=NULL?'Y':'N'); ! printf("Can set vfo:\t%c\n",caps->set_vfo!=NULL?'Y':'N'); ! printf("Can get vfo:\t%c\n",caps->get_vfo!=NULL?'Y':'N'); ! printf("Can set ptt:\t%c\n",caps->set_ptt!=NULL?'Y':'N'); ! printf("Can get ptt:\t%c\n",caps->get_ptt!=NULL?'Y':'N'); ! printf("Can get dcd:\t%c\n",caps->get_dcd!=NULL?'Y':'N'); ! printf("Can set repeater duplex:\t%c\n",caps->set_rptr_shift!=NULL?'Y':'N'); ! printf("Can get repeater duplex:\t%c\n",caps->get_rptr_shift!=NULL?'Y':'N'); ! printf("Can set repeater offset:\t%c\n",caps->set_rptr_offs!=NULL?'Y':'N'); ! printf("Can get repeater offset:\t%c\n",caps->get_rptr_offs!=NULL?'Y':'N'); can_esplit = caps->set_vfo || (rig_has_vfo_op(rig, RIG_OP_TOGGLE) && caps->vfo_op); ! printf("Can set split freq:\t%c\n",caps->set_split_freq!=NULL?'Y': (can_esplit&&caps->set_freq?'E':'N')); ! printf("Can get split freq:\t%c\n",caps->get_split_freq!=NULL?'Y': (can_esplit&&caps->get_freq?'E':'N')); ! printf("Can set split mode:\t%c\n",caps->set_split_mode!=NULL?'Y': (can_esplit&&caps->set_mode?'E':'N')); ! printf("Can get split mode:\t%c\n",caps->get_split_mode!=NULL?'Y': (can_esplit&&caps->get_mode?'E':'N')); ! printf("Can set split vfo:\t%c\n",caps->set_split_vfo!=NULL?'Y':'N'); ! printf("Can get split vfo:\t%c\n",caps->get_split_vfo!=NULL?'Y':'N'); ! printf("Can set tuning step:\t%c\n",caps->set_ts!=NULL?'Y':'N'); ! printf("Can get tuning step:\t%c\n",caps->get_ts!=NULL?'Y':'N'); ! printf("Can set RIT:\t%c\n",caps->set_rit!=NULL?'Y':'N'); ! printf("Can get RIT:\t%c\n",caps->get_rit!=NULL?'Y':'N'); ! printf("Can set XIT:\t%c\n",caps->set_xit!=NULL?'Y':'N'); ! printf("Can get XIT:\t%c\n",caps->get_xit!=NULL?'Y':'N'); ! printf("Can set CTCSS:\t%c\n",caps->set_ctcss_tone!=NULL?'Y':'N'); ! printf("Can get CTCSS:\t%c\n",caps->get_ctcss_tone!=NULL?'Y':'N'); ! printf("Can set DCS:\t%c\n",caps->set_dcs_code!=NULL?'Y':'N'); ! printf("Can get DCS:\t%c\n",caps->get_dcs_code!=NULL?'Y':'N'); ! printf("Can set CTCSS squelch:\t%c\n",caps->set_ctcss_sql!=NULL?'Y':'N'); ! printf("Can get CTCSS squelch:\t%c\n",caps->get_ctcss_sql!=NULL?'Y':'N'); ! printf("Can set DCS squelch:\t%c\n",caps->set_dcs_sql!=NULL?'Y':'N'); ! printf("Can get DCS squelch:\t%c\n",caps->get_dcs_sql!=NULL?'Y':'N'); ! printf("Can set power stat:\t%c\n",caps->set_powerstat!=NULL?'Y':'N'); ! printf("Can get power stat:\t%c\n",caps->get_powerstat!=NULL?'Y':'N'); ! printf("Can reset:\t%c\n",caps->reset!=NULL?'Y':'N'); ! printf("Can get ant:\t%c\n",caps->get_ant!=NULL?'Y':'N'); ! printf("Can set ant:\t%c\n",caps->set_ant!=NULL?'Y':'N'); ! printf("Can set transceive:\t%c\n",caps->set_trn!=NULL?'Y':'N'); ! printf("Can get transceive:\t%c\n",caps->get_trn!=NULL?'Y':'N'); ! printf("Can set func:\t%c\n",caps->set_func!=NULL?'Y':'N'); ! printf("Can get func:\t%c\n",caps->get_func!=NULL?'Y':'N'); ! printf("Can set level:\t%c\n",caps->set_level!=NULL?'Y':'N'); ! printf("Can get level:\t%c\n",caps->get_level!=NULL?'Y':'N'); ! printf("Can set param:\t%c\n",caps->set_parm!=NULL?'Y':'N'); ! printf("Can get param:\t%c\n",caps->get_parm!=NULL?'Y':'N'); ! printf("Can send DTMF:\t%c\n",caps->send_dtmf!=NULL?'Y':'N'); ! printf("Can recv DTMF:\t%c\n",caps->recv_dtmf!=NULL?'Y':'N'); ! printf("Can send Morse:\t%c\n",caps->send_morse!=NULL?'Y':'N'); ! printf("Can decode events:\t%c\n",caps->decode_event!=NULL?'Y':'N'); ! printf("Can set bank:\t%c\n",caps->set_bank!=NULL?'Y':'N'); ! printf("Can set mem:\t%c\n",caps->set_mem!=NULL?'Y':'N'); ! printf("Can get mem:\t%c\n",caps->get_mem!=NULL?'Y':'N'); can_echannel = caps->set_mem && caps->set_vfo; ! printf("Can set channel:\t%c\n",caps->set_channel!=NULL?'Y': (can_echannel?'E':'N')); ! printf("Can get channel:\t%c\n",caps->get_channel!=NULL?'Y': (can_echannel?'E':'N')); ! printf("Can ctl mem/vfo:\t%c\n",caps->vfo_op!=NULL?'Y':'N'); ! printf("Can scan:\t%c\n",caps->scan!=NULL?'Y':'N'); ! printf("Can get info:\t%c\n",caps->get_info!=NULL?'Y':'N'); ! printf("\nOverall backend warnings: %d\n", backend_warnings); return backend_warnings; --- 361,444 ---- * TODO: keep me up-to-date with API call list! */ ! fprintf(fout, "Has init:\t%c\n",caps->rig_init!=NULL?'Y':'N'); ! fprintf(fout, "Has cleanup:\t%c\n",caps->rig_cleanup!=NULL?'Y':'N'); ! fprintf(fout, "Has open:\t%c\n",caps->rig_open!=NULL?'Y':'N'); ! fprintf(fout, "Has close:\t%c\n",caps->rig_close!=NULL?'Y':'N'); ! fprintf(fout, "Can set conf:\t%c\n",caps->set_conf!=NULL?'Y':'N'); ! fprintf(fout, "Can get conf:\t%c\n",caps->get_conf!=NULL?'Y':'N'); ! fprintf(fout, "Can set frequency:\t%c\n",caps->set_freq!=NULL?'Y':'N'); ! fprintf(fout, "Can get frequency:\t%c\n",caps->get_freq!=NULL?'Y':'N'); ! fprintf(fout, "Can set mode:\t%c\n",caps->set_mode!=NULL?'Y':'N'); ! fprintf(fout, "Can get mode:\t%c\n",caps->get_mode!=NULL?'Y':'N'); ! fprintf(fout, "Can set vfo:\t%c\n",caps->set_vfo!=NULL?'Y':'N'); ! fprintf(fout, "Can get vfo:\t%c\n",caps->get_vfo!=NULL?'Y':'N'); ! fprintf(fout, "Can set ptt:\t%c\n",caps->set_ptt!=NULL?'Y':'N'); ! fprintf(fout, "Can get ptt:\t%c\n",caps->get_ptt!=NULL?'Y':'N'); ! fprintf(fout, "Can get dcd:\t%c\n",caps->get_dcd!=NULL?'Y':'N'); ! fprintf(fout, "Can set repeater duplex:\t%c\n",caps->set_rptr_shift!=NULL?'Y':'N'); ! fprintf(fout, "Can get repeater duplex:\t%c\n",caps->get_rptr_shift!=NULL?'Y':'N'); ! fprintf(fout, "Can set repeater offset:\t%c\n",caps->set_rptr_offs!=NULL?'Y':'N'); ! fprintf(fout, "Can get repeater offset:\t%c\n",caps->get_rptr_offs!=NULL?'Y':'N'); can_esplit = caps->set_vfo || (rig_has_vfo_op(rig, RIG_OP_TOGGLE) && caps->vfo_op); ! fprintf(fout, "Can set split freq:\t%c\n",caps->set_split_freq!=NULL?'Y': (can_esplit&&caps->set_freq?'E':'N')); ! fprintf(fout, "Can get split freq:\t%c\n",caps->get_split_freq!=NULL?'Y': (can_esplit&&caps->get_freq?'E':'N')); ! fprintf(fout, "Can set split mode:\t%c\n",caps->set_split_mode!=NULL?'Y': (can_esplit&&caps->set_mode?'E':'N')); ! fprintf(fout, "Can get split mode:\t%c\n",caps->get_split_mode!=NULL?'Y': (can_esplit&&caps->get_mode?'E':'N')); ! fprintf(fout, "Can set split vfo:\t%c\n",caps->set_split_vfo!=NULL?'Y':'N'); ! fprintf(fout, "Can get split vfo:\t%c\n",caps->get_split_vfo!=NULL?'Y':'N'); ! fprintf(fout, "Can set tuning step:\t%c\n",caps->set_ts!=NULL?'Y':'N'); ! fprintf(fout, "Can get tuning step:\t%c\n",caps->get_ts!=NULL?'Y':'N'); ! fprintf(fout, "Can set RIT:\t%c\n",caps->set_rit!=NULL?'Y':'N'); ! fprintf(fout, "Can get RIT:\t%c\n",caps->get_rit!=NULL?'Y':'N'); ! fprintf(fout, "Can set XIT:\t%c\n",caps->set_xit!=NULL?'Y':'N'); ! fprintf(fout, "Can get XIT:\t%c\n",caps->get_xit!=NULL?'Y':'N'); ! fprintf(fout, "Can set CTCSS:\t%c\n",caps->set_ctcss_tone!=NULL?'Y':'N'); ! fprintf(fout, "Can get CTCSS:\t%c\n",caps->get_ctcss_tone!=NULL?'Y':'N'); ! fprintf(fout, "Can set DCS:\t%c\n",caps->set_dcs_code!=NULL?'Y':'N'); ! fprintf(fout, "Can get DCS:\t%c\n",caps->get_dcs_code!=NULL?'Y':'N'); ! fprintf(fout, "Can set CTCSS squelch:\t%c\n",caps->set_ctcss_sql!=NULL?'Y':'N'); ! fprintf(fout, "Can get CTCSS squelch:\t%c\n",caps->get_ctcss_sql!=NULL?'Y':'N'); ! fprintf(fout, "Can set DCS squelch:\t%c\n",caps->set_dcs_sql!=NULL?'Y':'N'); ! fprintf(fout, "Can get DCS squelch:\t%c\n",caps->get_dcs_sql!=NULL?'Y':'N'); ! fprintf(fout, "Can set power stat:\t%c\n",caps->set_powerstat!=NULL?'Y':'N'); ! fprintf(fout, "Can get power stat:\t%c\n",caps->get_powerstat!=NULL?'Y':'N'); ! fprintf(fout, "Can reset:\t%c\n",caps->reset!=NULL?'Y':'N'); ! fprintf(fout, "Can get ant:\t%c\n",caps->get_ant!=NULL?'Y':'N'); ! fprintf(fout, "Can set ant:\t%c\n",caps->set_ant!=NULL?'Y':'N'); ! fprintf(fout, "Can set transceive:\t%c\n",caps->set_trn!=NULL?'Y':'N'); ! fprintf(fout, "Can get transceive:\t%c\n",caps->get_trn!=NULL?'Y':'N'); ! fprintf(fout, "Can set func:\t%c\n",caps->set_func!=NULL?'Y':'N'); ! fprintf(fout, "Can get func:\t%c\n",caps->get_func!=NULL?'Y':'N'); ! fprintf(fout, "Can set level:\t%c\n",caps->set_level!=NULL?'Y':'N'); ! fprintf(fout, "Can get level:\t%c\n",caps->get_level!=NULL?'Y':'N'); ! fprintf(fout, "Can set param:\t%c\n",caps->set_parm!=NULL?'Y':'N'); ! fprintf(fout, "Can get param:\t%c\n",caps->get_parm!=NULL?'Y':'N'); ! fprintf(fout, "Can send DTMF:\t%c\n",caps->send_dtmf!=NULL?'Y':'N'); ! fprintf(fout, "Can recv DTMF:\t%c\n",caps->recv_dtmf!=NULL?'Y':'N'); ! fprintf(fout, "Can send Morse:\t%c\n",caps->send_morse!=NULL?'Y':'N'); ! fprintf(fout, "Can decode events:\t%c\n",caps->decode_event!=NULL?'Y':'N'); ! fprintf(fout, "Can set bank:\t%c\n",caps->set_bank!=NULL?'Y':'N'); ! fprintf(fout, "Can set mem:\t%c\n",caps->set_mem!=NULL?'Y':'N'); ! fprintf(fout, "Can get mem:\t%c\n",caps->get_mem!=NULL?'Y':'N'); can_echannel = caps->set_mem && caps->set_vfo; ! fprintf(fout, "Can set channel:\t%c\n",caps->set_channel!=NULL?'Y': (can_echannel?'E':'N')); ! fprintf(fout, "Can get channel:\t%c\n",caps->get_channel!=NULL?'Y': (can_echannel?'E':'N')); ! fprintf(fout, "Can ctl mem/vfo:\t%c\n",caps->vfo_op!=NULL?'Y':'N'); ! fprintf(fout, "Can scan:\t%c\n",caps->scan!=NULL?'Y':'N'); ! fprintf(fout, "Can get info:\t%c\n",caps->get_info!=NULL?'Y':'N'); ! fprintf(fout, "\nOverall backend warnings: %d\n", backend_warnings); return backend_warnings; *************** *** 448,452 **** static int print_ext(RIG *rig, const struct confparams *cfp, rig_ptr_t ptr) { ! printf(" %s", cfp->name); return 1; /* process them all */ --- 448,452 ---- static int print_ext(RIG *rig, const struct confparams *cfp, rig_ptr_t ptr) { ! fprintf((FILE*)ptr, " %s", cfp->name); return 1; /* process them all */ *************** *** 543,572 **** ! static void dump_chan_caps(const channel_cap_t *chan) { ! if (chan->bank_num) printf("BANK "); ! if (chan->ant) printf("ANT "); ! if (chan->freq) printf("FREQ "); ! if (chan->mode) printf("MODE "); ! if (chan->width) printf("WIDTH "); ! if (chan->tx_freq) printf("TXFREQ "); ! if (chan->tx_mode) printf("TXMODE "); ! if (chan->tx_width) printf("TXWIDTH "); ! if (chan->split) printf("SPLIT "); ! if (chan->rptr_shift) printf("RPTRSHIFT "); ! if (chan->rptr_offs) printf("RPTROFS "); ! if (chan->tuning_step) printf("TS "); ! if (chan->rit) printf("RIT "); ! if (chan->xit) printf("XIT "); ! if (chan->funcs) printf("FUNC "); ! if (chan->levels) printf("LEVEL "); ! if (chan->ctcss_tone) printf("TONE "); ! if (chan->ctcss_sql) printf("CTCSS "); ! if (chan->dcs_code) printf("DCSCODE "); ! if (chan->dcs_sql) printf("DCSSQL "); ! if (chan->scan_group) printf("SCANGRP "); ! if (chan->flags) printf("FLAG "); /* RIG_CHFLAG's */ ! if (chan->channel_desc) printf("NAME "); ! if (chan->ext_levels) printf("EXTLVL "); } --- 543,572 ---- ! static void dump_chan_caps(const channel_cap_t *chan, FILE *fout) { ! if (chan->bank_num) fprintf(fout, "BANK "); ! if (chan->ant) fprintf(fout, "ANT "); ! if (chan->freq) fprintf(fout, "FREQ "); ! if (chan->mode) fprintf(fout, "MODE "); ! if (chan->width) fprintf(fout, "WIDTH "); ! if (chan->tx_freq) fprintf(fout, "TXFREQ "); ! if (chan->tx_mode) fprintf(fout, "TXMODE "); ! if (chan->tx_width) fprintf(fout, "TXWIDTH "); ! if (chan->split) fprintf(fout, "SPLIT "); ! if (chan->rptr_shift) fprintf(fout, "RPTRSHIFT "); ! if (chan->rptr_offs) fprintf(fout, "RPTROFS "); ! if (chan->tuning_step) fprintf(fout, "TS "); ! if (chan->rit) fprintf(fout, "RIT "); ! if (chan->xit) fprintf(fout, "XIT "); ! if (chan->funcs) fprintf(fout, "FUNC "); ! if (chan->levels) fprintf(fout, "LEVEL "); ! if (chan->ctcss_tone) fprintf(fout, "TONE "); ! if (chan->ctcss_sql) fprintf(fout, "CTCSS "); ! if (chan->dcs_code) fprintf(fout, "DCSCODE "); ! if (chan->dcs_sql) fprintf(fout, "DCSSQL "); ! if (chan->scan_group) fprintf(fout, "SCANGRP "); ! if (chan->flags) fprintf(fout, "FLAG "); /* RIG_CHFLAG's */ ! if (chan->channel_desc) fprintf(fout, "NAME "); ! if (chan->ext_levels) fprintf(fout, "EXTLVL "); } Index: rigctl.c =================================================================== RCS file: /cvsroot/hamlib/hamlib/tests/rigctl.c,v retrieving revision 1.63 retrieving revision 1.64 diff -C2 -r1.63 -r1.64 *** rigctl.c 11 Nov 2007 23:04:22 -0000 1.63 --- rigctl.c 5 Jan 2008 18:13:12 -0000 1.64 *************** *** 1,4 **** /* ! * rigctl.c - (C) Stephane Fillod 2000-2007 * * This program test/control a radio using Hamlib. --- 1,4 ---- /* ! * rigctl.c - (C) Stephane Fillod 2000-2008 * * This program test/control a radio using Hamlib. *************** *** 290,294 **** */ if (dump_caps_opt) { ! dumpcaps(my_rig); rig_cleanup(my_rig); /* if you care about memory */ exit(0); --- 290,294 ---- */ if (dump_caps_opt) { ! dumpcaps(my_rig, stdout); rig_cleanup(my_rig); /* if you care about memory */ exit(0); *************** *** 344,348 **** ); ! usage_rig(); printf("\nReport bugs to <ham...@li...>.\n"); --- 344,348 ---- ); ! usage_rig(stdout); printf("\nReport bugs to <ham...@li...>.\n"); Index: rigctl_parse.c =================================================================== RCS file: /cvsroot/hamlib/hamlib/tests/rigctl_parse.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** rigctl_parse.c 11 Nov 2007 23:03:38 -0000 1.1 --- rigctl_parse.c 5 Jan 2008 18:13:12 -0000 1.2 *************** *** 1,4 **** /* ! * rigctl_parse.c - (C) Stephane Fillod 2000-2007 * * This program test/control a radio using Hamlib. --- 1,4 ---- /* ! * rigctl_parse.c - (C) Stephane Fillod 2000-2008 * * This program test/control a radio using Hamlib. *************** *** 323,327 **** return 1; if (cmd == '?') { ! usage_rig(); return 0; } --- 323,327 ---- return 1; if (cmd == '?') { ! usage_rig(fout); return 0; } *************** *** 466,488 **** } ! void usage_rig() { int i; ! printf("Commands (may not be available for this rig):\n"); for (i=0; test_list[i].cmd != 0; i++) { ! printf("%c: %-16s(", isprint(test_list[i].cmd) ? test_list[i].cmd:'?', test_list[i].name); if (test_list[i].arg1 && (test_list[i].flags&ARG_IN1)) ! printf("%s", test_list[i].arg1); if (test_list[i].arg2 && (test_list[i].flags&ARG_IN2)) ! printf(",%s", test_list[i].arg2); if (test_list[i].arg3 && (test_list[i].flags&ARG_IN3)) ! printf(",%s", test_list[i].arg3); ! printf(") \t"); if (i%2) ! printf("\n"); } } --- 466,488 ---- } ! void usage_rig(FILE *fout) { int i; ! fprintf(fout, "Commands (may not be available for this rig):\n"); for (i=0; test_list[i].cmd != 0; i++) { ! fprintf(fout, "%c: %-16s(", isprint(test_list[i].cmd) ? test_list[i].cmd:'?', test_list[i].name); if (test_list[i].arg1 && (test_list[i].flags&ARG_IN1)) ! fprintf(fout, "%s", test_list[i].arg1); if (test_list[i].arg2 && (test_list[i].flags&ARG_IN2)) ! fprintf(fout, ",%s", test_list[i].arg2); if (test_list[i].arg3 && (test_list[i].flags&ARG_IN3)) ! fprintf(fout, ",%s", test_list[i].arg3); ! fprintf(fout, ") \t"); if (i%2) ! fprintf(fout, "\n"); } } *************** *** 1475,1479 **** declare_proto_rig(dump_caps) { ! dumpcaps(rig); return RIG_OK; --- 1475,1479 ---- declare_proto_rig(dump_caps) { ! dumpcaps(rig, fout); return RIG_OK; Index: rigctl_parse.h =================================================================== RCS file: /cvsroot/hamlib/hamlib/tests/rigctl_parse.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** rigctl_parse.h 11 Nov 2007 23:03:52 -0000 1.1 --- rigctl_parse.h 5 Jan 2008 18:13:12 -0000 1.2 *************** *** 1,4 **** /* ! * rigctl_parse.h - (C) Stephane Fillod 2000-2007 * * This program test/control a radio using Hamlib. --- 1,4 ---- /* ! * rigctl_parse.h - (C) Stephane Fillod 2000-2008 * * This program test/control a radio using Hamlib. *************** *** 35,44 **** */ ! int dumpcaps (RIG *); /* * Prototypes */ ! void usage_rig(); void version(); void list_models(); --- 35,44 ---- */ ! int dumpcaps (RIG *, FILE *); /* * Prototypes */ ! void usage_rig(FILE *); void version(); void list_models(); Index: rigctld.c =================================================================== RCS file: /cvsroot/hamlib/hamlib/tests/rigctld.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** rigctld.c 11 Nov 2007 23:02:01 -0000 1.1 --- rigctld.c 5 Jan 2008 18:13:12 -0000 1.2 *************** *** 1,8 **** /* ! * rigctld.c - (C) Stephane Fillod 2000-2007 * * This program test/control a radio using Hamlib. ! * It takes commands in interactive mode as well as ! * from command line options. * * $Id$ --- 1,7 ---- /* ! * rigctld.c - (C) Stephane Fillod 2000-2008 * * This program test/control a radio using Hamlib. ! * It takes commands from network connection. * * $Id$ *************** *** 307,311 **** */ if (dump_caps_opt) { ! dumpcaps(my_rig); rig_cleanup(my_rig); /* if you care about memory */ exit(0); --- 306,310 ---- */ if (dump_caps_opt) { ! dumpcaps(my_rig, stdout); rig_cleanup(my_rig); /* if you care about memory */ exit(0); *************** *** 461,465 **** portno ); ! usage_rig(); printf("\nReport bugs to <ham...@li...>.\n"); --- 460,464 ---- portno ); ! usage_rig(stdout); printf("\nReport bugs to <ham...@li...>.\n"); |