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 >
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-05-03 20:59:24 +00:00
< script src = "static/sdr.js" > < / script >
< script src = "static/mathbox-bundle.min.js" > < / script >
< 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 >
< 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}
2018-09-25 12:56:47 +00:00
< div id = "webrx-main-container" >
2019-09-29 13:48:24 +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 >
< / div >
2019-09-27 23:57:34 +00:00
< / div >
< div id = "openwebrx-mathbox-container" > < / div >
< div id = "webrx-canvas-container" >
<!-- add canvas here by javascript -->
< / div >
< div id = "openwebrx-panels-container" >
< div class = "openwebrx-panel" id = "openwebrx-panel-receiver" data-panel-name = "client-params" data-panel-pos = "right" data-panel-order = "0" data-panel-size = "259,115" >
2019-09-28 14:50:21 +00:00
< div class = "openwebrx-panel-line frequencies-container" >
< div class = "frequencies" >
< div id = "webrx-actual-freq" > ---.--- MHz< / div >
< div id = "webrx-mouse-freq" > ---.--- MHz< / div >
< / div >
< div class = "openwebrx-button openwebrx-square-button openwebrx-bookmark-button" style = "display:none;" >
< 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"
onclick="demodulator_analog_replace('nfm');">FM< / div >
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-am"
onclick="demodulator_analog_replace('am');">AM< / div >
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-lsb"
onclick="demodulator_analog_replace('lsb');">LSB< / div >
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-usb"
onclick="demodulator_analog_replace('usb');">USB< / div >
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-cw"
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"
onclick="demodulator_analog_replace('dmr');">DMR< / div >
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-dstar"
style="display:none;" data-feature="digital_voice_dsd"
onclick="demodulator_analog_replace('dstar');">DStar< / div >
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-nxdn"
style="display:none;" data-feature="digital_voice_dsd"
onclick="demodulator_analog_replace('nxdn');">NXDN< / div >
< div class = "openwebrx-button openwebrx-demodulator-button" id = "openwebrx-button-ysf"
style="display:none;" data-feature="digital_voice_digiham"
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 >
< 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 >
< / select >
< div id = "openwebrx-secondary-demod-dial-button" class = "openwebrx-button openwebrx-dial-button" onclick = "dial_button_click();" >
< svg version = "1.1" id = "Layer_1" x = "0px" y = "0px" width = "246px" height = "246px" viewBox = "0 0 246 246" xmlns = "http://www.w3.org/2000/svg" >
< g id = "ph_dial_1_" transform = "matrix(1, 0, 0, 1, -45.398312, -50.931698)" >
< path id = "ph_dial" d = "M238.875,190.125c3.853,7.148,34.267,4.219,50.242,2.145c0.891-5.977,1.508-12.043,1.508-18.27 c0-67.723-54.901-122.625-122.625-122.625c-67.723,0-122.625,54.902-122.625,122.625c0,67.723,54.902,122.625,122.625,122.625 c51.06,0,94.797-31.227,113.25-75.609c-13.969-9.668-41.625-18.891-41.625-18.891c-5.25,0-10.5-3-12.75-8.25 S233.625,180.375,238.875,190.125z M220.465,175.313c0,28.478-23.086,51.563-51.563,51.563c-28.478,0-51.563-23.086-51.563-51.563 c0-28.477,23.086-51.563,51.563-51.563C197.379,123.75,220.465,146.836,220.465,175.313z M185.25,64.125 c10.563,0,19.125,8.563,19.125,19.125s-8.563,19.125-19.125,19.125c-10.562,0-19.125-8.563-19.125-19.125 S174.688,64.125,185.25,64.125z M142.875,69C153.438,69,162,77.563,162,88.125s-8.563,19.125-19.125,19.125 c-10.562,0-19.125-8.563-19.125-19.125S132.313,69,142.875,69z M106.5,91.875c10.563,0,19.125,8.563,19.125,19.125 s-8.563,19.125-19.125,19.125c-10.562,0-19.125-8.562-19.125-19.125S95.938,91.875,106.5,91.875z M81.375,126.75 c10.563,0,19.125,8.563,19.125,19.125S91.938,165,81.375,165c-10.563,0-19.125-8.563-19.125-19.125S70.813,126.75,81.375,126.75z M58.125,188.625c0-10.559,8.563-19.125,19.125-19.125c10.563,0,19.125,8.566,19.125,19.125S87.813,207.75,77.25,207.75 C66.687,207.75,58.125,199.184,58.125,188.625z M75.75,229.875c0-10.559,8.563-19.125,19.125-19.125 c10.563,0,19.125,8.566,19.125,19.125S105.438,249,94.875,249C84.312,249,75.75,240.434,75.75,229.875z M126.375,276 c-10.563,0-19.125-8.566-19.125-19.125s8.563-19.125,19.125-19.125c10.563,0,19.125,8.566,19.125,19.125S136.938,276,126.375,276z M168,288c-10.563,0-19.125-8.566-19.125-19.125S157.438,249.75,168,249.75c10.563,0,19.125,8.566,19.125,19.125 S178.563,288,168,288z M210.375,276c-10.563,0-19.125-8.566-19.125-19.125s8.563-19.125,19.125-19.125 c10.563,0,19.125,8.566,19.125,19.125S220.938,276,210.375,276z M243.375,210.75c10.563,0,19.125,8.566,19.125,19.125 S253.938,249,243.375,249c-10.563,0-19.125-8.566-19.125-19.125S232.813,210.75,243.375,210.75z" / >
< / g >
< / svg >
2018-09-25 12:56:47 +00:00
< / div >
< / 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 class = "openwebrx-button openwebrx-square-button" onclick = "mathbox_toggle();" title = "Toggle 3D view" > < img src = "static/gfx/openwebrx-3d-spectrum.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 class = "openwebrx-panel" id = "openwebrx-panel-log" data-panel-name = "debug" data-panel-pos = "left" data-panel-order = "1" data-panel-size = "619,137" >
< div class = "openwebrx-panel-inner nano" id = "openwebrx-log-scroll" >
< div class = "nano-content" >
< div id = "openwebrx-client-log-title" > OpenWebRX client log< / strong > < span id = "openwebrx-problems" > < / span > < / div >
< span id = "openwebrx-client-1" > Author: < / span > < a href = "http://blog.sdr.hu/about" target = "_blank" > András Retzler, HA7ILM< / a > < br / > You can support OpenWebRX development via < a href = "http://blog.sdr.hu/support" target = "_blank" > PayPal!< / a > < br / >
< div id = "openwebrx-debugdiv" > < / div >
< / div >
< / div >
< / div >
< div class = "openwebrx-panel" id = "openwebrx-panel-status" data-panel-name = "status" data-panel-pos = "left" data-panel-order = "0" data-panel-size = "615,50" 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 >
< div class = "openwebrx-panel" data-panel-name = "client-under-devel" data-panel-pos = "left" data-panel-order = "9" data-panel-size = "245,55" style = "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 >
< div class = "openwebrx-panel" id = "openwebrx-panel-digimodes" data-panel-name = "digimodes" data-panel-pos = "left" data-panel-order = "3" data-panel-size = "619,210" >
< 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 >
2018-09-25 12:56:47 +00:00
< / div >
< / div >
2019-09-27 23:57:34 +00:00
< / div >
< table class = "openwebrx-panel" id = "openwebrx-panel-wsjt-message" data-panel-name = "wsjt-message" data-panel-pos = "left" data-panel-order = "2" data-panel-size = "619,200" >
< 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" data-panel-name = "aprs-message" data-panel-pos = "left" data-panel-order = "2" data-panel-size = "619,200" >
< 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 >
< div class = "openwebrx-panel openwebrx-meta-panel" id = "openwebrx-panel-metadata-ysf" data-panel-name = "metadata-ysf" data-panel-pos = "left" data-panel-order = "2" data-panel-size = "145,220" >
< 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 >
2019-06-09 15:39:15 +00:00
< / div >
2016-11-11 20:56:17 +00:00
< / div >
2019-09-27 23:57:34 +00:00
< / div >
< div class = "openwebrx-panel openwebrx-meta-panel" id = "openwebrx-panel-metadata-dmr" data-panel-name = "metadata-dmr" data-panel-pos = "left" data-panel-order = "2" data-panel-size = "300,220" >
< 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 >
2019-06-09 13:15:27 +00:00
< / div >
2016-11-11 20:56:17 +00:00
< / div >
2018-09-25 12:56:47 +00:00
< / div >
2019-09-27 23:57:34 +00:00
< / div >
2018-09-25 12:56:47 +00:00
< / div >
2014-11-29 00:07:10 +00:00
< / div >
2018-09-25 12:56:47 +00:00
< div id = "openwebrx-big-grey" onclick = "iosPlayButtonClick();" >
< div id = "openwebrx-play-button-text" >
2019-05-03 20:59:24 +00:00
< img id = "openwebrx-play-button" src = "static/gfx/openwebrx-play-button.png" / >
2018-09-25 12:56:47 +00:00
< br / > < br / > Start OpenWebRX
< / 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 >