@tak-ps/node-cot 14.38.0 → 14.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/lib/parser/from_geojson.js +62 -0
- package/dist/lib/parser/from_geojson.js.map +1 -1
- package/dist/lib/parser/to_geojson.js +68 -0
- package/dist/lib/parser/to_geojson.js.map +1 -1
- package/dist/lib/types/feature.d.ts +1218 -6
- package/dist/lib/types/feature.js +39 -1
- package/dist/lib/types/feature.js.map +1 -1
- package/dist/lib/types/types.d.ts +1244 -0
- package/dist/lib/types/types.js +477 -2
- package/dist/lib/types/types.js.map +1 -1
- package/dist/package.json +1 -1
- package/lib/parser/from_geojson.ts +82 -0
- package/lib/parser/to_geojson.ts +90 -0
- package/lib/types/feature.ts +60 -1
- package/lib/types/types.ts +516 -2
- package/package.json +1 -1
package/lib/types/types.ts
CHANGED
|
@@ -394,6 +394,66 @@ export const Sensor = Type.Object({
|
|
|
394
394
|
_attributes: SensorAttributes
|
|
395
395
|
})
|
|
396
396
|
|
|
397
|
+
export const SpatialAttitudeAttributes = Type.Object({
|
|
398
|
+
roll: Type.Number({
|
|
399
|
+
description: 'Roll of entity in degrees. Positive indicates listing to the right.'
|
|
400
|
+
}),
|
|
401
|
+
pitch: Type.Number({
|
|
402
|
+
description: 'Pitch of entity in degrees. Positive indicates nose point up.'
|
|
403
|
+
}),
|
|
404
|
+
yaw: Type.Optional(Type.Number({
|
|
405
|
+
description: 'Yaw of entity in degrees. Positive indicates turned to the right.'
|
|
406
|
+
})),
|
|
407
|
+
eRoll: Type.Optional(Type.Number({
|
|
408
|
+
description: '1-sigma error of roll with respect to a zero mean normal Gaussian distribution.'
|
|
409
|
+
})),
|
|
410
|
+
ePitch: Type.Optional(Type.Number({
|
|
411
|
+
description: '1-sigma error of pitch with respect to a zero mean normal Gaussian distribution.'
|
|
412
|
+
})),
|
|
413
|
+
eYaw: Type.Optional(Type.Number({
|
|
414
|
+
description: '1-sigma error of yaw with respect to a zero mean normal Gaussian distribution.'
|
|
415
|
+
}))
|
|
416
|
+
});
|
|
417
|
+
|
|
418
|
+
export const SpatialAttitude = Type.Object({
|
|
419
|
+
_attributes: SpatialAttitudeAttributes
|
|
420
|
+
});
|
|
421
|
+
|
|
422
|
+
export const SpatialSpinAttributes = Type.Object({
|
|
423
|
+
roll: Type.Number({
|
|
424
|
+
description: 'Degrees per second with positive indicating to the pilots right'
|
|
425
|
+
}),
|
|
426
|
+
pitch: Type.Number({
|
|
427
|
+
description: 'Degrees per second with positive indicating nose up.'
|
|
428
|
+
}),
|
|
429
|
+
yaw: Type.Optional(Type.Number({
|
|
430
|
+
description: 'Degrees per second with positive indicating right.'
|
|
431
|
+
})),
|
|
432
|
+
eRoll: Type.Optional(Type.Number({
|
|
433
|
+
description: '1-sigma error of roll with respect to a zero mean normal Gaussian distribution.'
|
|
434
|
+
})),
|
|
435
|
+
ePitch: Type.Optional(Type.Number({
|
|
436
|
+
description: '1-sigma error of pitch with respect to a zero mean normal Gaussian distribution.'
|
|
437
|
+
})),
|
|
438
|
+
eYaw: Type.Optional(Type.Number({
|
|
439
|
+
description: '1-sigma error of yaw with respect to a zero mean normal Gaussian distribution.'
|
|
440
|
+
}))
|
|
441
|
+
});
|
|
442
|
+
|
|
443
|
+
export const SpatialSpin = Type.Object({
|
|
444
|
+
_attributes: SpatialSpinAttributes
|
|
445
|
+
});
|
|
446
|
+
|
|
447
|
+
export const Spatial = Type.Object({
|
|
448
|
+
_attributes: Type.Optional(Type.Object({
|
|
449
|
+
version: Type.Optional(Type.Number({
|
|
450
|
+
description: 'Version tag for this sub schema.'
|
|
451
|
+
}))
|
|
452
|
+
})),
|
|
453
|
+
attitude: SpatialAttitude,
|
|
454
|
+
spin: SpatialSpin
|
|
455
|
+
});
|
|
456
|
+
|
|
397
457
|
export const VideoAttributes = Type.Object({
|
|
398
458
|
uid: Type.Optional(Type.String()),
|
|
399
459
|
sensor: Type.Optional(Type.String()),
|
|
@@ -696,11 +756,456 @@ export const ForceDelete = Type.Object({})
|
|
|
696
756
|
|
|
697
757
|
export const ShapeExtras = Type.Object({
|
|
698
758
|
_attributes: Type.Object({
|
|
699
|
-
cpvis: Type.Optional(Type.Boolean(
|
|
759
|
+
cpvis: Type.Optional(Type.Boolean({
|
|
760
|
+
description: 'Determines if the center point & callsign are visible when the shape is rendered in TAK clients'
|
|
761
|
+
})),
|
|
700
762
|
editable: Type.Optional(Type.Boolean()),
|
|
701
763
|
})
|
|
702
764
|
});
|
|
703
765
|
|
|
766
|
+
// === CBRN Sensor Schemas (RadCoT, ChemCoT, BioCoT) ===
|
|
767
|
+
|
|
768
|
+
// RadCoT Enums
|
|
769
|
+
export const RadMeasurementType = Type.Enum({
|
|
770
|
+
alpha: 'alpha',
|
|
771
|
+
beta: 'beta',
|
|
772
|
+
gamma: 'gamma',
|
|
773
|
+
neutron: 'neutron',
|
|
774
|
+
doserate: 'doserate'
|
|
775
|
+
});
|
|
776
|
+
|
|
777
|
+
export const RadDistanceToSource = Type.Enum({
|
|
778
|
+
MOVE_MUCH_CLOSER: 'MOVE_MUCH_CLOSER',
|
|
779
|
+
MOVE_CLOSER: 'MOVE_CLOSER',
|
|
780
|
+
OPTIMAL: 'OPTIMAL',
|
|
781
|
+
MOVE_AWAY: 'MOVE_AWAY',
|
|
782
|
+
MOVE_FAR_AWAY: 'MOVE_FAR_AWAY'
|
|
783
|
+
});
|
|
784
|
+
|
|
785
|
+
export const RadModuleLocation = Type.Enum({
|
|
786
|
+
FRONT_LEFT: 'FRONT_LEFT',
|
|
787
|
+
FRONT_RIGHT: 'FRONT_RIGHT',
|
|
788
|
+
REAR_LEFT: 'REAR_LEFT',
|
|
789
|
+
REAR_RIGHT: 'REAR_RIGHT',
|
|
790
|
+
CAB: 'CAB'
|
|
791
|
+
});
|
|
792
|
+
|
|
793
|
+
// RadCoT Sensor Data Attributes
|
|
794
|
+
export const RadSensorDataAttributes = Type.Object({
|
|
795
|
+
time: Type.String({
|
|
796
|
+
description: 'epoch time in Long format'
|
|
797
|
+
}),
|
|
798
|
+
model: Type.String({
|
|
799
|
+
description: 'The model of sensor (Micro Detective, IdentiFINDER 2, etc.) in string format'
|
|
800
|
+
}),
|
|
801
|
+
neutronstatus: Type.String({
|
|
802
|
+
description: 'The neutron detector status (Full, Reduced or Unknown). Not available for most sensors, default to Unknown'
|
|
803
|
+
}),
|
|
804
|
+
gammastatus: Type.String({
|
|
805
|
+
description: 'The gamma detector status (Full, Reduced or Unknown). Not available for most sensors, default to Unknown'
|
|
806
|
+
}),
|
|
807
|
+
manufacturer: Type.String({
|
|
808
|
+
description: 'The Manufacturer of the sensor (Ortec, Nucsafe, etc.) in string format'
|
|
809
|
+
}),
|
|
810
|
+
callsign: Type.Optional(Type.String({
|
|
811
|
+
description: 'The name of the given sensor in string format'
|
|
812
|
+
})),
|
|
813
|
+
serialnumber: Type.String({
|
|
814
|
+
description: 'The Serial Number of the Sensor in string format'
|
|
815
|
+
}),
|
|
816
|
+
batterylevel: Type.Optional(Type.Number({
|
|
817
|
+
description: 'The battery level as a percentage, float value'
|
|
818
|
+
})),
|
|
819
|
+
id_algorithm: Type.Optional(Type.String({
|
|
820
|
+
description: 'The ID algorithm used to ID isotopes (ex. GADRAS)'
|
|
821
|
+
})),
|
|
822
|
+
search_algorithm: Type.Optional(Type.String({
|
|
823
|
+
description: 'The search algorithm used (ex. RDAK, SAMBA)'
|
|
824
|
+
})),
|
|
825
|
+
alarm_algorithm: Type.Optional(Type.String({
|
|
826
|
+
description: 'The alarm algorithm used (ex. RDAK, SAMBA)'
|
|
827
|
+
})),
|
|
828
|
+
ordinal: Type.Optional(Type.Integer({
|
|
829
|
+
description: 'Used internally by the CBRN plugin'
|
|
830
|
+
})),
|
|
831
|
+
subchannel: Type.Optional(Type.String({
|
|
832
|
+
description: 'Identifier of this subchannel, if this event is a report from a subchannel of a master sensor'
|
|
833
|
+
})),
|
|
834
|
+
measurement_ref: Type.Optional(Type.Integer({
|
|
835
|
+
description: 'Used to align subchannels'
|
|
836
|
+
})),
|
|
837
|
+
master_sensor_manufacturer: Type.Optional(Type.String({
|
|
838
|
+
description: 'Name of the master sensor, if this event is a report from a subchannel'
|
|
839
|
+
})),
|
|
840
|
+
master_sensor_serial: Type.Optional(Type.String({
|
|
841
|
+
description: 'Serial number of the master sensor, if this event is a report from a subchannel'
|
|
842
|
+
})),
|
|
843
|
+
source_bearing: Type.Optional(Type.Integer({
|
|
844
|
+
description: 'A bearing in positive degrees if the sensor reports back a direction for the detected source, -1 otherwise'
|
|
845
|
+
})),
|
|
846
|
+
source_strength: Type.Optional(Type.Number({
|
|
847
|
+
description: 'A scale from 0 - 0.5 giving the magnitude of the source strength in the direction of source_bearing'
|
|
848
|
+
})),
|
|
849
|
+
relay_type: Type.Optional(Type.String({
|
|
850
|
+
description: 'Used for sensors that can relay data from other sensors, or that can be relayed in that way'
|
|
851
|
+
})),
|
|
852
|
+
module_location: Type.Optional(Type.String({
|
|
853
|
+
description: 'The location of the sensor where it\'s being worn on the vest'
|
|
854
|
+
})),
|
|
855
|
+
detector_number: Type.Optional(Type.Integer({
|
|
856
|
+
description: 'The number from the sensor needed in order to retrieve any specific algorithm calculated data'
|
|
857
|
+
})),
|
|
858
|
+
mission_total_mR: Type.Optional(Type.Integer({
|
|
859
|
+
description: 'The total mR configured for the sensor\'s current mission'
|
|
860
|
+
})),
|
|
861
|
+
mission_stay_time_sec: Type.Optional(Type.Integer({
|
|
862
|
+
description: 'The total seconds remaining of mission time based on current configuration of sensor and acquired dose'
|
|
863
|
+
})),
|
|
864
|
+
mission_acquired_uR: Type.Optional(Type.Integer({
|
|
865
|
+
description: 'The total uR acquired by the sensor for the current mission'
|
|
866
|
+
})),
|
|
867
|
+
sensor_temp_deg_c: Type.Optional(Type.Number({
|
|
868
|
+
description: 'The temperature of the sensor in degrees celsius'
|
|
869
|
+
})),
|
|
870
|
+
heading: Type.Optional(Type.Number({
|
|
871
|
+
description: 'The current directional heading of the sensor'
|
|
872
|
+
})),
|
|
873
|
+
source_distance: Type.Optional(RadDistanceToSource),
|
|
874
|
+
attachedUid: Type.Optional(Type.String({
|
|
875
|
+
description: 'The UID of the TAK marker that this sensor is attached to'
|
|
876
|
+
})),
|
|
877
|
+
simulated: Type.Optional(Type.Boolean({
|
|
878
|
+
description: 'Is the data in this element representative of a simulated sensor'
|
|
879
|
+
}))
|
|
880
|
+
});
|
|
881
|
+
|
|
882
|
+
export const RadSensorData = Type.Object({
|
|
883
|
+
_attributes: RadSensorDataAttributes
|
|
884
|
+
});
|
|
885
|
+
|
|
886
|
+
// RadCoT Measurement
|
|
887
|
+
export const RadMeasurementAttributes = Type.Object({
|
|
888
|
+
nalarmstddev: Type.Integer({
|
|
889
|
+
description: 'Defines the alarm level, could be standard deviations above background. Will default to 0 (no alarm)'
|
|
890
|
+
}),
|
|
891
|
+
alarm: Type.Integer({
|
|
892
|
+
description: 'Alarm flag for the measurement. 1 = alarmed, 0 = not alarmed'
|
|
893
|
+
}),
|
|
894
|
+
measurement: Type.Number({
|
|
895
|
+
description: 'The measurement value as a float. A/B/G/N will be interpreted as CPS. Dose Rate will be interpreted as mR/Hr'
|
|
896
|
+
}),
|
|
897
|
+
name: RadMeasurementType
|
|
898
|
+
});
|
|
899
|
+
|
|
900
|
+
export const RadMeasurement = Type.Object({
|
|
901
|
+
_attributes: RadMeasurementAttributes
|
|
902
|
+
});
|
|
903
|
+
|
|
904
|
+
// RadCoT Physical Module
|
|
905
|
+
export const RadPhysicalModuleAttributes = Type.Object({
|
|
906
|
+
location: RadModuleLocation,
|
|
907
|
+
gamma_cps: Type.Number({
|
|
908
|
+
description: 'Gamma counts per second'
|
|
909
|
+
}),
|
|
910
|
+
gamma_alarm: Type.Integer({
|
|
911
|
+
description: 'Alarm level for the measurement. 0 = not alarmed, > 0 = alarm level'
|
|
912
|
+
}),
|
|
913
|
+
gamma_dose_rate: Type.Number({
|
|
914
|
+
description: 'The gamma dose rate. Will be interpreted as uR/Hr'
|
|
915
|
+
})
|
|
916
|
+
});
|
|
917
|
+
|
|
918
|
+
export const RadPhysicalModule = Type.Object({
|
|
919
|
+
_attributes: RadPhysicalModuleAttributes
|
|
920
|
+
});
|
|
921
|
+
|
|
922
|
+
// RadCoT Search Algorithm
|
|
923
|
+
export const RadSearchAlgorithmAttributes = Type.Object({
|
|
924
|
+
neutron_loc: Type.Number({
|
|
925
|
+
description: 'The Neutron localization value'
|
|
926
|
+
}),
|
|
927
|
+
gamma_loc: Type.Number({
|
|
928
|
+
description: 'The Gamma localization value'
|
|
929
|
+
}),
|
|
930
|
+
neutron_loc_alarm_value: Type.Number({
|
|
931
|
+
description: 'The Neutron localization alarm level'
|
|
932
|
+
}),
|
|
933
|
+
gamma_loc_alarm_value: Type.Number({
|
|
934
|
+
description: 'The Gamma localization alarm level'
|
|
935
|
+
}),
|
|
936
|
+
neutron_loc_alarm: Type.Integer({
|
|
937
|
+
description: 'Alarm flag for the neutron localization value. 1 = alarmed, 0 = not alarmed'
|
|
938
|
+
}),
|
|
939
|
+
gamma_loc_alarm: Type.Integer({
|
|
940
|
+
description: 'Alarm flag for the gamma localization value. 1 = alarmed, 0 = not alarmed'
|
|
941
|
+
})
|
|
942
|
+
});
|
|
943
|
+
|
|
944
|
+
export const RadSearchAlgorithm = Type.Object({
|
|
945
|
+
_attributes: RadSearchAlgorithmAttributes
|
|
946
|
+
});
|
|
947
|
+
|
|
948
|
+
// RadCoT Spectrum
|
|
949
|
+
export const RadSpectrumAttributes = Type.Object({
|
|
950
|
+
zerocompression: Type.Integer({
|
|
951
|
+
description: 'Flag for zero compression. 1 = zero compressed, 0 = not compressed'
|
|
952
|
+
}),
|
|
953
|
+
type: Type.String({
|
|
954
|
+
description: 'FOREGROUND or BACKGROUND'
|
|
955
|
+
}),
|
|
956
|
+
livetime_ms: Type.String({
|
|
957
|
+
description: 'Spectrum live time in epoch time (ms)'
|
|
958
|
+
}),
|
|
959
|
+
realtime_ms: Type.String({
|
|
960
|
+
description: 'Spectrum real time in epoch time (ms)'
|
|
961
|
+
}),
|
|
962
|
+
channeldata: Type.String({
|
|
963
|
+
description: 'The spectral channel data'
|
|
964
|
+
}),
|
|
965
|
+
crystal_id: Type.Optional(Type.String({
|
|
966
|
+
description: 'The ID of the crystal reporting the channel data'
|
|
967
|
+
}))
|
|
968
|
+
});
|
|
969
|
+
|
|
970
|
+
export const RadSpectrum = Type.Object({
|
|
971
|
+
_attributes: RadSpectrumAttributes
|
|
972
|
+
});
|
|
973
|
+
|
|
974
|
+
// RadCoT Isotope
|
|
975
|
+
export const RadIsotopeAttributes = Type.Object({
|
|
976
|
+
confidence: Type.Number({
|
|
977
|
+
description: 'The confidence value as a float representation of a percentage (88.5 NOT 0.885)'
|
|
978
|
+
}),
|
|
979
|
+
name: Type.String({
|
|
980
|
+
description: 'The name of the isotope'
|
|
981
|
+
}),
|
|
982
|
+
type: Type.String({
|
|
983
|
+
description: 'The type of the isotope'
|
|
984
|
+
})
|
|
985
|
+
});
|
|
986
|
+
|
|
987
|
+
export const RadIsotope = Type.Object({
|
|
988
|
+
_attributes: RadIsotopeAttributes
|
|
989
|
+
});
|
|
990
|
+
|
|
991
|
+
// RadCoT Permissions
|
|
992
|
+
export const RadPermissionsAttributes = Type.Object({
|
|
993
|
+
all: Type.Boolean({
|
|
994
|
+
description: 'All is true if all users should have access/permission'
|
|
995
|
+
}),
|
|
996
|
+
contact_list: Type.String({
|
|
997
|
+
description: 'The list of ATAK UIDs that should have access/permission'
|
|
998
|
+
})
|
|
999
|
+
});
|
|
1000
|
+
|
|
1001
|
+
export const RadDataPermissions = Type.Object({
|
|
1002
|
+
_attributes: RadPermissionsAttributes
|
|
1003
|
+
});
|
|
1004
|
+
|
|
1005
|
+
export const RadCommandPermissions = Type.Object({
|
|
1006
|
+
_attributes: RadPermissionsAttributes
|
|
1007
|
+
});
|
|
1008
|
+
|
|
1009
|
+
// RadCoT Main Element
|
|
1010
|
+
export const RadSensorDetail = Type.Object({
|
|
1011
|
+
sensor_data: RadSensorData,
|
|
1012
|
+
radmeasurement: Type.Optional(Type.Union([RadMeasurement, Type.Array(RadMeasurement)])),
|
|
1013
|
+
physical_module: Type.Optional(Type.Union([RadPhysicalModule, Type.Array(RadPhysicalModule)])),
|
|
1014
|
+
search_algorithm: Type.Optional(RadSearchAlgorithm),
|
|
1015
|
+
spectrum: Type.Optional(Type.Union([RadSpectrum, Type.Array(RadSpectrum)])),
|
|
1016
|
+
isotope: Type.Optional(Type.Union([RadIsotope, Type.Array(RadIsotope)])),
|
|
1017
|
+
data_permissions: Type.Optional(RadDataPermissions),
|
|
1018
|
+
command_permissions: Type.Optional(RadCommandPermissions)
|
|
1019
|
+
});
|
|
1020
|
+
|
|
1021
|
+
// ChemCoT Sensor Data Attributes
|
|
1022
|
+
export const ChemSensorDataAttributes = Type.Object({
|
|
1023
|
+
manufacturer: Type.String({
|
|
1024
|
+
description: 'The Manufacturer of the sensor in string format'
|
|
1025
|
+
}),
|
|
1026
|
+
model: Type.String({
|
|
1027
|
+
description: 'The model of sensor in string format'
|
|
1028
|
+
}),
|
|
1029
|
+
serialnumber: Type.String({
|
|
1030
|
+
description: 'The Serial Number of the Sensor in string format'
|
|
1031
|
+
}),
|
|
1032
|
+
batterylevel: Type.Optional(Type.Number({
|
|
1033
|
+
description: 'The battery level as a percentage, float value'
|
|
1034
|
+
})),
|
|
1035
|
+
callsign: Type.Optional(Type.String({
|
|
1036
|
+
description: 'The name of the given sensor in string format. Default name is Manufacturer+SerialNum'
|
|
1037
|
+
})),
|
|
1038
|
+
revision: Type.Optional(Type.Number({
|
|
1039
|
+
description: 'The revision of the ChemCoT format, at writing this is "7"'
|
|
1040
|
+
})),
|
|
1041
|
+
status: Type.Optional(Type.String({
|
|
1042
|
+
description: 'General sensor health status'
|
|
1043
|
+
})),
|
|
1044
|
+
ordinal: Type.Optional(Type.Integer({
|
|
1045
|
+
description: 'Used internally by the CBRN plugin'
|
|
1046
|
+
})),
|
|
1047
|
+
attachedUid: Type.Optional(Type.String({
|
|
1048
|
+
description: 'The UID of the TAK marker that this sensor is attached to'
|
|
1049
|
+
})),
|
|
1050
|
+
simulated: Type.Optional(Type.Boolean({
|
|
1051
|
+
description: 'Is the data in this element representative of a simulated sensor'
|
|
1052
|
+
}))
|
|
1053
|
+
});
|
|
1054
|
+
|
|
1055
|
+
export const ChemSensorData = Type.Object({
|
|
1056
|
+
_attributes: ChemSensorDataAttributes
|
|
1057
|
+
});
|
|
1058
|
+
|
|
1059
|
+
// ChemCoT Detection
|
|
1060
|
+
export const ChemDetectionAttributes = Type.Object({
|
|
1061
|
+
time: Type.String({
|
|
1062
|
+
description: 'Timestamp for the detection, epoch time (ms)'
|
|
1063
|
+
}),
|
|
1064
|
+
agent: Type.String({
|
|
1065
|
+
description: 'Chemical Name in string format'
|
|
1066
|
+
}),
|
|
1067
|
+
quantity: Type.Number({
|
|
1068
|
+
description: 'Amount of chemical detected as a float. Could be mass, density, bars etc.'
|
|
1069
|
+
}),
|
|
1070
|
+
quantityunits: Type.String({
|
|
1071
|
+
description: 'The units used to describe the quantity'
|
|
1072
|
+
}),
|
|
1073
|
+
concentration: Type.Optional(Type.Number({
|
|
1074
|
+
description: 'Concentration of chemical in Kg/m^3'
|
|
1075
|
+
})),
|
|
1076
|
+
alarm: Type.Number({
|
|
1077
|
+
description: 'Alarm state of the sensor. 1 = alarm, 0 = no alarm'
|
|
1078
|
+
}),
|
|
1079
|
+
confidence: Type.Optional(Type.Number({
|
|
1080
|
+
description: 'The confidence of the detection from the sensor as a percentage'
|
|
1081
|
+
})),
|
|
1082
|
+
massfraction: Type.Optional(Type.Number({
|
|
1083
|
+
description: 'The mass fraction of the detection from the sensor in ppm'
|
|
1084
|
+
})),
|
|
1085
|
+
percent: Type.Optional(Type.Number({
|
|
1086
|
+
description: 'The percentage of the detection from the sensor in percent from 0-100'
|
|
1087
|
+
})),
|
|
1088
|
+
class: Type.Optional(Type.String({
|
|
1089
|
+
description: 'The class of chemical detected. Nerve, Blood, TIC, etc.'
|
|
1090
|
+
})),
|
|
1091
|
+
id: Type.Optional(Type.Integer({
|
|
1092
|
+
description: 'The ID number of the detection'
|
|
1093
|
+
}))
|
|
1094
|
+
});
|
|
1095
|
+
|
|
1096
|
+
export const ChemDetection = Type.Object({
|
|
1097
|
+
_attributes: ChemDetectionAttributes
|
|
1098
|
+
});
|
|
1099
|
+
|
|
1100
|
+
// ChemCoT Main Element
|
|
1101
|
+
export const ChemSensorDetail = Type.Object({
|
|
1102
|
+
sensor_data: ChemSensorData,
|
|
1103
|
+
detection: Type.Optional(Type.Union([ChemDetection, Type.Array(ChemDetection)]))
|
|
1104
|
+
});
|
|
1105
|
+
|
|
1106
|
+
// BioCoT Sensor Data Attributes
|
|
1107
|
+
export const BioSensorDataAttributes = Type.Object({
|
|
1108
|
+
manufacturer: Type.String({
|
|
1109
|
+
description: 'The Manufacturer of the sensor in string format'
|
|
1110
|
+
}),
|
|
1111
|
+
model: Type.String({
|
|
1112
|
+
description: 'The model of sensor in string format'
|
|
1113
|
+
}),
|
|
1114
|
+
serialnumber: Type.String({
|
|
1115
|
+
description: 'The Serial Number of the Sensor in string format'
|
|
1116
|
+
}),
|
|
1117
|
+
batterylevel: Type.Optional(Type.Number({
|
|
1118
|
+
description: 'The battery level as a percentage, float value'
|
|
1119
|
+
})),
|
|
1120
|
+
callsign: Type.Optional(Type.String({
|
|
1121
|
+
description: 'The name of the given sensor in string format. Default name is Manufacturer+SerialNum'
|
|
1122
|
+
})),
|
|
1123
|
+
revision: Type.Optional(Type.Number({
|
|
1124
|
+
description: 'The revision of the BioCoT format'
|
|
1125
|
+
})),
|
|
1126
|
+
status: Type.Optional(Type.String({
|
|
1127
|
+
description: 'General sensor health status'
|
|
1128
|
+
})),
|
|
1129
|
+
ordinal: Type.Optional(Type.Integer({
|
|
1130
|
+
description: 'Used internally by the CBRN plugin'
|
|
1131
|
+
})),
|
|
1132
|
+
attachedUid: Type.Optional(Type.String({
|
|
1133
|
+
description: 'The UID of the TAK marker that this sensor is attached to'
|
|
1134
|
+
})),
|
|
1135
|
+
simulated: Type.Optional(Type.Boolean({
|
|
1136
|
+
description: 'Is the data in this element representative of a simulated sensor'
|
|
1137
|
+
}))
|
|
1138
|
+
});
|
|
1139
|
+
|
|
1140
|
+
export const BioSensorData = Type.Object({
|
|
1141
|
+
_attributes: BioSensorDataAttributes
|
|
1142
|
+
});
|
|
1143
|
+
|
|
1144
|
+
// BioCoT Measurement Level
|
|
1145
|
+
export const BioMeasurementLevelAttributes = Type.Object({
|
|
1146
|
+
levelName: Type.String({
|
|
1147
|
+
description: 'The name of this measurement level'
|
|
1148
|
+
}),
|
|
1149
|
+
levelValue: Type.String({
|
|
1150
|
+
description: 'The value of this measurement level'
|
|
1151
|
+
})
|
|
1152
|
+
});
|
|
1153
|
+
|
|
1154
|
+
export const BioMeasurementLevel = Type.Object({
|
|
1155
|
+
_attributes: BioMeasurementLevelAttributes
|
|
1156
|
+
});
|
|
1157
|
+
|
|
1158
|
+
// BioCoT Measurement
|
|
1159
|
+
export const BioMeasurementAttributes = Type.Object({
|
|
1160
|
+
time: Type.String({
|
|
1161
|
+
description: 'Timestamp for the measurement, epoch time (ms)'
|
|
1162
|
+
}),
|
|
1163
|
+
bioClass: Type.Optional(Type.String({
|
|
1164
|
+
description: 'Biological class'
|
|
1165
|
+
})),
|
|
1166
|
+
type: Type.Optional(Type.String({
|
|
1167
|
+
description: 'Biological type'
|
|
1168
|
+
})),
|
|
1169
|
+
channel: Type.Optional(Type.Integer({
|
|
1170
|
+
description: 'Channel identifier'
|
|
1171
|
+
})),
|
|
1172
|
+
harmful: Type.Optional(Type.Boolean({
|
|
1173
|
+
description: 'Is this bio measurement harmful'
|
|
1174
|
+
})),
|
|
1175
|
+
doseTime: Type.Optional(Type.Integer({
|
|
1176
|
+
description: 'Dose Time'
|
|
1177
|
+
})),
|
|
1178
|
+
dose: Type.Number({
|
|
1179
|
+
description: 'Amount of dose'
|
|
1180
|
+
}),
|
|
1181
|
+
confidence: Type.Optional(Type.Number({
|
|
1182
|
+
description: 'The confidence of the measurement from the sensor as a percentage'
|
|
1183
|
+
})),
|
|
1184
|
+
confirmationLevel: Type.Optional(Type.String({
|
|
1185
|
+
description: 'Confirmation level'
|
|
1186
|
+
})),
|
|
1187
|
+
concentration: Type.Optional(Type.Number({
|
|
1188
|
+
description: 'Concentration'
|
|
1189
|
+
})),
|
|
1190
|
+
sampleId: Type.Optional(Type.String({
|
|
1191
|
+
description: 'Sample ID of this measurement'
|
|
1192
|
+
})),
|
|
1193
|
+
persistency: Type.Optional(Type.String({
|
|
1194
|
+
description: 'Persistency'
|
|
1195
|
+
}))
|
|
1196
|
+
});
|
|
1197
|
+
|
|
1198
|
+
export const BioMeasurement = Type.Object({
|
|
1199
|
+
_attributes: BioMeasurementAttributes,
|
|
1200
|
+
level: Type.Optional(Type.Union([BioMeasurementLevel, Type.Array(BioMeasurementLevel)]))
|
|
1201
|
+
});
|
|
1202
|
+
|
|
1203
|
+
// BioCoT Main Element
|
|
1204
|
+
export const BioSensorDetail = Type.Object({
|
|
1205
|
+
sensor_data: BioSensorData,
|
|
1206
|
+
measurement: Type.Optional(Type.Union([BioMeasurement, Type.Array(BioMeasurement)]))
|
|
1207
|
+
});
|
|
1208
|
+
|
|
704
1209
|
export const Detail = Type.Object({
|
|
705
1210
|
contact: Type.Optional(Contact),
|
|
706
1211
|
tog: Type.Optional(TogAttributes),
|
|
@@ -727,6 +1232,7 @@ export const Detail = Type.Object({
|
|
|
727
1232
|
archive: Type.Optional(Type.Union([GenericStringAttributes, Type.Array(GenericStringAttributes)])),
|
|
728
1233
|
strokeWeight: Type.Optional(GenericNumberAttributes),
|
|
729
1234
|
strokeStyle: Type.Optional(GenericStringAttributes),
|
|
1235
|
+
// Controls the display of distance calculation labels on the edge of line/polygon features
|
|
730
1236
|
labels_on: Type.Optional(GenericBooleanAttributes),
|
|
731
1237
|
fillColor: Type.Optional(GenericIntegerAttributes),
|
|
732
1238
|
mission: Type.Optional(Mission),
|
|
@@ -759,7 +1265,15 @@ export const Detail = Type.Object({
|
|
|
759
1265
|
TakResponse: Type.Optional(TakResponseAttributes),
|
|
760
1266
|
TakProtocolSupport: Type.Optional(ProtocolSupportAttributes),
|
|
761
1267
|
TakServerVersionInfo: Type.Optional(ServerVersionAttributes)
|
|
762
|
-
}))
|
|
1268
|
+
})),
|
|
1269
|
+
|
|
1270
|
+
// CBRN Sensor Details
|
|
1271
|
+
radsensordetail: Type.Optional(RadSensorDetail),
|
|
1272
|
+
chemsensordetail: Type.Optional(ChemSensorDetail),
|
|
1273
|
+
biosensordetail: Type.Optional(BioSensorDetail),
|
|
1274
|
+
|
|
1275
|
+
// Spatial information
|
|
1276
|
+
spatial: Type.Optional(Spatial)
|
|
763
1277
|
})
|
|
764
1278
|
|
|
765
1279
|
export const Point = Type.Object({
|
package/package.json
CHANGED