From 4ca84399912c1f1eeb8d78a175821bc378d31228 Mon Sep 17 00:00:00 2001 From: Justin Haze Date: Mon, 1 Jul 2019 13:56:57 -0600 Subject: [PATCH 1/3] Added location to sigmf annotation --- src/actions/acquire_single_freq_fft.py | 7 +++++++ src/actions/acquire_stepped_freq_tdomain_iq.py | 8 ++++++++ src/status/utils.py | 13 +++++++++++++ src/status/views.py | 14 +++++++------- 4 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 src/status/utils.py diff --git a/src/actions/acquire_single_freq_fft.py b/src/actions/acquire_single_freq_fft.py index d98eeaf8..45c6a1a6 100644 --- a/src/actions/acquire_single_freq_fft.py +++ b/src/actions/acquire_single_freq_fft.py @@ -86,6 +86,7 @@ from capabilities import capabilities from hardware import sdr from sensor import settings, utils +from status.utils import get_location from .base import Action @@ -239,6 +240,8 @@ def build_sigmf_md(self, task_id): sigmf_md.add_capture(start_index=0, metadata=capture_md) + location = get_location() + for i, detector in enumerate(M4sDetector): frequency_domain_detection_md = { "ntia-core:annotation_type": "FrequencyDomainDetection", @@ -251,6 +254,10 @@ def build_sigmf_md(self, task_id): "ntia-algorithm:reference": "not referenced", } + if location: + frequency_domain_detection_md["core:latitude"] = str(location.latitude) + frequency_domain_detection_md["core:longitude"] = str(location.longitude) + sigmf_md.add_annotation( start_index=(i * self.fft_size), length=self.fft_size, diff --git a/src/actions/acquire_stepped_freq_tdomain_iq.py b/src/actions/acquire_stepped_freq_tdomain_iq.py index 39a1ae7a..8f304cb1 100644 --- a/src/actions/acquire_stepped_freq_tdomain_iq.py +++ b/src/actions/acquire_stepped_freq_tdomain_iq.py @@ -51,6 +51,7 @@ from capabilities import capabilities from hardware import sdr from sensor import settings, utils +from status.utils import get_location from .base import Action @@ -154,10 +155,17 @@ def acquire_data(self, fc, task_id): data = np.append(data, acq) capture_md = {"core:frequency": fc, "core:datetime": dt} sigmf_md.add_capture(start_index=0, metadata=capture_md) + annotation_md = { "ntia-core:annotation_type": "CalibrationAnnotation", "ntia-calibration:receiver_scaling_factor": self.sdr.radio.scale_factor, } + + location = get_location() + if location: + annotation_md["core:latitude"] = str(location.latitude) + annotation_md["core:longitude"] = str(location.longitude) + sigmf_md.add_annotation(start_index=0, length=nsamps, metadata=annotation_md) return data, sigmf_md diff --git a/src/status/utils.py b/src/status/utils.py new file mode 100644 index 00000000..553422b6 --- /dev/null +++ b/src/status/utils.py @@ -0,0 +1,13 @@ +import logging + +from .models import Location + +logger = logging.getLogger(__name__) + +def get_location(): + """Returns Location object JSON if set or None and logs an error.""" + try: + return Location.objects.filter(active=True).get() + except Location.DoesNotExist: + logger.error("You must create a Location in /admin.") + return None \ No newline at end of file diff --git a/src/status/views.py b/src/status/views.py index 1dd8a78d..44ee475d 100644 --- a/src/status/views.py +++ b/src/status/views.py @@ -6,19 +6,19 @@ from scheduler import scheduler from sensor import utils -from .models import Location from .serializers import LocationSerializer +from .utils import get_location + logger = logging.getLogger(__name__) -def get_location(): +def serialize_location(): """Returns Location object JSON if set or None and logs an error.""" - try: - sensor_def = Location.objects.filter(active=True).get() + sensor_def = get_location() + if sensor_def: return LocationSerializer(sensor_def).data - except Location.DoesNotExist: - logger.error("You must create a Location in /admin.") + else: return None @@ -28,7 +28,7 @@ def status(request, version, format=None): return Response( { "scheduler": scheduler.thread.status, - "location": get_location(), + "location": serialize_location(), "system_time": utils.get_datetime_str_now(), } ) From 5da3d2875cd217ef6fff78f02a0b43810b762059 Mon Sep 17 00:00:00 2001 From: Justin Haze Date: Mon, 1 Jul 2019 14:11:11 -0600 Subject: [PATCH 2/3] Fix linting --- src/actions/acquire_single_freq_fft.py | 4 +++- src/status/utils.py | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/actions/acquire_single_freq_fft.py b/src/actions/acquire_single_freq_fft.py index 45c6a1a6..b35bedc1 100644 --- a/src/actions/acquire_single_freq_fft.py +++ b/src/actions/acquire_single_freq_fft.py @@ -256,7 +256,9 @@ def build_sigmf_md(self, task_id): if location: frequency_domain_detection_md["core:latitude"] = str(location.latitude) - frequency_domain_detection_md["core:longitude"] = str(location.longitude) + frequency_domain_detection_md["core:longitude"] = str( + location.longitude + ) sigmf_md.add_annotation( start_index=(i * self.fft_size), diff --git a/src/status/utils.py b/src/status/utils.py index 553422b6..e2884716 100644 --- a/src/status/utils.py +++ b/src/status/utils.py @@ -4,10 +4,11 @@ logger = logging.getLogger(__name__) + def get_location(): """Returns Location object JSON if set or None and logs an error.""" try: return Location.objects.filter(active=True).get() except Location.DoesNotExist: logger.error("You must create a Location in /admin.") - return None \ No newline at end of file + return None From c0006438576a3f9fcd378ae22911dd5f504dcec9 Mon Sep 17 00:00:00 2001 From: Justin Haze Date: Mon, 1 Jul 2019 14:21:19 -0600 Subject: [PATCH 3/3] Fix pytest-django dependency --- src/requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/requirements-dev.txt b/src/requirements-dev.txt index 04aaab3e..920f58d3 100644 --- a/src/requirements-dev.txt +++ b/src/requirements-dev.txt @@ -9,7 +9,7 @@ jsonschema==3.0.1 mkdocs==1.0.4 pre-commit==1.16.1 pytest-cov==2.7.1 -pytest-django==3.5.0 +pytest-django==3.5.1 pytest-flake8==1.0.4 seed-isort-config==1.9.1 tox==3.12.1