2014-11-29 00:07:10 +00:00
<!DOCTYPE HTML>
<!--
2018-09-25 12:56:47 +00:00
This file is part of OpenWebRX,
an open-source SDR receiver software with a web UI.
Copyright (c) 2013-2015 by Andras Retzler < randras @ sdr . hu >
2020-01-09 21:24:39 +00:00
Copyright (c) 2019-2020 by Jakob Ketterl < dd5jfk @ darc . de >
2014-11-29 00:07:10 +00:00
2015-08-17 18:32:58 +00:00
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
2014-11-29 00:07:10 +00:00
2015-08-17 18:32:58 +00:00
This program is distributed in the hope that it will be useful,
2014-11-29 00:07:10 +00:00
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2015-08-17 18:32:58 +00:00
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see < http: / / www . gnu . org / licenses / > .
2014-11-29 00:07:10 +00:00
-->
< html >
2018-09-25 12:56:47 +00:00
< head >
< title > OpenWebRX | Open Source SDR Web App for Everyone!< / title >
2019-12-03 23:47:50 +00:00
< link rel = "shortcut icon" type = "image/x-icon" href = "static/favicon.ico" / >
2019-05-03 20:59:24 +00:00
< script src = "static/openwebrx.js" > < / script >
2019-07-08 19:01:30 +00:00
< script src = "static/lib/jquery-3.2.1.min.js" > < / script >
< script src = "static/lib/jquery.nanoscroller.js" > < / script >
2019-10-22 19:30:48 +00:00
< script src = "static/lib/BookmarkBar.js" > < / script >
2019-10-20 16:53:23 +00:00
< script src = "static/lib/AudioEngine.js" > < / script >
2019-10-22 20:35:54 +00:00
< script src = "static/lib/ProgressBar.js" > < / script >
2019-10-26 20:32:25 +00:00
< script src = "static/lib/Measurement.js" > < / script >
2020-01-18 20:33:10 +00:00
< script src = "static/lib/FrequencyDisplay.js" > < / script >
2019-07-08 19:01:30 +00:00
< link rel = "stylesheet" type = "text/css" href = "static/lib/nanoscroller.css" / >
2019-07-11 11:44:04 +00:00
< link rel = "stylesheet" type = "text/css" href = "static/css/openwebrx.css" / >
2018-09-25 12:56:47 +00:00
< meta charset = "utf-8" >
< / head >
< body onload = "openwebrx_init();" >
2014-11-29 00:07:10 +00:00
< div id = "webrx-page-container" >
2019-07-11 11:40:12 +00:00
${header}
2019-10-26 19:32:00 +00:00
< div id = "openwebrx-frequency-container" >
< div id = "openwebrx-bookmarks-container" > < / div >
< div id = "openwebrx-scale-container" >
< canvas id = "openwebrx-scale-canvas" width = "0" height = "0" > < / canvas >
2019-09-27 23:57:34 +00:00
< / div >
2019-10-26 19:32:00 +00:00
< / div >
2019-11-01 18:48:08 +00:00
< div id = "webrx-canvas-background" >
< div id = "webrx-canvas-container" >
<!-- add canvas here by javascript -->
< / div >
2019-10-26 19:32:00 +00:00
< / div >
< div id = "openwebrx-panels-container" >
< div id = "openwebrx-panels-container-left" >
2020-02-20 20:58:08 +00:00
< div class = "openwebrx-panel" data-panel-name = "client-under-devel" style = "width: 245px; background-color: Red;" >
< span style = "font-size: 15pt; font-weight: bold;" > Under construction< / span >
< br / > We're working on the code right now, so the application might fail.
< / div >
2019-10-26 19:32:00 +00:00
< div class = "openwebrx-panel" id = "openwebrx-panel-digimodes" style = "display: none; width: 619px;" data-panel-name = "digimodes" >
< div id = "openwebrx-digimode-canvas-container" >
< div id = "openwebrx-digimode-select-channel" > < / div >
< / div >
< div id = "openwebrx-digimode-content-container" >
< div class = "gradient" > < / div >
< div id = "openwebrx-digimode-content" >
< span id = "openwebrx-cursor-blink" > < / span >
< / div >
< / div >
< / div >
< table class = "openwebrx-panel" id = "openwebrx-panel-wsjt-message" style = "display: none; width: 619px;" data-panel-name = "wsjt-message" >
< thead > < tr >
< th > UTC< / th >
< th class = "decimal" > dB< / th >
< th class = "decimal" > DT< / th >
< th class = "decimal freq" > Freq< / th >
< th class = "message" > Message< / th >
< / tr > < / thead >
< tbody > < / tbody >
< / table >
< table class = "openwebrx-panel" id = "openwebrx-panel-packet-message" style = "display: none; width: 619px;" data-panel-name = "aprs-message" >
< thead > < tr >
< th > UTC< / th >
< th class = "callsign" > Callsign< / th >
< th class = "coord" > Coord< / th >
< th class = "message" > Comment< / th >
< / tr > < / thead >
< tbody > < / tbody >
< / table >
2020-01-09 14:12:51 +00:00
< table class = "openwebrx-panel" id = "openwebrx-panel-pocsag-message" style = "display: none; width: 619px;" data-panel-name = "pocsag-message" >
< thead > < tr >
< th class = "address" > Address< / th >
< th class = "message" > Message< / th >
< / tr > < / thead >
< tbody > < / tbody >
< / table >
2019-10-27 12:18:00 +00:00
< div class = "openwebrx-panel openwebrx-meta-panel" id = "openwebrx-panel-metadata-ysf" style = "display: none;" data-panel-name = "metadata-ysf" >
2019-10-26 19:32:00 +00:00
< div class = "openwebrx-meta-frame" >
< div class = "openwebrx-meta-slot" >
< div class = "openwebrx-ysf-mode openwebrx-meta-autoclear" > < / div >
< div class = "openwebrx-meta-user-image" > < / div >
< div class = "openwebrx-ysf-source openwebrx-meta-autoclear" > < / div >
< div class = "openwebrx-ysf-up openwebrx-meta-autoclear" > < / div >
< div class = "openwebrx-ysf-down openwebrx-meta-autoclear" > < / div >
< / div >
< / div >
< / div >
2019-10-27 12:18:00 +00:00
< div class = "openwebrx-panel openwebrx-meta-panel" id = "openwebrx-panel-metadata-dmr" style = "display: none;" data-panel-name = "metadata-dmr" >
2019-10-26 19:32:00 +00:00
< div class = "openwebrx-meta-frame" >
< div class = "openwebrx-meta-slot openwebrx-dmr-timeslot-panel" >
< div class = "openwebrx-dmr-slot" > Timeslot 1< / div >
< div class = "openwebrx-meta-user-image" > < / div >
< div class = "openwebrx-dmr-id openwebrx-meta-autoclear" > < / div >
< div class = "openwebrx-dmr-name openwebrx-meta-autoclear" > < / div >
< div class = "openwebrx-dmr-target openwebrx-meta-autoclear" > < / div >
< / div >
< div class = "openwebrx-meta-slot openwebrx-dmr-timeslot-panel" >
< div class = "openwebrx-dmr-slot" > Timeslot 2< / div >
< div class = "openwebrx-meta-user-image" > < / div >
< div class = "openwebrx-dmr-id openwebrx-meta-autoclear" > < / div >
< div class = "openwebrx-dmr-name openwebrx-meta-autoclear" > < / div >
< div class = "openwebrx-dmr-target openwebrx-meta-autoclear" > < / div >
< / div >
< / div >
< / div >
< div class = "openwebrx-panel" id = "openwebrx-panel-log" data-panel-name = "debug" style = "width: 619px;" >
< div class = "openwebrx-panel-inner nano" id = "openwebrx-log-scroll" >
< div class = "nano-content" >
2019-11-24 17:08:54 +00:00
< div id = "openwebrx-client-log-title" > OpenWebRX client log< / div >
< div > Author contact: < a href = "http://www.justjakob.de/" target = "_blank" > Jakob Ketterl, DD5JFK< / a > < / div >
2019-10-26 19:32:00 +00:00
< div id = "openwebrx-debugdiv" > < / div >
< / div >
< / div >
< / div >
< div class = "openwebrx-panel" id = "openwebrx-panel-status" data-panel-name = "status" style = "width: 615px;" data-panel-transparent = "true" >
< div class = "openwebrx-progressbar" id = "openwebrx-bar-audio-buffer" > < span class = "openwebrx-progressbar-text" > Audio buffer [0 ms]< / span > < div class = "openwebrx-progressbar-bar" > < / div > < / div >
< div class = "openwebrx-progressbar" id = "openwebrx-bar-audio-output" > < span class = "openwebrx-progressbar-text" > Audio output [0 sps]< / span > < div class = "openwebrx-progressbar-bar" > < / div > < / div >
< div class = "openwebrx-progressbar" id = "openwebrx-bar-audio-speed" > < span class = "openwebrx-progressbar-text" > Audio stream [0 kbps]< / span > < div class = "openwebrx-progressbar-bar" > < / div > < / div >
< div class = "openwebrx-progressbar" id = "openwebrx-bar-network-speed" > < span class = "openwebrx-progressbar-text" > Network usage [0 kbps]< / span > < div class = "openwebrx-progressbar-bar" > < / div > < / div >
< div class = "openwebrx-progressbar" id = "openwebrx-bar-server-cpu" > < span class = "openwebrx-progressbar-text" > Server CPU [0%]< / span > < div class = "openwebrx-progressbar-bar" > < / div > < / div >
< div class = "openwebrx-progressbar" id = "openwebrx-bar-clients" > < span class = "openwebrx-progressbar-text" > Clients [1]< / span > < div class = "openwebrx-progressbar-bar" > < / div > < / div >
< / div >
2019-09-27 23:57:34 +00:00
< / div >
2019-10-26 19:32:00 +00:00
< div id = "openwebrx-panels-container-right" >
< div class = "openwebrx-panel" id = "openwebrx-panel-receiver" data-panel-name = "client-params" style = "width: 259px;" >
2019-09-28 14:50:21 +00:00
< div class = "openwebrx-panel-line frequencies-container" >
< div class = "frequencies" >
2020-01-25 21:47:47 +00:00
< div id = "webrx-actual-freq" > < / div >
< div id = "webrx-mouse-freq" > < / div >
2019-09-28 14:50:21 +00:00
< / div >
2019-10-24 18:06:24 +00:00
< div class = "openwebrx-button openwebrx-square-button openwebrx-bookmark-button" style = "display:none;" title = "Add bookmark..." >
2019-09-28 14:50:21 +00:00
< img src = "static/gfx/openwebrx-bookmark.png" >
< / div >
< / div >
2019-09-27 23:57:34 +00:00
< div class = "openwebrx-panel-line" >
< select id = "openwebrx-sdr-profiles-listbox" onchange = "sdr_profile_changed();" >
< / select >
< / div >
2019-10-03 22:17:40 +00:00
< div class = "openwebrx-panel-line openwebrx-panel-flex-line" >
2019-09-27 23:57:34 +00:00
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-nfm"
2019-10-26 19:32:00 +00:00
onclick="demodulator_analog_replace('nfm');">FM< / div >
2019-09-27 23:57:34 +00:00
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-am"
2019-10-26 19:32:00 +00:00
onclick="demodulator_analog_replace('am');">AM< / div >
2019-09-27 23:57:34 +00:00
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-lsb"
2019-10-26 19:32:00 +00:00
onclick="demodulator_analog_replace('lsb');">LSB< / div >
2019-09-27 23:57:34 +00:00
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-usb"
2019-10-26 19:32:00 +00:00
onclick="demodulator_analog_replace('usb');">USB< / div >
2019-09-27 23:57:34 +00:00
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-cw"
2019-10-26 19:32:00 +00:00
onclick="demodulator_analog_replace('cw');">CW< / div >
2019-10-03 22:17:40 +00:00
< / div >
< div class = "openwebrx-panel-line openwebrx-panel-flex-line" >
2019-09-27 23:57:34 +00:00
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-dmr"
style="display:none;" data-feature="digital_voice_digiham"
2019-10-26 19:32:00 +00:00
onclick="demodulator_analog_replace('dmr');">DMR< / div >
2019-09-27 23:57:34 +00:00
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-dstar"
style="display:none;" data-feature="digital_voice_dsd"
2019-10-26 19:32:00 +00:00
onclick="demodulator_analog_replace('dstar');">DStar< / div >
2019-09-27 23:57:34 +00:00
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-nxdn"
style="display:none;" data-feature="digital_voice_dsd"
2019-10-26 19:32:00 +00:00
onclick="demodulator_analog_replace('nxdn');">NXDN< / div >
2019-09-27 23:57:34 +00:00
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-ysf"
style="display:none;" data-feature="digital_voice_digiham"
2019-10-26 19:32:00 +00:00
onclick="demodulator_analog_replace('ysf');">YSF< / div >
2018-09-25 12:56:47 +00:00
< / div >
2019-10-03 22:17:40 +00:00
< div class = "openwebrx-panel-line openwebrx-panel-flex-line" >
2019-09-27 23:57:34 +00:00
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-dig" onclick = " demodulator_digital_replace_last ( ) ; " > DIG< / div >
< select id = "openwebrx-secondary-demod-listbox" onchange = "secondary_demod_listbox_changed();" >
< option value = "none" > < / option >
< option value = "bpsk31" > BPSK31< / option >
2020-01-13 19:10:14 +00:00
< option value = "bpsk63" > BPSK63< / option >
2019-09-27 23:57:34 +00:00
< option value = "ft8" data-feature = "wsjt-x" > FT8< / option >
< option value = "wspr" data-feature = "wsjt-x" > WSPR< / option >
< option value = "jt65" data-feature = "wsjt-x" > JT65< / option >
< option value = "jt9" data-feature = "wsjt-x" > JT9< / option >
< option value = "ft4" data-feature = "wsjt-x" > FT4< / option >
< option value = "packet" data-feature = "packet" > Packet< / option >
2020-01-06 21:08:17 +00:00
< option value = "pocsag" data-feature = "pocsag" > Pocsag< / option >
2019-09-27 23:57:34 +00:00
< / select >
2018-09-25 12:56:47 +00:00
< / div >
2019-09-27 23:57:34 +00:00
< div class = "openwebrx-panel-line" >
< div title = "Mute on/off" id = "openwebrx-mute-off" class = "openwebrx-button" onclick = "toggleMute();" > < img src = "static/gfx/openwebrx-speaker.png" class = "openwebrx-sliderbtn-img" id = "openwebrx-mute-img" > < / div >
< input title = "Volume" id = "openwebrx-panel-volume" class = "openwebrx-panel-slider" type = "range" min = "0" max = "150" value = "50" step = "1" onchange = "updateVolume()" oninput = "updateVolume()" >
< div title = "Auto-adjust waterfall colors" id = "openwebrx-waterfall-colors-auto" class = "openwebrx-button" onclick = "waterfall_measure_minmax_now=true;" > < img src = "static/gfx/openwebrx-waterfall-auto.png" class = "openwebrx-sliderbtn-img" > < / div >
< input title = "Waterfall minimum level" id = "openwebrx-waterfall-color-min" class = "openwebrx-panel-slider" type = "range" min = "-200" max = "100" value = "50" step = "1" onchange = "updateWaterfallColors(0);" oninput = "updateVolume()" >
< / div >
< div class = "openwebrx-panel-line" >
< div title = "Auto-set squelch level" id = "openwebrx-squelch-default" class = "openwebrx-button" onclick = "setSquelchToAuto()" > < img src = "static/gfx/openwebrx-squelch-button.png" class = "openwebrx-sliderbtn-img" > < / div >
< input title = "Squelch" id = "openwebrx-panel-squelch" class = "openwebrx-panel-slider" type = "range" min = "-150" max = "0" value = "-150" step = "1" onchange = "updateSquelch()" oninput = "updateSquelch()" >
< div title = "Set waterfall colors to default" id = "openwebrx-waterfall-colors-default" class = "openwebrx-button" onclick = "waterfallColorsDefault()" > < img src = "static/gfx/openwebrx-waterfall-default.png" class = "openwebrx-sliderbtn-img" > < / div >
< input title = "Waterfall maximum level" id = "openwebrx-waterfall-color-max" class = "openwebrx-panel-slider" type = "range" min = "-200" max = "100" value = "50" step = "1" onchange = "updateWaterfallColors(1);" oninput = "updateVolume()" >
2018-09-25 12:56:47 +00:00
< / div >
2019-09-27 23:57:34 +00:00
< div class = "openwebrx-panel-line" >
< div class = "openwebrx-button openwebrx-square-button" onclick = "zoomInOneStep();" title = "Zoom in one step" > < img src = "static/gfx/openwebrx-zoom-in.png" / > < / div >
< div class = "openwebrx-button openwebrx-square-button" onclick = "zoomOutOneStep();" title = "Zoom out one step" > < img src = "static/gfx/openwebrx-zoom-out.png" / > < / div >
< div class = "openwebrx-button openwebrx-square-button" onclick = "zoomInTotal();" title = "Zoom in totally" > < img src = "static/gfx/openwebrx-zoom-in-total.png" / > < / div >
< div class = "openwebrx-button openwebrx-square-button" onclick = "zoomOutTotal();" title = "Zoom out totally" > < img src = "static/gfx/openwebrx-zoom-out-total.png" / > < / div >
< div id = "openwebrx-smeter-db" > 0 dB< / div >
2018-09-25 12:56:47 +00:00
< / div >
2019-09-27 23:57:34 +00:00
< div class = "openwebrx-panel-line" >
< div id = "openwebrx-smeter-outer" >
< div id = "openwebrx-smeter-bar" > < / div >
2018-09-25 12:56:47 +00:00
< / div >
2019-09-27 23:57:34 +00:00
< / div >
< / div >
< / div >
2018-09-25 12:56:47 +00:00
< / div >
2014-11-29 00:07:10 +00:00
< / div >
2019-12-21 22:46:05 +00:00
< div id = "openwebrx-autoplay-overlay" class = "openwebrx-overlay" style = "display:none;" >
2019-11-01 15:58:36 +00:00
< div class = "overlay-content" >
< img id = "openwebrx-play-button" src = "static/gfx/openwebrx-play-button.png" / >
< div > Start OpenWebRX< / div >
2018-09-25 12:56:47 +00:00
< / div >
< / div >
2019-12-21 22:46:05 +00:00
< div id = "openwebrx-error-overlay" class = "openwebrx-overlay" style = "display:none;" >
< div class = "overlay-content" >
< div > This receiver is currently unavailable due to technical issues.< / div >
< div > Error Message:< / div >
< div class = "errormessage" > < / div >
< / div >
< / div >
2019-09-28 17:20:21 +00:00
< div id = "openwebrx-dialog-bookmark" class = "openwebrx-dialog" style = "display:none;" >
< form >
< div class = "form-field" >
< label for = "name" > Name:< / label >
< input type = "text" id = "name" name = "name" required = "required" >
< / div >
< div class = "form-field" >
< label for = "frequency" > Frequency:< / label >
2019-09-28 18:15:47 +00:00
< input type = "number" id = "frequency" name = "frequency" >
2019-09-28 17:20:21 +00:00
< / div >
< div class = "form-field" >
< label for = "modulation" > Modulation:< / label >
< select name = "modulation" id = "modulation" >
< option value = "nfm" > FM< / option >
< option value = "am" > AM< / option >
< option value = "usb" > USB< / option >
< option value = "lsb" > LSB< / option >
< option value = "cw" > CW< / option >
< option value = "dmr" > DMR< / option >
< option value = "dstar" > D-Star< / option >
< option value = "nxdn" > NXDN< / option >
< option value = "ysf" > YSF< / option >
< / select >
< / div >
2019-09-28 18:15:47 +00:00
< div class = "buttons" >
< div class = "openwebrx-button" data-action = "cancel" > Cancel< / div >
< div class = "openwebrx-button" data-action = "submit" > Ok< / div >
< / div >
< input type = "submit" style = "display:none;" >
2019-09-28 17:20:21 +00:00
< / form >
< / div >
2018-09-25 12:56:47 +00:00
< / body >
2014-11-29 00:07:10 +00:00
< / html >