Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion sensors/aviation/sensorhub-driver-misb-uas/build.gradle
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
description = 'MISB UAS Sensors'
ext.details = "Driver for UAS system providing video and telemetry based on MISB ST 0601 / STANAG 4609"
version = '2.0.0'
version = '2.2.0'

// To build in entire java cv platform of projects use
// implementation('org.bytedeco:javacv-platform:1.5.2')
dependencies {
implementation 'org.sensorhub:sensorhub-core:' + oshCoreVersion
implementation project(':sensorhub-driver-videocam')
implementation project(':sensorhub-process-ffmpeg')
implementation project(':sensorhub-lib-stanag4609')
testImplementation('junit:junit:4.13')
testImplementation('org.jcodec:jcodec-javase:0.1.9')
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,34 +1,37 @@
package org.sensorhub.impl.sensor.uas;
/***************************** BEGIN LICENSE BLOCK ***************************

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
The contents of this file are subject to the Mozilla Public License, v. 2.0.
If a copy of the MPL was not distributed with this file, You can obtain one
at http://mozilla.org/MPL/2.0/.

Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the License.

Copyright (C) 2021 Botts Innovative Research, Inc. All Rights Reserved.

******************************* END LICENSE BLOCK ***************************/
package org.sensorhub.impl.sensor.uas;

import org.sensorhub.api.common.SensorHubException;
import org.sensorhub.impl.sensor.AbstractSensorModule;
import org.sensorhub.impl.sensor.uas.common.SimulationClock;
import org.sensorhub.impl.sensor.uas.common.SyncTime;
import org.sensorhub.impl.sensor.uas.config.UasConfig;
import org.sensorhub.impl.sensor.uas.klv.SetDecoder;
import org.sensorhub.impl.sensor.uas.outputs.AirframeAttitude;
import org.sensorhub.impl.sensor.uas.outputs.FullTelemetry;
import org.sensorhub.impl.sensor.uas.outputs.GeoRefImageFrame;
import org.sensorhub.impl.sensor.uas.outputs.GimbalAttitude;
import org.sensorhub.impl.sensor.uas.outputs.Identification;
import org.sensorhub.impl.sensor.uas.outputs.Security;
import org.sensorhub.impl.sensor.uas.outputs.SensorLocation;
import org.sensorhub.impl.sensor.uas.outputs.SensorParams;
import org.sensorhub.impl.sensor.uas.outputs.UasOutput;
import org.sensorhub.impl.sensor.uas.outputs.Video;
import org.sensorhub.impl.sensor.uas.outputs.VmtiOutput;
import org.sensorhub.impl.sensor.uas.outputs.*;
import org.sensorhub.misb.stanag4609.comm.MpegTsProcessor;
import org.sensorhub.misb.stanag4609.klv.codec.SetDecoder;
import org.sensorhub.misb.stanag4609.time.SyncTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.vast.ogc.om.MovingFeature;
import org.vast.swe.SWEConstants;
import org.vast.util.Asserts;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;

/**
* Base class for two sensors that parse an MPEG TS stream.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,15 @@
******************************* END LICENSE BLOCK ***************************/
package org.sensorhub.impl.sensor.uas.outputs;

import net.opengis.swe.v20.DataBlock;
import org.sensorhub.api.data.DataEvent;
import org.sensorhub.impl.sensor.uas.UasSensorBase;
import org.sensorhub.impl.sensor.uas.config.UasConfig;
import org.sensorhub.impl.sensor.uas.klv.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.klv.codec.misb0601.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.tags.TagSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import net.opengis.swe.v20.DataBlock;

/**
* Output specification and provider for MISB-TS STANAG 4609 ST0601.16 UAS Metadata
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,16 @@
******************************* END LICENSE BLOCK ***************************/
package org.sensorhub.impl.sensor.uas.outputs;

import net.opengis.swe.v20.DataBlock;
import org.sensorhub.api.data.DataEvent;
import org.sensorhub.impl.sensor.uas.UasSensorBase;
import org.sensorhub.impl.sensor.uas.config.UasConfig;
import org.sensorhub.impl.sensor.uas.klv.SecurityLocalSet;
import org.sensorhub.impl.sensor.uas.klv.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.klv.codec.misb0102.SecurityLocalSet;
import org.sensorhub.misb.stanag4609.klv.codec.misb0601.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.tags.TagSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import net.opengis.swe.v20.DataBlock;

/**
* Output specification and provider for MISB-TS STANAG 4609 ST0601.16 UAS Metadata
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,23 @@
for the specific language governing rights and limitations under the License.

Copyright (C) 2021 Botts Innovative Research, Inc. All Rights Reserved.

******************************* END LICENSE BLOCK ***************************/
package org.sensorhub.impl.sensor.uas.outputs;

import net.opengis.swe.v20.DataBlock;
import org.sensorhub.api.data.DataEvent;
import org.sensorhub.impl.sensor.uas.UasSensorBase;
import org.sensorhub.impl.sensor.uas.config.UasConfig;
import org.sensorhub.impl.sensor.uas.klv.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.klv.codec.misb0601.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.tags.TagSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import net.opengis.swe.v20.DataBlock;

/**
* Output specification and provider for MISB-TS STANAG 4609 ST0601.16 UAS Metadata
*
* @param <UasConfigType> A type parameter that allows us to use this output on both types of sensors that are defined
* in this module.
*
* in this module.
* @author Nick Garay
* @since Oct. 6, 2020
*/
Expand Down Expand Up @@ -77,57 +74,57 @@ public void init() {
protected void setData(DataBlock dataBlock, TagSet localSet, int localSetTag, Object value) {

if (localSet == UasDataLinkSet.UAS_LOCAL_SET) {

switch (localSetTag) {

case 0x02: // "Precision Time Stamp", "Timestamp for all metadata in this Local Set; used to coordinate with Motion Imagery", "microseconds"
dataBlock.setDoubleValue(0, (Double) value);
break;

case 0x17: // "Frame Center Latitude", "Terrain latitude of frame center", "deg"
dataBlock.setDoubleValue(1, (Double) value);
break;

case 0x18: // "Frame Center Longitude", "Terrain longitude of frame center", "deg"
dataBlock.setDoubleValue(2, (Double) value);
break;

case 0x19: // "Frame Center Elevation", "Terrain elevation at frame center relative to Mean Sea Level (MSL)", "m"
dataBlock.setDoubleValue(3, (Double) value);
break;

case 0x1A: // "Offset Corner Latitude Point 1", "Frame latitude offset for upper right corner", "deg"
dataBlock.setDoubleValue(4, (Double) value);
break;

case 0x1B: // "Offset Corner Longitude Point 1", "Frame longitude offset for upper right corner", "deg"
dataBlock.setDoubleValue(5, (Double) value);
break;

case 0x1C: // "Offset Corner Latitude Point 2", "Frame latitude offset for lower right corner", "deg"
dataBlock.setDoubleValue(6, (Double) value);
break;

case 0x1D: // "Offset Corner Longitude Point 2", "Frame longitude offset for lower right corner", "deg"
dataBlock.setDoubleValue(7, (Double) value);
break;

case 0x1E: // "Offset Corner Latitude Point 3", "Frame latitude offset for lower left corner", "deg"
dataBlock.setDoubleValue(8, (Double) value);
break;

case 0x1F: // "Offset Corner Longitude Point 3", "Frame longitude offset for lower left corner", "deg"
dataBlock.setDoubleValue(9, (Double) value);
break;

case 0x20: // "Offset Corner Latitude Point 4", "Frame latitude offset for upper left corner", "deg"
dataBlock.setDoubleValue(10, (Double) value);
break;

case 0x21: // "Offset Corner Longitude Point 4", "Frame longitude offset for upper left corner", "deg"
dataBlock.setDoubleValue(11, (Double) value);
break;

default:
break;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,15 @@
******************************* END LICENSE BLOCK ***************************/
package org.sensorhub.impl.sensor.uas.outputs;

import net.opengis.swe.v20.DataBlock;
import org.sensorhub.api.data.DataEvent;
import org.sensorhub.impl.sensor.uas.UasSensorBase;
import org.sensorhub.impl.sensor.uas.config.UasConfig;
import org.sensorhub.impl.sensor.uas.klv.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.klv.codec.misb0601.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.tags.TagSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import net.opengis.swe.v20.DataBlock;

/**
* Output specification and provider for MISB-TS STANAG 4609 ST0601.16 UAS Metadata
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,15 @@
******************************* END LICENSE BLOCK ***************************/
package org.sensorhub.impl.sensor.uas.outputs;

import net.opengis.swe.v20.DataBlock;
import org.sensorhub.api.data.DataEvent;
import org.sensorhub.impl.sensor.uas.UasSensorBase;
import org.sensorhub.impl.sensor.uas.config.UasConfig;
import org.sensorhub.impl.sensor.uas.klv.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.klv.codec.misb0601.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.tags.TagSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import net.opengis.swe.v20.DataBlock;

/**
* Output specification and provider for MISB-TS STANAG 4609 ST0601.16 UAS Metadata
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,16 @@
******************************* END LICENSE BLOCK ***************************/
package org.sensorhub.impl.sensor.uas.outputs;

import net.opengis.swe.v20.DataBlock;
import org.sensorhub.api.data.DataEvent;
import org.sensorhub.impl.sensor.uas.UasSensorBase;
import org.sensorhub.impl.sensor.uas.config.UasConfig;
import org.sensorhub.impl.sensor.uas.klv.SecurityLocalSet;
import org.sensorhub.impl.sensor.uas.klv.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.klv.codec.misb0102.SecurityLocalSet;
import org.sensorhub.misb.stanag4609.klv.codec.misb0601.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.tags.TagSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import net.opengis.swe.v20.DataBlock;

/**
* Output specification and provider for MISB-TS STANAG 4609 ST0601.16 UAS Metadata
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,15 @@
******************************* END LICENSE BLOCK ***************************/
package org.sensorhub.impl.sensor.uas.outputs;

import net.opengis.swe.v20.DataBlock;
import org.sensorhub.api.data.DataEvent;
import org.sensorhub.impl.sensor.uas.UasSensorBase;
import org.sensorhub.impl.sensor.uas.config.UasConfig;
import org.sensorhub.impl.sensor.uas.klv.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.klv.codec.misb0601.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.tags.TagSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import net.opengis.swe.v20.DataBlock;

/**
* Output specification and provider for MISB-TS STANAG 4609 ST0601.16 UAS Metadata
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,15 @@
******************************* END LICENSE BLOCK ***************************/
package org.sensorhub.impl.sensor.uas.outputs;

import net.opengis.swe.v20.DataBlock;
import org.sensorhub.api.data.DataEvent;
import org.sensorhub.impl.sensor.uas.UasSensorBase;
import org.sensorhub.impl.sensor.uas.config.UasConfig;
import org.sensorhub.impl.sensor.uas.klv.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.klv.codec.misb0601.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.tags.TagSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import net.opengis.swe.v20.DataBlock;

/**
* Output specification and provider for MISB-TS STANAG 4609 ST0601.16 UAS Metadata
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@

import org.sensorhub.impl.sensor.AbstractSensorOutput;
import org.sensorhub.impl.sensor.uas.UasSensorBase;
import org.sensorhub.impl.sensor.uas.common.SyncTime;
import org.sensorhub.misb.stanag4609.time.SyncTime;
import org.sensorhub.impl.sensor.uas.config.UasConfig;
import org.sensorhub.impl.sensor.uas.klv.DecodedSetListener;
import org.sensorhub.impl.sensor.uas.klv.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.klv.DecodedSetListener;
import org.sensorhub.misb.stanag4609.klv.codec.misb0601.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.tags.Tag;
import org.sensorhub.misb.stanag4609.tags.TagRegistry;
import org.sensorhub.misb.stanag4609.tags.TagSet;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,25 @@
******************************* END LICENSE BLOCK ***************************/
package org.sensorhub.impl.sensor.uas.outputs;

import java.util.concurrent.Executor;

import net.opengis.swe.v20.DataBlock;
import net.opengis.swe.v20.DataComponent;
import net.opengis.swe.v20.DataEncoding;
import net.opengis.swe.v20.DataStream;
import org.sensorhub.api.data.DataEvent;
import org.sensorhub.impl.sensor.AbstractSensorOutput;
import org.sensorhub.impl.sensor.uas.UasSensorBase;
import org.sensorhub.impl.sensor.uas.common.SyncTime;
import org.sensorhub.impl.sensor.uas.config.UasConfig;
import org.sensorhub.impl.sensor.videocam.VideoCamHelper;
import org.sensorhub.misb.stanag4609.comm.DataBufferListener;
import org.sensorhub.misb.stanag4609.comm.DataBufferRecord;
import org.sensorhub.misb.stanag4609.time.SyncTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.vast.data.AbstractDataBlock;
import org.vast.data.DataBlockMixed;
import org.vast.util.Asserts;

import net.opengis.swe.v20.DataBlock;
import net.opengis.swe.v20.DataComponent;
import net.opengis.swe.v20.DataEncoding;
import net.opengis.swe.v20.DataStream;
import java.util.concurrent.Executor;

/**
* Output specification and provider for MISB-TS STANAG 4609 ST0601.16 UAS Metadata
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,13 @@
******************************* END LICENSE BLOCK ***************************/
package org.sensorhub.impl.sensor.uas.outputs;

import java.awt.Point;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map.Entry;

import net.opengis.swe.v20.DataArray;
import net.opengis.swe.v20.DataBlock;
import org.sensorhub.api.data.DataEvent;
import org.sensorhub.impl.sensor.uas.UasSensorBase;
import org.sensorhub.impl.sensor.uas.config.UasConfig;
import org.sensorhub.impl.sensor.uas.klv.UasDataLinkSet;
import org.sensorhub.impl.sensor.uas.klv.VmtiLocalSet;
import org.sensorhub.misb.stanag4609.klv.codec.misb0601.UasDataLinkSet;
import org.sensorhub.misb.stanag4609.klv.codec.misb0903.VmtiLocalSet;
import org.sensorhub.misb.stanag4609.tags.Tag;
import org.sensorhub.misb.stanag4609.tags.TagSet;
import org.slf4j.Logger;
Expand All @@ -31,8 +28,10 @@
import org.vast.data.DataBlockMixed;
import org.vast.swe.SWEConstants;

import net.opengis.swe.v20.DataArray;
import net.opengis.swe.v20.DataBlock;
import java.awt.*;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map.Entry;

/**
* Output specification and provider for moving target indicator (VMTI) data
Expand Down
6 changes: 6 additions & 0 deletions sensors/aviation/sensorhub-lib-stanag4609/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# STANAG 4609 Sensor Hub Library

## Overview

This module provides an API that will encode or decode a stream of MPEG TS data containing MISB-0601, MISB-0903,
& MISB-0102 / STANAG-4609 compliant UAS video and telemetry.
Loading
Loading