diff --git a/htdocs/index.wrx b/htdocs/index.wrx
index dcdbbbe..31f9c60 100644
--- a/htdocs/index.wrx
+++ b/htdocs/index.wrx
@@ -96,11 +96,11 @@
onclick="demodulator_analog_replace('cw');">CW
-
DIG
+
DIG
@@ -149,8 +149,11 @@
diff --git a/htdocs/openwebrx.css b/htdocs/openwebrx.css
index 7e23f9e..126c823 100644
--- a/htdocs/openwebrx.css
+++ b/htdocs/openwebrx.css
@@ -814,7 +814,8 @@ img.openwebrx-mirror-img
#openwebrx-digimode-canvas-container
{
- margin: -10px -10px 10px -10px;
+ /*margin: -10px -10px 10px -10px;*/
+ margin: -10px -10px 0px -10px;
border-radius: 15px;
height: 150px;
background-color: #333;
@@ -873,4 +874,59 @@ img.openwebrx-mirror-img
100%{ transform: rotateX(360deg) rotateY(720deg); }
}
+#openwebrx-digimode-content
+{
+ word-wrap: break-word;
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+}
+#openwebrx-digimode-content-container
+{
+ overflow-y: hidden;
+ display: block;
+ height: 50px;
+ position: relative;
+}
+
+#openwebrx-digimode-content-container .gradient
+{
+ width: 100%;
+ height: 20px;
+ background: linear-gradient(to top, rgba(87,87,87,0) 0%,rgba(87,87,87,1) 100%);
+ position: absolute;
+ top: 0;
+ z-index: 10;
+}
+
+
+#openwebrx-digimode-content .part
+{
+ perspective: 700px;
+}
+#openwebrx-digimode-content .part
+{
+ animation: new-digimode-data-3d 100ms;
+ animation-timing-function: linear;
+ display: inline-block;
+ perspective-origin: 50% 50%;
+ transform-origin: 0% 50%;
+}
+
+#openwebrx-digimode-content .part .subpart
+{
+}
+
+
+@keyframes new-digimode-data
+{
+ 0%{ opacity: 0; }
+ 100%{ opacity: 1; }
+}
+
+@keyframes new-digimode-data-3d
+{
+ 0%{ transform: rotateX(0deg) rotateY(-90deg) translateX(-5px) scale(1.3); }
+ 100%{ transform: rotateX(0deg) rotateY(0deg) translateX(0) scale(1); }
+}
diff --git a/htdocs/openwebrx.js b/htdocs/openwebrx.js
index dc726f0..d5194f6 100644
--- a/htdocs/openwebrx.js
+++ b/htdocs/openwebrx.js
@@ -580,8 +580,13 @@ function demodulator_add(what)
mkenvelopes(get_visible_freq_range());
}
-function demodulator_analog_replace(subtype)
+last_analog_demodulator_subtype = 'nfm';
+last_digital_demodulator_subtype = 'bpsk31';
+
+function demodulator_analog_replace(subtype, for_digital)
{ //this function should only exist until the multi-demodulator capability is added
+ if(typeof for_digital !== "undefined" && for_digital && secondary_demod) secondary_demod_close_window();
+ last_analog_demodulator_subtype = subtype;
var temp_offset=0;
if(demodulators.length)
{
@@ -2161,3 +2166,66 @@ function demodulator_buttons_update()
break;
}
}
+function demodulator_analog_replace_last() { demodulator_analog_replace(last_analog_demodulator_subtype); }
+
+/*
+ _____ _ _ _
+ | __ \(_) (_) | |
+ | | | |_ __ _ _ _ __ ___ ___ __| | ___ ___
+ | | | | |/ _` | | '_ ` _ \ / _ \ / _` |/ _ \/ __|
+ | |__| | | (_| | | | | | | | (_) | (_| | __/\__ \
+ |_____/|_|\__, |_|_| |_| |_|\___/ \__,_|\___||___/
+ __/ |
+ |___/
+*/
+
+secondary_demod = false;
+secondary_demod_offset_freq = 0;
+secondary_demod_ffts = [];
+
+function demodulator_digital_replace_last() { demodulator_digital_replace(last_digital_demodulator_subtype); }
+function demodulator_digital_replace(subtype)
+{
+ switch(subtype)
+ {
+ case "bpsk31":
+ case "rtty":
+ demodulator_analog_replace('usb', true);
+ secondary_demod_start(subtype);
+ break;
+ }
+}
+
+function secondary_demod_start(subtype)
+{
+ ws.send("SET secondary_mod="+subtype);
+ secondary_demod = true;
+}
+
+function secondary_demod_set()
+{
+ ws.send("SET secondary_offset_freq="+secondary_demod_offset_freq.toString());
+}
+
+function secondary_demod_stop()
+{
+ ws.send("SET secondary_mod=off");
+ secondary_demod = false;
+}
+
+function secondary_demod_push_fft(x)
+{
+
+}
+
+function secondary_demod_push_data(x)
+{
+ //$("#openwebrx-digimode-content").append(""+x+"");
+ $("#openwebrx-cursor-blink").before(""+x+"");
+}
+
+
+
+function secondary_demod_close_window()
+{
+}