make the frontend resume when an sdr device becomes present
This commit is contained in:
		| @@ -800,6 +800,12 @@ function on_ws_recv(evt) { | ||||
|                             return '<option value="' + profile['id'] + '">' + profile['name'] + "</option>"; | ||||
|                         }).join("")); | ||||
|                         $('#openwebrx-sdr-profiles-listbox').val(currentprofile.toString()); | ||||
|                         // this is a bit hacky since it only makes sense if the error is actually "no sdr devices" | ||||
|                         // the only other error condition for which the overlay is used right now is "too many users" | ||||
|                         // so there shouldn't be a problem here | ||||
|                         if (json['value'].keys()) { | ||||
|                             $('#openwebrx-error-overlay').hide(); | ||||
|                         } | ||||
|                         break; | ||||
|                     case "features": | ||||
|                         Modes.setFeatures(json['value']); | ||||
| @@ -836,6 +842,7 @@ function on_ws_recv(evt) { | ||||
|                         var $overlay = $('#openwebrx-error-overlay'); | ||||
|                         $overlay.find('.errormessage').text(json['value']); | ||||
|                         $overlay.show(); | ||||
|                         $("#openwebrx-panel-receiver").demodulatorPanel().stopDemodulator(); | ||||
|                         break; | ||||
|                     case 'secondary_demod': | ||||
|                         secondary_demod_push_data(json['value']); | ||||
|   | ||||
| @@ -325,6 +325,7 @@ class OpenWebRxReceiverClient(OpenWebRxClient, SdrSourceEventClient): | ||||
|         self.sdr.addSpectrumClient(self) | ||||
|  | ||||
|     def handleNoSdrsAvailable(self): | ||||
|         self.stack.removeLayerByPriority(0) | ||||
|         self.write_sdr_error("No SDR Devices available") | ||||
|  | ||||
|     def startDsp(self): | ||||
|   | ||||
| @@ -294,6 +294,11 @@ class PropertyStack(PropertyManager): | ||||
|  | ||||
|         return changes | ||||
|  | ||||
|     def removeLayerByPriority(self, priority): | ||||
|         for layer in self.layers: | ||||
|             if layer["priority"] == priority: | ||||
|                 self.removeLayer(layer["props"]) | ||||
|  | ||||
|     def removeLayer(self, pm: PropertyManager): | ||||
|         for layer in self.layers: | ||||
|             if layer["props"] == pm: | ||||
|   | ||||
| @@ -42,6 +42,18 @@ class PropertyStackTest(TestCase): | ||||
|         om.removeLayer(high_pm) | ||||
|         self.assertEqual(om["testkey"], "low value") | ||||
|  | ||||
|     def testLayerRemovalByPriority(self): | ||||
|         om = PropertyStack() | ||||
|         low_pm = PropertyLayer() | ||||
|         high_pm = PropertyLayer() | ||||
|         low_pm["testkey"] = "low value" | ||||
|         high_pm["testkey"] = "high value" | ||||
|         om.addLayer(1, low_pm) | ||||
|         om.addLayer(0, high_pm) | ||||
|         self.assertEqual(om["testkey"], "high value") | ||||
|         om.removeLayerByPriority(0) | ||||
|         self.assertEqual(om["testkey"], "low value") | ||||
|  | ||||
|     def testPropertyChange(self): | ||||
|         layer = PropertyLayer() | ||||
|         stack = PropertyStack() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jakob Ketterl
					Jakob Ketterl