/**
\page  xmlrpc_control_page  Xmlrpc Control

\tableofcontents

XML-RPC data is transported via simple HTTP and client implementations
exist for most programming languages.  A Perl client that can be
used as a control script is included in the source tar ball as
scripts/fldigi-shell.  This control method is currently used by several
external programs including flrig, logger32 and Xlog.

The following command line arguments become available when XML-RPC support is
compiled into fldigi, as described in the \ref install_from_source_page
"build instructions":

\verbatim
 --xmlrpc-server-address HOSTNAME
   Set the XML-RPC server address. The default is 127.0.0.1.

 --xmlrpc-server-port PORT
   Set the XML-RPC server port. The default is 7362.

 --xmlrpc-allow REGEX
   Allow only the methods whose names match REGEX

 --xmlrpc-deny REGEX
   Allow only the methods whose names don't match REGEX

 --xmlrpc-list
   List all available methods
\endverbatim

The --xmlrpc-deny and --xmlrpc-allow switches can be used as a simple
access control mechanism.  REGEX specifies a POSIX extended regular expression.
This invocation disables the methods that may cause fldigi to transmit:

\verbatim
  --xmlrpc-deny 'main\.(tx|tune|run_macro)'
\endverbatim

By default all methods are allowed.

The --xmlrpc-list switch outputs the method list and exits the program.  If
preceded by --xmlrpc-deny or --xmlrpc-allow, it shows the list of methods as
filtered by those switches.

The methods are listed below.  The three columns are method name, signature
(return_type:argument_types), and description.  Refer to the XML-RPC
specification for the meaning of the signature characters

\latexonly \pagebreak \endlatexonly

\section sub_symbol_interpretation XML Command Symbol Interpretation
<br>

<center>
Symbol  | Interpretation
:------:|:---:
      6 | bytes
      A | array
      b | boolean
      d | double
      i | integer
      n | nil
      s | string
      S | struct
<br>
</center>

\section sub_xml_commands Table of XML Commands
<br>

<center>
Method Name                | Sig (ret:arg) | Description
:----------                |:---:|:-----------
fldigi.config_dir          | s:n | Returns the name of the configuration directory
fldigi.list                | A:n | Returns the list of methods
fldigi.name                | s:n | Returns the program name
fldigi.name_version        | s:n | Returns the program name and version
fldigi.terminate           | n:i | Terminates fldigi. ``i'' is bitmask specifying data to save: 0=options; 1=log; 2=macros
fldigi.version             | s:n | Returns the program version as a string
fldigi.version_struct      | S:n | Returns the program version as a struct
io.enable_arq              | n:n | Switch to ARQ I/O
io.enable_kiss             | n:n | Switch to KISS I/O
io.in_use                  | s:n | Returns the IO port in use (ARQ/KISS).
log.clear                  | n:n | Clears the contents of the log fields
log.get_az                 | s:n | Returns the AZ field contents
log.get_band               | s:n | Returns the current band name
log.get_call               | s:n | Returns the Call field contents
log.get_country            | s:n | Returns the Country field contents
log.get_exchange           | s:n | Returns the contest exchange field contents
log.get_frequency          | s:n | Returns the Frequency field contents
log.get_locator            | s:n | Returns the Locator field contents
log.get_name               | s:n | Returns the Name field contents
log.get_notes              | s:n | Returns the Notes field contents
log.get_province           | s:n | Returns the Province field contents
log.get_qth                | s:n | Returns the QTH field contents
log.get_rst_in             | s:n | Returns the RST(r) field contents
log.get_rst_out            | s:n | Returns the RST(s) field contents
log.get_serial_number      | s:n | Returns the serial number field contents
log.get_serial_number_sent | s:n | Returns the serial number (sent) field contents
log.get_state              | s:n | Returns the State field contents
log.get_time_off           | s:n | Returns the Time-Off field contents
log.get_time_on            | s:n | Returns the Time-On field contents
log.set_call               | n:s | Sets the Call field contents
log.set_exchange           | n:s | Sets the contest exchange field contents
log.set_locator            | n:s | Sets the Locator field contents
log.set_name               | n:s | Sets the Name field contents
log.set_qth                | n:s | Sets the QTH field contents
log.set_rst_in             | n:s | Sets the RST(r) field contents
log.set_rst_out            | n:s | Sets the RST(s) field contents
log.set_serial_number      | n:s | Sets the serial number field contents
main.abort                 | n:n | Aborts a transmit or tune
main.get_afc               | b:n | Returns the AFC state
main.get_char_rates        | s:n | Returns table of char rates.
main.get_char_timing       | n:6 | Input: value of character. Returns transmit duration <br>for specified character (samples:sample rate).
main.get_frequency         | d:n | Returns the RF carrier frequency
main.get_lock              | b:n | Returns the Transmit Lock state
main.get_max_macro_id      | i:n | Returns the maximum macro ID number
main.get_reverse           | b:n | Returns the Reverse Sideband state
main.get_rsid              | b:n | Returns the RSID state
main.get_txid              | b:n | Returns the TxRSID state
main.get_squelch           | b:n | Returns the squelch state
main.get_squelch_level     | d:n | Returns the squelch level
main.get_status1           | s:n | Returns the contents of the first status field (typically s/n)
main.get_status2           | s:n | Returns the contents of the second status field
main.get_trx_state         | s:n | Returns T/R state
main.get_trx_status        | s:n | Returns transmit/tune/receive status
main.get_tx_timing         | n:6 | Returns transmit duration for test string (samples:sample rate:secs).
main.get_wf_sideband       | s:n | Returns the current waterfall sideband
main.inc_frequency         | d:d | Increments the RF carrier frequency. Returns the new value
main.inc_squelch_level     | d:d | Increments the squelch level. Returns the new level
main.run_macro             | n:i | Runs a macro
main.rx                    | n:n | Receives
main.rx_only               | n:n | Disables Tx.
main.rx_tx                 | n:n | Sets normal Rx/Tx switching.
main.set_afc               | b:b | Sets the AFC state. Returns the old state
main.set_frequency         | d:d | Sets the RF carrier frequency. Returns the old value
main.set_lock              | b:b | Sets the Transmit Lock state. Returns the old state
main.set_reverse           | b:b | Sets the Reverse Sideband state. Returns the old state
main.set_rsid              | b:b | Sets the RSID state. Returns the old state
mmain.set_txid             | b:b | Sets the TxRSID state. Returns the old state
main.set_squelch           | b:b | Sets the squelch state. Returns the old state
main.set_squelch_level     | d:d | Sets the squelch level. Returns the old level
main.set_wf_sideband       | n:s | Sets the waterfall sideband to USB or LSB
main.toggle_afc            | b:n | Toggles the AFC state. Returns the new state
main.toggle_lock           | b:n | Toggles the Transmit Lock state. Returns the new state
main.toggle_reverse        | b:n | Toggles the Reverse Sideband state. Returns the new state
main.toggle_rsid           | b:n | Toggles the RSID state. Returns the new state
main.toggle_txid           | b:n | Toggles the TxRSID state. Returns the new state
main.toggle_squelch        | b:n | Toggles the squelch state. Returns the new state
main.tune                  | n:n | Tunes
main.tx                    | n:n | Transmits
modem.get_afc_search_range | i:n | Returns the modem AFC search range
modem.get_bandwidth        | i:n | Returns the modem bandwidth
modem.get_carrier          | i:n | Returns the modem carrier frequency
modem.get_id               | i:n | Returns the ID of the current modem
modem.get_max_id           | i:n | Returns the maximum modem ID number
modem.get_name             | s:n | Returns the name of the current modem
modem.get_names            | A:n | Returns all modem names
modem.get_quality          | d:n | Returns the modem signal quality in the range [0:100]
modem.inc_afc_search_range | n:i | Increments the modem AFC search range. Returns the new value
modem.inc_bandwidth        | n:i | Increments the modem bandwidth. Returns the new value
modem.inc_carrier          | i:i | Increments the modem carrier frequency. Returns the new carrier
modem.olivia.get_bandwidth | i:n | Returns the Olivia bandwidth
modem.olivia.get_tones     | i:n | Returns the Olivia tones
modem.olivia.set_bandwidth | n:i | Sets the Olivia bandwidth
modem.olivia.set_tones     | n:i | Sets the Olivia tones
modem.search_down          | n:n | Searches downward in frequency
modem.search_up            | n:n | Searches upward in frequency
modem.set_afc_search_range | n:i | Sets the modem AFC search range. Returns the old value
modem.set_bandwidth        | n:i | Sets the modem bandwidth. Returns the old value
modem.set_by_id            | i:i | Sets the current modem. Returns old ID
modem.set_by_name          | s:s | Sets the current modem. Returns old name
modem.set_carrier          | i:i | Sets modem carrier. Returns old carrier
navtex.get_message         | s:i | Returns next Navtex/SitorB message with a max delay in <br>seconds.. Empty string if timeout.
navtex.send_message        | s:s | Send a Navtex/SitorB message. Returns an empty string <br>if OK otherwise an error message.
rig.get_bandwidth          | s:n | Returns the name of the current transceiver bandwidth
rig.get_bandwidths         | A:n | Returns the list of available rig bandwidths
rig.get_mode               | s:n | Returns the name of the current transceiver mode
rig.get_modes              | A:n | Returns the list of available rig modes
rig.get_name               | s:n | Returns the rig name previously set via rig.set_name
rig.get_notch              | s:n | Reports a notch filter frequency based on WF action
rig.release_control        | n:n | Switches rig control to previous setting
rig.set_bandwidth          | n:s | Selects a bandwidth previously added by rig.set_bandwidths
rig.set_bandwidths         | n:A | Sets the list of available rig bandwidths
rig.set_frequency          | d:d | Sets the RF carrier frequency. Returns the old value
rig.set_mode               | n:s | Selects a mode previously added by rig.set_modes
rig.set_modes              | n:A | Sets the list of available rig modes
rig.set_name               | n:s | Sets the rig name for xmlrpc rig
rig.set_pwrmeter           | n:i | Sets the power meter returns null.
rig.set_smeter             | n:i | Sets the smeter returns null.
rig.take_control           | n:n | Switches rig control to XML-RPC
rx.get_data                | 6:n | Returns all RX data received since last query.
rxtx.get_data              | 6:n | Returns all RXTX combined data since last query.
spot.get_auto              | b:n | Returns the autospotter state
spot.pskrep.get_count      | i:n | Returns the number of callsigns spotted in the current session
spot.set_auto              | n:b | Sets the autospotter state. Returns the old state
spot.toggle_auto           | n:b | Toggles the autospotter state. Returns the new state
text.add_tx                | n:s | Adds a string to the TX text widget
text.add_tx_bytes          | n:6 | Adds a byte string to the TX text widget
text.clear_rx              | n:n | Clears the RX text widget
text.clear_tx              | n:n | Clears the TX text widget
text.get_rx                | 6:i | Returns a range of characters (start, length) from the RX text widget
text.get_rx_length         | i:n | Returns the number of characters in the RX widget
tx.get_data                | 6:n | Returns all TX data transmitted since last query.
wefax.end_reception        | s:n | End Wefax image reception
wefax.get_received_file    | s:i | Waits for next received fax file, returns its name with<br>a delay. Empty string if timeout.
wefax.send_file            | s:i | Send file. returns an empty string if OK otherwise an error message.
wefax.set_adif_log         | s:b | Set/reset logging to received/transmit images to ADIF log file
wefax.set_max_lines        | s:i | Set maximum lines for fax image reception
wefax.set_tx_abort_flag    | s:n | Cancels Wefax image transmission
wefax.skip_apt             | s:n | Skip APT during Wefax reception
wefax.skip_phasing         | s:n | Skip phasing during Wefax reception
wefax.state_string         | s:n | Returns Wefax engine state (tx and rx) for information.
</center>

Deprecated methods:

<center>
Method Name                | Sig | Resolution
:----------                |:---:|:-----------
log.get_sideband           | s:n | use main.get_wf_sideband
main.get_rig_bandwidth     | s:n | use rig.get_bandwidth
main.get_rig_bandwidths    | n:A | use rig.get_bandwidths
main.get_rig_mode          | s:n | use rig.get_mode
main.get_rig_modes         | A:n | use rig.get_modes
main.get_sideband          | s:n | use main.get_wf_sideband and/or rig.get_mode
main.rsid                  | n:n | use main.{get,set,toggle}_rsid
main.set_rig_bandwidth     | n:s | use rig.set_bandwidth
main.set_rig_bandwidths    | n:A | use rig.set_bandwidths
main.set_rig_frequency     | d:d | use rig.set_frequency
main.set_rig_mode          | n:s | use rig.set_mode
main.set_rig_modes         | n:A | use rig.set_modes
main.set_rig_name          | n:s | use rig.set_name
main.set_sideband          | n:s | use main.set_wf_sideband and/or rig.set_mode
</center>

<br>
\section sub_minimized_window Minimized WF Window
<br>

If your external control program duplicates some of the fldigi controls
such as the Rx and Tx pane you can run fldigi in a fully minimized
mode.  Fldigi then only provides the controls necessary for signal
acquisition and waterfall management.  Minimization is
accomplished by setting the command line switch (\-\-wo).  The user
interface then has this appearance:

\image html UI-minimized.png "Simplified WF Window Display"
\image latex UI-minimized.png "Simplified WF Window Display" width=5.0in

The documentation for the external control program will provide additional
information if this user interface is desired.

<br>
\ref xmlrpc_control_page "Return to Top of Page"
<br>
\ref main_page "Return to Main Page"

*/
