add feature detection

This commit is contained in:
Jakob Ketterl 2019-05-05 19:59:03 +02:00
parent 142a4c87bd
commit 30f8244abf
2 changed files with 39 additions and 2 deletions

View File

@ -1,3 +1,5 @@
import os
class Property(object): class Property(object):
def __init__(self, value = None): def __init__(self, value = None):
self.value = value self.value = value
@ -32,3 +34,21 @@ class PropertyManager(object):
def getPropertyValue(self, name): def getPropertyValue(self, name):
return self.getProperty(name).getValue() return self.getProperty(name).getValue()
class RequirementMissingException(Exception):
pass
class FeatureDetector(object):
def detectAllFeatures(self):
print("Starting Feature detection")
self.detect_csdr()
self.detect_nmux()
print("Feature detection completed.")
def detect_csdr(self):
if os.system("csdr 2> /dev/null") == 32512: #check for csdr
raise RequirementMissingException("You need to install \"csdr\" to run OpenWebRX!")
def detect_nmux(self):
if os.system("nmux --help 2> /dev/null") == 32512: #check for nmux
raise RequirementMissingException("You need to install an up-to-date version of \"csdr\" that contains the \"nmux\" tool to run OpenWebRX! Please upgrade \"csdr\"!")

View File

@ -1,23 +1,40 @@
from http.server import HTTPServer from http.server import HTTPServer
from owrx.http import RequestHandler from owrx.http import RequestHandler
from owrx.config import PropertyManager from owrx.config import PropertyManager, FeatureDetector, RequirementMissingException
from owrx.source import RtlNmuxSource, SpectrumThread from owrx.source import RtlNmuxSource
from socketserver import ThreadingMixIn from socketserver import ThreadingMixIn
class ThreadedHttpServer(ThreadingMixIn, HTTPServer): class ThreadedHttpServer(ThreadingMixIn, HTTPServer):
pass pass
def main(): def main():
print()
print("OpenWebRX - Open Source SDR Web App for Everyone! | for license see LICENSE file in the package")
print("_________________________________________________________________________________________________")
print()
print("Author contact info: Andras Retzler, HA7ILM <randras@sdr.hu>")
print()
cfg=__import__("config_webrx") cfg=__import__("config_webrx")
pm = PropertyManager.getSharedInstance() pm = PropertyManager.getSharedInstance()
for name, value in cfg.__dict__.items(): for name, value in cfg.__dict__.items():
if (name.startswith("__")): continue if (name.startswith("__")): continue
pm.getProperty(name).setValue(value) pm.getProperty(name).setValue(value)
try:
FeatureDetector().detectAllFeatures()
except RequirementMissingException as e:
print("you are missing required dependencies to run openwebrx. "
"please check the message and the readme for details:")
print(e)
return
RtlNmuxSource() RtlNmuxSource()
server = ThreadedHttpServer(('0.0.0.0', pm.getPropertyValue("web_port")), RequestHandler) server = ThreadedHttpServer(('0.0.0.0', pm.getPropertyValue("web_port")), RequestHandler)
server.serve_forever() server.serve_forever()
if __name__=="__main__": if __name__=="__main__":
main() main()