2023-09-05 09:22:00 +00:00
< script setup lang = "ts" >
2023-10-03 13:15:17 +00:00
import { saveSettingsToFile } from "../js/settingsHandler" ;
2023-09-05 09:22:00 +00:00
2023-10-22 01:11:37 +00:00
import { startRigctld , stopRigctld } from "../js/daemon" ;
2023-10-08 19:09:30 +00:00
2023-10-03 13:15:17 +00:00
import { setActivePinia } from "pinia" ;
import pinia from "../store/index" ;
2023-09-05 17:35:54 +00:00
setActivePinia ( pinia ) ;
2023-10-03 13:15:17 +00:00
import { useSettingsStore } from "../store/settingsStore.js" ;
2023-09-05 17:35:54 +00:00
const settings = useSettingsStore ( pinia ) ;
2023-10-08 20:09:09 +00:00
import { useStateStore } from "../store/stateStore.js" ;
const state = useStateStore ( pinia ) ;
2023-10-17 10:11:27 +00:00
function startStopRigctld ( ) {
switch ( state . rigctld _started ) {
case "stopped" :
settings . hamlib _deviceport = ( < HTMLInputElement > document . getElementById ( "hamlib_deviceport" ) ) . value ;
startRigctld ( ) ;
break ;
case "running" :
stopRigctld ( ) ;
2023-10-27 20:57:43 +00:00
// dirty hack for calling this command twice, otherwise modem won't stop rigctld from time to time
stopRigctld ( ) ;
2023-10-17 10:11:27 +00:00
break ;
default :
}
}
2023-10-04 17:54:50 +00:00
function selectRadioControl ( ) {
2023-10-04 18:08:40 +00:00
// @ts-expect-error
2023-10-03 13:15:17 +00:00
switch ( event . target . id ) {
case "list-rig-control-none-list" :
settings . radiocontrol = "disabled" ;
break ;
case "list-rig-control-rigctld-list" :
settings . radiocontrol = "rigctld" ;
break ;
case "list-rig-control-tci-list" :
settings . radiocontrol = "tci" ;
break ;
default :
console . log ( "default=!==" ) ;
settings . radiocontrol = "disabled" ;
}
saveSettingsToFile ( ) ;
2023-09-06 20:20:18 +00:00
}
2023-10-04 17:54:50 +00:00
function testHamlib ( ) {
console . log ( "not yet implemented" )
alert ( "not yet implemented" )
}
2023-09-05 09:22:00 +00:00
< / script >
2023-09-02 12:03:50 +00:00
< template >
2023-10-03 13:15:17 +00:00
< div class = "card mb-0" >
< div class = "card-header p-1" >
< div class = "container" >
< div class = "row" >
< div class = "col-1" >
< i class = "bi bi-projector" style = "font-size: 1.2rem" > < / i >
< / div >
< div class = "col-4" >
< strong class = "fs-5" > Rig control < / strong >
< / div >
< div class = "col-6" >
< div
2023-10-25 15:20:39 +00:00
class = "list-group bg-body-tertiary list-group-horizontal w-75"
2023-10-03 13:15:17 +00:00
id = "rig-control-list-tab"
role = "rig-control-tablist"
>
< a
2023-10-25 15:20:39 +00:00
class = "p-1 list-group-item list-group-item-dark list-group-item-action"
2023-10-03 13:15:17 +00:00
id = "list-rig-control-none-list"
data - bs - toggle = "list"
href = "#list-rig-control-none"
role = "tab"
aria - controls = "list-rig-control-none"
v - bind : class = "{ active: settings.radiocontrol === 'disabled' }"
@ click = "selectRadioControl()"
> None / Vox < / a
>
< a
2023-10-25 15:20:39 +00:00
class = "p-1 list-group-item list-group-item-dark list-group-item-action"
2023-10-03 13:15:17 +00:00
id = "list-rig-control-rigctld-list"
data - bs - toggle = "list"
href = "#list-rig-control-rigctld"
role = "tab"
aria - controls = "list-rig-control-rigctld"
v - bind : class = "{ active: settings.radiocontrol === 'rigctld' }"
@ click = "selectRadioControl()"
> Rigctld < / a
>
< a
2023-10-25 15:20:39 +00:00
class = "p-1 list-group-item list-group-item-dark list-group-item-action"
2023-10-03 13:15:17 +00:00
id = "list-rig-control-tci-list"
data - bs - toggle = "list"
href = "#list-rig-control-tci"
role = "tab"
aria - controls = "list-rig-control-tci"
v - bind : class = "{ active: settings.radiocontrol === 'tci' }"
@ click = "selectRadioControl()"
> TCI < / a
>
< / div >
< / div >
< div class = "col-1 text-end" >
< button
type = "button"
id = "openHelpModalRigControl"
data - bs - toggle = "modal"
data - bs - target = "#rigcontrolHelpModal"
class = "btn m-0 p-0 border-0"
>
< i class = "bi bi-question-circle" style = "font-size: 1rem" > < / i >
< / button >
< / div >
< / div >
< / div >
2023-09-05 13:28:58 +00:00
< / div >
2023-10-03 13:15:17 +00:00
< div class = "card-body p-2" style = "height: 100px" >
< div class = "tab-content" id = "rig-control-nav-tabContent" >
< div
class = "tab-pane fade"
v - bind : class = "{ 'show active': settings.radiocontrol === 'disabled' }"
id = "list-rig-control-none"
role = "tabpanel"
aria - labelledby = "list-rig-control-none-list"
>
< p class = "small" >
2023-10-20 11:47:42 +00:00
Modem will not utilize rig control and features will be limited . While
2023-10-03 13:15:17 +00:00
functional ; it is recommended to configure hamlib .
< / p >
< / div >
< div
class = "tab-pane fade"
id = "list-rig-control-rigctld"
v - bind : class = "{ 'show active': settings.radiocontrol === 'rigctld' }"
role = "tabpanel"
aria - labelledby = "list-rig-control-rigctld-list"
>
< div class = "input-group input-group-sm mb-1" >
< div class = "input-group input-group-sm mb-1" >
2023-10-15 05:37:28 +00:00
< span class = "input-group-text" > Radio port < / span >
< select
class = "form-select form-select-sm"
aria - label = ".form-select-sm"
id = "hamlib_deviceport"
style = "width: 7rem"
2023-10-17 10:11:27 +00:00
v - html = "settings.getSerialDevices()"
2023-10-15 05:37:28 +00:00
>
2023-10-17 10:11:27 +00:00
< / select >
2023-10-15 05:37:28 +00:00
2023-10-03 13:15:17 +00:00
< / div >
2023-09-05 13:28:58 +00:00
2023-10-03 13:15:17 +00:00
< div class = "input-group input-group-sm mb-1" >
2023-10-15 05:37:28 +00:00
< span class = "input-group-text" > Rigctld service < / span >
2023-10-03 13:15:17 +00:00
< button
class = "btn btn-outline-success"
type = "button"
id = "hamlib_rigctld_start"
2023-10-17 10:11:27 +00:00
@ click = "startStopRigctld"
2023-10-03 13:15:17 +00:00
>
Start
< / button >
< button
class = "btn btn-outline-danger"
type = "button"
id = "hamlib_rigctld_stop"
2023-10-17 10:11:27 +00:00
@ click = "startStopRigctld"
2023-10-08 19:09:30 +00:00
2023-10-03 13:15:17 +00:00
>
Stop
< / button >
< input
type = "text"
class = "form-control"
placeholder = "Status"
id = "hamlib_rigctld_status"
aria - label = "State"
aria - describedby = "basic-addon1"
2023-10-08 20:09:09 +00:00
v - model = "state.rigctld_started"
2023-10-03 13:15:17 +00:00
/ >
< button
type = "button"
id = "testHamlib"
class = "btn btn-sm btn-outline-secondary ms-1"
data - bs - placement = "bottom"
data - bs - toggle = "tooltip"
data - bs - trigger = "hover"
data - bs - html = "true"
@ click = "testHamlib"
title = "Test your hamlib settings and toggle PTT once. Button will become <strong class='text-success'>green</strong> on success and <strong class='text-danger'>red</strong> if fails."
>
PTT Test
< / button >
< / div >
< / div >
< / div >
< div
class = "tab-pane fade"
id = "list-rig-control-tci"
v - bind : class = "{ 'show active': settings.radiocontrol === 'tci' }"
role = "tabpanel"
aria - labelledby = "list-rig-control-tci-list"
>
< div class = "input-group input-group-sm mb-1" >
< div class = "input-group input-group-sm mb-1" >
< span class = "input-group-text" > TCI < / span >
< span class = "input-group-text" > Address < / span >
< input
type = "text"
class = "form-control"
placeholder = "tci IP"
id = "tci_ip"
aria - label = "Device IP"
v - model = "settings.tci_ip"
/ >
< / div >
2023-09-05 13:28:58 +00:00
2023-10-03 13:15:17 +00:00
< div class = "input-group input-group-sm mb-1" >
< span class = "input-group-text" > Port < / span >
< input
type = "text"
class = "form-control"
placeholder = "tci port"
id = "tci_port"
aria - label = "Device Port"
v - model = "settings.tci_port"
/ >
< / div >
< / div >
< / div >
< / div >
<!-- RADIO CONTROL DISABLED -- >
< div id = "radio-control-disabled" > < / div >
<!-- RADIO CONTROL RIGCTLD -- >
< div id = "radio-control-rigctld" > < / div >
<!-- RADIO CONTROL TCI -- >
< div id = "radio-control-tci" > < / div >
<!-- RADIO CONTROL HELP -- >
< div id = "radio-control-help" >
<!--
2023-09-02 12:03:50 +00:00
< strong > VOX : < / strong > Use rig control mode 'none'
< br / >
< strong > HAMLIB locally : < / strong > configure in settings , then
start / stop service .
< br / >
< strong > HAMLIB remotely : < / strong > Enter IP / Port , connection
happens automatically .
2023-09-05 13:28:58 +00:00
-- >
2023-10-03 13:15:17 +00:00
< / div >
< / div >
<!-- < div class = "card-footer text-muted small" id = "hamlib_info_field" >
2023-10-20 11:47:42 +00:00
Define Modem rig control mode ( none / hamlib )
2023-09-02 12:03:50 +00:00
< / div >
-- >
2023-10-03 13:15:17 +00:00
< / div >
< / template >