mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
fixed audio tuning and recording
This commit is contained in:
parent
d579dcf60a
commit
c7b07411d7
|
@ -12,6 +12,7 @@ const state = useStateStore(pinia);
|
||||||
import { useSettingsStore } from '../store/settingsStore.js';
|
import { useSettingsStore } from '../store/settingsStore.js';
|
||||||
const settings = useSettingsStore(pinia);
|
const settings = useSettingsStore(pinia);
|
||||||
|
|
||||||
|
import main_modals from './main_modals.vue'
|
||||||
import main_top_navbar from './main_top_navbar.vue'
|
import main_top_navbar from './main_top_navbar.vue'
|
||||||
import main_audio from './main_audio.vue'
|
import main_audio from './main_audio.vue'
|
||||||
import main_rig_control from './main_rig_control.vue'
|
import main_rig_control from './main_rig_control.vue'
|
||||||
|
@ -1657,895 +1658,8 @@ function changeGuiDesign(design) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main_modals/>
|
||||||
|
|
||||||
<!-- HELP MODALS AUDIO -->
|
|
||||||
<div
|
|
||||||
class="modal fade"
|
|
||||||
data-bs-backdrop="static"
|
|
||||||
tabindex="-1"
|
|
||||||
id="audioHelpModal"
|
|
||||||
>
|
|
||||||
<div class="modal-dialog modal-dialog-scrollable">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title">Help</h5>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-close"
|
|
||||||
data-bs-dismiss="modal"
|
|
||||||
aria-label="Close"
|
|
||||||
></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="input-group input-group-sm mb-1">
|
|
||||||
<span class="input-group-text">
|
|
||||||
<i class="bi bi-mic-fill" style="font-size: 1rem"></i>
|
|
||||||
</span>
|
|
||||||
<select
|
|
||||||
class="form-select form-select-sm"
|
|
||||||
aria-label=".form-select-sm"
|
|
||||||
disabled
|
|
||||||
>
|
|
||||||
<!-- <option selected value="3011">USB Interface</option>-->
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<p class="card-text">
|
|
||||||
Select your audio device for transmitting. It
|
|
||||||
<strong>must</strong> be using a sample rate of
|
|
||||||
<strong>48000Hz</strong>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="input-group input-group-sm">
|
|
||||||
<span class="input-group-text">
|
|
||||||
<i class="bi bi-volume-up" style="font-size: 1rem"></i>
|
|
||||||
</span>
|
|
||||||
<select
|
|
||||||
class="form-select form-select-sm"
|
|
||||||
aria-label=".form-select-sm"
|
|
||||||
disabled
|
|
||||||
></select>
|
|
||||||
</div>
|
|
||||||
<p class="card-text">
|
|
||||||
Select your audio device for receiving. It
|
|
||||||
<strong>must</strong> be using a sample rate of
|
|
||||||
<strong>48000Hz</strong>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- HELP MODALS RIGCONTROL -->
|
|
||||||
<div
|
|
||||||
class="modal fade"
|
|
||||||
data-bs-backdrop="static"
|
|
||||||
tabindex="-1"
|
|
||||||
id="rigcontrolHelpModal"
|
|
||||||
>
|
|
||||||
<div class="modal-dialog modal-dialog-scrollable">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title">Help</h5>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-close"
|
|
||||||
data-bs-dismiss="modal"
|
|
||||||
aria-label="Close"
|
|
||||||
></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">Rig Control</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
This section is where you configure rig control method (none
|
|
||||||
(VOX) or hamlib) for both GUI and TNC. For the best experience
|
|
||||||
hamlib control is recommended.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">None/Vox</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Select "None/Vox" if you want to use Vox for triggering PTT.
|
|
||||||
No connection to rigctld will be established. No frequency
|
|
||||||
information is availble.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">Hamlib</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Select "Hamlib" if you want to have more control over your
|
|
||||||
radio. Define your hamlib settings in settings, and click the
|
|
||||||
start button to start rigctld. You may use the 'PTT test'
|
|
||||||
button to ensure rig control is working.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- HELP MODALS STATION -->
|
|
||||||
<div
|
|
||||||
class="modal fade"
|
|
||||||
data-bs-backdrop="static"
|
|
||||||
tabindex="-1"
|
|
||||||
id="stationHelpModal"
|
|
||||||
>
|
|
||||||
<div class="modal-dialog modal-dialog-scrollable">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title">Help</h5>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-close"
|
|
||||||
data-bs-dismiss="modal"
|
|
||||||
aria-label="Close"
|
|
||||||
></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="alert alert-info" role="alert">
|
|
||||||
These settings will be saved automatically when changing.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">
|
|
||||||
<div
|
|
||||||
class="input-group input-group-sm mb-0"
|
|
||||||
data-bs-placement="bottom"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-trigger="hover"
|
|
||||||
data-bs-html="false"
|
|
||||||
title="Enter your callsign and save it"
|
|
||||||
>
|
|
||||||
<span class="input-group-text">
|
|
||||||
<i
|
|
||||||
class="bi bi-person-bounding-box"
|
|
||||||
style="font-size: 1rem"
|
|
||||||
></i>
|
|
||||||
</span>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
class="form-control"
|
|
||||||
placeholder="callsign"
|
|
||||||
pattern="[A-Z]*"
|
|
||||||
maxlength="8"
|
|
||||||
style="max-width: 8rem"
|
|
||||||
aria-label="Input group"
|
|
||||||
aria-describedby="btnGroupAddon"
|
|
||||||
disabled
|
|
||||||
/>
|
|
||||||
<select
|
|
||||||
class="form-select form-select-sm"
|
|
||||||
aria-label=".form-select-sm"
|
|
||||||
style="max-width: 6rem"
|
|
||||||
disabled
|
|
||||||
>
|
|
||||||
<option selected value="SSID">SSID</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Enter your callsign and SSID. Your callsign can have a maximum
|
|
||||||
length of 7 characters
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">
|
|
||||||
<div
|
|
||||||
class="input-group input-group-sm mb-0"
|
|
||||||
data-bs-placement="bottom"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-trigger="hover"
|
|
||||||
data-bs-html="false"
|
|
||||||
title="Enter your gridsquare and save it"
|
|
||||||
>
|
|
||||||
<span class="input-group-text">
|
|
||||||
<i class="bi bi-house-fill" style="font-size: 1rem"></i>
|
|
||||||
</span>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
class="form-control mr-1"
|
|
||||||
style="max-width: 6rem"
|
|
||||||
placeholder="locator"
|
|
||||||
maxlength="6"
|
|
||||||
aria-label="Input group"
|
|
||||||
aria-describedby="btnGroupAddon"
|
|
||||||
disabled
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Enter your position as a 4 or 6 digit grid square, also known
|
|
||||||
as a maidenhead locator. Six digits are recommended.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- HELP MODALS UPDATER -->
|
|
||||||
<div
|
|
||||||
class="modal fade"
|
|
||||||
data-bs-backdrop="static"
|
|
||||||
tabindex="-1"
|
|
||||||
id="updaterHelpModal"
|
|
||||||
>
|
|
||||||
<div class="modal-dialog modal-dialog-scrollable">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title">Help</h5>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-close"
|
|
||||||
data-bs-dismiss="modal"
|
|
||||||
aria-label="Close"
|
|
||||||
></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">Auto-Updater</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
The auto updater loads the latest version from Github and
|
|
||||||
installs it automatically. You can select the update channel
|
|
||||||
in settings. Once an update has been downlaoded, you need to
|
|
||||||
confirm the auto-installation and restart.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">Alpha</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Alpha releases are more frequent and contain the latest
|
|
||||||
features, but are likely to be unstable and introduce bugs.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">Beta</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Beta releases are more stable than Alpha releases. They are a
|
|
||||||
good tradeoff between latest features and stability. They will
|
|
||||||
be updated less often. A beta release has not been released
|
|
||||||
yet.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">Stable</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Stable releases are the most stable versions with no known
|
|
||||||
major issues. A stable release has not been released yet.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- HELP MODALS LOCAL REMOTE -->
|
|
||||||
<div
|
|
||||||
class="modal fade"
|
|
||||||
data-bs-backdrop="static"
|
|
||||||
tabindex="-1"
|
|
||||||
id="localRemoteHelpModal"
|
|
||||||
>
|
|
||||||
<div class="modal-dialog modal-dialog-scrollable">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title">Help</h5>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-close"
|
|
||||||
data-bs-dismiss="modal"
|
|
||||||
aria-label="Close"
|
|
||||||
></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">
|
|
||||||
<div
|
|
||||||
class="btn-group btn-group-sm me-2"
|
|
||||||
role="group"
|
|
||||||
aria-label="local-remote-switch toggle button group"
|
|
||||||
data-bs-placement="bottom"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-trigger="hover"
|
|
||||||
data-bs-html="true"
|
|
||||||
title="Select a local or a remote location of your TNC daemon. Normally local is the preferred option."
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
type="radio"
|
|
||||||
class="btn-check"
|
|
||||||
name="local-remote-switch"
|
|
||||||
autocomplete="off"
|
|
||||||
checked
|
|
||||||
disabled
|
|
||||||
/>
|
|
||||||
<label
|
|
||||||
class="btn btn-sm btn-outline-secondary"
|
|
||||||
for="local-remote-switch1"
|
|
||||||
>
|
|
||||||
<i class="bi bi-pc-display-horizontal"></i>
|
|
||||||
<span class="ms-2 me-2">Local tnc</span>
|
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
type="radio"
|
|
||||||
class="btn-check"
|
|
||||||
name="local-remote-switch"
|
|
||||||
autocomplete="off"
|
|
||||||
disabled
|
|
||||||
/>
|
|
||||||
<label
|
|
||||||
class="btn btn-sm btn-outline-secondary"
|
|
||||||
for="local-remote-switch2"
|
|
||||||
>
|
|
||||||
<i class="bi bi-ethernet"></i>
|
|
||||||
<span class="ms-2 me-2">Remote tnc</span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Local / Remote switch. If the TNC is running on the same
|
|
||||||
computer as the GUI, select local. Otherwise choose remote and
|
|
||||||
enter the IP/Port of where the TNC is running.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">
|
|
||||||
<div class="input-group input-group-sm me-2">
|
|
||||||
<span class="input-group-text">tnc ip</span>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
class="form-control"
|
|
||||||
placeholder="ip address"
|
|
||||||
value="192.168.178.163"
|
|
||||||
maxlength="17"
|
|
||||||
style="width: 8rem"
|
|
||||||
aria-label="Username"
|
|
||||||
aria-describedby="basic-addon1"
|
|
||||||
disabled
|
|
||||||
/>
|
|
||||||
<span class="input-group-text">:</span>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
class="form-control"
|
|
||||||
placeholder="port"
|
|
||||||
value="3000"
|
|
||||||
maxlength="5"
|
|
||||||
max="65534"
|
|
||||||
min="1025"
|
|
||||||
style="width: 4rem"
|
|
||||||
aria-label="Username"
|
|
||||||
aria-describedby="basic-addon1"
|
|
||||||
disabled
|
|
||||||
/>
|
|
||||||
<button
|
|
||||||
class="btn btn-sm btn-danger"
|
|
||||||
type="button"
|
|
||||||
disabled
|
|
||||||
>
|
|
||||||
<i class="bi bi-diagram-3" style="font-size: 1rem"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Remote IP of TNC. Port is port of daemon. The tnc port will
|
|
||||||
automatically adjusted. ( daemon port - 1 )
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- HELP MODALS START STOP TNC -->
|
|
||||||
<div
|
|
||||||
class="modal fade"
|
|
||||||
data-bs-backdrop="static"
|
|
||||||
tabindex="-1"
|
|
||||||
id="startStopTNCHelpModal"
|
|
||||||
>
|
|
||||||
<div class="modal-dialog modal-dialog-scrollable">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title">Help</h5>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-close"
|
|
||||||
data-bs-dismiss="modal"
|
|
||||||
aria-label="Close"
|
|
||||||
></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">
|
|
||||||
<div class="btn-group" role="group">
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-sm btn-outline-success"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-trigger="hover"
|
|
||||||
data-bs-html="false"
|
|
||||||
title="Start the TNC. Please set your audio and radio settings first!"
|
|
||||||
disabled
|
|
||||||
>
|
|
||||||
<i class="bi bi-play-fill"></i>
|
|
||||||
<span class="ms-2">Start tnc</span>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-sm btn-outline-danger"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-trigger="hover"
|
|
||||||
data-bs-html="false"
|
|
||||||
title="Stop the TNC."
|
|
||||||
disabled
|
|
||||||
>
|
|
||||||
<i class="bi bi-stop-fill"></i>
|
|
||||||
<span class="ms-2">Stop tnc</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Start or stop the TNC service. The TNC daemon must be running
|
|
||||||
and will work whether the TNC is local or remote.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- HELP MODALS AUDIO LEVEL -->
|
|
||||||
<div
|
|
||||||
class="modal fade"
|
|
||||||
data-bs-backdrop="static"
|
|
||||||
tabindex="-1"
|
|
||||||
id="audioLevelHelpModal"
|
|
||||||
>
|
|
||||||
<div class="modal-dialog modal-dialog-scrollable">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title">Help</h5>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-close"
|
|
||||||
data-bs-dismiss="modal"
|
|
||||||
aria-label="Close"
|
|
||||||
></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">
|
|
||||||
<div class="progress mb-0" style="height: 22px">
|
|
||||||
<div
|
|
||||||
class="progress-bar progress-bar-striped bg-primary force-gpu"
|
|
||||||
role="progressbar"
|
|
||||||
style="width: 5%"
|
|
||||||
aria-valuenow="5"
|
|
||||||
aria-valuemin="0"
|
|
||||||
aria-valuemax="100"
|
|
||||||
></div>
|
|
||||||
<p
|
|
||||||
class="justify-content-center d-flex position-absolute w-100"
|
|
||||||
>
|
|
||||||
-38 dBFS (Audio Level)
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="progress mb-0" style="height: 8px">
|
|
||||||
<div
|
|
||||||
class="progress-bar progress-bar-striped bg-warning"
|
|
||||||
role="progressbar"
|
|
||||||
style="width: 1%"
|
|
||||||
aria-valuenow="1"
|
|
||||||
aria-valuemin="0"
|
|
||||||
aria-valuemax="100"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="progress-bar bg-success"
|
|
||||||
role="progressbar"
|
|
||||||
style="width: 89%"
|
|
||||||
aria-valuenow="50"
|
|
||||||
aria-valuemin="0"
|
|
||||||
aria-valuemax="100"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="progress-bar progress-bar-striped bg-warning"
|
|
||||||
role="progressbar"
|
|
||||||
style="width: 20%"
|
|
||||||
aria-valuenow="20"
|
|
||||||
aria-valuemin="0"
|
|
||||||
aria-valuemax="100"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="progress-bar progress-bar-striped bg-danger"
|
|
||||||
role="progressbar"
|
|
||||||
style="width: 29%"
|
|
||||||
aria-valuenow="29"
|
|
||||||
aria-valuemin="0"
|
|
||||||
aria-valuemax="100"
|
|
||||||
></div>
|
|
||||||
</div>
|
|
||||||
</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Represents the level of audio from transceiver. Excessively
|
|
||||||
high levels will affect decoding performance negatively.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">
|
|
||||||
<div class="progress mb-0" style="height: 22px">
|
|
||||||
<div
|
|
||||||
class="progress-bar progress-bar-striped bg-primary force-gpu"
|
|
||||||
role="progressbar"
|
|
||||||
style="width: 30%"
|
|
||||||
aria-valuenow="0"
|
|
||||||
aria-valuemin="0"
|
|
||||||
aria-valuemax="100"
|
|
||||||
></div>
|
|
||||||
<p
|
|
||||||
class="justify-content-center d-flex position-absolute w-100"
|
|
||||||
id="noise_level_value"
|
|
||||||
>
|
|
||||||
-24 S-Meter (dBm)
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="progress mb-0" style="height: 8px">
|
|
||||||
<div
|
|
||||||
class="progress-bar progress-bar-striped bg-warning"
|
|
||||||
role="progressbar"
|
|
||||||
style="width: 1%"
|
|
||||||
aria-valuenow="1"
|
|
||||||
aria-valuemin="0"
|
|
||||||
aria-valuemax="100"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="progress-bar bg-success"
|
|
||||||
role="progressbar"
|
|
||||||
style="width: 89%"
|
|
||||||
aria-valuenow="50"
|
|
||||||
aria-valuemin="0"
|
|
||||||
aria-valuemax="100"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="progress-bar progress-bar-striped bg-warning"
|
|
||||||
role="progressbar"
|
|
||||||
style="width: 20%"
|
|
||||||
aria-valuenow="20"
|
|
||||||
aria-valuemin="0"
|
|
||||||
aria-valuemax="100"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="progress-bar progress-bar-striped bg-danger"
|
|
||||||
role="progressbar"
|
|
||||||
style="width: 29%"
|
|
||||||
aria-valuenow="29"
|
|
||||||
aria-valuemin="0"
|
|
||||||
aria-valuemax="100"
|
|
||||||
></div>
|
|
||||||
</div>
|
|
||||||
</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Represents noise level of the channel from the transceiver.
|
|
||||||
Requires hamlib rig control.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-sm btn-outline-secondary"
|
|
||||||
>
|
|
||||||
Tune
|
|
||||||
</button>
|
|
||||||
</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Adjust volume level of outgoing audio to transceiver. For best
|
|
||||||
results lower the level so that a minimum amount of ALC is
|
|
||||||
used. Can be used in combination with rig's mic/input gain for
|
|
||||||
furthrer refinement.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">
|
|
||||||
<button type="button" class="btn btn-sm btn-outline-danger">
|
|
||||||
Record audio
|
|
||||||
</button>
|
|
||||||
</h5>
|
|
||||||
<p class="card-text">Create a recording of current channel</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- HELP MODALS BROADCASTS -->
|
|
||||||
<div
|
|
||||||
class="modal fade"
|
|
||||||
data-bs-backdrop="static"
|
|
||||||
tabindex="-1"
|
|
||||||
id="broadcastsHelpModal"
|
|
||||||
>
|
|
||||||
<div class="modal-dialog modal-dialog-scrollable">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title">Help</h5>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-close"
|
|
||||||
data-bs-dismiss="modal"
|
|
||||||
aria-label="Close"
|
|
||||||
></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<button
|
|
||||||
class="btn btn-sm btn-outline-secondary ms-1"
|
|
||||||
type="button"
|
|
||||||
disabled
|
|
||||||
>
|
|
||||||
Ping
|
|
||||||
</button>
|
|
||||||
<p class="card-text">
|
|
||||||
Send a ping to a remote station by entering a callsign and
|
|
||||||
optional SSID (-0 will be used if not specified.)
|
|
||||||
Alternatively click on a station in the heard station list to
|
|
||||||
populate the call sign field. If the remote station decodes
|
|
||||||
the ping it will transmit a reply. If able to decode the
|
|
||||||
reply, a signal report will be listed in the heard station
|
|
||||||
list.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<button
|
|
||||||
class="btn btn-sm btn-outline-secondary"
|
|
||||||
type="button"
|
|
||||||
disabled
|
|
||||||
>
|
|
||||||
Call CQ
|
|
||||||
</button>
|
|
||||||
<p class="card-text">Sending out a CQ CQ CQ to the world.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-sm btn-outline-secondary"
|
|
||||||
disabled
|
|
||||||
>
|
|
||||||
<i class="bi bi-soundwave"></i>Toggle beacon
|
|
||||||
</button>
|
|
||||||
<p class="card-text">
|
|
||||||
Sends a periodic broadcast (duration is definable in settings)
|
|
||||||
that announces you are available. Check explorer to see other
|
|
||||||
active stations that may have decoded your beacon.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- HELP MODALS WATERFALL -->
|
|
||||||
<div
|
|
||||||
class="modal fade"
|
|
||||||
data-bs-backdrop="static"
|
|
||||||
tabindex="-1"
|
|
||||||
id="waterfallHelpModal"
|
|
||||||
>
|
|
||||||
<div class="modal-dialog modal-dialog-scrollable">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title">Help</h5>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-close"
|
|
||||||
data-bs-dismiss="modal"
|
|
||||||
aria-label="Close"
|
|
||||||
></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">
|
|
||||||
Waterfall
|
|
||||||
<input
|
|
||||||
type="radio"
|
|
||||||
class="btn-check"
|
|
||||||
name="waterfall-scatter-switch"
|
|
||||||
autocomplete="off"
|
|
||||||
checked
|
|
||||||
/>
|
|
||||||
<label
|
|
||||||
class="btn btn-sm btn-outline-secondary"
|
|
||||||
for="waterfall-scatter-switch1"
|
|
||||||
><strong><i class="bi bi-water"></i></strong>
|
|
||||||
</label>
|
|
||||||
</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Displays a waterfall for activity of current channel.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">
|
|
||||||
Busy Indicator
|
|
||||||
|
|
||||||
<button class="btn btn-sm btn-success" type="button">
|
|
||||||
busy
|
|
||||||
</button>
|
|
||||||
</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Green when channel is open and changes to red to indicate
|
|
||||||
there is activity on the channel.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">
|
|
||||||
Signal Indicator
|
|
||||||
<button class="btn btn-sm btn-success" type="button">
|
|
||||||
signal
|
|
||||||
</button>
|
|
||||||
</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Changes to green when Codec2 data is detected on channel.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">
|
|
||||||
Constellation Plot
|
|
||||||
<input type="radio" class="btn-check" autocomplete="off" />
|
|
||||||
<label class="btn btn-sm btn-outline-secondary"
|
|
||||||
><strong><i class="bi bi-border-outer"></i></strong>
|
|
||||||
</label>
|
|
||||||
</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Displays a plot of last decoded message. A constellation plot
|
|
||||||
is a simple way to represent signal quality.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">
|
|
||||||
Speed Chart
|
|
||||||
|
|
||||||
<input type="radio" class="btn-check" autocomplete="off" />
|
|
||||||
<label class="btn btn-sm btn-outline-secondary"
|
|
||||||
><strong><i class="bi bi-graph-up-arrow"></i></strong>
|
|
||||||
</label>
|
|
||||||
</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
Shows history of SNR and bit rate of messages.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- HELP MODALS HEARD STATIONS -->
|
|
||||||
<div
|
|
||||||
class="modal fade"
|
|
||||||
data-bs-backdrop="static"
|
|
||||||
tabindex="-1"
|
|
||||||
id="heardStationsHelpModal"
|
|
||||||
>
|
|
||||||
<div class="modal-dialog modal-dialog-scrollable">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title">Station List Help</h5>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-close"
|
|
||||||
data-bs-dismiss="modal"
|
|
||||||
aria-label="Close"
|
|
||||||
></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="card mb-3">
|
|
||||||
<div class="card-body">
|
|
||||||
<p class="card-text">
|
|
||||||
Stations that you've been able to decode will be listed here.
|
|
||||||
Details such as time, frequency, message type, call sign,
|
|
||||||
location and SNR will be listed. Existing entries are updated
|
|
||||||
if they already exist and more detailed history can be viewed
|
|
||||||
in chat window for each station.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- AUDIO MODAL -->
|
|
||||||
<div
|
|
||||||
class="modal fade"
|
|
||||||
data-bs-backdrop="static"
|
|
||||||
tabindex="-1"
|
|
||||||
id="audioModal"
|
|
||||||
>
|
|
||||||
<div class="modal-dialog modal-dialog-scrollable">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title">Audio tuning</h5>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn btn-close"
|
|
||||||
data-bs-dismiss="modal"
|
|
||||||
aria-label="Close"
|
|
||||||
></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="input-group input-group-sm mb-1">
|
|
||||||
<span class="input-group-text">Test-Frame</span>
|
|
||||||
<button type="button" id="sendTestFrame" class="btn btn-danger">
|
|
||||||
Transmit
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="input-group input-group-sm mb-1">
|
|
||||||
<span class="input-group-text">TX Level</span>
|
|
||||||
<span class="input-group-text" id="audioLevelTXvalue">---</span>
|
|
||||||
<span class="input-group-text w-75">
|
|
||||||
<input
|
|
||||||
type="range"
|
|
||||||
class="form-range"
|
|
||||||
min="0"
|
|
||||||
max="250"
|
|
||||||
step="1"
|
|
||||||
id="audioLevelTX"
|
|
||||||
/></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -12,6 +12,15 @@ const settings = useSettingsStore(pinia);
|
||||||
import { useStateStore } from '../store/stateStore.js';
|
import { useStateStore } from '../store/stateStore.js';
|
||||||
const state = useStateStore(pinia);
|
const state = useStateStore(pinia);
|
||||||
|
|
||||||
|
import {record_audio, sendTestFrame} from '../js/sock.js'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function startStopRecordAudio(){
|
||||||
|
record_audio()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div class="card mb-1">
|
<div class="card mb-1">
|
||||||
|
@ -38,9 +47,12 @@ const state = useStateStore(pinia);
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
id="startStopRecording"
|
id="startStopRecording"
|
||||||
class="btn btn-sm btn-outline-danger"
|
class="btn btn-sm"
|
||||||
|
@click="startStopRecordAudio()"
|
||||||
|
v-bind:class="{ 'btn-outline-secondary' : state.audio_recording === 'False',
|
||||||
|
'btn-secondary' : state.audio_recording === 'True'}"
|
||||||
>
|
>
|
||||||
Record audio
|
Record
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-1 text-end">
|
<div class="col-1 text-end">
|
||||||
|
|
|
@ -84,7 +84,6 @@ function startStopBeacon(){
|
||||||
maxlength="11"
|
maxlength="11"
|
||||||
aria-label="Input group"
|
aria-label="Input group"
|
||||||
aria-describedby="btnGroupAddon"
|
aria-describedby="btnGroupAddon"
|
||||||
v-model="text"
|
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
class="btn btn-sm btn-outline-secondary ms-1"
|
class="btn btn-sm btn-outline-secondary ms-1"
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
||||||
import {saveSettingsToFile} from '../js/settingsHandler'
|
|
||||||
|
import {saveSettingsToFile} from '../js/settingsHandler';
|
||||||
|
|
||||||
import { setActivePinia } from 'pinia';
|
import { setActivePinia } from 'pinia';
|
||||||
import pinia from '../store/index';
|
import pinia from '../store/index';
|
||||||
|
@ -34,7 +35,15 @@ switch (event.target.id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="card mb-1">
|
<div class="card mb-1">
|
||||||
<div class="card-header p-1">
|
<div class="card-header p-1">
|
||||||
|
|
923
gui_vue/src/components/main_modals.vue
Normal file
923
gui_vue/src/components/main_modals.vue
Normal file
|
@ -0,0 +1,923 @@
|
||||||
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
import {saveSettingsToFile} from '../js/settingsHandler'
|
||||||
|
|
||||||
|
import { setActivePinia } from 'pinia';
|
||||||
|
import pinia from '../store/index';
|
||||||
|
setActivePinia(pinia);
|
||||||
|
|
||||||
|
import { useSettingsStore } from '../store/settingsStore.js';
|
||||||
|
const settings = useSettingsStore(pinia);
|
||||||
|
|
||||||
|
import { useStateStore } from '../store/stateStore.js';
|
||||||
|
const state = useStateStore(pinia);
|
||||||
|
|
||||||
|
import {sendTestFrame, setTxAudioLevel} from '../js/sock.js'
|
||||||
|
|
||||||
|
|
||||||
|
function tuneAudio(){
|
||||||
|
sendTestFrame()
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_audio_level(obj){
|
||||||
|
|
||||||
|
setTxAudioLevel(state.audio_level)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
|
||||||
|
<!-- HELP MODALS AUDIO -->
|
||||||
|
<div
|
||||||
|
class="modal fade"
|
||||||
|
data-bs-backdrop="static"
|
||||||
|
tabindex="-1"
|
||||||
|
id="audioHelpModal"
|
||||||
|
>
|
||||||
|
<div class="modal-dialog modal-dialog-scrollable">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Help</h5>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-close"
|
||||||
|
data-bs-dismiss="modal"
|
||||||
|
aria-label="Close"
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="input-group input-group-sm mb-1">
|
||||||
|
<span class="input-group-text">
|
||||||
|
<i class="bi bi-mic-fill" style="font-size: 1rem"></i>
|
||||||
|
</span>
|
||||||
|
<select
|
||||||
|
class="form-select form-select-sm"
|
||||||
|
aria-label=".form-select-sm"
|
||||||
|
disabled
|
||||||
|
>
|
||||||
|
<!-- <option selected value="3011">USB Interface</option>-->
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<p class="card-text">
|
||||||
|
Select your audio device for transmitting. It
|
||||||
|
<strong>must</strong> be using a sample rate of
|
||||||
|
<strong>48000Hz</strong>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="input-group input-group-sm">
|
||||||
|
<span class="input-group-text">
|
||||||
|
<i class="bi bi-volume-up" style="font-size: 1rem"></i>
|
||||||
|
</span>
|
||||||
|
<select
|
||||||
|
class="form-select form-select-sm"
|
||||||
|
aria-label=".form-select-sm"
|
||||||
|
disabled
|
||||||
|
></select>
|
||||||
|
</div>
|
||||||
|
<p class="card-text">
|
||||||
|
Select your audio device for receiving. It
|
||||||
|
<strong>must</strong> be using a sample rate of
|
||||||
|
<strong>48000Hz</strong>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- HELP MODALS RIGCONTROL -->
|
||||||
|
<div
|
||||||
|
class="modal fade"
|
||||||
|
data-bs-backdrop="static"
|
||||||
|
tabindex="-1"
|
||||||
|
id="rigcontrolHelpModal"
|
||||||
|
>
|
||||||
|
<div class="modal-dialog modal-dialog-scrollable">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Help</h5>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-close"
|
||||||
|
data-bs-dismiss="modal"
|
||||||
|
aria-label="Close"
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Rig Control</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
This section is where you configure rig control method (none
|
||||||
|
(VOX) or hamlib) for both GUI and TNC. For the best experience
|
||||||
|
hamlib control is recommended.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">None/Vox</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Select "None/Vox" if you want to use Vox for triggering PTT.
|
||||||
|
No connection to rigctld will be established. No frequency
|
||||||
|
information is availble.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Hamlib</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Select "Hamlib" if you want to have more control over your
|
||||||
|
radio. Define your hamlib settings in settings, and click the
|
||||||
|
start button to start rigctld. You may use the 'PTT test'
|
||||||
|
button to ensure rig control is working.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- HELP MODALS STATION -->
|
||||||
|
<div
|
||||||
|
class="modal fade"
|
||||||
|
data-bs-backdrop="static"
|
||||||
|
tabindex="-1"
|
||||||
|
id="stationHelpModal"
|
||||||
|
>
|
||||||
|
<div class="modal-dialog modal-dialog-scrollable">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Help</h5>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-close"
|
||||||
|
data-bs-dismiss="modal"
|
||||||
|
aria-label="Close"
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
These settings will be saved automatically when changing.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">
|
||||||
|
<div
|
||||||
|
class="input-group input-group-sm mb-0"
|
||||||
|
data-bs-placement="bottom"
|
||||||
|
data-bs-toggle="tooltip"
|
||||||
|
data-bs-trigger="hover"
|
||||||
|
data-bs-html="false"
|
||||||
|
title="Enter your callsign and save it"
|
||||||
|
>
|
||||||
|
<span class="input-group-text">
|
||||||
|
<i
|
||||||
|
class="bi bi-person-bounding-box"
|
||||||
|
style="font-size: 1rem"
|
||||||
|
></i>
|
||||||
|
</span>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
placeholder="callsign"
|
||||||
|
pattern="[A-Z]*"
|
||||||
|
maxlength="8"
|
||||||
|
style="max-width: 8rem"
|
||||||
|
aria-label="Input group"
|
||||||
|
aria-describedby="btnGroupAddon"
|
||||||
|
disabled
|
||||||
|
/>
|
||||||
|
<select
|
||||||
|
class="form-select form-select-sm"
|
||||||
|
aria-label=".form-select-sm"
|
||||||
|
style="max-width: 6rem"
|
||||||
|
disabled
|
||||||
|
>
|
||||||
|
<option selected value="SSID">SSID</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Enter your callsign and SSID. Your callsign can have a maximum
|
||||||
|
length of 7 characters
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">
|
||||||
|
<div
|
||||||
|
class="input-group input-group-sm mb-0"
|
||||||
|
data-bs-placement="bottom"
|
||||||
|
data-bs-toggle="tooltip"
|
||||||
|
data-bs-trigger="hover"
|
||||||
|
data-bs-html="false"
|
||||||
|
title="Enter your gridsquare and save it"
|
||||||
|
>
|
||||||
|
<span class="input-group-text">
|
||||||
|
<i class="bi bi-house-fill" style="font-size: 1rem"></i>
|
||||||
|
</span>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control mr-1"
|
||||||
|
style="max-width: 6rem"
|
||||||
|
placeholder="locator"
|
||||||
|
maxlength="6"
|
||||||
|
aria-label="Input group"
|
||||||
|
aria-describedby="btnGroupAddon"
|
||||||
|
disabled
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Enter your position as a 4 or 6 digit grid square, also known
|
||||||
|
as a maidenhead locator. Six digits are recommended.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- HELP MODALS UPDATER -->
|
||||||
|
<div
|
||||||
|
class="modal fade"
|
||||||
|
data-bs-backdrop="static"
|
||||||
|
tabindex="-1"
|
||||||
|
id="updaterHelpModal"
|
||||||
|
>
|
||||||
|
<div class="modal-dialog modal-dialog-scrollable">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Help</h5>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-close"
|
||||||
|
data-bs-dismiss="modal"
|
||||||
|
aria-label="Close"
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Auto-Updater</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
The auto updater loads the latest version from Github and
|
||||||
|
installs it automatically. You can select the update channel
|
||||||
|
in settings. Once an update has been downlaoded, you need to
|
||||||
|
confirm the auto-installation and restart.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Alpha</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Alpha releases are more frequent and contain the latest
|
||||||
|
features, but are likely to be unstable and introduce bugs.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Beta</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Beta releases are more stable than Alpha releases. They are a
|
||||||
|
good tradeoff between latest features and stability. They will
|
||||||
|
be updated less often. A beta release has not been released
|
||||||
|
yet.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Stable</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Stable releases are the most stable versions with no known
|
||||||
|
major issues. A stable release has not been released yet.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- HELP MODALS LOCAL REMOTE -->
|
||||||
|
<div
|
||||||
|
class="modal fade"
|
||||||
|
data-bs-backdrop="static"
|
||||||
|
tabindex="-1"
|
||||||
|
id="localRemoteHelpModal"
|
||||||
|
>
|
||||||
|
<div class="modal-dialog modal-dialog-scrollable">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Help</h5>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-close"
|
||||||
|
data-bs-dismiss="modal"
|
||||||
|
aria-label="Close"
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">
|
||||||
|
<div
|
||||||
|
class="btn-group btn-group-sm me-2"
|
||||||
|
role="group"
|
||||||
|
aria-label="local-remote-switch toggle button group"
|
||||||
|
data-bs-placement="bottom"
|
||||||
|
data-bs-toggle="tooltip"
|
||||||
|
data-bs-trigger="hover"
|
||||||
|
data-bs-html="true"
|
||||||
|
title="Select a local or a remote location of your TNC daemon. Normally local is the preferred option."
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
type="radio"
|
||||||
|
class="btn-check"
|
||||||
|
name="local-remote-switch"
|
||||||
|
autocomplete="off"
|
||||||
|
checked
|
||||||
|
disabled
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
class="btn btn-sm btn-outline-secondary"
|
||||||
|
for="local-remote-switch1"
|
||||||
|
>
|
||||||
|
<i class="bi bi-pc-display-horizontal"></i>
|
||||||
|
<span class="ms-2 me-2">Local tnc</span>
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
type="radio"
|
||||||
|
class="btn-check"
|
||||||
|
name="local-remote-switch"
|
||||||
|
autocomplete="off"
|
||||||
|
disabled
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
class="btn btn-sm btn-outline-secondary"
|
||||||
|
for="local-remote-switch2"
|
||||||
|
>
|
||||||
|
<i class="bi bi-ethernet"></i>
|
||||||
|
<span class="ms-2 me-2">Remote tnc</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Local / Remote switch. If the TNC is running on the same
|
||||||
|
computer as the GUI, select local. Otherwise choose remote and
|
||||||
|
enter the IP/Port of where the TNC is running.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">
|
||||||
|
<div class="input-group input-group-sm me-2">
|
||||||
|
<span class="input-group-text">tnc ip</span>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
placeholder="ip address"
|
||||||
|
value="192.168.178.163"
|
||||||
|
maxlength="17"
|
||||||
|
style="width: 8rem"
|
||||||
|
aria-label="Username"
|
||||||
|
aria-describedby="basic-addon1"
|
||||||
|
disabled
|
||||||
|
/>
|
||||||
|
<span class="input-group-text">:</span>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
placeholder="port"
|
||||||
|
value="3000"
|
||||||
|
maxlength="5"
|
||||||
|
max="65534"
|
||||||
|
min="1025"
|
||||||
|
style="width: 4rem"
|
||||||
|
aria-label="Username"
|
||||||
|
aria-describedby="basic-addon1"
|
||||||
|
disabled
|
||||||
|
/>
|
||||||
|
<button
|
||||||
|
class="btn btn-sm btn-danger"
|
||||||
|
type="button"
|
||||||
|
disabled
|
||||||
|
>
|
||||||
|
<i class="bi bi-diagram-3" style="font-size: 1rem"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Remote IP of TNC. Port is port of daemon. The tnc port will
|
||||||
|
automatically adjusted. ( daemon port - 1 )
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- HELP MODALS START STOP TNC -->
|
||||||
|
<div
|
||||||
|
class="modal fade"
|
||||||
|
data-bs-backdrop="static"
|
||||||
|
tabindex="-1"
|
||||||
|
id="startStopTNCHelpModal"
|
||||||
|
>
|
||||||
|
<div class="modal-dialog modal-dialog-scrollable">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Help</h5>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-close"
|
||||||
|
data-bs-dismiss="modal"
|
||||||
|
aria-label="Close"
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">
|
||||||
|
<div class="btn-group" role="group">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-sm btn-outline-success"
|
||||||
|
data-bs-toggle="tooltip"
|
||||||
|
data-bs-trigger="hover"
|
||||||
|
data-bs-html="false"
|
||||||
|
title="Start the TNC. Please set your audio and radio settings first!"
|
||||||
|
disabled
|
||||||
|
>
|
||||||
|
<i class="bi bi-play-fill"></i>
|
||||||
|
<span class="ms-2">Start tnc</span>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-sm btn-outline-danger"
|
||||||
|
data-bs-toggle="tooltip"
|
||||||
|
data-bs-trigger="hover"
|
||||||
|
data-bs-html="false"
|
||||||
|
title="Stop the TNC."
|
||||||
|
disabled
|
||||||
|
>
|
||||||
|
<i class="bi bi-stop-fill"></i>
|
||||||
|
<span class="ms-2">Stop tnc</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Start or stop the TNC service. The TNC daemon must be running
|
||||||
|
and will work whether the TNC is local or remote.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- HELP MODALS AUDIO LEVEL -->
|
||||||
|
<div
|
||||||
|
class="modal fade"
|
||||||
|
data-bs-backdrop="static"
|
||||||
|
tabindex="-1"
|
||||||
|
id="audioLevelHelpModal"
|
||||||
|
>
|
||||||
|
<div class="modal-dialog modal-dialog-scrollable">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Help</h5>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-close"
|
||||||
|
data-bs-dismiss="modal"
|
||||||
|
aria-label="Close"
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">
|
||||||
|
<div class="progress mb-0" style="height: 22px">
|
||||||
|
<div
|
||||||
|
class="progress-bar progress-bar-striped bg-primary force-gpu"
|
||||||
|
role="progressbar"
|
||||||
|
style="width: 5%"
|
||||||
|
aria-valuenow="5"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100"
|
||||||
|
></div>
|
||||||
|
<p
|
||||||
|
class="justify-content-center d-flex position-absolute w-100"
|
||||||
|
>
|
||||||
|
-38 dBFS (Audio Level)
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="progress mb-0" style="height: 8px">
|
||||||
|
<div
|
||||||
|
class="progress-bar progress-bar-striped bg-warning"
|
||||||
|
role="progressbar"
|
||||||
|
style="width: 1%"
|
||||||
|
aria-valuenow="1"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100"
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
class="progress-bar bg-success"
|
||||||
|
role="progressbar"
|
||||||
|
style="width: 89%"
|
||||||
|
aria-valuenow="50"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100"
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
class="progress-bar progress-bar-striped bg-warning"
|
||||||
|
role="progressbar"
|
||||||
|
style="width: 20%"
|
||||||
|
aria-valuenow="20"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100"
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
class="progress-bar progress-bar-striped bg-danger"
|
||||||
|
role="progressbar"
|
||||||
|
style="width: 29%"
|
||||||
|
aria-valuenow="29"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100"
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Represents the level of audio from transceiver. Excessively
|
||||||
|
high levels will affect decoding performance negatively.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">
|
||||||
|
<div class="progress mb-0" style="height: 22px">
|
||||||
|
<div
|
||||||
|
class="progress-bar progress-bar-striped bg-primary force-gpu"
|
||||||
|
role="progressbar"
|
||||||
|
style="width: 30%"
|
||||||
|
aria-valuenow="0"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100"
|
||||||
|
></div>
|
||||||
|
<p
|
||||||
|
class="justify-content-center d-flex position-absolute w-100"
|
||||||
|
id="noise_level_value"
|
||||||
|
>
|
||||||
|
-24 S-Meter (dBm)
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="progress mb-0" style="height: 8px">
|
||||||
|
<div
|
||||||
|
class="progress-bar progress-bar-striped bg-warning"
|
||||||
|
role="progressbar"
|
||||||
|
style="width: 1%"
|
||||||
|
aria-valuenow="1"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100"
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
class="progress-bar bg-success"
|
||||||
|
role="progressbar"
|
||||||
|
style="width: 89%"
|
||||||
|
aria-valuenow="50"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100"
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
class="progress-bar progress-bar-striped bg-warning"
|
||||||
|
role="progressbar"
|
||||||
|
style="width: 20%"
|
||||||
|
aria-valuenow="20"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100"
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
class="progress-bar progress-bar-striped bg-danger"
|
||||||
|
role="progressbar"
|
||||||
|
style="width: 29%"
|
||||||
|
aria-valuenow="29"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100"
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Represents noise level of the channel from the transceiver.
|
||||||
|
Requires hamlib rig control.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-sm btn-outline-secondary"
|
||||||
|
>
|
||||||
|
Tune
|
||||||
|
</button>
|
||||||
|
</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Adjust volume level of outgoing audio to transceiver. For best
|
||||||
|
results lower the level so that a minimum amount of ALC is
|
||||||
|
used. Can be used in combination with rig's mic/input gain for
|
||||||
|
furthrer refinement.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">
|
||||||
|
<button type="button" class="btn btn-sm btn-outline-danger">
|
||||||
|
Record audio
|
||||||
|
</button>
|
||||||
|
</h5>
|
||||||
|
<p class="card-text">Create a recording of current channel</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- HELP MODALS BROADCASTS -->
|
||||||
|
<div
|
||||||
|
class="modal fade"
|
||||||
|
data-bs-backdrop="static"
|
||||||
|
tabindex="-1"
|
||||||
|
id="broadcastsHelpModal"
|
||||||
|
>
|
||||||
|
<div class="modal-dialog modal-dialog-scrollable">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Help</h5>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-close"
|
||||||
|
data-bs-dismiss="modal"
|
||||||
|
aria-label="Close"
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<button
|
||||||
|
class="btn btn-sm btn-outline-secondary ms-1"
|
||||||
|
type="button"
|
||||||
|
disabled
|
||||||
|
>
|
||||||
|
Ping
|
||||||
|
</button>
|
||||||
|
<p class="card-text">
|
||||||
|
Send a ping to a remote station by entering a callsign and
|
||||||
|
optional SSID (-0 will be used if not specified.)
|
||||||
|
Alternatively click on a station in the heard station list to
|
||||||
|
populate the call sign field. If the remote station decodes
|
||||||
|
the ping it will transmit a reply. If able to decode the
|
||||||
|
reply, a signal report will be listed in the heard station
|
||||||
|
list.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<button
|
||||||
|
class="btn btn-sm btn-outline-secondary"
|
||||||
|
type="button"
|
||||||
|
disabled
|
||||||
|
>
|
||||||
|
Call CQ
|
||||||
|
</button>
|
||||||
|
<p class="card-text">Sending out a CQ CQ CQ to the world.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-sm btn-outline-secondary"
|
||||||
|
disabled
|
||||||
|
>
|
||||||
|
<i class="bi bi-soundwave"></i>Toggle beacon
|
||||||
|
</button>
|
||||||
|
<p class="card-text">
|
||||||
|
Sends a periodic broadcast (duration is definable in settings)
|
||||||
|
that announces you are available. Check explorer to see other
|
||||||
|
active stations that may have decoded your beacon.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- HELP MODALS WATERFALL -->
|
||||||
|
<div
|
||||||
|
class="modal fade"
|
||||||
|
data-bs-backdrop="static"
|
||||||
|
tabindex="-1"
|
||||||
|
id="waterfallHelpModal"
|
||||||
|
>
|
||||||
|
<div class="modal-dialog modal-dialog-scrollable">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Help</h5>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-close"
|
||||||
|
data-bs-dismiss="modal"
|
||||||
|
aria-label="Close"
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">
|
||||||
|
Waterfall
|
||||||
|
<input
|
||||||
|
type="radio"
|
||||||
|
class="btn-check"
|
||||||
|
name="waterfall-scatter-switch"
|
||||||
|
autocomplete="off"
|
||||||
|
checked
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
class="btn btn-sm btn-outline-secondary"
|
||||||
|
for="waterfall-scatter-switch1"
|
||||||
|
><strong><i class="bi bi-water"></i></strong>
|
||||||
|
</label>
|
||||||
|
</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Displays a waterfall for activity of current channel.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">
|
||||||
|
Busy Indicator
|
||||||
|
|
||||||
|
<button class="btn btn-sm btn-success" type="button">
|
||||||
|
busy
|
||||||
|
</button>
|
||||||
|
</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Green when channel is open and changes to red to indicate
|
||||||
|
there is activity on the channel.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">
|
||||||
|
Signal Indicator
|
||||||
|
<button class="btn btn-sm btn-success" type="button">
|
||||||
|
signal
|
||||||
|
</button>
|
||||||
|
</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Changes to green when Codec2 data is detected on channel.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">
|
||||||
|
Constellation Plot
|
||||||
|
<input type="radio" class="btn-check" autocomplete="off" />
|
||||||
|
<label class="btn btn-sm btn-outline-secondary"
|
||||||
|
><strong><i class="bi bi-border-outer"></i></strong>
|
||||||
|
</label>
|
||||||
|
</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Displays a plot of last decoded message. A constellation plot
|
||||||
|
is a simple way to represent signal quality.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">
|
||||||
|
Speed Chart
|
||||||
|
|
||||||
|
<input type="radio" class="btn-check" autocomplete="off" />
|
||||||
|
<label class="btn btn-sm btn-outline-secondary"
|
||||||
|
><strong><i class="bi bi-graph-up-arrow"></i></strong>
|
||||||
|
</label>
|
||||||
|
</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Shows history of SNR and bit rate of messages.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- HELP MODALS HEARD STATIONS -->
|
||||||
|
<div
|
||||||
|
class="modal fade"
|
||||||
|
data-bs-backdrop="static"
|
||||||
|
tabindex="-1"
|
||||||
|
id="heardStationsHelpModal"
|
||||||
|
>
|
||||||
|
<div class="modal-dialog modal-dialog-scrollable">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Station List Help</h5>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-close"
|
||||||
|
data-bs-dismiss="modal"
|
||||||
|
aria-label="Close"
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<p class="card-text">
|
||||||
|
Stations that you've been able to decode will be listed here.
|
||||||
|
Details such as time, frequency, message type, call sign,
|
||||||
|
location and SNR will be listed. Existing entries are updated
|
||||||
|
if they already exist and more detailed history can be viewed
|
||||||
|
in chat window for each station.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- AUDIO MODAL -->
|
||||||
|
<div
|
||||||
|
class="modal fade"
|
||||||
|
data-bs-backdrop="static"
|
||||||
|
tabindex="-1"
|
||||||
|
id="audioModal"
|
||||||
|
>
|
||||||
|
<div class="modal-dialog modal-dialog-scrollable">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Audio tuning</h5>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-close"
|
||||||
|
data-bs-dismiss="modal"
|
||||||
|
aria-label="Close"
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="input-group input-group-sm mb-1">
|
||||||
|
<span class="input-group-text">Test-Frame</span>
|
||||||
|
<button type="button" id="sendTestFrame" @click="sendTestFrame()" class="btn btn-danger">
|
||||||
|
Transmit
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="input-group input-group-sm mb-1">
|
||||||
|
<span class="input-group-text">TX Level</span>
|
||||||
|
<span class="input-group-text" >{{state.audio_level}}</span>
|
||||||
|
<span class="input-group-text w-75">
|
||||||
|
<input
|
||||||
|
type="range"
|
||||||
|
class="form-range"
|
||||||
|
min="0"
|
||||||
|
max="250"
|
||||||
|
step="1"
|
||||||
|
id="audioLevelTX"
|
||||||
|
@click="set_audio_level()"
|
||||||
|
v-model="state.audio_level"
|
||||||
|
/></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
|
@ -198,9 +198,11 @@ client.on("data", function (socketdata) {
|
||||||
stateStore.arq_session_state = data["arq_session"]
|
stateStore.arq_session_state = data["arq_session"]
|
||||||
stateStore.arq_state = data["arq_state"]
|
stateStore.arq_state = data["arq_state"]
|
||||||
stateStore.beacon_state = data["beacon_state"]
|
stateStore.beacon_state = data["beacon_state"]
|
||||||
|
stateStore.audio_recording = data["audio_recording"]
|
||||||
|
|
||||||
|
stateStore.hamlib_status = data["hamlib_status"]
|
||||||
|
stateStore.audio_level = data["audio_level"]
|
||||||
|
stateStore.alc = data["alc"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -232,9 +234,7 @@ client.on("data", function (socketdata) {
|
||||||
arq_transmission_percent: data["arq_transmission_percent"],
|
arq_transmission_percent: data["arq_transmission_percent"],
|
||||||
routing_table: data["routing_table"],
|
routing_table: data["routing_table"],
|
||||||
mesh_signalling_table: data["mesh_signalling_table"],
|
mesh_signalling_table: data["mesh_signalling_table"],
|
||||||
hamlib_status: data["hamlib_status"],
|
|
||||||
listen: data["listen"],
|
listen: data["listen"],
|
||||||
audio_recording: data["audio_recording"],
|
|
||||||
speed_list: data["speed_list"],
|
speed_list: data["speed_list"],
|
||||||
is_codec2_traffic: data["is_codec2_traffic"],
|
is_codec2_traffic: data["is_codec2_traffic"],
|
||||||
//speed_table: [{"bpm" : 5200, "snr": -3, "timestamp":1673555399},{"bpm" : 2315, "snr": 12, "timestamp":1673555500}],
|
//speed_table: [{"bpm" : 5200, "snr": -3, "timestamp":1673555399},{"bpm" : 2315, "snr": 12, "timestamp":1673555500}],
|
||||||
|
@ -627,8 +627,7 @@ export function sendCQ(){
|
||||||
};
|
};
|
||||||
|
|
||||||
// Set AUDIO Level
|
// Set AUDIO Level
|
||||||
//exports.setTxAudioLevel = function (value) {
|
export function setTxAudioLevel(value){
|
||||||
function setTxAudioLevel(value){
|
|
||||||
var command =
|
var command =
|
||||||
'{"type" : "set", "command" : "tx_audio_level", "value" : "' + value + '"}';
|
'{"type" : "set", "command" : "tx_audio_level", "value" : "' + value + '"}';
|
||||||
writeTncCommand(command);
|
writeTncCommand(command);
|
||||||
|
@ -824,15 +823,13 @@ function sendResponseSharedFile(
|
||||||
};
|
};
|
||||||
|
|
||||||
//STOP TRANSMISSION
|
//STOP TRANSMISSION
|
||||||
//exports.stopTransmission = function () {
|
export function stopTransmission(){
|
||||||
function stopTransmission(){
|
|
||||||
var command = '{"type" : "arq", "command": "stop_transmission"}';
|
var command = '{"type" : "arq", "command": "stop_transmission"}';
|
||||||
writeTncCommand(command);
|
writeTncCommand(command);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Get RX BUffer
|
// Get RX BUffer
|
||||||
//exports.getRxBuffer = function () {
|
export function getRxBuffer(){
|
||||||
function getRxBuffer(){
|
|
||||||
var command = '{"type" : "get", "command" : "rx_buffer"}';
|
var command = '{"type" : "get", "command" : "rx_buffer"}';
|
||||||
|
|
||||||
// call command only if new data arrived
|
// call command only if new data arrived
|
||||||
|
@ -842,7 +839,6 @@ function getRxBuffer(){
|
||||||
};
|
};
|
||||||
|
|
||||||
// START BEACON
|
// START BEACON
|
||||||
//exports.startBeacon = function (interval) {
|
|
||||||
export function startBeacon(interval){
|
export function startBeacon(interval){
|
||||||
var command =
|
var command =
|
||||||
'{"type" : "broadcast", "command" : "start_beacon", "parameter": "' +
|
'{"type" : "broadcast", "command" : "start_beacon", "parameter": "' +
|
||||||
|
@ -852,15 +848,13 @@ export function startBeacon(interval){
|
||||||
};
|
};
|
||||||
|
|
||||||
// STOP BEACON
|
// STOP BEACON
|
||||||
//exports.stopBeacon = function () {
|
|
||||||
export function stopBeacon(){
|
export function stopBeacon(){
|
||||||
var command = '{"type" : "broadcast", "command" : "stop_beacon"}';
|
var command = '{"type" : "broadcast", "command" : "stop_beacon"}';
|
||||||
writeTncCommand(command);
|
writeTncCommand(command);
|
||||||
};
|
};
|
||||||
|
|
||||||
// OPEN ARQ SESSION
|
// OPEN ARQ SESSION
|
||||||
//exports.connectARQ = function (dxcallsign) {
|
export function connectARQ(dxcallsign){
|
||||||
function connectARQ(dxcallsign){
|
|
||||||
command =
|
command =
|
||||||
'{"type" : "arq", "command" : "connect", "dxcallsign": "' +
|
'{"type" : "arq", "command" : "connect", "dxcallsign": "' +
|
||||||
dxcallsign +
|
dxcallsign +
|
||||||
|
@ -869,22 +863,19 @@ function connectARQ(dxcallsign){
|
||||||
};
|
};
|
||||||
|
|
||||||
// CLOSE ARQ SESSION
|
// CLOSE ARQ SESSION
|
||||||
//exports.disconnectARQ = function () {
|
export function disconnectARQ(){
|
||||||
function disconnectARQ(){
|
|
||||||
var command = '{"type" : "arq", "command" : "disconnect"}';
|
var command = '{"type" : "arq", "command" : "disconnect"}';
|
||||||
writeTncCommand(command);
|
writeTncCommand(command);
|
||||||
};
|
};
|
||||||
|
|
||||||
// SEND TEST FRAME
|
// SEND TEST FRAME
|
||||||
//exports.sendTestFrame = function () {
|
export function sendTestFrame(){
|
||||||
function sendTestFrame(){
|
|
||||||
var command = '{"type" : "set", "command" : "send_test_frame"}';
|
var command = '{"type" : "set", "command" : "send_test_frame"}';
|
||||||
writeTncCommand(command);
|
writeTncCommand(command);
|
||||||
};
|
};
|
||||||
|
|
||||||
// SEND FEC
|
// SEND FEC
|
||||||
//exports.sendFEC = function (mode, payload) {
|
export function sendFEC(mode, payload){
|
||||||
function sendFEC(mode, payload){
|
|
||||||
var command =
|
var command =
|
||||||
'{"type" : "fec", "command" : "transmit", "mode" : "' +
|
'{"type" : "fec", "command" : "transmit", "mode" : "' +
|
||||||
mode +
|
mode +
|
||||||
|
@ -895,8 +886,7 @@ function sendFEC(mode, payload){
|
||||||
};
|
};
|
||||||
|
|
||||||
// SEND FEC IS WRITING
|
// SEND FEC IS WRITING
|
||||||
//exports.sendFecIsWriting = function (mycallsign) {
|
export function sendFecIsWriting(mycallsign){
|
||||||
function sendFecIsWriting(mycallsign){
|
|
||||||
var command =
|
var command =
|
||||||
'{"type" : "fec", "command" : "transmit_is_writing", "mycallsign" : "' +
|
'{"type" : "fec", "command" : "transmit_is_writing", "mycallsign" : "' +
|
||||||
mycallsign +
|
mycallsign +
|
||||||
|
@ -905,8 +895,7 @@ function sendFecIsWriting(mycallsign){
|
||||||
};
|
};
|
||||||
|
|
||||||
// SEND FEC TO BROADCASTCHANNEL
|
// SEND FEC TO BROADCASTCHANNEL
|
||||||
//exports.sendBroadcastChannel = function (channel, data_out, uuid) {
|
export function sendBroadcastChannel(channel, data_out, uuid){
|
||||||
function sendBroadcastChannel(channel, data_out, uuid){
|
|
||||||
let checksum = "";
|
let checksum = "";
|
||||||
let command = "";
|
let command = "";
|
||||||
let data = FD.btoa_FD(
|
let data = FD.btoa_FD(
|
||||||
|
@ -930,48 +919,24 @@ function sendBroadcastChannel(channel, data_out, uuid){
|
||||||
};
|
};
|
||||||
|
|
||||||
// RECORD AUDIO
|
// RECORD AUDIO
|
||||||
//exports.record_audio = function () {
|
export function record_audio(){
|
||||||
function record_audio(){
|
|
||||||
var command = '{"type" : "set", "command" : "record_audio"}';
|
var command = '{"type" : "set", "command" : "record_audio"}';
|
||||||
writeTncCommand(command);
|
writeTncCommand(command);
|
||||||
};
|
};
|
||||||
|
|
||||||
// SET FREQUENCY
|
// SET FREQUENCY
|
||||||
//exports.set_frequency = function (frequency) {
|
export function set_frequency(frequency){
|
||||||
function set_frequency(frequency){
|
var command =
|
||||||
command =
|
|
||||||
'{"type" : "set", "command" : "frequency", "frequency": ' + frequency + "}";
|
'{"type" : "set", "command" : "frequency", "frequency": ' + frequency + "}";
|
||||||
writeTncCommand(command);
|
writeTncCommand(command);
|
||||||
};
|
};
|
||||||
|
|
||||||
// SET MODE
|
// SET MODE
|
||||||
//exports.set_mode = function (mode) {
|
export function set_mode(mode){
|
||||||
function set_mode(mode){
|
|
||||||
var command = '{"type" : "set", "command" : "mode", "mode": "' + mode + '"}';
|
var command = '{"type" : "set", "command" : "mode", "mode": "' + mode + '"}';
|
||||||
console.log(command);
|
|
||||||
writeTncCommand(command);
|
writeTncCommand(command);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
//ipcRenderer.on("action-update-tnc-ip", (event, arg) => {
|
|
||||||
client.destroy();
|
|
||||||
let Data = {
|
|
||||||
busy_state: "-",
|
|
||||||
arq_state: "-",
|
|
||||||
//channel_state: "-",
|
|
||||||
frequency: "-",
|
|
||||||
mode: "-",
|
|
||||||
bandwidth: "-",
|
|
||||||
dbfs_level: 0,
|
|
||||||
};
|
|
||||||
//ipcRenderer.send("request-update-tnc-state", Data);
|
|
||||||
//tnc_port = arg.port;
|
|
||||||
//tnc_host = arg.adress;
|
|
||||||
connectTNC();
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
// https://stackoverflow.com/a/50579690
|
// https://stackoverflow.com/a/50579690
|
||||||
// crc32 calculation
|
// crc32 calculation
|
||||||
//console.log(crc32('abc'));
|
//console.log(crc32('abc'));
|
||||||
|
|
|
@ -32,6 +32,11 @@ export const useStateStore = defineStore('stateStore', () => {
|
||||||
var arq_state = ref("")
|
var arq_state = ref("")
|
||||||
var beacon_state = ref("False")
|
var beacon_state = ref("False")
|
||||||
|
|
||||||
|
var audio_recording = ref("")
|
||||||
|
|
||||||
|
var hamlib_status = ref("")
|
||||||
|
var audio_level = ref("")
|
||||||
|
var alc = ref("")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -102,5 +107,5 @@ export const useStateStore = defineStore('stateStore', () => {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return { dxcallsign, busy_state, arq_state, frequency, mode, bandwidth, dbfs_level, speed_level, fft, channel_busy, channel_busy_slot, scatter, ptt_state, s_meter_strength_percent, s_meter_strength_raw, arq_total_bytes, updateTncState };
|
return { dxcallsign, busy_state, arq_state, frequency, mode, bandwidth, dbfs_level, speed_level, fft, channel_busy, channel_busy_slot, scatter, ptt_state, s_meter_strength_percent, s_meter_strength_raw, arq_total_bytes, audio_recording, hamlib_status, audio_level, alc, updateTncState };
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue