diff options
Diffstat (limited to 'utils/hamlib/files/rigctld.init')
-rwxr-xr-x | utils/hamlib/files/rigctld.init | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/utils/hamlib/files/rigctld.init b/utils/hamlib/files/rigctld.init new file mode 100755 index 000000000..9eef5cda8 --- /dev/null +++ b/utils/hamlib/files/rigctld.init @@ -0,0 +1,76 @@ +#!/bin/sh /etc/rc.common + +USE_PROCD=1 + +START=50 +STOP=50 + +NAME=rigctld +TYPE=rig +BIN=/usr/bin/rigctld + +# option model '1234' => --model=1234 +OPTIONS_STRING="model rig_file ptt_file dcd_file ptt_type dcd_type serial_speed civaddr listen_addr port set_conf twiddle_timeout uplink" +# option vfo '1' => --vfo +OPTIONS_BOOL="debug_time_stamps vfo" +# option verbose '3' => --verbose --verbose --verbose +OPTIONS_CUMULATIVE="verbose" + +start_service() { + local instance="$1" + + config_load "${NAME}" + + if [ -n "$instance" ]; then + start_instance "$instance" + else + config_foreach start_instance "$TYPE" + fi +} + +start_instance() { + local instance="$1" + + config_get_bool "enabled" "$instance" "enabled" 0 + [ "$enabled" -gt 0 ] || return + + procd_open_instance "$instance" + + procd_set_param command "$BIN" + procd_set_param stdout 1 + procd_set_param stderr 1 + + local option + local value + + for option in $OPTIONS_STRING; do + config_get value "$instance" "$option" + [ -n "$value" ] || continue + + option="${option//_/-}" + procd_append_param command "--$option=$value" + done + + for option in $OPTIONS_BOOL; do + config_get_bool value "$instance" "$option" 0 + [ "$value" -eq 1 ] || continue + + option="${option//_/-}" + procd_append_param command "--$option" + done + + for option in $OPTIONS_CUMULATIVE; do + config_get value "$instance" "$option" 0 + [ -n "$value" ] || continue + + option="${option//_/-}" + + local i=0 + while [ $i -lt "$value" ]; do + procd_append_param command "--$option" + let i++ + done + done + + procd_close_instance +}
\ No newline at end of file |