Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
Executable
+258
@@ -0,0 +1,258 @@
|
||||
#
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
#
|
||||
|
||||
# Uncomment if necessary
|
||||
#ADD_SUBDIRECTORY(UnitTests)
|
||||
#ADD_SUBDIRECTORY(ModuleTests)
|
||||
|
||||
INCLUDE(MacroRTIDDSGen)
|
||||
INCLUDE(MacroCodeGenIdl)
|
||||
|
||||
ADD_SUBDIRECTORY(Plugins)
|
||||
|
||||
SET(xml_FILE tab_service.xml)
|
||||
|
||||
#
|
||||
# --- Library tabTelegrams --------------------------------------------------------------------------------
|
||||
#
|
||||
SET(SRCS_telegrams
|
||||
training_area_telegrams.cpp
|
||||
training_area_telegrams.h
|
||||
)
|
||||
NGL_ADD_LIBRARY(AAR SV WS HLA tabTelegrams STATIC ${SRCS_telegrams})
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(tabTelegrams
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/..
|
||||
)
|
||||
NGL_TARGET_LINK_LIBRARIES(tabTelegrams
|
||||
PUBLIC
|
||||
Qt5::Core
|
||||
)
|
||||
|
||||
# install on RPM build and copy for local builds so that LogView automatically finds the training_area_telegrams.h file
|
||||
if (BUILD_RPM)
|
||||
add_custom_target(training_area_telegrams.h_bin) # empty target so that LogView still builds on RPM build
|
||||
NGL_INSTALL(AAR SV FILES training_area_telegrams.h DESTINATION bin)
|
||||
else()
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/bin/training_area_telegrams.h
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/training_area_telegrams.h ${CMAKE_BINARY_DIR}/bin/training_area_telegrams.h
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/training_area_telegrams.h
|
||||
COMMENT "[Local build] Copy training_area_telegrams.h for LogView into bin/"
|
||||
)
|
||||
add_custom_target(training_area_telegrams.h_bin DEPENDS ${CMAKE_BINARY_DIR}/bin/training_area_telegrams.h)
|
||||
endif()
|
||||
|
||||
#
|
||||
# --- Library svcTabCommon --------------------------------------------------------------------------------
|
||||
#
|
||||
SET(SRCS_common
|
||||
logger.cpp
|
||||
logger.h
|
||||
tab_export.h
|
||||
)
|
||||
|
||||
# Generate tab_enums.idl / tab.idl
|
||||
CODEGEN_IDL_SVC(SRCS_common ${xml_FILE})
|
||||
# Generate tab_db_impl.cpp/.h, tab_db.h
|
||||
CODEGEN_DATABASE(SRCS_common ${xml_FILE})
|
||||
|
||||
# Generate *.cpp/*.hpp from idl
|
||||
RTIDDSGEN(SRCS_common tab_enums.idl)
|
||||
RTIDDSGEN(SRCS_common tab.idl)
|
||||
|
||||
# Generate tab_dt[s,c]_types.h, tab_ft[s,c]_types.h
|
||||
CODEGEN_TOPIC_TYPEDEFS(SRCS_common ${xml_FILE})
|
||||
# generate tab_[d|f]tc.h
|
||||
CODEGEN_CLIENT_TOPICS_IFC(SRCS_common ${xml_FILE})
|
||||
|
||||
NGL_ADD_LIBRARY(AAR SV WS HLA svcTabCommon SHARED ${SRCS_common})
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(svcTabCommon
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
)
|
||||
NGL_TARGET_LINK_LIBRARIES(svcTabCommon
|
||||
PRIVATE
|
||||
RTI::nddscpp2
|
||||
PUBLIC
|
||||
Qt5::Core
|
||||
Qt5::Sql
|
||||
ddscore
|
||||
NGLLogger
|
||||
ngldb
|
||||
svcPdmCommon
|
||||
LtsUtilsCoreHeaderOnly
|
||||
)
|
||||
NGL_INSTALL_TARGET(svcTabCommon)
|
||||
|
||||
#
|
||||
# --- Library svcTabClient --------------------------------------------------------------------------------
|
||||
#
|
||||
SET(SRCS_client
|
||||
tab_export.h
|
||||
)
|
||||
# generate tab_[d|f]tc_impl.[cpp|h]
|
||||
CODEGEN_CLIENT_TOPICS_IMPL(SRCS_client ${xml_FILE})
|
||||
|
||||
NGL_ADD_LIBRARY(AAR SV WS HLA svcTabClient SHARED ${SRCS_client})
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(svcTabClient
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
)
|
||||
|
||||
NGL_TARGET_LINK_LIBRARIES(svcTabClient
|
||||
PRIVATE
|
||||
RTI::nddscpp2
|
||||
ddsconnector
|
||||
PUBLIC
|
||||
svcTabCommon
|
||||
ddsftc
|
||||
)
|
||||
NGL_INSTALL_TARGET(svcTabClient)
|
||||
|
||||
#
|
||||
# --- Library svcTabServer --------------------------------------------------------------------------------
|
||||
#
|
||||
SET(SRCS_server
|
||||
tx_mixin.cpp
|
||||
tx_mixin.h
|
||||
)
|
||||
# generate tab_[d|f]ts.h, tab_[d|f]ts_impl.[cpp|h]
|
||||
CODEGEN_SERVER_TOPICS(SRCS_server ${xml_FILE})
|
||||
|
||||
NGL_ADD_LIBRARY(AAR HLA SV svcTabServer SHARED ${SRCS_server}) # NGL_ADD_LIBRARY2 won't work here - no time for investigations
|
||||
if(BUILD_SV OR BUILD_HLA)
|
||||
GENERATE_EXPORT_HEADER(svcTabServer) # FIXME: quick workaround
|
||||
endif()
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(svcTabServer
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
)
|
||||
|
||||
NGL_TARGET_LINK_LIBRARIES(svcTabServer
|
||||
PRIVATE
|
||||
RTI::nddscpp2
|
||||
ddsconnector
|
||||
ddsfts
|
||||
PUBLIC
|
||||
svcTabCommon
|
||||
ngldb
|
||||
)
|
||||
NGL_INSTALL_TARGET(svcTabServer)
|
||||
|
||||
#
|
||||
# --- Topic Type Plugin --------------------------------------------------------------
|
||||
#
|
||||
CREATE_TOPIC_TYPE_PLUGIN(${xml_FILE})
|
||||
|
||||
#
|
||||
# --- RecordReplayPlugin --------------------------------------------------------------
|
||||
#
|
||||
CREATE_RECORD_REPLAY_PLUGIN_SHARED(${xml_FILE})
|
||||
IF (TARGET tabRecordReplayPlugin)
|
||||
TARGET_SOURCES(tabRecordReplayPlugin
|
||||
PRIVATE
|
||||
tab_record_replay_plugin_custom.cpp
|
||||
tab_record_replay_plugin_custom.h
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
#
|
||||
# --- Executable svcTrainingAreaBase (sTAB) -------------------------------------------------
|
||||
#
|
||||
SET(SRCS_exe
|
||||
dds_handler.cpp
|
||||
dds_handler.h
|
||||
exm_handler.cpp
|
||||
exm_handler.h
|
||||
ism_handler.cpp
|
||||
ism_handler.h
|
||||
main.cpp
|
||||
main_handler.cpp
|
||||
main_handler.h
|
||||
pdm_handler.cpp
|
||||
pdm_handler.h
|
||||
ppm_handler.cpp
|
||||
ppm_handler.h
|
||||
position_handler.cpp
|
||||
position_handler.h
|
||||
recv_from_dds_aes.cpp
|
||||
recv_from_dds_aes.h
|
||||
recv_from_dds_fts.cpp
|
||||
recv_from_dds_fts.h
|
||||
recv_from_tab.h
|
||||
send_to_dds.cpp
|
||||
send_to_dds.h
|
||||
send_to_tab.h
|
||||
settings.cpp
|
||||
settings.h
|
||||
tab_export.h
|
||||
tab_plugin_interface.h
|
||||
|
||||
WebSocketInterface/data_manager.cpp
|
||||
WebSocketInterface/data_manager.h
|
||||
WebSocketInterface/json_keys.h
|
||||
WebSocketInterface/websocket_interface_handler.cpp
|
||||
WebSocketInterface/websocket_interface_handler.h
|
||||
WebSocketInterface/Messages/client_message.cpp
|
||||
WebSocketInterface/Messages/client_message.h
|
||||
WebSocketInterface/Messages/reply_message.cpp
|
||||
WebSocketInterface/Messages/reply_message.h
|
||||
# tx_mixin.cpp
|
||||
# tx_mixin.h
|
||||
|
||||
log4cxx_tab.props
|
||||
${xml_FILE}
|
||||
)
|
||||
|
||||
# Generate tab.sql, tab.xml
|
||||
CODEGEN_SQL(SRCS_exe ${xml_FILE})
|
||||
|
||||
NGL_ADD_SVC_ICON(SRCS_exe)
|
||||
NGL_ADD_EXECUTABLE(AAR SV svcTrainingAreaBase ${SRCS_exe})
|
||||
NGL_TARGET_LINK_LIBRARIES(svcTrainingAreaBase
|
||||
Qt5::Core
|
||||
Qt5::Network
|
||||
LtsCoordTrans
|
||||
LtsWebSocketServer
|
||||
LtsCommandLineParser
|
||||
LtsPluginLoader
|
||||
LtsUtilsCoreHeaderOnly
|
||||
LtsUtilsCore
|
||||
svcTabCommon
|
||||
svcTabServer
|
||||
svcNomClient
|
||||
svcAesClient
|
||||
svcOpmClient
|
||||
svcCoreClient
|
||||
svcAsmClient
|
||||
svcExmClient
|
||||
svcIsmClient
|
||||
svcPdmClient
|
||||
svcPpmClient
|
||||
ddsconnector
|
||||
nglsettings
|
||||
ProjectConfig
|
||||
NGLLogger
|
||||
nglcoreapplication
|
||||
ngltools
|
||||
tabTelegrams
|
||||
)
|
||||
NGL_INSTALL_TARGET(svcTrainingAreaBase)
|
||||
NGL_INSTALL(AAR SV FILES log4cxx_tab.props DESTINATION bin)
|
||||
NGL_ADD_TARGET_LINK(svcTrainingAreaBase sTAB)
|
||||
|
||||
# clientPluginInterface
|
||||
ADD_LIBRARY(tabPluginInterface INTERFACE)
|
||||
TARGET_SOURCES(tabPluginInterface INTERFACE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/tab_plugin_interface.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/training_area_telegrams.h
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES(tabPluginInterface INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/../)
|
||||
TARGET_LINK_LIBRARIES(tabPluginInterface INTERFACE Qt5::Core svcPdmCommon)
|
||||
@@ -0,0 +1,104 @@
|
||||
#
|
||||
# @RDE_HEADER@
|
||||
# IsmHandler for WirelessLocationSystem
|
||||
# $Id: CMakeLists.txt 62899 2024-05-29 11:08:50Z ewert_j $
|
||||
# $HeadURL: svn://slssvn/TDS/branches/product/features/ufom/Lts/Proxies/TrainingAreaBase/Plugins/UFomHlaJson/CMakeLists.txt $
|
||||
# $Author: ewert_j $
|
||||
# Created by Julius Ewert, ESIM, 2024-03-20
|
||||
#
|
||||
|
||||
SET(SRCS_SAA
|
||||
telegrams.h
|
||||
telegrams.cpp
|
||||
generatetelegrams.cpp
|
||||
generatetelegrams.h
|
||||
adler_export.h
|
||||
|
||||
)
|
||||
NGL_ADD_LIBRARY(AAR SV WS saaTelegrams SHARED ${SRCS_SAA})
|
||||
|
||||
NGL_INSTALL_TARGET(saaTelegrams)
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(saaTelegrams
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
)
|
||||
NGL_TARGET_LINK_LIBRARIES(saaTelegrams
|
||||
svcPdmClient
|
||||
Qt5::Core
|
||||
Qt5::WebSockets
|
||||
)
|
||||
|
||||
SET(SRCS
|
||||
logger.cpp
|
||||
logger.h
|
||||
main_dispatcher.cpp
|
||||
main_dispatcher.h
|
||||
plugin.cpp
|
||||
plugin.h
|
||||
|
||||
json_dispatcher.cpp
|
||||
json_dispatcher.h
|
||||
json_handler_rx.cpp
|
||||
json_handler_rx.h
|
||||
json_handler_tx.cpp
|
||||
json_handler_tx.h
|
||||
ppm_handler.cpp
|
||||
ppm_handler.h
|
||||
pdm_handler.cpp
|
||||
pdm_handler.h
|
||||
flm_handler.cpp
|
||||
flm_handler.h
|
||||
aes_handler.cpp
|
||||
aes_handler.h
|
||||
asm_handler.cpp
|
||||
asm_handler.h
|
||||
|
||||
ws_interface.h
|
||||
ws_handler.h
|
||||
ws_handler.cpp
|
||||
|
||||
saa_interface.h
|
||||
saa_interface.cpp
|
||||
|
||||
settings.cpp
|
||||
settings.h
|
||||
)
|
||||
NGL_ADD_LIBRARY(AAR SV tabPluginAdler MODULE ${SRCS})
|
||||
NGL_INSTALL_TARGET(tabPluginAdler)
|
||||
NGL_TARGET_LINK_LIBRARIES(tabPluginAdler
|
||||
PUBLIC
|
||||
svcTabServer
|
||||
NGLLogger
|
||||
nglsettings
|
||||
ngltools
|
||||
Qt5::Core
|
||||
Qt5::Network
|
||||
Qt5::WebSockets
|
||||
tabPluginInterface
|
||||
OpmDataPluginInterface
|
||||
tabTelegrams
|
||||
svcTabCommon
|
||||
svcTabServer
|
||||
svcPpmClient
|
||||
svcAsmClient
|
||||
svcPdmClient
|
||||
svcExmClient
|
||||
svcAesClient
|
||||
svcFlmClient
|
||||
svcCoreClient
|
||||
svcNomClient
|
||||
svcOpmClient
|
||||
ddsconnector
|
||||
LtsUtilsDds
|
||||
saaTelegrams
|
||||
Trajectory
|
||||
)
|
||||
|
||||
#
|
||||
# --- Tests --------------------------------------------------------------
|
||||
#
|
||||
IF(BUILD_TESTING)
|
||||
ADD_SUBDIRECTORY(ModuleTest)
|
||||
ENDIF()
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
c# UFOM HLA Plugin
|
||||
|
||||
This is a small documentation of the UFOM HLA TAB Plugin. This document will cover most of the behaviours of the different Telegrams that are supported.
|
||||
## Change Position
|
||||
This plugin publishes all changes in position from every Participant that is not external. A "MountActionRequest" will be sent out if an external participant mounts an internal participant ( vehicle ).
|
||||
- External Participant Mounts Internal Participant -> **MountActionRequest** will be sent.
|
||||
- External Participant Unmounts from internal participant -> **UnmountActionRequest** will be sent.
|
||||
- Mounted external participant mounts any internal participant -> **MountActionRequest** will be sent.
|
||||
> **Note:** No **UnmountActionRequest** will be sent in this case
|
||||
|
||||
- Mounted external participant mounts any external participant -> **Nothing** will be sent.
|
||||
|
||||
## JSON Telegrams
|
||||
### UFOMHLA_ADD_PARTICIPANT
|
||||
ID: 8100
|
||||
|
||||
### UFOMHLA_REMOVE_PARTICIPANT
|
||||
ID: 8101
|
||||
|
||||
### UFOMHLA_POSITION_CHANGED
|
||||
ID: 8102
|
||||
|
||||
#### Example:
|
||||
|
||||
{
|
||||
"typeId": 8102,
|
||||
"type": "UFomHlaPositionChanged",
|
||||
"data":{
|
||||
"header": {
|
||||
"equipmentNumber": 1234,
|
||||
"timeStamp": 12341234
|
||||
},
|
||||
"lon": 1.2341234,
|
||||
"lat": 1.2341234,
|
||||
"z": 0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
### UFOMHLA_VULNERABILITY_STATE_CHANGED
|
||||
ID: 8103
|
||||
|
||||
### UFOMHLA_LASER_DESIGNATION
|
||||
ID: 8104
|
||||
|
||||
### UFOMHLA_SEND_CHARGE_TYPES
|
||||
ID: 8105
|
||||
|
||||
### UFOMHLA_PARTICIPANT_MOUNT
|
||||
ID: 8106
|
||||
**mountedOn** : Equipment number of the participant to be mounted
|
||||
#### Example:
|
||||
|
||||
{
|
||||
"typeId": 8101,
|
||||
"type": "UFomHlaParticipantMount",
|
||||
"data":{
|
||||
"header": {
|
||||
"equipmentNumber": 1234,
|
||||
"timeStamp": 12341234
|
||||
},
|
||||
"mountedOn": 123,
|
||||
}
|
||||
}
|
||||
|
||||
### UFOMHLA_PARTICIPANT_UNMOUNT
|
||||
ID: 8107
|
||||
#### Example:
|
||||
|
||||
{
|
||||
"typeId": 8101,
|
||||
"type": "UFomHlaParticipantUnmount",
|
||||
"data":{
|
||||
"header": {
|
||||
"equipmentNumber": 1234,
|
||||
"timeStamp": 12341234
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"data": {
|
||||
"text": "Freier Text"
|
||||
},
|
||||
"reciver": "EXCON@GUEZ.DE",
|
||||
"referenceUuid": "",
|
||||
"sender": "SAA@GUEZ.DE",
|
||||
"timestamp": {
|
||||
"jahr": 2025,
|
||||
"minuten": 27,
|
||||
"monat": 5,
|
||||
"sekunden": 10,
|
||||
"stunden": 13,
|
||||
"tag": 16,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"type": "EX-AQ",
|
||||
"typeId": 5001,
|
||||
"uuid": "1f7bcdcf-083e-435f-88b3-6986dcada2b3",
|
||||
"version": ""
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"text": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text"
|
||||
]
|
||||
},
|
||||
"reciver": {
|
||||
"type": "string"
|
||||
},
|
||||
"referenceUuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"sender": {
|
||||
"type": "string"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"typeId": {
|
||||
"type": "integer"
|
||||
},
|
||||
"uuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"version": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"data",
|
||||
"reciver",
|
||||
"referenceUuid",
|
||||
"sender",
|
||||
"timestamp",
|
||||
"type",
|
||||
"typeId",
|
||||
"uuid",
|
||||
"version"
|
||||
]
|
||||
}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"data": {
|
||||
"feuerkommando": {
|
||||
"einheit": 5,
|
||||
"verein": "verein Erkundungsdaten"
|
||||
},
|
||||
"koordinate": {
|
||||
"hoehe": 55,
|
||||
"koordinate": {
|
||||
"latitude": 53.3779,
|
||||
"longitude": 8.758
|
||||
}
|
||||
},
|
||||
"stellungen": {
|
||||
"waffenplaetze": [
|
||||
{
|
||||
"hoehe": 56,
|
||||
"koordinate": {
|
||||
"latitude": 53.37791,
|
||||
"longitude": 8.759
|
||||
}
|
||||
},
|
||||
{
|
||||
"hoehe": 57,
|
||||
"koordinate": {
|
||||
"latitude": 53.37792,
|
||||
"longitude": 8.76
|
||||
}
|
||||
}
|
||||
],
|
||||
"wirkungsbereich": {
|
||||
"grundrichtung": 33,
|
||||
"links": 44,
|
||||
"rechts": 55
|
||||
}
|
||||
}
|
||||
},
|
||||
"reciver": "EXCON@GUEZ.DE",
|
||||
"referenceUuid": "",
|
||||
"sender": "SAA@GUEZ.DE",
|
||||
"timestamp": {
|
||||
"jahr": 2025,
|
||||
"minuten": 18,
|
||||
"monat": 5,
|
||||
"sekunden": 59,
|
||||
"stunden": 13,
|
||||
"tag": 16,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"type": "EX-Erkundungsergebnisse",
|
||||
"typeId": 5000,
|
||||
"uuid": "{f8abc4af-5e65-459d-bd49-89f533fdc900}",
|
||||
"version": ""
|
||||
}
|
||||
Executable
+191
@@ -0,0 +1,191 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"feuerkommando": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"einheit": {
|
||||
"type": "integer"
|
||||
},
|
||||
"verein": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"einheit",
|
||||
"verein"
|
||||
]
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hoehe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"hoehe",
|
||||
"koordinate"
|
||||
]
|
||||
},
|
||||
"stellungen": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"waffenplaetze": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hoehe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"hoehe",
|
||||
"koordinate"
|
||||
]
|
||||
}
|
||||
},
|
||||
"wirkungsbereich": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"grundrichtung": {
|
||||
"type": "integer"
|
||||
},
|
||||
"links": {
|
||||
"type": "integer"
|
||||
},
|
||||
"rechts": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"grundrichtung",
|
||||
"links",
|
||||
"rechts"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"waffenplaetze",
|
||||
"wirkungsbereich"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"feuerkommando",
|
||||
"koordinate",
|
||||
"stellungen"
|
||||
]
|
||||
},
|
||||
"reciver": {
|
||||
"type": "string"
|
||||
},
|
||||
"referenceUuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"sender": {
|
||||
"type": "string"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"typeId": {
|
||||
"type": "integer"
|
||||
},
|
||||
"uuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"version": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"data",
|
||||
"reciver",
|
||||
"referenceUuid",
|
||||
"sender",
|
||||
"timestamp",
|
||||
"type",
|
||||
"typeId",
|
||||
"uuid",
|
||||
"version"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"data": {
|
||||
"feuerkampf": "feuerHaltDaten",
|
||||
"kategorie": "FH_E",
|
||||
"koordinate": {
|
||||
"latitude": 53.37791,
|
||||
"longitude": 8.759
|
||||
},
|
||||
"radius": 50,
|
||||
"zpNummer": 5
|
||||
},
|
||||
"reciver": "EXCON@GUEZ.DE",
|
||||
"referenceUuid": "",
|
||||
"sender": "SAA@GUEZ.DE",
|
||||
"timestamp": {
|
||||
"jahr": 2025,
|
||||
"minuten": 18,
|
||||
"monat": 5,
|
||||
"sekunden": 6,
|
||||
"stunden": 13,
|
||||
"tag": 16,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"type": "EX-FH",
|
||||
"typeId": 1006,
|
||||
"uuid": "cafed47c-da39-4978-86aa-d126c9d78d8b",
|
||||
"version": ""
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"feuerkampf": {
|
||||
"type": "string"
|
||||
},
|
||||
"kategorie": {
|
||||
"type": "string"
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
},
|
||||
"radius": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zpNummer": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"feuerkampf",
|
||||
"kategorie",
|
||||
"koordinate",
|
||||
"radius",
|
||||
"zpNummer"
|
||||
]
|
||||
},
|
||||
"reciver": {
|
||||
"type": "string"
|
||||
},
|
||||
"referenceUuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"sender": {
|
||||
"type": "string"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"typeId": {
|
||||
"type": "integer"
|
||||
},
|
||||
"uuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"version": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"data",
|
||||
"reciver",
|
||||
"referenceUuid",
|
||||
"sender",
|
||||
"timestamp",
|
||||
"type",
|
||||
"typeId",
|
||||
"uuid",
|
||||
"version"
|
||||
]
|
||||
}
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
{
|
||||
"data": {
|
||||
"abfeuerungsArt": "A",
|
||||
"dauer": 30,
|
||||
"feuerkampfReferenz": "REF:48271",
|
||||
"feuerkommando": [
|
||||
{
|
||||
"verein": "AB7X",
|
||||
"wirkmittel": [
|
||||
{
|
||||
"auftreffpunkt": {
|
||||
"hoehe": 0,
|
||||
"koordinate": {
|
||||
"latitude": 53.37787,
|
||||
"longitude": 8.7573
|
||||
}
|
||||
},
|
||||
"flugbahnpunkt": [
|
||||
{
|
||||
"xRelativ": 200,
|
||||
"yRelativ": 77,
|
||||
"zRelativ": 300,
|
||||
"zeit": 17
|
||||
},
|
||||
{
|
||||
"xRelativ": 900,
|
||||
"yRelativ": 177,
|
||||
"zRelativ": 700,
|
||||
"zeit": 19
|
||||
}
|
||||
],
|
||||
"flugzeit": 15,
|
||||
"geschoss": {
|
||||
"anzahl": 1,
|
||||
"geschosssorte": "SprengDM121",
|
||||
"intervall": 1,
|
||||
"ladung": "M_DM72",
|
||||
"zuender": "Aufschlag_DM241",
|
||||
"zuenderFunktion": "AZoV",
|
||||
"zuenderZeit": 0
|
||||
},
|
||||
"gipfelhoehe": 377,
|
||||
"kenner": 0,
|
||||
"schussrichtung": 177,
|
||||
"streuung": {
|
||||
"peBurstDeflection": 0.7,
|
||||
"peBurstRange": 0.3,
|
||||
"peDeflection": 0.7,
|
||||
"peRange": 7.7
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"forderung": "VER",
|
||||
"zieldaten": {
|
||||
"breiteRadius": 25,
|
||||
"elemente": 1,
|
||||
"geometrie": "P",
|
||||
"koordinate": {
|
||||
"hoehe": 0,
|
||||
"koordinate": {
|
||||
"latitude": 53.37787,
|
||||
"longitude": 8.7573
|
||||
}
|
||||
},
|
||||
"nummer": 7,
|
||||
"relativKoordinate": {
|
||||
"hoehe": 5,
|
||||
"koordinate": {
|
||||
"latitude": 53.8,
|
||||
"longitude": 8.8
|
||||
}
|
||||
},
|
||||
"subTyp": "APERS",
|
||||
"tiefe": 26,
|
||||
"typ": "EX_L20_PERS",
|
||||
"zielachse": 17,
|
||||
"zog": 7
|
||||
}
|
||||
},
|
||||
"receiver": "EXCON@GUEZ.DE",
|
||||
"referenceUuid": "",
|
||||
"sender": "SAA@GUEZ.DE",
|
||||
"timestamp": {
|
||||
"jahr": 2025,
|
||||
"minuten": 14,
|
||||
"monat": 5,
|
||||
"sekunden": 29,
|
||||
"stunden": 13,
|
||||
"tag": 16,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"type": " EX-FQ(BA-BB-FK)",
|
||||
"typeId": 1000,
|
||||
"uuid": "878cda84-c72a-4d57-bb5c-22774856cb22",
|
||||
"version": ""
|
||||
}
|
||||
+361
@@ -0,0 +1,361 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"abfeuerungsArt": {
|
||||
"type": "string"
|
||||
},
|
||||
"dauer": {
|
||||
"type": "integer"
|
||||
},
|
||||
"feuerkampfReferenz": {
|
||||
"type": "string"
|
||||
},
|
||||
"feuerkommando": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"verein": {
|
||||
"type": "string"
|
||||
},
|
||||
"wirkmittel": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"auftreffpunkt": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hoehe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"hoehe",
|
||||
"koordinate"
|
||||
]
|
||||
},
|
||||
"flugbahnpunkt": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"xRelativ": {
|
||||
"type": "integer"
|
||||
},
|
||||
"yRelativ": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zRelativ": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zeit": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"xRelativ",
|
||||
"yRelativ",
|
||||
"zRelativ",
|
||||
"zeit"
|
||||
]
|
||||
}
|
||||
},
|
||||
"flugzeit": {
|
||||
"type": "integer"
|
||||
},
|
||||
"geschoss": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"anzahl": {
|
||||
"type": "integer"
|
||||
},
|
||||
"geschosssorte": {
|
||||
"type": "string"
|
||||
},
|
||||
"intervall": {
|
||||
"type": "integer"
|
||||
},
|
||||
"ladung": {
|
||||
"type": "string"
|
||||
},
|
||||
"zuender": {
|
||||
"type": "string"
|
||||
},
|
||||
"zuenderFunktion": {
|
||||
"type": "string"
|
||||
},
|
||||
"zuenderZeit": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"anzahl",
|
||||
"geschosssorte",
|
||||
"intervall",
|
||||
"ladung",
|
||||
"zuender",
|
||||
"zuenderFunktion",
|
||||
"zuenderZeit"
|
||||
]
|
||||
},
|
||||
"gipfelhoehe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"kenner": {
|
||||
"type": "integer"
|
||||
},
|
||||
"schussrichtung": {
|
||||
"type": "integer"
|
||||
},
|
||||
"streuung": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"peBurstDeflection": {
|
||||
"type": "number"
|
||||
},
|
||||
"peBurstRange": {
|
||||
"type": "number"
|
||||
},
|
||||
"peDeflection": {
|
||||
"type": "number"
|
||||
},
|
||||
"peRange": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"peBurstDeflection",
|
||||
"peBurstRange",
|
||||
"peDeflection",
|
||||
"peRange"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"auftreffpunkt",
|
||||
"flugbahnpunkt",
|
||||
"flugzeit",
|
||||
"geschoss",
|
||||
"gipfelhoehe",
|
||||
"kenner",
|
||||
"schussrichtung",
|
||||
"streuung"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"verein",
|
||||
"wirkmittel"
|
||||
]
|
||||
}
|
||||
},
|
||||
"forderung": {
|
||||
"type": "string"
|
||||
},
|
||||
"zieldaten": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"breiteRadius": {
|
||||
"type": "integer"
|
||||
},
|
||||
"elemente": {
|
||||
"type": "integer"
|
||||
},
|
||||
"geometrie": {
|
||||
"type": "string"
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hoehe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"hoehe",
|
||||
"koordinate"
|
||||
]
|
||||
},
|
||||
"nummer": {
|
||||
"type": "integer"
|
||||
},
|
||||
"relativKoordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hoehe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"hoehe",
|
||||
"koordinate"
|
||||
]
|
||||
},
|
||||
"subTyp": {
|
||||
"type": "string"
|
||||
},
|
||||
"tiefe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"typ": {
|
||||
"type": "string"
|
||||
},
|
||||
"zielachse": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zog": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"breiteRadius",
|
||||
"elemente",
|
||||
"geometrie",
|
||||
"koordinate",
|
||||
"nummer",
|
||||
"relativKoordinate",
|
||||
"subTyp",
|
||||
"tiefe",
|
||||
"typ",
|
||||
"zielachse",
|
||||
"zog"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"abfeuerungsArt",
|
||||
"dauer",
|
||||
"feuerkampfReferenz",
|
||||
"feuerkommando",
|
||||
"forderung",
|
||||
"zieldaten"
|
||||
]
|
||||
},
|
||||
"reciver": {
|
||||
"type": "string"
|
||||
},
|
||||
"referenceUuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"sender": {
|
||||
"type": "string"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"typeId": {
|
||||
"type": "integer"
|
||||
},
|
||||
"uuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"version": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"data",
|
||||
"reciver",
|
||||
"referenceUuid",
|
||||
"sender",
|
||||
"timestamp",
|
||||
"type",
|
||||
"typeId",
|
||||
"uuid",
|
||||
"version"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"data": {
|
||||
"feuerkampfReferenz": "feuerkampfReferenz 1",
|
||||
"kenner": "C1",
|
||||
"verein": "AB7X 1"
|
||||
},
|
||||
"reciver": "EXCON@GUEZ.DE",
|
||||
"referenceUuid": "",
|
||||
"sender": "SAA@GUEZ.DE",
|
||||
"timestamp": {
|
||||
"jahr": 2025,
|
||||
"minuten": 16,
|
||||
"monat": 5,
|
||||
"sekunden": 40,
|
||||
"stunden": 13,
|
||||
"tag": 16,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"type": "EX-FQ(FN)",
|
||||
"typeId": 1003,
|
||||
"uuid": "0a313781-4d47-44d1-824d-e83ea051f5f1",
|
||||
"version": ""
|
||||
}
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"feuerkampfReferenz": {
|
||||
"type": "string"
|
||||
},
|
||||
"kenner": {
|
||||
"type": "string"
|
||||
},
|
||||
"verein": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"feuerkampfReferenz",
|
||||
"kenner",
|
||||
"verein"
|
||||
]
|
||||
},
|
||||
"reciver": {
|
||||
"type": "string"
|
||||
},
|
||||
"referenceUuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"sender": {
|
||||
"type": "string"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"typeId": {
|
||||
"type": "integer"
|
||||
},
|
||||
"uuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"version": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"data",
|
||||
"reciver",
|
||||
"referenceUuid",
|
||||
"sender",
|
||||
"timestamp",
|
||||
"type",
|
||||
"typeId",
|
||||
"uuid",
|
||||
"version"
|
||||
]
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"data": {
|
||||
"geschoss": {
|
||||
"geschosssorte": "SprengDM121",
|
||||
"ladung": "M_DM72",
|
||||
"zuender": "Aufschlag_DM241",
|
||||
"zuenderFunktion": "AZoV"
|
||||
},
|
||||
"sprenghoehe": 33,
|
||||
"standort": {
|
||||
"hoehe": 55,
|
||||
"koordinate": {
|
||||
"latitude": 53.37787,
|
||||
"longitude": 8.7573
|
||||
}
|
||||
},
|
||||
"waffensystem": "MRS",
|
||||
"winkelgruppe": "Obere",
|
||||
"zielkoordinate": {
|
||||
"hoehe": 56,
|
||||
"koordinate": {
|
||||
"latitude": 53.37788,
|
||||
"longitude": 8.7574
|
||||
}
|
||||
}
|
||||
},
|
||||
"reciver": "EXCON@GUEZ.DE",
|
||||
"referenceUuid": "",
|
||||
"sender": "SAA@GUEZ.DE",
|
||||
"timestamp": {
|
||||
"jahr": 2025,
|
||||
"minuten": 23,
|
||||
"monat": 5,
|
||||
"sekunden": 6,
|
||||
"stunden": 13,
|
||||
"tag": 16,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"type": "EX-Flugbahnberechnung",
|
||||
"typeId": 4000,
|
||||
"uuid": "db2de888-d2bd-4778-bcbc-8dd345c35d18",
|
||||
"version": ""
|
||||
}
|
||||
+180
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"geschoss": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"geschosssorte": {
|
||||
"type": "string"
|
||||
},
|
||||
"ladung": {
|
||||
"type": "string"
|
||||
},
|
||||
"zuender": {
|
||||
"type": "string"
|
||||
},
|
||||
"zuenderFunktion": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"geschosssorte",
|
||||
"ladung",
|
||||
"zuender",
|
||||
"zuenderFunktion"
|
||||
]
|
||||
},
|
||||
"sprenghoehe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"standort": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hoehe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"hoehe",
|
||||
"koordinate"
|
||||
]
|
||||
},
|
||||
"waffensystem": {
|
||||
"type": "string"
|
||||
},
|
||||
"winkelgruppe": {
|
||||
"type": "string"
|
||||
},
|
||||
"zielkoordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hoehe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"hoehe",
|
||||
"koordinate"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"geschoss",
|
||||
"sprenghoehe",
|
||||
"standort",
|
||||
"waffensystem",
|
||||
"winkelgruppe",
|
||||
"zielkoordinate"
|
||||
]
|
||||
},
|
||||
"reciver": {
|
||||
"type": "string"
|
||||
},
|
||||
"referenceUuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"sender": {
|
||||
"type": "string"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"typeId": {
|
||||
"type": "integer"
|
||||
},
|
||||
"uuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"version": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"data",
|
||||
"reciver",
|
||||
"referenceUuid",
|
||||
"sender",
|
||||
"timestamp",
|
||||
"type",
|
||||
"typeId",
|
||||
"uuid",
|
||||
"version"
|
||||
]
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"data": {
|
||||
"fallwinkel": 55,
|
||||
"fehlercode": "MaximaleEntfernung",
|
||||
"flugbahnpunkt": [
|
||||
{
|
||||
"xRelativ": 2.2,
|
||||
"yRelativ": 3.3,
|
||||
"zRelativ": 4.4,
|
||||
"zeit": 1.1
|
||||
},
|
||||
{
|
||||
"xRelativ": 2.3,
|
||||
"yRelativ": 3.4,
|
||||
"zRelativ": 4.5,
|
||||
"zeit": 1.2
|
||||
}
|
||||
],
|
||||
"flugzeit": 300,
|
||||
"geschoss": {
|
||||
"geschosssorte": "SprengDM121",
|
||||
"ladung": "M_DM72",
|
||||
"ladungsNummer": 5,
|
||||
"zuender": "Aufschlag_DM241",
|
||||
"zuenderFunktion": "AZoV",
|
||||
"zuenderZeit": 1000
|
||||
},
|
||||
"gipfelhoehe": 200,
|
||||
"schussrichtung": 45,
|
||||
"streuung": {
|
||||
"peBurstDeflection": 5.5,
|
||||
"peBurstRange": 4.4,
|
||||
"peDeflection": 3.3,
|
||||
"peRange": 2.2
|
||||
},
|
||||
"typ": "MRS",
|
||||
"zielkoordinate": {
|
||||
"hoehe": 56,
|
||||
"koordinate": {
|
||||
"latitude": 53.37788,
|
||||
"longitude": 8.7574
|
||||
}
|
||||
}
|
||||
},
|
||||
"reciver": "EXCON@GUEZ.DE",
|
||||
"referenceUuid": "",
|
||||
"sender": "SAA@GUEZ.DE",
|
||||
"timestamp": {
|
||||
"jahr": 2025,
|
||||
"minuten": 23,
|
||||
"monat": 5,
|
||||
"sekunden": 48,
|
||||
"stunden": 13,
|
||||
"tag": 16,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"type": "EX-Flugbahndaten",
|
||||
"typeId": 4001,
|
||||
"uuid": "{8325a2ee-03fc-4d02-8b35-f6f89f574ca2}",
|
||||
"version": ""
|
||||
}
|
||||
+223
@@ -0,0 +1,223 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"fallwinkel": {
|
||||
"type": "integer"
|
||||
},
|
||||
"fehlercode": {
|
||||
"type": "string"
|
||||
},
|
||||
"flugbahnpunkt": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"xRelativ": {
|
||||
"type": "number"
|
||||
},
|
||||
"yRelativ": {
|
||||
"type": "number"
|
||||
},
|
||||
"zRelativ": {
|
||||
"type": "number"
|
||||
},
|
||||
"zeit": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"xRelativ",
|
||||
"yRelativ",
|
||||
"zRelativ",
|
||||
"zeit"
|
||||
]
|
||||
}
|
||||
},
|
||||
"flugzeit": {
|
||||
"type": "integer"
|
||||
},
|
||||
"geschoss": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"geschosssorte": {
|
||||
"type": "string"
|
||||
},
|
||||
"ladung": {
|
||||
"type": "string"
|
||||
},
|
||||
"ladungsNummer": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zuender": {
|
||||
"type": "string"
|
||||
},
|
||||
"zuenderFunktion": {
|
||||
"type": "string"
|
||||
},
|
||||
"zuenderZeit": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"geschosssorte",
|
||||
"ladung",
|
||||
"ladungsNummer",
|
||||
"zuender",
|
||||
"zuenderFunktion",
|
||||
"zuenderZeit"
|
||||
]
|
||||
},
|
||||
"gipfelhoehe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"schussrichtung": {
|
||||
"type": "integer"
|
||||
},
|
||||
"streuung": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"peBurstDeflection": {
|
||||
"type": "number"
|
||||
},
|
||||
"peBurstRange": {
|
||||
"type": "number"
|
||||
},
|
||||
"peDeflection": {
|
||||
"type": "number"
|
||||
},
|
||||
"peRange": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"peBurstDeflection",
|
||||
"peBurstRange",
|
||||
"peDeflection",
|
||||
"peRange"
|
||||
]
|
||||
},
|
||||
"typ": {
|
||||
"type": "string"
|
||||
},
|
||||
"zielkoordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hoehe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"hoehe",
|
||||
"koordinate"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"fallwinkel",
|
||||
"fehlercode",
|
||||
"flugbahnpunkt",
|
||||
"flugzeit",
|
||||
"geschoss",
|
||||
"gipfelhoehe",
|
||||
"schussrichtung",
|
||||
"streuung",
|
||||
"typ",
|
||||
"zielkoordinate"
|
||||
]
|
||||
},
|
||||
"reciver": {
|
||||
"type": "string"
|
||||
},
|
||||
"referenceUuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"sender": {
|
||||
"type": "string"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"typeId": {
|
||||
"type": "integer"
|
||||
},
|
||||
"uuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"version": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"data",
|
||||
"reciver",
|
||||
"referenceUuid",
|
||||
"sender",
|
||||
"timestamp",
|
||||
"type",
|
||||
"typeId",
|
||||
"uuid",
|
||||
"version"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"data": {
|
||||
"ab": {
|
||||
"jahr": 2025,
|
||||
"minuten": 35,
|
||||
"monat": 11,
|
||||
"sekunden": 55,
|
||||
"stunden": 5,
|
||||
"tag": 12,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"art": "AO",
|
||||
"bis": {
|
||||
"jahr": 2025,
|
||||
"minuten": 35,
|
||||
"monat": 11,
|
||||
"sekunden": 55,
|
||||
"stunden": 5,
|
||||
"tag": 13,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"koordinaten": [
|
||||
{
|
||||
"latitude": 53.37792,
|
||||
"longitude": 8.76
|
||||
},
|
||||
{
|
||||
"latitude": 53.37793,
|
||||
"longitude": 8.761
|
||||
}
|
||||
],
|
||||
"linkerNachbar": "linker Nachbar",
|
||||
"name": "Name EX-HQ(G) Führungslinien und Grenzen",
|
||||
"rechterNachbar": "rechter Nachbar"
|
||||
},
|
||||
"reciver": "EXCON@GUEZ.LIVE",
|
||||
"referenceUuid": "",
|
||||
"sender": "SAA1@GUEZ.LIVE",
|
||||
"timestamp": {
|
||||
"jahr": 2025,
|
||||
"minuten": 22,
|
||||
"monat": 5,
|
||||
"sekunden": 1,
|
||||
"stunden": 13,
|
||||
"tag": 16,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"type": "EX-HQ(G)",
|
||||
"typeId": 3001,
|
||||
"uuid": "{8d3aff1f-78ec-4059-bfa0-4b059119e8fa}",
|
||||
"version": ""
|
||||
}
|
||||
@@ -0,0 +1,211 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"ab": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"art": {
|
||||
"type": "string"
|
||||
},
|
||||
"bis": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"koordinaten": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
}
|
||||
},
|
||||
"linkerNachbar": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"rechterNachbar": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"ab",
|
||||
"art",
|
||||
"bis",
|
||||
"koordinaten",
|
||||
"linkerNachbar",
|
||||
"name",
|
||||
"rechterNachbar"
|
||||
]
|
||||
},
|
||||
"reciver": {
|
||||
"type": "string"
|
||||
},
|
||||
"referenceUuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"sender": {
|
||||
"type": "string"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"typeId": {
|
||||
"type": "integer"
|
||||
},
|
||||
"uuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"version": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"data",
|
||||
"reciver",
|
||||
"referenceUuid",
|
||||
"sender",
|
||||
"timestamp",
|
||||
"type",
|
||||
"typeId",
|
||||
"uuid",
|
||||
"version"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"data": {
|
||||
"ab": {
|
||||
"jahr": 2025,
|
||||
"minuten": 35,
|
||||
"monat": 11,
|
||||
"sekunden": 55,
|
||||
"stunden": 5,
|
||||
"tag": 12,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"art": "NFA",
|
||||
"bis": {
|
||||
"jahr": 2025,
|
||||
"minuten": 35,
|
||||
"monat": 11,
|
||||
"sekunden": 55,
|
||||
"stunden": 5,
|
||||
"tag": 13,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"koordinaten": [
|
||||
{
|
||||
"latitude": 53.37792,
|
||||
"longitude": 8.76
|
||||
},
|
||||
{
|
||||
"latitude": 53.37793,
|
||||
"longitude": 8.761
|
||||
}
|
||||
],
|
||||
"maxGipfel": 123,
|
||||
"mittelpunkt": {
|
||||
"latitude": 53.37794,
|
||||
"longitude": 8.762
|
||||
},
|
||||
"name": "Name ExHqKoordinierungsmassnahme",
|
||||
"radius": 66,
|
||||
"truppenteil": "Truppenteil ExHqKoordinierungsmassnahme"
|
||||
},
|
||||
"reciver": "EXCON@GUEZ.DE",
|
||||
"referenceUuid": "",
|
||||
"sender": "SAA@GUEZ.DE",
|
||||
"timestamp": {
|
||||
"jahr": 2025,
|
||||
"minuten": 19,
|
||||
"monat": 5,
|
||||
"sekunden": 35,
|
||||
"stunden": 13,
|
||||
"tag": 16,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"type": "EX-HQ(K)",
|
||||
"typeId": 20,
|
||||
"uuid": "{55cff8e6-2e85-4b92-971f-87ca7afbd214}",
|
||||
"version": ""
|
||||
}
|
||||
@@ -0,0 +1,231 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"ab": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"art": {
|
||||
"type": "string"
|
||||
},
|
||||
"bis": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"koordinaten": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
}
|
||||
},
|
||||
"maxGipfel": {
|
||||
"type": "integer"
|
||||
},
|
||||
"mittelpunkt": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"radius": {
|
||||
"type": "integer"
|
||||
},
|
||||
"truppenteil": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"ab",
|
||||
"art",
|
||||
"bis",
|
||||
"koordinaten",
|
||||
"maxGipfel",
|
||||
"mittelpunkt",
|
||||
"name",
|
||||
"radius",
|
||||
"truppenteil"
|
||||
]
|
||||
},
|
||||
"reciver": {
|
||||
"type": "string"
|
||||
},
|
||||
"referenceUuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"sender": {
|
||||
"type": "string"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"typeId": {
|
||||
"type": "integer"
|
||||
},
|
||||
"uuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"version": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"data",
|
||||
"reciver",
|
||||
"referenceUuid",
|
||||
"sender",
|
||||
"timestamp",
|
||||
"type",
|
||||
"typeId",
|
||||
"uuid",
|
||||
"version"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"data": {
|
||||
"einheit": {
|
||||
"oi": "F3",
|
||||
"r": 5,
|
||||
"verein": "verein ExFeuerstellungFS"
|
||||
},
|
||||
"geschosse": [
|
||||
{
|
||||
"anzahl": 6,
|
||||
"geschosssorte": "MineDM72",
|
||||
"ladung": "X_DM82",
|
||||
"zuender": "Doppel_DM183"
|
||||
},
|
||||
{
|
||||
"anzahl": 7,
|
||||
"geschosssorte": "LeuchtDM116",
|
||||
"ladung": "B_L8A1",
|
||||
"zuender": "Aufschlag_BB_DM371"
|
||||
}
|
||||
],
|
||||
"koordinaten": [
|
||||
{
|
||||
"hoehe": 22,
|
||||
"koordinate": {
|
||||
"latitude": 53.37792,
|
||||
"longitude": 8.76
|
||||
}
|
||||
},
|
||||
{
|
||||
"hoehe": 23,
|
||||
"koordinate": {
|
||||
"latitude": 53.37793,
|
||||
"longitude": 8.761
|
||||
}
|
||||
}
|
||||
],
|
||||
"mittelpunkt": {
|
||||
"hoehe": 20,
|
||||
"koordinate": {
|
||||
"latitude": 53.37791,
|
||||
"longitude": 8.759
|
||||
}
|
||||
},
|
||||
"status": "Einsatzbereit",
|
||||
"typ": "MRS",
|
||||
"wirkungsbereich": {
|
||||
"grundrichtung": 935138399,
|
||||
"links": 32765,
|
||||
"rechts": 1788424448
|
||||
}
|
||||
},
|
||||
"reciver": "EXCON@GUEZ.DE",
|
||||
"referenceUuid": "",
|
||||
"sender": "SAA@GUEZ.DE",
|
||||
"timestamp": {
|
||||
"jahr": 2025,
|
||||
"minuten": 24,
|
||||
"monat": 5,
|
||||
"sekunden": 30,
|
||||
"stunden": 13,
|
||||
"tag": 16,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"type": "EX-SQ(FS)",
|
||||
"typeId": 2000,
|
||||
"uuid": "823c5ad1-9542-4bdc-83a5-e342bed3c3a7",
|
||||
"version": ""
|
||||
}
|
||||
+222
@@ -0,0 +1,222 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"einheit": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"oi": {
|
||||
"type": "string"
|
||||
},
|
||||
"r": {
|
||||
"type": "integer"
|
||||
},
|
||||
"verein": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"oi",
|
||||
"r",
|
||||
"verein"
|
||||
]
|
||||
},
|
||||
"geschosse": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"anzahl": {
|
||||
"type": "integer"
|
||||
},
|
||||
"geschosssorte": {
|
||||
"type": "string"
|
||||
},
|
||||
"ladung": {
|
||||
"type": "string"
|
||||
},
|
||||
"zuender": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"anzahl",
|
||||
"geschosssorte",
|
||||
"ladung",
|
||||
"zuender"
|
||||
]
|
||||
}
|
||||
},
|
||||
"koordinaten": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hoehe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"hoehe",
|
||||
"koordinate"
|
||||
]
|
||||
}
|
||||
},
|
||||
"mittelpunkt": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hoehe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"hoehe",
|
||||
"koordinate"
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"type": "string"
|
||||
},
|
||||
"typ": {
|
||||
"type": "string"
|
||||
},
|
||||
"wirkungsbereich": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"grundrichtung": {
|
||||
"type": "integer"
|
||||
},
|
||||
"links": {
|
||||
"type": "integer"
|
||||
},
|
||||
"rechts": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"grundrichtung",
|
||||
"links",
|
||||
"rechts"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"einheit",
|
||||
"geschosse",
|
||||
"koordinaten",
|
||||
"mittelpunkt",
|
||||
"status",
|
||||
"typ",
|
||||
"wirkungsbereich"
|
||||
]
|
||||
},
|
||||
"reciver": {
|
||||
"type": "string"
|
||||
},
|
||||
"referenceUuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"sender": {
|
||||
"type": "string"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"typeId": {
|
||||
"type": "integer"
|
||||
},
|
||||
"uuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"version": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"data",
|
||||
"reciver",
|
||||
"referenceUuid",
|
||||
"sender",
|
||||
"timestamp",
|
||||
"type",
|
||||
"typeId",
|
||||
"uuid",
|
||||
"version"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"data": {
|
||||
"geschosse": [
|
||||
{
|
||||
"anzahl": 6,
|
||||
"geschosssorte": "MineDM72",
|
||||
"ladung": "X_DM82",
|
||||
"zuender": "Doppel_DM183"
|
||||
},
|
||||
{
|
||||
"anzahl": 7,
|
||||
"geschosssorte": "LeuchtDM116",
|
||||
"ladung": "B_L8A1",
|
||||
"zuender": "Aufschlag_BB_DM371"
|
||||
}
|
||||
],
|
||||
"koordinate": {
|
||||
"hoehe": 20,
|
||||
"koordinate": {
|
||||
"latitude": 53.37791,
|
||||
"longitude": 8.759
|
||||
}
|
||||
},
|
||||
"typ": "EX_L20_ASSY"
|
||||
},
|
||||
"reciver": "EXCON@GUEZ.DE",
|
||||
"referenceUuid": "",
|
||||
"sender": "SAA@GUEZ.DE",
|
||||
"timestamp": {
|
||||
"jahr": 2025,
|
||||
"minuten": 26,
|
||||
"monat": 5,
|
||||
"sekunden": 1,
|
||||
"stunden": 13,
|
||||
"tag": 16,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"type": "EX-SQ(LP)",
|
||||
"typeId": 2002,
|
||||
"uuid": "{b1969847-e672-4157-ac08-82fdecd52fa3}",
|
||||
"version": ""
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"data": {
|
||||
"einheit": {
|
||||
"oi": "F6",
|
||||
"r": 6,
|
||||
"verein": "verein ExFeuerstellungWS"
|
||||
},
|
||||
"geschosse": [
|
||||
{
|
||||
"anzahl": 6,
|
||||
"geschosssorte": "MineDM72",
|
||||
"ladung": "X_DM82",
|
||||
"zuender": "Doppel_DM183"
|
||||
},
|
||||
{
|
||||
"anzahl": 7,
|
||||
"geschosssorte": "LeuchtDM116",
|
||||
"ladung": "B_L8A1",
|
||||
"zuender": "Aufschlag_BB_DM371"
|
||||
}
|
||||
],
|
||||
"kenner": "B1",
|
||||
"koordinate": {
|
||||
"hoehe": 20,
|
||||
"koordinate": {
|
||||
"latitude": 53.088354,
|
||||
"longitude": 8.853092
|
||||
}
|
||||
},
|
||||
"status": "Nicht einsatzbereit",
|
||||
"typ": "MRS",
|
||||
"wirkungsbereich": {
|
||||
"grundrichtung": 1,
|
||||
"links": 2,
|
||||
"rechts": 3
|
||||
}
|
||||
},
|
||||
"reciver": "EXCON@GUEZ.LIVE",
|
||||
"referenceUuid": "",
|
||||
"sender": "SAA1@GUEZ.LIVE",
|
||||
"timestamp": {
|
||||
"jahr": 2025,
|
||||
"minuten": 25,
|
||||
"monat": 5,
|
||||
"sekunden": 12,
|
||||
"stunden": 13,
|
||||
"tag": 16,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"type": "EX-SQ(WS)",
|
||||
"typeId": 2001,
|
||||
"uuid": "{caa9482a-2d1f-4893-b569-fae3d3e3f3cf}",
|
||||
"version": ""
|
||||
}
|
||||
+195
@@ -0,0 +1,195 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"einheit": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"oi": {
|
||||
"type": "string"
|
||||
},
|
||||
"r": {
|
||||
"type": "integer"
|
||||
},
|
||||
"verein": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"oi",
|
||||
"r",
|
||||
"verein"
|
||||
]
|
||||
},
|
||||
"geschosse": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"anzahl": {
|
||||
"type": "integer"
|
||||
},
|
||||
"geschosssorte": {
|
||||
"type": "string"
|
||||
},
|
||||
"ladung": {
|
||||
"type": "string"
|
||||
},
|
||||
"zuender": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"anzahl",
|
||||
"geschosssorte",
|
||||
"ladung",
|
||||
"zuender"
|
||||
]
|
||||
}
|
||||
},
|
||||
"kenner": {
|
||||
"type": "string"
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hoehe": {
|
||||
"type": "integer"
|
||||
},
|
||||
"koordinate": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"latitude": {
|
||||
"type": "number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"hoehe",
|
||||
"koordinate"
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"type": "string"
|
||||
},
|
||||
"typ": {
|
||||
"type": "string"
|
||||
},
|
||||
"wirkungsbereich": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"grundrichtung": {
|
||||
"type": "integer"
|
||||
},
|
||||
"links": {
|
||||
"type": "integer"
|
||||
},
|
||||
"rechts": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"grundrichtung",
|
||||
"links",
|
||||
"rechts"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"einheit",
|
||||
"geschosse",
|
||||
"kenner",
|
||||
"koordinate",
|
||||
"status",
|
||||
"typ",
|
||||
"wirkungsbereich"
|
||||
]
|
||||
},
|
||||
"reciver": {
|
||||
"type": "string"
|
||||
},
|
||||
"referenceUuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"sender": {
|
||||
"type": "string"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"typeId": {
|
||||
"type": "integer"
|
||||
},
|
||||
"uuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"version": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"data",
|
||||
"reciver",
|
||||
"referenceUuid",
|
||||
"sender",
|
||||
"timestamp",
|
||||
"type",
|
||||
"typeId",
|
||||
"uuid",
|
||||
"version"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"data": {
|
||||
"status": "Geplant"
|
||||
},
|
||||
"reciver": "EXCON@GUEZ.DE",
|
||||
"referenceUuid": "",
|
||||
"sender": "SAA@GUEZ.DE",
|
||||
"timestamp": {
|
||||
"jahr": 2025,
|
||||
"minuten": 12,
|
||||
"monat": 5,
|
||||
"sekunden": 43,
|
||||
"stunden": 13,
|
||||
"tag": 16,
|
||||
"zdm": "ZDM",
|
||||
"zds": "ZDS",
|
||||
"zvz": "ZVz"
|
||||
},
|
||||
"type": "EX-Status",
|
||||
"typeId": 6010,
|
||||
"uuid": "9c70c8c0-ddc8-4d6f-8385-379faa55d076",
|
||||
"version": ""
|
||||
}
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"status": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"status"
|
||||
]
|
||||
},
|
||||
"reciver": {
|
||||
"type": "string"
|
||||
},
|
||||
"referenceUuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"sender": {
|
||||
"type": "string"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jahr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minuten": {
|
||||
"type": "integer"
|
||||
},
|
||||
"monat": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sekunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"stunden": {
|
||||
"type": "integer"
|
||||
},
|
||||
"tag": {
|
||||
"type": "integer"
|
||||
},
|
||||
"zdm": {
|
||||
"type": "string"
|
||||
},
|
||||
"zds": {
|
||||
"type": "string"
|
||||
},
|
||||
"zvz": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"jahr",
|
||||
"minuten",
|
||||
"monat",
|
||||
"sekunden",
|
||||
"stunden",
|
||||
"tag",
|
||||
"zdm",
|
||||
"zds",
|
||||
"zvz"
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"typeId": {
|
||||
"type": "integer"
|
||||
},
|
||||
"uuid": {
|
||||
"type": "string"
|
||||
},
|
||||
"version": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"data",
|
||||
"reciver",
|
||||
"referenceUuid",
|
||||
"sender",
|
||||
"timestamp",
|
||||
"type",
|
||||
"typeId",
|
||||
"uuid",
|
||||
"version"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
---------------------------------------
|
||||
--- JSON SCHEMA erzeugen:
|
||||
---------------------------------------
|
||||
pip install genson
|
||||
Defaulting to user installation because normal site-packages is not writeable
|
||||
Collecting genson
|
||||
Downloading genson-1.3.0-py3-none-any.whl (21 kB)
|
||||
Installing collected packages: genson
|
||||
WARNING: The script genson is installed in '/home/ctc/.local/bin' which is not on PATH.
|
||||
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
|
||||
Successfully installed genson-1.3.0
|
||||
---------
|
||||
Aufruf:
|
||||
|
||||
genson Wirkfeldplanung.json > Wirkfeldplanung.schema
|
||||
jq . Wirkfeldplanung.schema > Wirkfeldplanung.schema_formatiert
|
||||
|
||||
genson Wirkfeldplanung.json | jq . > Wirkfeldplanung.schema
|
||||
|
||||
|
||||
genson EX-AQ.json | jq . > EX-AQ.struct
|
||||
genson EX-FH.json | jq . > EX-FH.stuct
|
||||
genson EX-Flugbahndaten.json | jq . > EX-Flugbahndaten.struct
|
||||
genson EX-FQ-FN.json | jq . > EX-FQ-FN.struct
|
||||
genson EX-HQ-K.json | jq . > EX-HQ-K.struct
|
||||
genson EX-SQ-WS.json | jq . > EX-SQ-WS.struct
|
||||
genson EX-Erkundungsergebnisse.json | jq . > EX-Erkundungsergebnisse.struct
|
||||
genson EX-Flugbahnberechnung.json | jq . > EX-Flugbahnberechnung.struct
|
||||
genson EX-FQ-BA-BB-FK.json | jq . > EX-FQ-BA-BB-FK.struct
|
||||
genson EX-HQ-G.json | jq . > EX-HQ-G.struct
|
||||
genson EX-SQ-FS.json | jq . > EX-SQ-FS.struct
|
||||
genson EX-Status.json | jq . > EX-Status.struct
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
pip install jsonschema
|
||||
|
||||
python3 -m jsonschema -i EX-Erkundungsergebnisse.json EX-Erkundungsergebnisse.struct
|
||||
+530
@@ -0,0 +1,530 @@
|
||||
********* Start testing of TestExAnmeldung *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExAnmeldung::initTestCase()
|
||||
QDEBUG : TestExAnmeldung::testExAnmeldung() ----------------------
|
||||
QDEBUG : TestExAnmeldung::testExAnmeldung() --- EX-Anmeldung ---
|
||||
QSYSTEM: TestExAnmeldung::testExAnmeldung() toJsonInternal
|
||||
QSYSTEM: TestExAnmeldung::testExAnmeldung() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExAnmeldung::testExAnmeldung() anmeldedatenfromJson
|
||||
PASS : TestExAnmeldung::testExAnmeldung()
|
||||
PASS : TestExAnmeldung::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 11ms
|
||||
********* Finished testing of TestExAnmeldung *********
|
||||
********* Start testing of TestExAbmeldung *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExAbmeldung::initTestCase()
|
||||
QDEBUG : TestExAbmeldung::testExAbmeldung() ----------------------
|
||||
QDEBUG : TestExAbmeldung::testExAbmeldung() --- EX-Abmeldung ---
|
||||
QSYSTEM: TestExAbmeldung::testExAbmeldung() EXDeregistration::toJsonInternal partyId= 2
|
||||
QSYSTEM: TestExAbmeldung::testExAbmeldung() toJsonInternal
|
||||
QSYSTEM: TestExAbmeldung::testExAbmeldung() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExAbmeldung::testExAbmeldung() abmeldedatenfromJson
|
||||
PASS : TestExAbmeldung::testExAbmeldung()
|
||||
PASS : TestExAbmeldung::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 4ms
|
||||
********* Finished testing of TestExAbmeldung *********
|
||||
********* Start testing of TestExAnmeldebestaetigung *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExAnmeldebestaetigung::initTestCase()
|
||||
QDEBUG : TestExAnmeldebestaetigung::testExAnmeldebestaetuigung() --------------------------------
|
||||
QDEBUG : TestExAnmeldebestaetigung::testExAnmeldebestaetuigung() --- EX-Anmeldebestaetigung ---
|
||||
QDEBUG : TestExAnmeldebestaetigung::testExAnmeldebestaetuigung() In SKD kein data enthalten
|
||||
QSYSTEM: TestExAnmeldebestaetigung::testExAnmeldebestaetuigung() toJsonInternal
|
||||
QSYSTEM: TestExAnmeldebestaetigung::testExAnmeldebestaetuigung() zeitangabe_DTGToJson Stunden= 13
|
||||
PASS : TestExAnmeldebestaetigung::testExAnmeldebestaetuigung()
|
||||
PASS : TestExAnmeldebestaetigung::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 4ms
|
||||
********* Finished testing of TestExAnmeldebestaetigung *********
|
||||
********* Start testing of TestExFqWirkfeldplanung *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExFqWirkfeldplanung::initTestCase()
|
||||
QDEBUG : TestExFqWirkfeldplanung::testExFqWirkfeldplanung() ---------------------------------------
|
||||
QDEBUG : TestExFqWirkfeldplanung::testExFqWirkfeldplanung() --- EX-FQ(BA-BB-FK) Wirkfeldplanung ---
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() toJsonInternal
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() zieldatenToJson
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinateToJson longitude= 8.7573 latitude= 53.3779
|
||||
QDEBUG : TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinateMitHoeheToJson hoehe= 0
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinateToJson longitude= 8.8 latitude= 53.8
|
||||
QDEBUG : TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinateMitHoeheToJson hoehe= 5
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() zieldatenToJson = "{\n \"breiteRadius\": 25,\n \"elemente\": 1,\n \"geometrie\": \"P\",\n \"koordinate\": {\n \"hoehe\": 0,\n \"koordinate\": {\n \"latitude\": 53.37787,\n \"longitude\": 8.7573\n }\n },\n \"nummer\": 7,\n \"relativKoordinate\": {\n \"hoehe\": 5,\n \"koordinate\": {\n \"latitude\": 53.8,\n \"longitude\": 8.8\n }\n },\n \"subTyp\": \"APERS\",\n \"tiefe\": 26,\n \"typ\": \"EX_L20_PERS\",\n \"zielachse\": 17,\n \"zog\": 7\n}\n"
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinateToJson longitude= 8.7573 latitude= 53.3779
|
||||
QDEBUG : TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinateMitHoeheToJson hoehe= 0
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() wirkfeldplanungDataFromJson
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() wirkfeldplanungData.feuerkampfReferenz= "REF:2078669041"
|
||||
QDEBUG : TestExFqWirkfeldplanung::testExFqWirkfeldplanung() feuerkommandoArray.size()= 1
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() feuerkommandoFromJson
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() feuerkommando.verein = "AB7X"
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() wirkmittelFeuerkommandoFromJson
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinatefromJson
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinatefromJson longitude= 8.7573 latitude= 53.3779
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinateMitHoeheFromJson hoehe= 0
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() feuerkommandoGeschosseFromJson
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() flugbahnpunkteFromJson
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() flugbahnpunktFromJson
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() flugbahnpunktFromJson zeit= 17 punkt= 200 / 77 / 300
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() flugbahnpunktFromJson
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() flugbahnpunktFromJson zeit= 19 punkt= 900 / 177 / 700
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() streuungsdatenfromJson peDeflection= 0.7 peBurstRange= 0.3 peBurstDeflection= 0.7
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() wirkmittel
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinatefromJson
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinatefromJson longitude= 8.7573 latitude= 53.3779
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinateMitHoeheFromJson hoehe= 0
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinatefromJson
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinatefromJson longitude= 8.8 latitude= 53.8
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() koordinateMitHoeheFromJson hoehe= 5
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() zieldatenfromJson nummer= 7
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() wirkfeldplanungData.abfeuerungsArt= 0
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() wirkfeldplanungData.forderung= 8
|
||||
QSYSTEM: TestExFqWirkfeldplanung::testExFqWirkfeldplanung() wirkfeldplanungData.dauer= 30
|
||||
QDEBUG : TestExFqWirkfeldplanung::testExFqWirkfeldplanung() --- Begin compareZieldaten EX-L12 ---
|
||||
QDEBUG : TestExFqWirkfeldplanung::testExFqWirkfeldplanung() --- koordinate ---
|
||||
QDEBUG : TestExFqWirkfeldplanung::testExFqWirkfeldplanung() --- relativKoordinate ---
|
||||
QDEBUG : TestExFqWirkfeldplanung::testExFqWirkfeldplanung() --- End compareZieldaten EX-L12 ---
|
||||
QDEBUG : TestExFqWirkfeldplanung::testExFqWirkfeldplanung() --- Feuerkommandos: ---
|
||||
PASS : TestExFqWirkfeldplanung::testExFqWirkfeldplanung()
|
||||
PASS : TestExFqWirkfeldplanung::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 18ms
|
||||
********* Finished testing of TestExFqWirkfeldplanung *********
|
||||
********* Start testing of TestExMqManuelleQuittung *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExMqManuelleQuittung::initTestCase()
|
||||
QDEBUG : TestExMqManuelleQuittung::testExMqManuelleQuittung() -------------------------------
|
||||
QDEBUG : TestExMqManuelleQuittung::testExMqManuelleQuittung() --- EX-MQ Manuelle Quittung ---
|
||||
QSYSTEM: TestExMqManuelleQuittung::testExMqManuelleQuittung() toJsonInternal
|
||||
QSYSTEM: TestExMqManuelleQuittung::testExMqManuelleQuittung() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExMqManuelleQuittung::testExMqManuelleQuittung() mqManuelleQuittungDatenToJson
|
||||
QDEBUG : TestExMqManuelleQuittung::testExMqManuelleQuittung() EX-MQ Manuelle Quittung= "{\n \"data\": {\n \"text\": \"Manuelle Quittung\"\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-MQ\",\n \"typeId\": 1001,\n \"uuid\": \"{4c3f3a79-adfa-440b-927f-7b3b9822e8d3}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExMqManuelleQuittung::testExMqManuelleQuittung() mqManuelleQuittungDatenFromJson
|
||||
PASS : TestExMqManuelleQuittung::testExMqManuelleQuittung()
|
||||
PASS : TestExMqManuelleQuittung::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 3ms
|
||||
********* Finished testing of TestExMqManuelleQuittung *********
|
||||
********* Start testing of TestExFqFeuerbereit *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExFqFeuerbereit::initTestCase()
|
||||
QDEBUG : TestExFqFeuerbereit::testExFqFeuerbereit() ---------------------------------------
|
||||
QDEBUG : TestExFqFeuerbereit::testExFqFeuerbereit() --- EX-FQ(FB) Feuerbereit ---
|
||||
QSYSTEM: TestExFqFeuerbereit::testExFqFeuerbereit() toJsonInternal
|
||||
QSYSTEM: TestExFqFeuerbereit::testExFqFeuerbereit() zeitangabe_DTGToJson Stunden= 13
|
||||
QDEBUG : TestExFqFeuerbereit::testExFqFeuerbereit() feuerbereitMessage= "{\n \"data\": {\n \"feuerkampfReferenz\": \"feuerkampfReferenz 1\",\n \"kenner\": \"C1\",\n \"verein\": \"AB7X 1\"\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-FQ(FB)\",\n \"typeId\": 1002,\n \"uuid\": \"{af2effb4-e526-4738-aeb6-d8dc47995ce0}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExFqFeuerbereit::testExFqFeuerbereit() feuerkampfdatenFromJson feuerkampfReferenz= "feuerkampfReferenz 1" verein= "AB7X 1" kenner= 34 ' "C1" '
|
||||
PASS : TestExFqFeuerbereit::testExFqFeuerbereit()
|
||||
PASS : TestExFqFeuerbereit::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 3ms
|
||||
********* Finished testing of TestExFqFeuerbereit *********
|
||||
********* Start testing of TestExFqFeuern *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExFqFeuern::initTestCase()
|
||||
QDEBUG : TestExFqFeuern::testExFqFeuern() ---------------------------------------
|
||||
QDEBUG : TestExFqFeuern::testExFqFeuern() --- EX-FQ(FN) Feuern ---
|
||||
QSYSTEM: TestExFqFeuern::testExFqFeuern() toJsonInternal
|
||||
QSYSTEM: TestExFqFeuern::testExFqFeuern() zeitangabe_DTGToJson Stunden= 13
|
||||
QDEBUG : TestExFqFeuern::testExFqFeuern() feuerbereitMessage= "{\n \"data\": {\n \"feuerkampfReferenz\": \"feuerkampfReferenz 1\",\n \"kenner\": \"C1\",\n \"verein\": \"AB7X 1\"\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-FQ(FN)\",\n \"typeId\": 1003,\n \"uuid\": \"{b4400874-c540-4331-8ee7-97e31c1f74b9}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExFqFeuern::testExFqFeuern() feuerkampfdatenFromJson feuerkampfReferenz= "feuerkampfReferenz 1" verein= "AB7X 1" kenner= 34 ' "C1" '
|
||||
PASS : TestExFqFeuern::testExFqFeuern()
|
||||
PASS : TestExFqFeuern::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 2ms
|
||||
********* Finished testing of TestExFqFeuern *********
|
||||
********* Start testing of TestExFqAbgefeuert *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExFqAbgefeuert::initTestCase()
|
||||
QDEBUG : TestExFqAbgefeuert::testExFqAbgefeuert() ---------------------------------------
|
||||
QDEBUG : TestExFqAbgefeuert::testExFqAbgefeuert() --- EX-FQ(AF) Abgefeuert ---
|
||||
QSYSTEM: TestExFqAbgefeuert::testExFqAbgefeuert() toJsonInternal
|
||||
QSYSTEM: TestExFqAbgefeuert::testExFqAbgefeuert() zeitangabe_DTGToJson Stunden= 13
|
||||
QDEBUG : TestExFqAbgefeuert::testExFqAbgefeuert() abgefeuertMessage= "{\n \"data\": {\n \"feuerkampfReferenz\": \"feuerkampfReferenz 1\",\n \"kenner\": \"C1\",\n \"verein\": \"AB7X 1\"\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-FQ(AF)\",\n \"typeId\": 1004,\n \"uuid\": \"{65201036-324f-4f20-ace9-aa12189b2e0d}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExFqAbgefeuert::testExFqAbgefeuert() feuerkampfdatenFromJson feuerkampfReferenz= "feuerkampfReferenz 1" verein= "AB7X 1" kenner= 34 ' "C1" '
|
||||
PASS : TestExFqAbgefeuert::testExFqAbgefeuert()
|
||||
PASS : TestExFqAbgefeuert::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 2ms
|
||||
********* Finished testing of TestExFqAbgefeuert *********
|
||||
********* Start testing of TestExFqVollzugsmeldung *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExFqVollzugsmeldung::initTestCase()
|
||||
QDEBUG : TestExFqVollzugsmeldung::testExFqVollzugsmeldung() ---------------------------------------
|
||||
QDEBUG : TestExFqVollzugsmeldung::testExFqVollzugsmeldung() --- EX-FQ(VM) Vollzugsmeldung ---
|
||||
QSYSTEM: TestExFqVollzugsmeldung::testExFqVollzugsmeldung() toJsonInternal
|
||||
QSYSTEM: TestExFqVollzugsmeldung::testExFqVollzugsmeldung() zeitangabe_DTGToJson Stunden= 13
|
||||
QDEBUG : TestExFqVollzugsmeldung::testExFqVollzugsmeldung() generateVollzugsmeldungMessage= "{\n \"data\": {\n \"feuerkampfReferenz\": \"feuerkampfReferenz 1\",\n \"kenner\": \"C1\",\n \"verein\": \"AB7X 1\"\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-FQ(VM)\",\n \"typeId\": 1005,\n \"uuid\": \"{3fc7bcc0-5e85-4f12-b8f1-1e1043ff6264}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExFqVollzugsmeldung::testExFqVollzugsmeldung() feuerkampfdatenFromJson feuerkampfReferenz= "feuerkampfReferenz 1" verein= "AB7X 1" kenner= 34 ' "C1" '
|
||||
PASS : TestExFqVollzugsmeldung::testExFqVollzugsmeldung()
|
||||
PASS : TestExFqVollzugsmeldung::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 2ms
|
||||
********* Finished testing of TestExFqVollzugsmeldung *********
|
||||
********* Start testing of TestExFqFeuerkampf *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExFqFeuerkampf::initTestCase()
|
||||
QDEBUG : TestExFqFeuerkampf::testExFqFeuerkampf() -------------------------------
|
||||
QDEBUG : TestExFqFeuerkampf::testExFqFeuerkampf() --- EX-FQ(BA-BB) Feuerkampf ---
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() toJsonInternal
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf()
|
||||
|
||||
zielmeldedatenToJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() zieldatenToJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinateToJson longitude= 8.7573 latitude= 53.3779
|
||||
QDEBUG : TestExFqFeuerkampf::testExFqFeuerkampf() koordinateMitHoeheToJson hoehe= 0
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinateToJson longitude= 8.8 latitude= 53.8
|
||||
QDEBUG : TestExFqFeuerkampf::testExFqFeuerkampf() koordinateMitHoeheToJson hoehe= 5
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() zieldatenToJson = "{\n \"breiteRadius\": 25,\n \"elemente\": 1,\n \"geometrie\": \"P\",\n \"koordinate\": {\n \"hoehe\": 0,\n \"koordinate\": {\n \"latitude\": 53.37787,\n \"longitude\": 8.7573\n }\n },\n \"nummer\": 7,\n \"relativKoordinate\": {\n \"hoehe\": 5,\n \"koordinate\": {\n \"latitude\": 53.8,\n \"longitude\": 8.8\n }\n },\n \"subTyp\": \"APERS\",\n \"tiefe\": 26,\n \"typ\": \"EX_L20_PERS\",\n \"zielachse\": 17,\n \"zog\": 7\n}\n"
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() data = "{\n \"Gerlinde\": \"Rudolphus\",\n \"zieldaten\": {\n \"breiteRadius\": 25,\n \"elemente\": 1,\n \"geometrie\": \"P\",\n \"koordinate\": {\n \"hoehe\": 0,\n \"koordinate\": {\n \"latitude\": 53.37787,\n \"longitude\": 8.7573\n }\n },\n \"nummer\": 7,\n \"relativKoordinate\": {\n \"hoehe\": 5,\n \"koordinate\": {\n \"latitude\": 53.8,\n \"longitude\": 8.8\n }\n },\n \"subTyp\": \"APERS\",\n \"tiefe\": 26,\n \"typ\": \"EX_L20_PERS\",\n \"zielachse\": 17,\n \"zog\": 7\n }\n}\n"
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() objZieldaten = "{\n \"breiteRadius\": 25,\n \"elemente\": 1,\n \"geometrie\": \"P\",\n \"koordinate\": {\n \"hoehe\": 0,\n \"koordinate\": {\n \"latitude\": 53.37787,\n \"longitude\": 8.7573\n }\n },\n \"nummer\": 7,\n \"relativKoordinate\": {\n \"hoehe\": 5,\n \"koordinate\": {\n \"latitude\": 53.8,\n \"longitude\": 8.8\n }\n },\n \"subTyp\": \"APERS\",\n \"tiefe\": 26,\n \"typ\": \"EX_L20_PERS\",\n \"zielachse\": 17,\n \"zog\": 7\n}\n"
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinateToJson longitude= 8.759 latitude= 53.3779
|
||||
QDEBUG : TestExFqFeuerkampf::testExFqFeuerkampf() koordinateMitHoeheToJson hoehe= 56
|
||||
QDEBUG : TestExFqFeuerkampf::testExFqFeuerkampf() feuerkampfMessage= "{\n \"data\": {\n \"Gerlinde\": \"Rudolphus\",\n \"abfeuerungsArt\": \"F\",\n \"dauer\": 88,\n \"feuerkommando\": [\n {\n \"verein\": \"verein Feuerkommando\",\n \"wirkmittel\": [\n {\n \"auftreffpunkt\": {\n \"hoehe\": 56,\n \"koordinate\": {\n \"latitude\": 53.37791,\n \"longitude\": 8.759\n }\n },\n \"flugbahnpunkt\": [\n {\n \"xRelativ\": 200,\n \"yRelativ\": 77,\n \"zRelativ\": 300,\n \"zeit\": 17\n },\n {\n \"xRelativ\": 900,\n \"yRelativ\": 177,\n \"zRelativ\": 700,\n \"zeit\": 19\n }\n ],\n \"flugzeit\": 77,\n \"geschoss\": {\n \"anzahl\": 1,\n \"geschosssorte\": \"SprengDM121\",\n \"intervall\": 1,\n \"ladung\": \"M_DM72\",\n \"zuender\": \"Aufschlag_DM241\",\n \"zuenderFunktion\": \"AZoV\",\n \"zuenderZeit\": 0\n },\n \"gipfelhoehe\": 78,\n \"kenner\": 35,\n \"schussrichtung\": 79,\n \"streuung\": {\n \"peBurstDeflection\": 4.9754626068813906e-295,\n \"peBurstRange\": 0,\n \"peDeflection\": 0,\n \"peRange\": 0\n }\n }\n ]\n }\n ],\n \"forderung\": \"BEL\",\n \"zieldaten\": {\n \"breiteRadius\": 25,\n \"elemente\": 1,\n \"geometrie\": \"P\",\n \"koordinate\": {\n \"hoehe\": 0,\n \"koordinate\": {\n \"latitude\": 53.37787,\n \"longitude\": 8.7573\n }\n },\n \"nummer\": 7,\n \"relativKoordinate\": {\n \"hoehe\": 5,\n \"koordinate\": {\n \"latitude\": 53.8,\n \"longitude\": 8.8\n }\n },\n \"subTyp\": \"APERS\",\n \"tiefe\": 26,\n \"typ\": \"EX_L20_PERS\",\n \"zielachse\": 17,\n \"zog\": 7\n }\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-FQ(BA-BB)\",\n \"typeId\": 19,\n \"uuid\": \"{c49b453f-b389-4db5-88fc-f33b67248497}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() zielmeldedatenFromJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinatefromJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinatefromJson longitude= 8.7573 latitude= 53.3779
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinateMitHoeheFromJson hoehe= 0
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinatefromJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinatefromJson longitude= 8.8 latitude= 53.8
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinateMitHoeheFromJson hoehe= 5
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() zieldatenfromJson nummer= 7
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() feuerkommandoFromJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() feuerkommando.verein = "verein Feuerkommando"
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() wirkmittelFeuerkommandoFromJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinatefromJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinatefromJson longitude= 8.759 latitude= 53.3779
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() koordinateMitHoeheFromJson hoehe= 56
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() feuerkommandoGeschosseFromJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() flugbahnpunkteFromJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() flugbahnpunktFromJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() flugbahnpunktFromJson zeit= 17 punkt= 200 / 77 / 300
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() flugbahnpunktFromJson
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() flugbahnpunktFromJson zeit= 19 punkt= 900 / 177 / 700
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() streuungsdatenfromJson peDeflection= 0 peBurstRange= 0 peBurstDeflection= 4.97546e-295
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() wirkmittel
|
||||
QSYSTEM: TestExFqFeuerkampf::testExFqFeuerkampf() wirkmittel
|
||||
QDEBUG : TestExFqFeuerkampf::testExFqFeuerkampf() --- Compare EX-Zielmeldedaten ---
|
||||
QDEBUG : TestExFqFeuerkampf::testExFqFeuerkampf() --- Begin compareZieldaten EX-L12 ---
|
||||
QDEBUG : TestExFqFeuerkampf::testExFqFeuerkampf() --- koordinate ---
|
||||
QDEBUG : TestExFqFeuerkampf::testExFqFeuerkampf() --- relativKoordinate ---
|
||||
QDEBUG : TestExFqFeuerkampf::testExFqFeuerkampf() --- End compareZieldaten EX-L12 ---
|
||||
PASS : TestExFqFeuerkampf::testExFqFeuerkampf()
|
||||
PASS : TestExFqFeuerkampf::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 7ms
|
||||
********* Finished testing of TestExFqFeuerkampf *********
|
||||
********* Start testing of TestExFeuerhalt *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExFeuerhalt::initTestCase()
|
||||
QDEBUG : TestExFeuerhalt::testExFeuerhalt() ------------------------
|
||||
QDEBUG : TestExFeuerhalt::testExFeuerhalt() --- EX-FH Feuer HALT ---
|
||||
QSYSTEM: TestExFeuerhalt::testExFeuerhalt() toJsonInternal
|
||||
QSYSTEM: TestExFeuerhalt::testExFeuerhalt() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExFeuerhalt::testExFeuerhalt() feuerHaltDatenToJson
|
||||
QSYSTEM: TestExFeuerhalt::testExFeuerhalt() koordinateToJson longitude= 8.759 latitude= 53.3779
|
||||
QDEBUG : TestExFeuerhalt::testExFeuerhalt() feuerhaltMessage= "{\n \"data\": {\n \"feuerkampf\": \"feuerHaltDaten\",\n \"kategorie\": \"FH_E\",\n \"koordinate\": {\n \"latitude\": 53.37791,\n \"longitude\": 8.759\n },\n \"radius\": 50,\n \"zpNummer\": 5\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-FH\",\n \"typeId\": 1006,\n \"uuid\": \"{c4ea1b11-c132-4a9f-a4e8-2332d0f831f9}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExFeuerhalt::testExFeuerhalt() feuerHaltDatenFromJson
|
||||
QSYSTEM: TestExFeuerhalt::testExFeuerhalt() koordinatefromJson
|
||||
QSYSTEM: TestExFeuerhalt::testExFeuerhalt() koordinatefromJson longitude= 8.759 latitude= 53.3779
|
||||
PASS : TestExFeuerhalt::testExFeuerhalt()
|
||||
PASS : TestExFeuerhalt::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 2ms
|
||||
********* Finished testing of TestExFeuerhalt *********
|
||||
********* Start testing of TestExStellungsmeldungFS *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExStellungsmeldungFS::initTestCase()
|
||||
QDEBUG : TestExStellungsmeldungFS::testExStellungsmeldungFS() ------------------------------------------------
|
||||
QDEBUG : TestExStellungsmeldungFS::testExStellungsmeldungFS() --- EX-SQ(FS) Stellungsmeldung Feuerstellung ---
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() toJsonInternal
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() feuerstellungsdatenToJson
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() einheitToJson einheit.oi= 3
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinateToJson longitude= 8.759 latitude= 53.3779
|
||||
QDEBUG : TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinateMitHoeheToJson hoehe= 20
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinateToJson longitude= 8.76 latitude= 53.3779
|
||||
QDEBUG : TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinateMitHoeheToJson hoehe= 22
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinateToJson longitude= 8.761 latitude= 53.3779
|
||||
QDEBUG : TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinateMitHoeheToJson hoehe= 23
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() geschossToJson geschosssorte= 17 ladung= 2 zuender= 10 anzahl= 6
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() geschossToJson geschosssorte= 1 ladung= 0 zuender= 2 anzahl= 7
|
||||
QDEBUG : TestExStellungsmeldungFS::testExStellungsmeldungFS() EX-SQ(FS) Stellungsmeldung Feuerstellung= "{\n \"data\": {\n \"einheit\": {\n \"oi\": \"F3\",\n \"r\": 5,\n \"verein\": \"verein ExFeuerstellungFS\"\n },\n \"geschosse\": [\n {\n \"anzahl\": 6,\n \"geschosssorte\": \"MineDM72\",\n \"ladung\": \"X_DM82\",\n \"zuender\": \"Doppel_DM183\"\n },\n {\n \"anzahl\": 7,\n \"geschosssorte\": \"LeuchtDM116\",\n \"ladung\": \"B_L8A1\",\n \"zuender\": \"Aufschlag_BB_DM371\"\n }\n ],\n \"koordinaten\": [\n {\n \"hoehe\": 22,\n \"koordinate\": {\n \"latitude\": 53.37792,\n \"longitude\": 8.76\n }\n },\n {\n \"hoehe\": 23,\n \"koordinate\": {\n \"latitude\": 53.37793,\n \"longitude\": 8.761\n }\n }\n ],\n \"mittelpunkt\": {\n \"hoehe\": 20,\n \"koordinate\": {\n \"latitude\": 53.37791,\n \"longitude\": 8.759\n }\n },\n \"status\": \"Einsatzbereit\",\n \"typ\": \"MRS\",\n \"wirkungsbereich\": {\n \"grundrichtung\": 6868481,\n \"links\": 0,\n \"rechts\": 4240192\n }\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-SQ(FS)\",\n \"typeId\": 2000,\n \"uuid\": \"{0556fcc8-7126-4778-b4ce-acb6ffcbf5f2}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() feuerstellungsdatenFromJson
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() einheitfromJson
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinatefromJson
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinatefromJson longitude= 8.759 latitude= 53.3779
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinateMitHoeheFromJson hoehe= 20
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinatefromJson
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinatefromJson longitude= 8.76 latitude= 53.3779
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinateMitHoeheFromJson hoehe= 22
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinatefromJson
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinatefromJson longitude= 8.761 latitude= 53.3779
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() koordinateMitHoeheFromJson hoehe= 23
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() geschossefromJson
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() geschosssorte= ' QJsonValue(string, "MineDM72") '
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() geschossefromJson geschosssorte= 17 ladung= 2 zuender= 10 anzahl= 6
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() geschossefromJson
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() geschosssorte= ' QJsonValue(string, "LeuchtDM116") '
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() geschossefromJson geschosssorte= 1 ladung= 0 zuender= 2 anzahl= 7
|
||||
QSYSTEM: TestExStellungsmeldungFS::testExStellungsmeldungFS() wirkungsbereichFromJson
|
||||
PASS : TestExStellungsmeldungFS::testExStellungsmeldungFS()
|
||||
PASS : TestExStellungsmeldungFS::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 7ms
|
||||
********* Finished testing of TestExStellungsmeldungFS *********
|
||||
********* Start testing of TestExStellungsmeldungWS *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExStellungsmeldungWS::initTestCase()
|
||||
QDEBUG : TestExStellungsmeldungWS::testExStellungsmeldungWS() ------------------------------------------------
|
||||
QDEBUG : TestExStellungsmeldungWS::testExStellungsmeldungWS() --- EX-SQ(WS) Stellungsmeldung Waffensystem ---
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() toJsonInternal
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() TODO waffensystemdatenToJson
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() einheitToJson einheit.oi= 6
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() geschossToJson geschosssorte= 17 ladung= 2 zuender= 10 anzahl= 6
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() geschossToJson geschosssorte= 1 ladung= 0 zuender= 2 anzahl= 7
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() koordinateToJson longitude= 8.759 latitude= 53.3779
|
||||
QDEBUG : TestExStellungsmeldungWS::testExStellungsmeldungWS() koordinateMitHoeheToJson hoehe= 20
|
||||
QDEBUG : TestExStellungsmeldungWS::testExStellungsmeldungWS() EX-SQ(WS) Stellungsmeldung Waffensystem= "{\n \"data\": {\n \"einheit\": {\n \"oi\": \"F6\",\n \"r\": 6,\n \"verein\": \"verein ExFeuerstellungWS\"\n },\n \"geschosse\": [\n {\n \"anzahl\": 6,\n \"geschosssorte\": \"MineDM72\",\n \"ladung\": \"X_DM82\",\n \"zuender\": \"Doppel_DM183\"\n },\n {\n \"anzahl\": 7,\n \"geschosssorte\": \"LeuchtDM116\",\n \"ladung\": \"B_L8A1\",\n \"zuender\": \"Aufschlag_BB_DM371\"\n }\n ],\n \"kenner\": \"B1\",\n \"koordinate\": {\n \"hoehe\": 20,\n \"koordinate\": {\n \"latitude\": 53.37791,\n \"longitude\": 8.759\n }\n },\n \"status\": \"Nicht einsatzbereit\",\n \"typ\": \"MRS\",\n \"wirkungsbereich\": {\n \"grundrichtung\": 1,\n \"links\": 2,\n \"rechts\": 3\n }\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-SQ(WS)\",\n \"typeId\": 2001,\n \"uuid\": \"{546479bc-d439-46af-bbb8-8ab4bfb1f2cb}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() waffensystemdatenFromJson
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() einheitfromJson
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() geschossefromJson
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() geschosssorte= ' QJsonValue(string, "MineDM72") '
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() geschossefromJson geschosssorte= 17 ladung= 2 zuender= 10 anzahl= 6
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() geschossefromJson
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() geschosssorte= ' QJsonValue(string, "LeuchtDM116") '
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() geschossefromJson geschosssorte= 1 ladung= 0 zuender= 2 anzahl= 7
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() koordinatefromJson
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() koordinatefromJson longitude= 8.759 latitude= 53.3779
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() koordinateMitHoeheFromJson hoehe= 20
|
||||
QSYSTEM: TestExStellungsmeldungWS::testExStellungsmeldungWS() wirkungsbereichFromJson
|
||||
PASS : TestExStellungsmeldungWS::testExStellungsmeldungWS()
|
||||
PASS : TestExStellungsmeldungWS::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 4ms
|
||||
********* Finished testing of TestExStellungsmeldungWS *********
|
||||
********* Start testing of TestExStellungsmeldungLP *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExStellungsmeldungLP::initTestCase()
|
||||
QDEBUG : TestExStellungsmeldungLP::testExStellungsmeldungLP() --------------------------------------------
|
||||
QDEBUG : TestExStellungsmeldungLP::testExStellungsmeldungLP() --- EX-SQ(LP) Stellungsmeldung Ladeplatz ---
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() toJsonInternal
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() TODO ladeplatzdatenToJson
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() geschossToJson geschosssorte= 17 ladung= 2 zuender= 10 anzahl= 6
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() geschossToJson geschosssorte= 1 ladung= 0 zuender= 2 anzahl= 7
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() koordinateToJson longitude= 8.759 latitude= 53.3779
|
||||
QDEBUG : TestExStellungsmeldungLP::testExStellungsmeldungLP() koordinateMitHoeheToJson hoehe= 20
|
||||
QDEBUG : TestExStellungsmeldungLP::testExStellungsmeldungLP() EX-SQ(LP) Stellungsmeldung Ladeplatz= "{\n \"data\": {\n \"geschosse\": [\n {\n \"anzahl\": 6,\n \"geschosssorte\": \"MineDM72\",\n \"ladung\": \"X_DM82\",\n \"zuender\": \"Doppel_DM183\"\n },\n {\n \"anzahl\": 7,\n \"geschosssorte\": \"LeuchtDM116\",\n \"ladung\": \"B_L8A1\",\n \"zuender\": \"Aufschlag_BB_DM371\"\n }\n ],\n \"koordinate\": {\n \"hoehe\": 20,\n \"koordinate\": {\n \"latitude\": 53.37791,\n \"longitude\": 8.759\n }\n },\n \"typ\": \"EX_L20_ASSY\"\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-SQ(LP)\",\n \"typeId\": 2002,\n \"uuid\": \"{eb9ec2e2-5a63-4c90-a17d-b6273bbcd00c}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() ladeplatzdatenFromJson
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() koordinatefromJson
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() koordinatefromJson longitude= 8.759 latitude= 53.3779
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() koordinateMitHoeheFromJson hoehe= 20
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() geschossefromJson
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() geschosssorte= ' QJsonValue(string, "MineDM72") '
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() geschossefromJson geschosssorte= 17 ladung= 2 zuender= 10 anzahl= 6
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() geschossefromJson
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() geschosssorte= ' QJsonValue(string, "LeuchtDM116") '
|
||||
QSYSTEM: TestExStellungsmeldungLP::testExStellungsmeldungLP() geschossefromJson geschosssorte= 1 ladung= 0 zuender= 2 anzahl= 7
|
||||
PASS : TestExStellungsmeldungLP::testExStellungsmeldungLP()
|
||||
PASS : TestExStellungsmeldungLP::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 4ms
|
||||
********* Finished testing of TestExStellungsmeldungLP *********
|
||||
********* Start testing of TestExErkundungsergebnisse *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExErkundungsergebnisse::initTestCase()
|
||||
QDEBUG : TestExErkundungsergebnisse::testExErkundungsergebnisse() -------------------------------------------------------------
|
||||
QDEBUG : TestExErkundungsergebnisse::testExErkundungsergebnisse() --- EX-Erkundungsergebnisse - Senden Erkundungsergebnisse ---
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() toJsonInternal
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() erkundungsdatenToJson
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() erkundungseinheitToJson verein= "verein Erkundungsdaten" r= 5
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinateToJson longitude= 8.758 latitude= 53.3779
|
||||
QDEBUG : TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinateMitHoeheToJson hoehe= 55
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() erkundungsstellungenToJson
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinateToJson longitude= 8.759 latitude= 53.3779
|
||||
QDEBUG : TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinateMitHoeheToJson hoehe= 56
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinateToJson longitude= 8.76 latitude= 53.3779
|
||||
QDEBUG : TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinateMitHoeheToJson hoehe= 57
|
||||
QDEBUG : TestExErkundungsergebnisse::testExErkundungsergebnisse() erkundungsergebnisseMessage= "{\n \"data\": {\n \"feuerkommando\": {\n \"einheit\": 5,\n \"verein\": \"verein Erkundungsdaten\"\n },\n \"koordinate\": {\n \"hoehe\": 55,\n \"koordinate\": {\n \"latitude\": 53.3779,\n \"longitude\": 8.758\n }\n },\n \"stellungen\": {\n \"waffenplaetze\": [\n {\n \"hoehe\": 56,\n \"koordinate\": {\n \"latitude\": 53.37791,\n \"longitude\": 8.759\n }\n },\n {\n \"hoehe\": 57,\n \"koordinate\": {\n \"latitude\": 53.37792,\n \"longitude\": 8.76\n }\n }\n ],\n \"wirkungsbereich\": {\n \"grundrichtung\": 33,\n \"links\": 44,\n \"rechts\": 55\n }\n }\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-Erkundungsergebnisse\",\n \"typeId\": 5000,\n \"uuid\": \"{591a0103-e504-4a42-9c87-a755c6600018}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() START erkundungsdatenFromJson
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() erkundungseinheitFromJson verein= "verein Erkundungsdaten" r= 5
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinatefromJson
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinatefromJson longitude= 8.758 latitude= 53.3779
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinateMitHoeheFromJson hoehe= 55
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() erkundungsstellungenFromJson
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() waffenplaetzeArray.size() 2
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinatefromJson
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinatefromJson longitude= 8.759 latitude= 53.3779
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinateMitHoeheFromJson hoehe= 56
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinatefromJson
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinatefromJson longitude= 8.76 latitude= 53.3779
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() koordinateMitHoeheFromJson hoehe= 57
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() wirkungsbereichFromJson
|
||||
QSYSTEM: TestExErkundungsergebnisse::testExErkundungsergebnisse() Ende erkundungsstellungenFromJson
|
||||
PASS : TestExErkundungsergebnisse::testExErkundungsergebnisse()
|
||||
PASS : TestExErkundungsergebnisse::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 5ms
|
||||
********* Finished testing of TestExErkundungsergebnisse *********
|
||||
********* Start testing of TestExStellungswechsel *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExStellungswechsel::initTestCase()
|
||||
QDEBUG : TestExStellungswechsel::testExStellungswechsel() ---------------------------
|
||||
QDEBUG : TestExStellungswechsel::testExStellungswechsel() --- EX-Stellungswechsel ---
|
||||
QSYSTEM: TestExStellungswechsel::testExStellungswechsel() toJsonInternal
|
||||
QSYSTEM: TestExStellungswechsel::testExStellungswechsel() zeitangabe_DTGToJson Stunden= 13
|
||||
QDEBUG : TestExStellungswechsel::testExStellungswechsel() EX-Stellungswechsel= "{\n \"data\": {\n \"oi\": \"F3\",\n \"r\": 5,\n \"verein\": \"verein ExStellungswechsel\"\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-Stellungswechsel\",\n \"typeId\": 20,\n \"uuid\": \"{31f1ed16-59fc-49bd-ab26-9a7b47f3343c}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExStellungswechsel::testExStellungswechsel() stellungswechseldatenFromJson
|
||||
PASS : TestExStellungswechsel::testExStellungswechsel()
|
||||
PASS : TestExStellungswechsel::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 3ms
|
||||
********* Finished testing of TestExStellungswechsel *********
|
||||
********* Start testing of TestExHqKoordinierungsmassnahmen *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExHqKoordinierungsmassnahmen::initTestCase()
|
||||
QDEBUG : TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() -----------------------------------------
|
||||
QDEBUG : TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() --- EX-HQ(K) Koordinierungsmassnahmen ---
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() toJsonInternal
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() koordinierungsdatenToJson
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() zeitangabe_DTGToJson Stunden= 5
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() zeitangabe_DTGToJson Stunden= 5
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() koordinateToJson longitude= 8.76 latitude= 53.3779
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() koordinateToJson longitude= 8.761 latitude= 53.3779
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() koordinateToJson longitude= 8.762 latitude= 53.3779
|
||||
QDEBUG : TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() EX-HQ(K) Koordinierungsmassnahmen= "{\n \"data\": {\n \"ab\": {\n \"jahr\": 2025,\n \"minuten\": 35,\n \"monat\": 11,\n \"sekunden\": 55,\n \"stunden\": 5,\n \"tag\": 12,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"art\": \"NFA\",\n \"bis\": {\n \"jahr\": 2025,\n \"minuten\": 35,\n \"monat\": 11,\n \"sekunden\": 55,\n \"stunden\": 5,\n \"tag\": 13,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"koordinaten\": [\n {\n \"latitude\": 53.37792,\n \"longitude\": 8.76\n },\n {\n \"latitude\": 53.37793,\n \"longitude\": 8.761\n }\n ],\n \"maxGipfel\": 123,\n \"mittelpunkt\": {\n \"latitude\": 53.37794,\n \"longitude\": 8.762\n },\n \"name\": \"Name ExHqKoordinierungsmassnahme\",\n \"radius\": 66,\n \"truppenteil\": \"Truppenteil ExHqKoordinierungsmassnahme\"\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-HQ(K)\",\n \"typeId\": 20,\n \"uuid\": \"{321f5053-6c92-497d-b044-835a2242e750}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() koordinierungsdatenFromJson
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() zeitangabe_DTGFromJson Stunden= -1065143760
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() zeitangabe_DTGFromJson Stunden= -1065142288
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() koordinatefromJson
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() koordinatefromJson longitude= 8.76 latitude= 53.3779
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() koordinatefromJson
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() koordinatefromJson longitude= 8.761 latitude= 53.3779
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() koordinatefromJson
|
||||
QSYSTEM: TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen() koordinatefromJson longitude= 8.762 latitude= 53.3779
|
||||
PASS : TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen()
|
||||
PASS : TestExHqKoordinierungsmassnahmen::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 4ms
|
||||
********* Finished testing of TestExHqKoordinierungsmassnahmen *********
|
||||
********* Start testing of TestExHqFuehrungslinien *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExHqFuehrungslinien::initTestCase()
|
||||
QDEBUG : TestExHqFuehrungslinien::testExHqFuehrungslinien() -------------------------------------------
|
||||
QDEBUG : TestExHqFuehrungslinien::testExHqFuehrungslinien() --- EX-HQ(G) Fuehrungslinien und Grenzen ---
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() toJsonInternal
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() fuehrungsdatenToJson
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() zeitangabe_DTGToJson Stunden= 5
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() zeitangabe_DTGToJson Stunden= 5
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() koordinateToJson longitude= 8.76 latitude= 53.3779
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() fuehrungsdatenToJson koordinate= 8.76 / 53.3779
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() koordinateToJson longitude= 8.761 latitude= 53.3779
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() fuehrungsdatenToJson koordinate= 8.761 / 53.3779
|
||||
QDEBUG : TestExHqFuehrungslinien::testExHqFuehrungslinien() EX-HQ(G) Fuehrungslinien und Grenzen= "{\n \"data\": {\n \"ab\": {\n \"jahr\": 2025,\n \"minuten\": 35,\n \"monat\": 11,\n \"sekunden\": 55,\n \"stunden\": 5,\n \"tag\": 12,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"art\": \"AO\",\n \"bis\": {\n \"jahr\": 2025,\n \"minuten\": 35,\n \"monat\": 11,\n \"sekunden\": 55,\n \"stunden\": 5,\n \"tag\": 13,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"koordinaten\": [\n {\n \"latitude\": 53.37792,\n \"longitude\": 8.76\n },\n {\n \"latitude\": 53.37793,\n \"longitude\": 8.761\n }\n ],\n \"linkerNachbar\": \"linker Nachbar\",\n \"name\": \"Name EX-HQ(G) Führungslinien und Grenzen\",\n \"rechterNachbar\": \"rechter Nachbar\"\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-HQ(G)\",\n \"typeId\": 3001,\n \"uuid\": \"{15661f37-df99-4ce1-be00-cef043a8a01b}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() fuehrungsdatenfromJson
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() zeitangabe_DTGFromJson Stunden= 2
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() zeitangabe_DTGFromJson Stunden= -1065142288
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() koordinatefromJson
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() koordinatefromJson longitude= 8.76 latitude= 53.3779
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() fuehrungsdatenfromJson koordinate= 8.76 / 53.3779
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() koordinatefromJson
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() koordinatefromJson longitude= 8.761 latitude= 53.3779
|
||||
QSYSTEM: TestExHqFuehrungslinien::testExHqFuehrungslinien() fuehrungsdatenfromJson koordinate= 8.761 / 53.3779
|
||||
PASS : TestExHqFuehrungslinien::testExHqFuehrungslinien()
|
||||
PASS : TestExHqFuehrungslinien::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 4ms
|
||||
********* Finished testing of TestExHqFuehrungslinien *********
|
||||
********* Start testing of TestExTqTechnischeQuittung *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExTqTechnischeQuittung::initTestCase()
|
||||
QDEBUG : TestExTqTechnischeQuittung::testExTqTechnischeQuittung() ------------------------------------
|
||||
QDEBUG : TestExTqTechnischeQuittung::testExTqTechnischeQuittung() --- EX-TQ Technische Quittierung ---
|
||||
QSYSTEM: TestExTqTechnischeQuittung::testExTqTechnischeQuittung() toJsonInternal
|
||||
QSYSTEM: TestExTqTechnischeQuittung::testExTqTechnischeQuittung() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExTqTechnischeQuittung::testExTqTechnischeQuittung() technischeDatenToJson
|
||||
QDEBUG : TestExTqTechnischeQuittung::testExTqTechnischeQuittung() EX-TQ Technische Quittierung= "{\n \"data\": {\n \"beschreibung\": \"Beschreibung technischer Status\",\n \"status\": \"INV\"\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-TQ\",\n \"typeId\": 6013,\n \"uuid\": \"{5b6c08ea-448a-47aa-bddb-a775c2cf9537}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExTqTechnischeQuittung::testExTqTechnischeQuittung() technischeDatenFromJson
|
||||
PASS : TestExTqTechnischeQuittung::testExTqTechnischeQuittung()
|
||||
PASS : TestExTqTechnischeQuittung::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 3ms
|
||||
********* Finished testing of TestExTqTechnischeQuittung *********
|
||||
********* Start testing of TestExAqFreitextmeldung *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExAqFreitextmeldung::initTestCase()
|
||||
QDEBUG : TestExAqFreitextmeldung::testExAqFreitextmeldung() -----------------------------
|
||||
QDEBUG : TestExAqFreitextmeldung::testExAqFreitextmeldung() --- EX-AQ Freitextmeldung ---
|
||||
QSYSTEM: TestExAqFreitextmeldung::testExAqFreitextmeldung() toJsonInternal
|
||||
QSYSTEM: TestExAqFreitextmeldung::testExAqFreitextmeldung() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExAqFreitextmeldung::testExAqFreitextmeldung() freitextdatenToJson
|
||||
QDEBUG : TestExAqFreitextmeldung::testExAqFreitextmeldung() EX-AQ Freitextmeldung= "{\n \"data\": {\n \"text\": \"Freier Text\"\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-AQ\",\n \"typeId\": 5001,\n \"uuid\": \"{2f05b52d-7a25-41fa-80da-8d95f81e3933}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExAqFreitextmeldung::testExAqFreitextmeldung() freitextdatenToJson
|
||||
PASS : TestExAqFreitextmeldung::testExAqFreitextmeldung()
|
||||
PASS : TestExAqFreitextmeldung::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 2ms
|
||||
********* Finished testing of TestExAqFreitextmeldung *********
|
||||
********* Start testing of TestExFlugbahnberechnung *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExFlugbahnberechnung::initTestCase()
|
||||
QDEBUG : TestExFlugbahnberechnung::testExFlugbahnberechnung() -----------------------------
|
||||
QDEBUG : TestExFlugbahnberechnung::testExFlugbahnberechnung() --- EX-Flugbahnberechnung ---
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() toJsonInternal
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() exFlugbahnberechnungDatenToJson
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() koordinateToJson longitude= 8.7573 latitude= 53.3779
|
||||
QDEBUG : TestExFlugbahnberechnung::testExFlugbahnberechnung() koordinateMitHoeheToJson hoehe= 55
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() koordinateToJson longitude= 8.7574 latitude= 53.3779
|
||||
QDEBUG : TestExFlugbahnberechnung::testExFlugbahnberechnung() koordinateMitHoeheToJson hoehe= 56
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() FlugbahnberechnungGeschosseToJson
|
||||
QDEBUG : TestExFlugbahnberechnung::testExFlugbahnberechnung() EX-Flugbahnberechnung= "{\n \"data\": {\n \"geschoss\": {\n \"geschosssorte\": \"SprengDM121\",\n \"ladung\": \"M_DM72\",\n \"zuender\": \"Aufschlag_DM241\",\n \"zuenderFunktion\": \"AZoV\"\n },\n \"sprenghoehe\": 33,\n \"standort\": {\n \"hoehe\": 55,\n \"koordinate\": {\n \"latitude\": 53.37787,\n \"longitude\": 8.7573\n }\n },\n \"waffensystem\": \"MRS\",\n \"winkelgruppe\": \"Obere\",\n \"zielkoordinate\": {\n \"hoehe\": 56,\n \"koordinate\": {\n \"latitude\": 53.37788,\n \"longitude\": 8.7574\n }\n }\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-Flugbahnberechnung\",\n \"typeId\": 4000,\n \"uuid\": \"{f3a7a892-4431-4136-b7de-f8ab46e9b915}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() exFlugbahnberechnungDatenFromJson
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() koordinatefromJson
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() koordinatefromJson longitude= 8.7573 latitude= 53.3779
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() koordinateMitHoeheFromJson hoehe= 55
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() koordinatefromJson
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() koordinatefromJson longitude= 8.7574 latitude= 53.3779
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() koordinateMitHoeheFromJson hoehe= 56
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() flugbahnberechnungGeschosseFromJson
|
||||
QSYSTEM: TestExFlugbahnberechnung::testExFlugbahnberechnung() geschosssorte= "" int: -1065142592
|
||||
FAIL! : TestExFlugbahnberechnung::testExFlugbahnberechnung() Compared values are not the same
|
||||
Actual (flugbahnberechnungDaten.geschoss.ladungsNummer): 2
|
||||
Expected (5) : 5
|
||||
Loc: [/mnt/24_adler/Lts/Proxies/TrainingAreaBase/Plugins/AdlerJson/ModuleTest/msgcompares.cpp(264)]
|
||||
PASS : TestExFlugbahnberechnung::cleanupTestCase()
|
||||
Totals: 2 passed, 1 failed, 0 skipped, 0 blacklisted, 3ms
|
||||
********* Finished testing of TestExFlugbahnberechnung *********
|
||||
********* Start testing of TestExFlugbahndaten *********
|
||||
Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 7.5.0), opensuse-leap 15.4
|
||||
PASS : TestExFlugbahndaten::initTestCase()
|
||||
QDEBUG : TestExFlugbahndaten::testExFlugbahndaten() -----------------------------
|
||||
QDEBUG : TestExFlugbahndaten::testExFlugbahndaten() --- EX-Flugbahndaten ---
|
||||
QDEBUG : TestExFlugbahndaten::testExFlugbahndaten() -------------------------------
|
||||
QDEBUG : TestExFlugbahndaten::testExFlugbahndaten() --- ExFlugbahndaten::toJson ---
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() toJsonInternal
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() zeitangabe_DTGToJson Stunden= 13
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() TODO flugbahndatenToJson
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() koordinateToJson longitude= 8.7574 latitude= 53.3779
|
||||
QDEBUG : TestExFlugbahndaten::testExFlugbahndaten() koordinateMitHoeheToJson hoehe= 56
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() FlugbahndatenGeschosseToJson
|
||||
QDEBUG : TestExFlugbahndaten::testExFlugbahndaten() EX-Flugbahndaten= "{\n \"data\": {\n \"fallwinkel\": 55,\n \"fehlercode\": \"MaximaleEntfernung\",\n \"flugbahnpunkt\": [\n {\n \"xRelativ\": 2.2,\n \"yRelativ\": 3.3,\n \"zRelativ\": 4.4,\n \"zeit\": 1.1\n },\n {\n \"xRelativ\": 2.3,\n \"yRelativ\": 3.4,\n \"zRelativ\": 4.5,\n \"zeit\": 1.2\n }\n ],\n \"flugzeit\": 300,\n \"geschoss\": {\n \"geschosssorte\": \"SprengDM121\",\n \"ladung\": \"M_DM72\",\n \"ladungsNummer\": 5,\n \"zuender\": \"Aufschlag_DM241\",\n \"zuenderFunktion\": \"AZoV\",\n \"zuenderZeit\": 1000\n },\n \"gipfelhoehe\": 200,\n \"schussrichtung\": 45,\n \"streuung\": {\n \"peBurstDeflection\": 5.5,\n \"peBurstRange\": 4.4,\n \"peDeflection\": 3.3,\n \"peRange\": 2.2\n },\n \"typ\": \"MRS\",\n \"zielkoordinate\": {\n \"hoehe\": 56,\n \"koordinate\": {\n \"latitude\": 53.37788,\n \"longitude\": 8.7574\n }\n }\n },\n \"reciver\": \"EXCON@GUEZ.LIVE\",\n \"referenceUuid\": \"\",\n \"sender\": \"SAA1@GUEZ.LIVE\",\n \"timestamp\": {\n \"jahr\": 2025,\n \"minuten\": 11,\n \"monat\": 5,\n \"sekunden\": 10,\n \"stunden\": 13,\n \"tag\": 16,\n \"zdm\": \"ZDM\",\n \"zds\": \"ZDS\",\n \"zvz\": \"ZVz\"\n },\n \"type\": \"EX-Flugbahndaten\",\n \"typeId\": 4001,\n \"uuid\": \"{1ee580e9-d659-4861-ab01-edc529f27950}\",\n \"version\": \"\"\n}\n"
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() flugbahndatenDatenFromJson
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() koordinateMitHoeheFromJson
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() koordinatefromJson
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() koordinatefromJson longitude= 8.7574 latitude= 53.3779
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() koordinateMitHoeheFromJson hoehe= 56
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() flugbahnpunktFromJson
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() flugbahnpunktFromJson zeit= 1.1 punkt= 2.2 / 3.3 / 4.4
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() fuehrungsdatenfromJson flugbahnpunkt= 1.1 / 2.2 / 3.3 / 4.4
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() flugbahnpunktFromJson
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() flugbahnpunktFromJson zeit= 1.2 punkt= 2.3 / 3.4 / 4.5
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() fuehrungsdatenfromJson flugbahnpunkt= 1.2 / 2.3 / 3.4 / 4.5
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() streuungsdatenfromJson peDeflection= 3.3 peBurstRange= 4.4 peBurstDeflection= 5.5
|
||||
QSYSTEM: TestExFlugbahndaten::testExFlugbahndaten() FlugbahndatenGeschosseFromJson
|
||||
PASS : TestExFlugbahndaten::testExFlugbahndaten()
|
||||
PASS : TestExFlugbahndaten::cleanupTestCase()
|
||||
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted, 4ms
|
||||
********* Finished testing of TestExFlugbahndaten *********
|
||||
@@ -0,0 +1,77 @@
|
||||
#
|
||||
# @RDE_HEADER@
|
||||
# $Id: CMakeLists.txt 64525 2025-02-14 12:35:41Z fritsche_h $
|
||||
# $HeadURL: svn://slssvn/TDS/branches/product/features/24_adler/Lts/Services/AreaEffectSimulation/ModuleTest_ExplosionCluster/CMakeLists.txt $
|
||||
# $Author: fritsche_h $
|
||||
#
|
||||
|
||||
SET(UnitTestSources
|
||||
test_telegram_decoding.cpp
|
||||
ex_anmeldung.cpp
|
||||
ex_anmeldung.h
|
||||
ex_abmeldung.cpp
|
||||
ex_abmeldung.h
|
||||
ex_anmeldebestaetigung.cpp
|
||||
ex_anmeldebestaetigung.h
|
||||
ex_status.cpp
|
||||
ex_status.h
|
||||
ex_fq_wirkfeldplanung.cpp
|
||||
ex_fq_wirkfeldplanung.h
|
||||
ex_fq_feuerbereit.cpp
|
||||
ex_fq_feuerbereit.h
|
||||
ex_fq_feuern.cpp
|
||||
ex_fq_feuern.h
|
||||
ex_fq_abgefeuert.cpp
|
||||
ex_fq_abgefeuert.h
|
||||
ex_fq_vollzugsmeldung.cpp
|
||||
ex_fq_vollzugsmeldung.h
|
||||
# ex_erkundungsanfrage.cpp
|
||||
# ex_erkundungsanfrage.h
|
||||
ex_erkundungsergebnisse.cpp
|
||||
ex_erkundungsergebnisse.h
|
||||
ex_fq_feuerkampf.cpp
|
||||
ex_fq_feuerkampf.h
|
||||
ex_fh_feuerhalt.cpp
|
||||
ex_fh_feuerhalt.h
|
||||
ex_sq_stellungsmeldung_fs.cpp
|
||||
ex_sq_stellungsmeldung_fs.h
|
||||
ex_sq_stellungsmeldung_ws.cpp
|
||||
ex_sq_stellungsmeldung_ws.h
|
||||
ex_sq_stellungsmeldung_lp.cpp
|
||||
ex_sq_stellungsmeldung_lp.h
|
||||
ex_sq_stellungswechsel.cpp
|
||||
ex_sq_stellungswechsel.h
|
||||
ex_hq_koordinierungsmassnahmen.cpp
|
||||
ex_hq_koordinierungsmassnahmen.h
|
||||
ex_hq_fuehrungslinien.cpp
|
||||
ex_hq_fuehrungslinien.h
|
||||
ex_tq_technische_quittung.cpp
|
||||
ex_tq_technische_quittung.h
|
||||
ex_aq_freitext.cpp
|
||||
ex_aq_freitext.h
|
||||
ex_mq_manuelle_quittung.cpp
|
||||
ex_mq_manuelle_quittung.h
|
||||
ex_flugbahnberechnung.cpp
|
||||
ex_flugbahnberechnung.h
|
||||
ex_flugbahndaten.cpp
|
||||
ex_flugbahndaten.h
|
||||
)
|
||||
|
||||
IF(BUILD_TESTING)
|
||||
ADD_EXECUTABLE(tabModuleTestAdler ${LinkedSources} ${UnitTestSources}
|
||||
msgcompares.h msgcompares.cpp)
|
||||
|
||||
|
||||
TARGET_LINK_LIBRARIES(tabModuleTestAdler
|
||||
NGLLogger
|
||||
LtsCommandLineParser
|
||||
nglsettings
|
||||
nglapplication
|
||||
saaTelegrams
|
||||
Qt5::Network
|
||||
Qt5::WebSockets
|
||||
Qt5::Test
|
||||
)
|
||||
|
||||
# ADD_TEST(NAME tabModuleTestAdler COMMAND $<TARGET_FILE:aesUnitTestTneAlgorithmen>)
|
||||
ENDIF()
|
||||
@@ -0,0 +1,66 @@
|
||||
#include "ex_abmeldung.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExAbmeldung::TestExAbmeldung()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Text Message received: {
|
||||
// "data": {
|
||||
// "partyId": 2,
|
||||
// },
|
||||
// "reciver": "EXCON@GUEZ.DE",
|
||||
// "referenceUuid": "",
|
||||
// "sender": "SAA@GUEZ.DE",
|
||||
// "timestamp": {
|
||||
// "jahr": 2025,
|
||||
// "minuten": 56,
|
||||
// "monat": 3,
|
||||
// "sekunden": 9,
|
||||
// "stunden": 12,
|
||||
// "tag": 18,
|
||||
// "zdm": "ZDM",
|
||||
// "zds": "ZDS",
|
||||
// "zvz": "ZVz"
|
||||
// },
|
||||
// "typeId": 1,
|
||||
// "typeName": "EX-Abmeldung",
|
||||
// "uuid": "{30eb8761-7d1b-4e37-8a51-6c1995be9825}",
|
||||
// "version": ""
|
||||
// }
|
||||
|
||||
|
||||
QString TestExAbmeldung::generateDisconnectMessage()
|
||||
{
|
||||
AdlerJson::EXDeregistration req;
|
||||
GenerateTelegrams::addHeaderData(req, m_partyId);
|
||||
GenerateTelegrams::generateAbmeldung(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExAbmeldung::testExAbmeldung()
|
||||
{
|
||||
qDebug() << "----------------------";
|
||||
qDebug() << "--- EX-Abmeldung ---";
|
||||
QString disconnectMessage = generateDisconnectMessage();
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(disconnectMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::Abmeldedaten abmeldedaten;
|
||||
bool bOk;
|
||||
|
||||
|
||||
AdlerJson::abmeldedatenFromJson(dataObj, abmeldedaten, bOk);
|
||||
|
||||
QCOMPARE(abmeldedaten.partyId, m_partyId );
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExAbmeldung : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExAbmeldung();
|
||||
QString generateDisconnectMessage();
|
||||
|
||||
private slots:
|
||||
void testExAbmeldung();
|
||||
|
||||
private:
|
||||
int m_partyId {2};
|
||||
};
|
||||
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
#include "ex_anmeldebestaetigung.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExAnmeldebestaetigung::TestExAnmeldebestaetigung()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QString TestExAnmeldebestaetigung::generateAnmeldebestaetigung()
|
||||
{
|
||||
AdlerJson::ExAnmeldebestaetigung req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_partyId);
|
||||
GenerateTelegrams::generateConnectResponseMessage(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExAnmeldebestaetigung::testExAnmeldebestaetigung()
|
||||
{
|
||||
qDebug() << "--------------------------------";
|
||||
qDebug() << "--- EX-Anmeldebestaetigung ---";
|
||||
QString connectMessage = generateAnmeldebestaetigung();
|
||||
qDebug() << connectMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(connectMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::AnBestaetigungsdaten anBestaetigungsdaten;
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExAnmeldebestaetigung : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExAnmeldebestaetigung();
|
||||
QString generateAnmeldebestaetigung();
|
||||
|
||||
private slots:
|
||||
void testExAnmeldebestaetigung();
|
||||
|
||||
private:
|
||||
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {0};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
#include "ex_anmeldung.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExAnmeldung::TestExAnmeldung()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Text Message received: {
|
||||
// "data": {
|
||||
// "adlerVerbund": true,
|
||||
// "partyId": 2,
|
||||
// "szenar": "UI Test"
|
||||
// },
|
||||
// "reciver": "EXCON@GUEZ.DE",
|
||||
// "referenceUuid": "",
|
||||
// "sender": "SAA@GUEZ.DE",
|
||||
// "timestamp": {
|
||||
// "jahr": 2025,
|
||||
// "minuten": 56,
|
||||
// "monat": 3,
|
||||
// "sekunden": 9,
|
||||
// "stunden": 12,
|
||||
// "tag": 18,
|
||||
// "zdm": "ZDM",
|
||||
// "zds": "ZDS",
|
||||
// "zvz": "ZVz"
|
||||
// },
|
||||
// "typeId": 1,
|
||||
// "typeName": "EX-Anmeldung",
|
||||
// "uuid": "{30eb8761-7d1b-4e37-8a51-6c1995be9825}",
|
||||
// "version": ""
|
||||
// }
|
||||
|
||||
|
||||
QString TestExAnmeldung::generateConnectMessage()
|
||||
{
|
||||
AdlerJson::EXRegistration req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateConnectMessage(req, m_partyId);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExAnmeldung::testExAnmeldung()
|
||||
{
|
||||
qDebug() << "----------------------";
|
||||
qDebug() << "--- EX-Anmeldung ---";
|
||||
QString connectMessage = generateConnectMessage();
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(connectMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::Anmeldedaten anmeldedaten;
|
||||
bool bOk;
|
||||
|
||||
|
||||
AdlerJson::anmeldedatenFromJson(dataObj, anmeldedaten, bOk);
|
||||
|
||||
QCOMPARE(anmeldedaten.partyId, m_partyId );
|
||||
QCOMPARE(anmeldedaten.adlerVerbund, true);
|
||||
QCOMPARE(anmeldedaten.szenar, QStringLiteral("UI Test") );
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExAnmeldung : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExAnmeldung();
|
||||
QString generateConnectMessage();
|
||||
|
||||
private slots:
|
||||
void testExAnmeldung();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
#include "ex_aq_freitext.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include "msgcompares.h"
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExAqFreitextmeldung::TestExAqFreitextmeldung()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExAqFreitextmeldung::generateFreitextmeldung()
|
||||
{
|
||||
AdlerJson::ExAqFreitextmeldung req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateFreitextmeldung(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExAqFreitextmeldung::testExAqFreitextmeldung()
|
||||
{
|
||||
qDebug() << "-----------------------------";
|
||||
qDebug() << "--- EX-AQ Freitextmeldung ---";
|
||||
QString freitextMessage = generateFreitextmeldung();
|
||||
qDebug() << "EX-AQ Freitextmeldung=" << freitextMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(freitextMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::ExAqFreitextmeldung exAqFreitextmeldung;
|
||||
|
||||
bool bOk;
|
||||
|
||||
AdlerJson::FreitextDatenFromJson(dataObj, exAqFreitextmeldung.freitextDaten, bOk);
|
||||
MsgCompares::compareFreitextDaten(exAqFreitextmeldung.freitextDaten);
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExAqFreitextmeldung : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExAqFreitextmeldung();
|
||||
QString generateFreitextmeldung();
|
||||
|
||||
private slots:
|
||||
void testExAqFreitextmeldung();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
#include "ex_erkundungsanfrage.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExFqErkundungsanfrage::TestExFqErkundungsanfrage()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QString TestExFqErkundungsanfrage::generateErkundungsanfrage()
|
||||
{
|
||||
AdlerJson::ExErkundungsanfrage req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateErkundungsanfrage(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExFqErkundungsanfrage::testExFqErkundungsanfrage()
|
||||
{
|
||||
qDebug() << "-----------------------------------------------------------";
|
||||
qDebug() << "--- EX-Erkundungsanfrage - Anfrage Erkundungsergebnisse ---";
|
||||
QString erkundungsanfrageMessage = generateErkundungsanfrage();
|
||||
qDebug() << "generateErkundungsanfrage=" << erkundungsanfrageMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(erkundungsanfrageMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::Feuerkampfdaten feuerkampfdaten;
|
||||
qDebug() << "Nur Header, kein Data-Bereich => keine Q-Compares fuer den Data-Bereich";
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
//enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExFqErkundungsanfrage : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExFqErkundungsanfrage();
|
||||
QString generateErkundungsanfrage();
|
||||
|
||||
private slots:
|
||||
void testExFqErkundungsanfrage();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
#include "ex_erkundungsergebnisse.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExErkundungsergebnisse::TestExErkundungsergebnisse()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExErkundungsergebnisse::generateErkundungsergebnisse()
|
||||
{
|
||||
AdlerJson::ExErkundungsergebnisse req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateErkundungsergebnisse(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExErkundungsergebnisse::testExErkundungsergebnisse()
|
||||
{
|
||||
qDebug() << "-------------------------------------------------------------";
|
||||
qDebug() << "--- EX-Erkundungsergebnisse - Senden Erkundungsergebnisse ---";
|
||||
QString erkundungsergebnisseMessage = generateErkundungsergebnisse();
|
||||
qDebug() << "erkundungsergebnisseMessage=" << erkundungsergebnisseMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(erkundungsergebnisseMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::ExErkundungsergebnisse erkundungsergebnisse;
|
||||
bool bOk;
|
||||
|
||||
|
||||
AdlerJson::erkundungsdatenFromJson(dataObj, erkundungsergebnisse.erkundungsdaten, bOk);
|
||||
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.einheit.r,5);
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.einheit.verein, QStringLiteral("verein Erkundungsdaten"));
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.ladeplatz.hoehe, 55);
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.ladeplatz.koordinate.latitude, 53.37790);
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.ladeplatz.koordinate.longitude, 8.758);
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.stellungen.waffenplaetze.size(), 2);
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.stellungen.waffenplaetze[0].hoehe, 56);
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.stellungen.waffenplaetze[0].koordinate.longitude, 8.759);
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.stellungen.waffenplaetze[0].koordinate.latitude, 53.37791);
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.stellungen.waffenplaetze[1].hoehe, 57);
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.stellungen.waffenplaetze[1].koordinate.longitude, 8.760);
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.stellungen.waffenplaetze[1].koordinate.latitude, 53.37792);
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.stellungen.wirkungsbereich.grundrichtung, 33);
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.stellungen.wirkungsbereich.links, 44);
|
||||
QCOMPARE(erkundungsergebnisse.erkundungsdaten.stellungen.wirkungsbereich.rechts, 55);
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExErkundungsergebnisse : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExErkundungsergebnisse();
|
||||
QString generateErkundungsergebnisse();
|
||||
|
||||
private slots:
|
||||
void testExErkundungsergebnisse();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
#include "ex_fh_feuerhalt.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include "msgcompares.h"
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExFeuerhalt::TestExFeuerhalt()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExFeuerhalt::generateFeuerhalt()
|
||||
{
|
||||
AdlerJson::ExFeuerhalt req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateFeuerhalt(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExFeuerhalt::testExFeuerhalt()
|
||||
{
|
||||
qDebug() << "------------------------";
|
||||
qDebug() << "--- EX-FH Feuer HALT ---";
|
||||
QString feuerhaltMessage = generateFeuerhalt();
|
||||
qDebug() << "feuerhaltMessage=" << feuerhaltMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(feuerhaltMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::FeuerHaltDaten feuerHaltDaten;
|
||||
bool bOk;
|
||||
|
||||
|
||||
AdlerJson::feuerHaltDatenFromJson(dataObj, feuerHaltDaten, bOk);
|
||||
MsgCompares::compareFeuerHaltDaten(feuerHaltDaten);
|
||||
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExFeuerhalt : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExFeuerhalt();
|
||||
QString generateFeuerhalt();
|
||||
|
||||
private slots:
|
||||
void testExFeuerhalt();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
#include "ex_flugbahnberechnung.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include "msgcompares.h"
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExFlugbahnberechnung::TestExFlugbahnberechnung()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExFlugbahnberechnung::generateFlugbahnberechnung()
|
||||
{
|
||||
AdlerJson::ExFlugbahnberechnung req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateFlugbahnberechnung(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExFlugbahnberechnung::testExFlugbahnberechnung()
|
||||
{
|
||||
qDebug() << "-----------------------------";
|
||||
qDebug() << "--- EX-Flugbahnberechnung ---";
|
||||
QString flugbahnberechnungMessage = generateFlugbahnberechnung();
|
||||
qDebug() << "EX-Flugbahnberechnung=" << flugbahnberechnungMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(flugbahnberechnungMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::ExFlugbahnberechnung exFlugbahnberechnung;
|
||||
|
||||
bool bOk;
|
||||
|
||||
AdlerJson::exFlugbahnberechnungDatenFromJson(dataObj, exFlugbahnberechnung.flugbahnberechnungDaten, bOk);
|
||||
MsgCompares::compareFlugbahnberechnungDaten(exFlugbahnberechnung.flugbahnberechnungDaten);
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
//enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExFlugbahnberechnung : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExFlugbahnberechnung();
|
||||
QString generateFlugbahnberechnung();
|
||||
|
||||
private slots:
|
||||
void testExFlugbahnberechnung();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
#include "ex_flugbahndaten.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include "msgcompares.h"
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExFlugbahndaten::TestExFlugbahndaten()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExFlugbahndaten::generateFlugbahndaten()
|
||||
{
|
||||
AdlerJson::ExFlugbahndaten req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateFlugbahndaten(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExFlugbahndaten::testExFlugbahndaten()
|
||||
{
|
||||
qDebug() << "-----------------------------";
|
||||
qDebug() << "--- EX-Flugbahndaten ---";
|
||||
QString flugbahndatenMessage = generateFlugbahndaten();
|
||||
qDebug() << "EX-Flugbahndaten=" << flugbahndatenMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(flugbahndatenMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::ExFlugbahndaten exFlugbahndaten;
|
||||
|
||||
bool bOk;
|
||||
|
||||
AdlerJson::flugbahndatenFromJson(dataObj, exFlugbahndaten.flugbahndaten, bOk);
|
||||
MsgCompares::compareFlugbahndaten(exFlugbahndaten.flugbahndaten);
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
//enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExFlugbahndaten : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExFlugbahndaten();
|
||||
QString generateFlugbahndaten();
|
||||
|
||||
private slots:
|
||||
void testExFlugbahndaten();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
#include "ex_fq_abgefeuert.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExFqAbgefeuert::TestExFqAbgefeuert()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExFqAbgefeuert::generateAbgefeuertMessage()
|
||||
{
|
||||
AdlerJson::ExAbgefeuert req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateAbgefeuert(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExFqAbgefeuert::testExFqAbgefeuert()
|
||||
{
|
||||
qDebug() << "---------------------------------------";
|
||||
qDebug() << "--- EX-FQ(AF) Abgefeuert ---";
|
||||
QString abgefeuertMessage = generateAbgefeuertMessage();
|
||||
qDebug() << "abgefeuertMessage=" << abgefeuertMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(abgefeuertMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::Feuerkampfdaten feuerkampfdaten;
|
||||
bool bOk;
|
||||
|
||||
|
||||
AdlerJson::feuerkampfdatenFromJson(dataObj, feuerkampfdaten, bOk);
|
||||
|
||||
QCOMPARE(feuerkampfdaten.feuerkampfReferenz, QStringLiteral("feuerkampfReferenz 1"));
|
||||
QCOMPARE(feuerkampfdaten.verein, QStringLiteral("AB7X"));
|
||||
QCOMPARE(feuerkampfdaten.kenner, ProjectDataManagement::L27_EffectorId::B1);
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExFqAbgefeuert : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExFqAbgefeuert();
|
||||
QString generateAbgefeuertMessage();
|
||||
|
||||
private slots:
|
||||
void testExFqAbgefeuert();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
#include "ex_fq_feuerbereit.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExFqFeuerbereit::TestExFqFeuerbereit()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExFqFeuerbereit::generateFeuerbereitMessage()
|
||||
{
|
||||
AdlerJson::ExFeuerbereit req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateFeuerbereit(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExFqFeuerbereit::testExFqFeuerbereit()
|
||||
{
|
||||
qDebug() << "---------------------------------------";
|
||||
qDebug() << "--- EX-FQ(FB) Feuerbereit ---";
|
||||
QString feuerbereitMessage = generateFeuerbereitMessage();
|
||||
qDebug() << "feuerbereitMessage=" << feuerbereitMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(feuerbereitMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::Feuerkampfdaten feuerkampfdaten;
|
||||
bool bOk;
|
||||
|
||||
|
||||
AdlerJson::feuerkampfdatenFromJson(dataObj, feuerkampfdaten, bOk);
|
||||
|
||||
QCOMPARE(feuerkampfdaten.feuerkampfReferenz, QStringLiteral("feuerkampfReferenz 1"));
|
||||
QCOMPARE(feuerkampfdaten.verein, QStringLiteral("AB7X"));
|
||||
QCOMPARE(feuerkampfdaten.kenner, ProjectDataManagement::L27_EffectorId::B1);
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExFqFeuerbereit : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExFqFeuerbereit();
|
||||
QString generateFeuerbereitMessage();
|
||||
|
||||
private slots:
|
||||
void testExFqFeuerbereit();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
#include "ex_fq_feuerkampf.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include "msgcompares.h"
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExFqFeuerkampf::TestExFqFeuerkampf()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExFqFeuerkampf::generateFeuerkampf()
|
||||
{
|
||||
AdlerJson::ExFeuerkampf req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateFeuerkampf(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExFqFeuerkampf::testExFqFeuerkampf()
|
||||
{
|
||||
qDebug() << "-------------------------------";
|
||||
qDebug() << "--- EX-FQ(BA-BB) Feuerkampf ---";
|
||||
QString feuerkampfMessage = generateFeuerkampf();
|
||||
qDebug() << "feuerkampfMessage=" << feuerkampfMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(feuerkampfMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExFqFeuerkampf : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExFqFeuerkampf();
|
||||
QString generateFeuerkampf();
|
||||
|
||||
private slots:
|
||||
void testExFqFeuerkampf();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
#include "ex_fq_feuern.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExFqFeuern::TestExFqFeuern()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExFqFeuern::generateFeuernMessage()
|
||||
{
|
||||
AdlerJson::ExFeuern req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateFeuern(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExFqFeuern::testExFqFeuern()
|
||||
{
|
||||
qDebug() << "---------------------------------------";
|
||||
qDebug() << "--- EX-FQ(FN) Feuern ---";
|
||||
QString feuernMessage = generateFeuernMessage();
|
||||
qDebug() << "feuerbereitMessage=" << feuernMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(feuernMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::Feuerkampfdaten feuerkampfdaten;
|
||||
bool bOk;
|
||||
|
||||
|
||||
AdlerJson::feuerkampfdatenFromJson(dataObj, feuerkampfdaten, bOk);
|
||||
|
||||
QCOMPARE(feuerkampfdaten.feuerkampfReferenz, QStringLiteral("feuerkampfReferenz 1"));
|
||||
QCOMPARE(feuerkampfdaten.verein, QStringLiteral("AB7X"));
|
||||
QCOMPARE(feuerkampfdaten.kenner, ProjectDataManagement::L27_EffectorId::B1);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExFqFeuern : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExFqFeuern();
|
||||
QString generateFeuernMessage();
|
||||
|
||||
private slots:
|
||||
void testExFqFeuern();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
#include "ex_fq_vollzugsmeldung.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExFqVollzugsmeldung::TestExFqVollzugsmeldung()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExFqVollzugsmeldung::generateVollzugsmeldungMessage()
|
||||
{
|
||||
AdlerJson::ExVollzugsmeldung req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateVollzugsmeldung(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExFqVollzugsmeldung::testExFqVollzugsmeldung()
|
||||
{
|
||||
qDebug() << "---------------------------------------";
|
||||
qDebug() << "--- EX-FQ(VM) Vollzugsmeldung ---";
|
||||
QString vollzugsmeldungMessage = generateVollzugsmeldungMessage();
|
||||
qDebug() << "generateVollzugsmeldungMessage=" << vollzugsmeldungMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(vollzugsmeldungMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::Feuerkampfdaten feuerkampfdaten;
|
||||
bool bOk;
|
||||
|
||||
|
||||
AdlerJson::feuerkampfdatenFromJson(dataObj, feuerkampfdaten, bOk);
|
||||
|
||||
QCOMPARE(feuerkampfdaten.feuerkampfReferenz, QStringLiteral("feuerkampfReferenz 1"));
|
||||
QCOMPARE(feuerkampfdaten.verein, QStringLiteral("AB7X"));
|
||||
qDebug() << "L27_EffectorId=" << AdlerJson::waffensystemkennerMap.key(feuerkampfdaten.kenner);
|
||||
QCOMPARE(feuerkampfdaten.kenner, ProjectDataManagement::L27_EffectorId::B1);
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExFqVollzugsmeldung : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExFqVollzugsmeldung();
|
||||
QString generateVollzugsmeldungMessage();
|
||||
|
||||
private slots:
|
||||
void testExFqVollzugsmeldung();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
#include "ex_fq_wirkfeldplanung.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include "msgcompares.h"
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExFqWirkfeldplanung::TestExFqWirkfeldplanung()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExFqWirkfeldplanung::generateWirkfeldplanungMessage()
|
||||
{
|
||||
AdlerJson::ExAwesPlanning req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateEXFQBABBFK(req);
|
||||
req.wirkfeldplanungData.feuerkampfReferenz = QStringLiteral("REF:2078669041");
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExFqWirkfeldplanung::testExFqWirkfeldplanung()
|
||||
{
|
||||
qDebug() << "---------------------------------------";
|
||||
qDebug() << "--- EX-FQ(BA-BB-FK) Wirkfeldplanung ---";
|
||||
QString wirkfeldplanungMessage = generateWirkfeldplanungMessage();
|
||||
qDebug() << "wirkfeldplanungMessage= " << wirkfeldplanungMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(wirkfeldplanungMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::WirkfeldplanungData wirkfeldplanungData;
|
||||
bool bOk;
|
||||
|
||||
|
||||
AdlerJson::wirkfeldplanungDataFromJson(dataObj, wirkfeldplanungData, bOk);
|
||||
|
||||
QString messageFromJson = QString::fromUtf8(QJsonDocument(dataObj).toJson());
|
||||
qDebug() << "wirkfeldplanungMessage From Json= " << messageFromJson;
|
||||
|
||||
QCOMPARE(wirkfeldplanungData.feuerkampfReferenz, QStringLiteral("REF:2078669041") );
|
||||
|
||||
MsgCompares::compareZieldaten(wirkfeldplanungData.zieldaten);
|
||||
|
||||
QCOMPARE(wirkfeldplanungData.abfeuerungsArt, AdlerJson::Abfeuerungsart::A);
|
||||
QCOMPARE(wirkfeldplanungData.forderung, ProjectDataManagement::L7_Request::VER);
|
||||
QCOMPARE(wirkfeldplanungData.dauer, 30);
|
||||
|
||||
qDebug() << "--- Feuerkommandos: ---";
|
||||
MsgCompares::compareFeuerkommando(wirkfeldplanungData.feuerkommando);
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExFqWirkfeldplanung : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExFqWirkfeldplanung();
|
||||
QString generateWirkfeldplanungMessage();
|
||||
|
||||
private slots:
|
||||
void testExFqWirkfeldplanung();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
#include "ex_hq_fuehrungslinien.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include "msgcompares.h"
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExHqFuehrungslinien::TestExHqFuehrungslinien()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExHqFuehrungslinien::generateFuehrungslinien()
|
||||
{
|
||||
AdlerJson::ExHqFuehrungslinien req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateFuehrungslinien(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExHqFuehrungslinien::testExHqFuehrungslinien()
|
||||
{
|
||||
qDebug() << "-------------------------------------------";
|
||||
qDebug() << "--- EX-HQ(G) Fuehrungslinien und Grenzen ---";
|
||||
QString fuehrungslinienMessage = generateFuehrungslinien();
|
||||
qDebug() << "EX-HQ(G) Fuehrungslinien und Grenzen=" << fuehrungslinienMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(fuehrungslinienMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::ExHqFuehrungslinien exHqFuehrungslinien;
|
||||
|
||||
bool bOk;
|
||||
|
||||
AdlerJson::fuehrungsdatenFromJson(dataObj, exHqFuehrungslinien.fuehrungsdaten, bOk);
|
||||
MsgCompares::compareFuehrungsdaten(exHqFuehrungslinien.fuehrungsdaten);
|
||||
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
//enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExHqFuehrungslinien : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExHqFuehrungslinien();
|
||||
QString generateFuehrungslinien();
|
||||
|
||||
private slots:
|
||||
void testExHqFuehrungslinien();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
Executable
+46
@@ -0,0 +1,46 @@
|
||||
#include "ex_hq_koordinierungsmassnahmen.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include "msgcompares.h"
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExHqKoordinierungsmassnahmen::TestExHqKoordinierungsmassnahmen()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExHqKoordinierungsmassnahmen::generateKoordinierungsmassnahmen()
|
||||
{
|
||||
AdlerJson::ExHqKoordinierungsmassnahmen req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateKoordinierungsmassnahmen(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExHqKoordinierungsmassnahmen::testExHqKoordinierungsmassnahmen()
|
||||
{
|
||||
qDebug() << "-----------------------------------------";
|
||||
qDebug() << "--- EX-HQ(K) Koordinierungsmassnahmen ---";
|
||||
QString koordinierungsmassnahmenMessage = generateKoordinierungsmassnahmen();
|
||||
qDebug() << "EX-HQ(K) Koordinierungsmassnahmen=" << koordinierungsmassnahmenMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(koordinierungsmassnahmenMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::ExHqKoordinierungsmassnahmen exHqKoordinierungsmassnahmen;
|
||||
|
||||
bool bOk;
|
||||
|
||||
AdlerJson::koordinierungsdatenFromJson(dataObj, exHqKoordinierungsmassnahmen.koordinierungsdaten, bOk);
|
||||
MsgCompares::compareKoordinierungsdaten(exHqKoordinierungsmassnahmen.koordinierungsdaten);
|
||||
|
||||
|
||||
}
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExHqKoordinierungsmassnahmen : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExHqKoordinierungsmassnahmen();
|
||||
QString generateKoordinierungsmassnahmen();
|
||||
|
||||
private slots:
|
||||
void testExHqKoordinierungsmassnahmen();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
#include "ex_mq_manuelle_quittung.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include "msgcompares.h"
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExMqManuelleQuittung::TestExMqManuelleQuittung()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExMqManuelleQuittung::generateManuelleQuittung()
|
||||
{
|
||||
AdlerJson::ExMqManuelleQuittung req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateManuelleQuittung(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExMqManuelleQuittung::testExMqManuelleQuittung()
|
||||
{
|
||||
qDebug() << "-------------------------------";
|
||||
qDebug() << "--- EX-MQ Manuelle Quittung ---";
|
||||
QString manuelleQuittungMessage = generateManuelleQuittung();
|
||||
qDebug() << "EX-MQ Manuelle Quittung=" << manuelleQuittungMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(manuelleQuittungMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::ExMqManuelleQuittung exMqManuelleQuittung;
|
||||
|
||||
bool bOk;
|
||||
|
||||
AdlerJson::mqManuelleQuittungDatenFromJson(dataObj, exMqManuelleQuittung.mqManuelleQuittungDaten, bOk);
|
||||
MsgCompares::compareManuelleQuittungDaten(exMqManuelleQuittung.mqManuelleQuittungDaten);
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
//enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExMqManuelleQuittung : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExMqManuelleQuittung();
|
||||
QString generateManuelleQuittung();
|
||||
|
||||
private slots:
|
||||
void testExMqManuelleQuittung();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
#include "ex_sq_stellungsmeldung_fs.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include "msgcompares.h"
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExStellungsmeldungFS::TestExStellungsmeldungFS()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExStellungsmeldungFS::generateStellungFS()
|
||||
{
|
||||
AdlerJson::ExFeuerstellungFS req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateStellungsmeldungFS(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExStellungsmeldungFS::testExStellungsmeldungFS()
|
||||
{
|
||||
qDebug() << "------------------------------------------------";
|
||||
qDebug() << "--- EX-SQ(FS) Stellungsmeldung Feuerstellung ---";
|
||||
QString stellungFSMessage = generateStellungFS();
|
||||
qDebug() << "EX-SQ(FS) Stellungsmeldung Feuerstellung=" << stellungFSMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(stellungFSMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::Feuerstellungsdaten feuerstellungsdaten;
|
||||
bool bOk;
|
||||
|
||||
|
||||
AdlerJson::feuerstellungsdatenFromJson(dataObj, feuerstellungsdaten, bOk);
|
||||
MsgCompares::compareFeuerstellungsdaten(feuerstellungsdaten);
|
||||
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExStellungsmeldungFS : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExStellungsmeldungFS();
|
||||
QString generateStellungFS();
|
||||
|
||||
private slots:
|
||||
void testExStellungsmeldungFS();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
#include "ex_sq_stellungsmeldung_lp.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include "msgcompares.h"
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExStellungsmeldungLP::TestExStellungsmeldungLP()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExStellungsmeldungLP::generateStellungLP()
|
||||
{
|
||||
AdlerJson::ExFeuerstellungLP req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateStellungsmeldungLP(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExStellungsmeldungLP::testExStellungsmeldungLP()
|
||||
{
|
||||
qDebug() << "--------------------------------------------";
|
||||
qDebug() << "--- EX-SQ(LP) Stellungsmeldung Ladeplatz ---";
|
||||
QString stellungLPMessage = generateStellungLP();
|
||||
qDebug() << "EX-SQ(LP) Stellungsmeldung Ladeplatz=" << stellungLPMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(stellungLPMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::Ladeplatzdaten ladeplatzdaten;
|
||||
bool bOk;
|
||||
|
||||
|
||||
AdlerJson::ladeplatzdatenFromJson(dataObj, ladeplatzdaten, bOk);
|
||||
MsgCompares::compareLadeplatzdaten(ladeplatzdaten);
|
||||
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExStellungsmeldungLP : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExStellungsmeldungLP();
|
||||
QString generateStellungLP();
|
||||
|
||||
private slots:
|
||||
void testExStellungsmeldungLP();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
#include "ex_sq_stellungsmeldung_ws.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include "msgcompares.h"
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExStellungsmeldungWS::TestExStellungsmeldungWS()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExStellungsmeldungWS::generateStellungWS()
|
||||
{
|
||||
AdlerJson::ExFeuerstellungWS req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateStellungsmeldungWS(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExStellungsmeldungWS::testExStellungsmeldungWS()
|
||||
{
|
||||
qDebug() << "------------------------------------------------";
|
||||
qDebug() << "--- EX-SQ(WS) Stellungsmeldung Waffensystem ---";
|
||||
QString stellungWSMessage = generateStellungWS();
|
||||
qDebug() << "EX-SQ(WS) Stellungsmeldung Waffensystem=" << stellungWSMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(stellungWSMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::Waffensystemdaten waffensystemdaten;
|
||||
bool bOk;
|
||||
|
||||
|
||||
AdlerJson::waffensystemdatenFromJson(dataObj, waffensystemdaten, bOk);
|
||||
MsgCompares::compareWaffensystemdaten(waffensystemdaten);
|
||||
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExStellungsmeldungWS : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExStellungsmeldungWS();
|
||||
QString generateStellungWS();
|
||||
|
||||
private slots:
|
||||
void testExStellungsmeldungWS();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
#include "ex_sq_stellungswechsel.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include "msgcompares.h"
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExStellungswechsel::TestExStellungswechsel()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExStellungswechsel::generateStellungswechsel()
|
||||
{
|
||||
AdlerJson::ExStellungswechsel req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateStellungswechsel(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExStellungswechsel::testExStellungswechsel()
|
||||
{
|
||||
qDebug() << "---------------------------";
|
||||
qDebug() << "--- EX-Stellungswechsel ---";
|
||||
QString stellungswechselMessage = generateStellungswechsel();
|
||||
qDebug() << "EX-Stellungswechsel=" << stellungswechselMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(stellungswechselMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::Stellungswechseldaten stellungswechseldaten;
|
||||
|
||||
bool bOk;
|
||||
|
||||
|
||||
AdlerJson::stellungswechseldatenFromJson(dataObj, stellungswechseldaten, bOk);
|
||||
MsgCompares::compareStellungswechseldaten(stellungswechseldaten);
|
||||
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExStellungswechsel : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExStellungswechsel();
|
||||
QString generateStellungswechsel();
|
||||
|
||||
private slots:
|
||||
void testExStellungswechsel();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
#include "ex_status.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
|
||||
TestExStatus::TestExStatus()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Text Message received: {
|
||||
// "data": {
|
||||
// "adlerVerbund": true,
|
||||
// "partyId": 2,
|
||||
// "szenar": "UI Test"
|
||||
// },
|
||||
// "reciver": "EXCON@GUEZ.DE",
|
||||
// "referenceUuid": "",
|
||||
// "sender": "SAA@GUEZ.DE",
|
||||
// "timestamp": {
|
||||
// "jahr": 2025,
|
||||
// "minuten": 56,
|
||||
// "monat": 3,
|
||||
// "sekunden": 9,
|
||||
// "stunden": 12,
|
||||
// "tag": 18,
|
||||
// "zdm": "ZDM",
|
||||
// "zds": "ZDS",
|
||||
// "zvz": "ZVz"
|
||||
// },
|
||||
// "typeId": 1,
|
||||
// "typeName": "EX-Anmeldung",
|
||||
// "uuid": "{30eb8761-7d1b-4e37-8a51-6c1995be9825}",
|
||||
// "version": ""
|
||||
// }
|
||||
|
||||
|
||||
QString TestExStatus::generateStatusMessage()
|
||||
{
|
||||
AdlerJson::EXStatus req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateStatusMessage(req, AdlerJson::Szenarstatus::Aktiv);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
qDebug() << "message=" << message;
|
||||
qCritical().noquote() << "message=" << message;
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExStatus::testExStatus()
|
||||
{
|
||||
qDebug() << "----------------------------";
|
||||
qDebug() << "--- EX-Status ---";
|
||||
QString statusMessage = generateStatusMessage();
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(statusMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::EXStatus status;
|
||||
bool bOk;
|
||||
|
||||
|
||||
AdlerJson::statusFromJson(dataObj, status, bOk);
|
||||
QCOMPARE(status.status, AdlerJson::Szenarstatus::Aktiv );
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExStatus : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExStatus();
|
||||
QString generateStatusMessage();
|
||||
|
||||
private slots:
|
||||
void testExStatus();
|
||||
|
||||
private:
|
||||
int m_saaId {0};
|
||||
};
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
#include "ex_tq_technische_quittung.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <QJsonDocument>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
#include "msgcompares.h"
|
||||
|
||||
#include <AdlerJson/generatetelegrams.h>
|
||||
|
||||
TestExTqTechnischeQuittung::TestExTqTechnischeQuittung()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
QString TestExTqTechnischeQuittung::generateTechnischeQuittung()
|
||||
{
|
||||
AdlerJson::ExTqTechnischeQuittung req;
|
||||
|
||||
GenerateTelegrams::addHeaderData(req, m_saaId);
|
||||
GenerateTelegrams::generateTechnischeQuittung(req);
|
||||
|
||||
QJsonObject messageObj =req.toJson();
|
||||
QString message = QString::fromUtf8(QJsonDocument(messageObj).toJson());
|
||||
return message;
|
||||
}
|
||||
|
||||
void TestExTqTechnischeQuittung::testExTqTechnischeQuittung()
|
||||
{
|
||||
qDebug() << "------------------------------------";
|
||||
qDebug() << "--- EX-TQ Technische Quittierung ---";
|
||||
QString fuehrungslinienMessage = generateTechnischeQuittung();
|
||||
qDebug() << "EX-TQ Technische Quittierung=" << fuehrungslinienMessage;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(fuehrungslinienMessage.toUtf8());
|
||||
const QJsonObject jsonObj = jsonDoc.object();
|
||||
QJsonObject dataObj = jsonObj[AdlerJson::JsonKeys::DATA()].toObject();
|
||||
|
||||
AdlerJson::ExTqTechnischeQuittung exTqTechnischeQuittung;
|
||||
|
||||
bool bOk;
|
||||
|
||||
AdlerJson::technischeDatenFromJson(dataObj, exTqTechnischeQuittung.technischeDaten, bOk);
|
||||
MsgCompares::compareTechnischeDaten(exTqTechnischeQuittung.technischeDaten);
|
||||
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include<QString>
|
||||
#include <QtTest/QTest>
|
||||
|
||||
namespace AdlerJson {
|
||||
struct EXTelegramBase;
|
||||
//enum class Szenarstatus;
|
||||
}
|
||||
|
||||
class TestExTqTechnischeQuittung : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestExTqTechnischeQuittung();
|
||||
QString generateTechnischeQuittung();
|
||||
|
||||
private slots:
|
||||
void testExTqTechnischeQuittung();
|
||||
|
||||
private:
|
||||
|
||||
int m_partyId {0};
|
||||
int m_saaId {1};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,329 @@
|
||||
#include "msgcompares.h"
|
||||
#include "../telegrams.h"
|
||||
|
||||
#include <QtTest/QTest>
|
||||
|
||||
MsgCompares::MsgCompares()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void MsgCompares::compareZieldaten(const AdlerJson::Zieldaten& zieldaten)
|
||||
{
|
||||
qDebug() << "--- Begin compareZieldaten EX-L12 ---";
|
||||
QCOMPARE(zieldaten.nummer, 7);
|
||||
QCOMPARE(zieldaten.geometrie, ProjectDataManagement::L4_TargetGeometry::Point);
|
||||
qDebug() << "--- koordinate ---";
|
||||
QCOMPARE(zieldaten.koordinate.hoehe, 0);
|
||||
QCOMPARE(zieldaten.koordinate.koordinate.latitude, 53.0672);
|
||||
QCOMPARE(zieldaten.koordinate.koordinate.longitude, 8.86687);
|
||||
qDebug() << "--- relativKoordinate ---";
|
||||
QCOMPARE(zieldaten.relativKoordinate.hoehe, 5);
|
||||
QCOMPARE(zieldaten.relativKoordinate.koordinate.latitude, 53.8);
|
||||
QCOMPARE(zieldaten.relativKoordinate.koordinate.longitude, 8.8);
|
||||
|
||||
QCOMPARE(zieldaten.breiteRadius, 25);
|
||||
QCOMPARE(zieldaten.tiefe, 26);
|
||||
QCOMPARE(zieldaten.zielachse, 17);
|
||||
QCOMPARE(zieldaten.zog, 7);
|
||||
QCOMPARE(zieldaten.elemente, 1);
|
||||
QCOMPARE(zieldaten.typ, QStringLiteral("PERS"));
|
||||
QCOMPARE(zieldaten.subTyp, QStringLiteral("APERS"));
|
||||
qDebug() << "--- End compareZieldaten EX-L12 ---";
|
||||
}
|
||||
|
||||
void MsgCompares::compareFlugbahnpunkt0(const AdlerJson::Flugbahnpunkt &flugbahnpunkt)
|
||||
{
|
||||
QCOMPARE(flugbahnpunkt.xRelativ, 200.0);
|
||||
QCOMPARE(flugbahnpunkt.yRelativ, 77.0);
|
||||
QCOMPARE(flugbahnpunkt.zRelativ, 300.0);
|
||||
QCOMPARE(flugbahnpunkt.zeit, 17.0);
|
||||
}
|
||||
void MsgCompares::compareFlugbahnpunkt1(const AdlerJson::Flugbahnpunkt &flugbahnpunkt)
|
||||
{
|
||||
QCOMPARE(flugbahnpunkt.xRelativ, 900.0);
|
||||
QCOMPARE(flugbahnpunkt.yRelativ, 177.0);
|
||||
QCOMPARE(flugbahnpunkt.zRelativ, 700.0);
|
||||
QCOMPARE(flugbahnpunkt.zeit, 19.0);
|
||||
}
|
||||
|
||||
void MsgCompares::compareStreuung(const AdlerJson::Streuungsdaten &streuung)
|
||||
{
|
||||
QCOMPARE(streuung.seitenstreuungH, 0.7);
|
||||
QCOMPARE(streuung.laengsstreuungH, 0.3);
|
||||
QCOMPARE(streuung.seitenstreuung, 0.7);
|
||||
QCOMPARE(streuung.laengsstreuung, 7.7);
|
||||
}
|
||||
|
||||
void MsgCompares::compareFeuerkommando(const AdlerJson::Feuerkommando &feuerkommando)
|
||||
{
|
||||
//QCOMPARE(feuerkommando.verein, QStringLiteral("AB7X"));
|
||||
QCOMPARE(feuerkommando.typ, ProjectDataManagement::L26_EffectingSystemType::RRohr);
|
||||
qDebug() << "feuerkommando.wirkmittel.size=" << feuerkommando.wirkmittel.size();
|
||||
AdlerJson::WirkmittelFeuerkommando wfk = feuerkommando.wirkmittel[0];
|
||||
QCOMPARE(wfk.kenner, ProjectDataManagement::L27_EffectorId::B1);
|
||||
AdlerJson::KoordinateMitHoehe ap = wfk.auftreffpunkt;
|
||||
QCOMPARE(ap.hoehe, 0);
|
||||
QCOMPARE(ap.koordinate.latitude, 53.0672);
|
||||
QCOMPARE(ap.koordinate.longitude, 8.86687);
|
||||
QCOMPARE(wfk.flugzeit, 30);
|
||||
QCOMPARE(wfk.gipfelhoehe, 377);
|
||||
QCOMPARE(wfk.schussrichtung, 177);
|
||||
|
||||
compareFlugbahnpunkt0(wfk.flugbahnpunkt[0]);
|
||||
compareFlugbahnpunkt1(wfk.flugbahnpunkt[1]);
|
||||
compareStreuung(wfk.streuung);
|
||||
|
||||
MsgCompares::compareFeuerkommandoGeschosse(wfk.geschoss);
|
||||
compareWirkmittelFeuerkommandoRakete (feuerkommando.wirkmittelRakete);
|
||||
}
|
||||
|
||||
void MsgCompares::compareWirkmittelFeuerkommandoRakete(const QVector<AdlerJson::WirkmittelFeuerkommandoRakete> &wfrs)
|
||||
{
|
||||
qDebug() << "compareFeuerkommando Rakete"
|
||||
<< ", wfrs.size=" << wfrs.size()
|
||||
<< ", wfrs[0].treffpunkte,size=" << wfrs[0].treffpunkte.size();
|
||||
|
||||
AdlerJson::Treffpunkt treffpunkt = wfrs[0].treffpunkte[0];
|
||||
QCOMPARE (treffpunkt.anzahl, 1);
|
||||
QCOMPARE (treffpunkt.koordinate.koordinate.latitude , 5.5);
|
||||
QCOMPARE (treffpunkt.koordinate.koordinate.longitude, 6.6);
|
||||
QCOMPARE (treffpunkt.koordinate.hoehe, 7);
|
||||
QCOMPARE (wfrs[0].kenner , ProjectDataManagement::L27_EffectorId::B1);
|
||||
QCOMPARE (wfrs[0].flugzeit, 456.3);
|
||||
QCOMPARE (wfrs[0].gipfelhoehe, 300);
|
||||
QCOMPARE (wfrs[0].schussrichtung, 30.0);
|
||||
QCOMPARE (wfrs[0].fallwinkel, 5);
|
||||
QCOMPARE (wfrs[0].anflug, ProjectDataManagement::L48_TrajectoryRocket::Nominal);
|
||||
}
|
||||
|
||||
void MsgCompares::compareFeuerkommandoGeschosse(const AdlerJson::FeuerkommandoGeschosse &feuerkommandoGeschosse)
|
||||
{
|
||||
QCOMPARE(feuerkommandoGeschosse.geschosssorte, QStringLiteral("Mine DM72"));
|
||||
QCOMPARE(feuerkommandoGeschosse.ladung, QStringLiteral("M DM72"));
|
||||
QCOMPARE(feuerkommandoGeschosse.zuender, QStringLiteral("Aufschlag BB DM371"));
|
||||
QCOMPARE(feuerkommandoGeschosse.zuenderFunktion, QStringLiteral("AZoV"));
|
||||
QCOMPARE(feuerkommandoGeschosse.zuenderZeit, 0);
|
||||
QCOMPARE(feuerkommandoGeschosse.anzahl, 7);
|
||||
QCOMPARE(feuerkommandoGeschosse.intervall, 1.0);
|
||||
|
||||
}
|
||||
|
||||
void MsgCompares::compareFeuerHaltDaten(const AdlerJson::FeuerHaltDaten &feuerHaltDaten)
|
||||
{
|
||||
QCOMPARE(feuerHaltDaten.kategorie, ProjectDataManagement::L22_FireHaltCategory::E);
|
||||
QCOMPARE(feuerHaltDaten.feuerkampfReferenz, QStringLiteral("feuerHaltDaten"));
|
||||
QCOMPARE(feuerHaltDaten.zpNummer, 5);
|
||||
QCOMPARE(feuerHaltDaten.koordinate.latitude, 53.37791);
|
||||
QCOMPARE(feuerHaltDaten.koordinate.longitude, 8.759);
|
||||
QCOMPARE(feuerHaltDaten.radius, 50);
|
||||
}
|
||||
|
||||
void MsgCompares::compareFeuerstellungsdatenKoordinaten(const QVector<AdlerJson::KoordinateMitHoehe> &koordinaten)
|
||||
{
|
||||
QCOMPARE(koordinaten[0].hoehe, 22);
|
||||
QCOMPARE(koordinaten[0].koordinate.latitude, 53.37792);
|
||||
QCOMPARE(koordinaten[0].koordinate.longitude, 8.760);
|
||||
QCOMPARE(koordinaten[1].hoehe, 23);
|
||||
QCOMPARE(koordinaten[1].koordinate.latitude, 53.37793);
|
||||
QCOMPARE(koordinaten[1].koordinate.longitude, 8.761);
|
||||
}
|
||||
|
||||
void MsgCompares::compareGeschosse(const QVector<AdlerJson::Geschoss> &geschosse)
|
||||
{
|
||||
QCOMPARE(geschosse[0].geschosssorte, QStringLiteral("Mine DM72"));
|
||||
QCOMPARE(geschosse[0].zuender, QStringLiteral("Doppel DM183"));
|
||||
QCOMPARE(geschosse[0].ladung, QStringLiteral("M DM72"));
|
||||
QCOMPARE(geschosse[0].anzahl, 6);
|
||||
|
||||
QCOMPARE(geschosse[1].geschosssorte, QStringLiteral("Leucht DM116"));
|
||||
QCOMPARE(geschosse[1].ladung, QStringLiteral("B L8A1"));
|
||||
QCOMPARE(geschosse[1].zuender, QStringLiteral("Aufschlag BB DM371"));
|
||||
QCOMPARE(geschosse[1].anzahl, 7);
|
||||
}
|
||||
|
||||
void MsgCompares::compareFeuerstellungsdaten(const AdlerJson::Feuerstellungsdaten &feuerstellungsdaten)
|
||||
{
|
||||
QCOMPARE(feuerstellungsdaten.typ, ProjectDataManagement::L26_EffectingSystemType::RRohr);
|
||||
QCOMPARE(feuerstellungsdaten.status, ProjectDataManagement::L28_Status::Einsatzbereit);
|
||||
QCOMPARE(feuerstellungsdaten.feuereinheit.verein, QStringLiteral("verein ExFeuerstellungFS"));
|
||||
QCOMPARE(feuerstellungsdaten.feuereinheit.r, 5);
|
||||
QCOMPARE(feuerstellungsdaten.feuereinheit.oi, ProjectDataManagement::L19_Oi::F3);
|
||||
QCOMPARE(feuerstellungsdaten.mittelpunkt.koordinate.latitude, 53.37791);
|
||||
QCOMPARE(feuerstellungsdaten.mittelpunkt.koordinate.longitude, 8.759);
|
||||
QCOMPARE(feuerstellungsdaten.mittelpunkt.hoehe, 20);
|
||||
MsgCompares::compareFeuerstellungsdatenKoordinaten(feuerstellungsdaten.koordinaten);
|
||||
MsgCompares::compareGeschosse(feuerstellungsdaten.geschosse);
|
||||
|
||||
}
|
||||
|
||||
void MsgCompares::compareWaffensystemdaten(const AdlerJson::Waffensystemdaten &waffensystemdaten)
|
||||
{
|
||||
QCOMPARE(waffensystemdaten.typ, ProjectDataManagement::L26_EffectingSystemType::RRohr);
|
||||
QCOMPARE(waffensystemdaten.kenner, ProjectDataManagement::L27_EffectorId::B1);
|
||||
QCOMPARE(waffensystemdaten.status, ProjectDataManagement::L28_Status::NichtEinsatzbereit);
|
||||
QCOMPARE(waffensystemdaten.einheit.verein, QStringLiteral("AB7X"));
|
||||
QCOMPARE(waffensystemdaten.einheit.r, 6);
|
||||
QCOMPARE(waffensystemdaten.einheit.oi, ProjectDataManagement::L19_Oi::F6);
|
||||
MsgCompares::compareGeschosse(waffensystemdaten.geschosse);
|
||||
QCOMPARE(waffensystemdaten.koordinate.koordinate.latitude, 53.088354);
|
||||
QCOMPARE(waffensystemdaten.koordinate.koordinate.longitude, 8.853092);
|
||||
QCOMPARE(waffensystemdaten.koordinate.hoehe, 20);
|
||||
|
||||
QCOMPARE(waffensystemdaten.wirkungsbereich.grundrichtung, 1);
|
||||
QCOMPARE(waffensystemdaten.wirkungsbereich.links, 2);
|
||||
QCOMPARE(waffensystemdaten.wirkungsbereich.rechts, 3);
|
||||
}
|
||||
|
||||
void MsgCompares::compareLadeplatzdaten(const AdlerJson::Ladeplatzdaten &ladeplatzdaten)
|
||||
{
|
||||
QCOMPARE(ladeplatzdaten.einheit.oi , ProjectDataManagement::L19_Oi::F3);
|
||||
QCOMPARE(ladeplatzdaten.einheit.r, 5);
|
||||
QCOMPARE(ladeplatzdaten.einheit.verein, QStringLiteral("verein StellungsmeldungLP"));
|
||||
QCOMPARE(ladeplatzdaten.koordinate.koordinate.latitude, 53.37791);
|
||||
QCOMPARE(ladeplatzdaten.koordinate.koordinate.longitude, 8.759);
|
||||
QCOMPARE(ladeplatzdaten.koordinate.hoehe, 20);
|
||||
MsgCompares::compareGeschosse(ladeplatzdaten.geschosse);
|
||||
}
|
||||
|
||||
void MsgCompares::compareStellungswechseldaten(const AdlerJson::Stellungswechseldaten &stellungswechseldaten)
|
||||
{
|
||||
QCOMPARE(stellungswechseldaten.oi, ProjectDataManagement::L19_Oi::F3);
|
||||
QCOMPARE(stellungswechseldaten.r, 5);
|
||||
QCOMPARE(stellungswechseldaten.verein, QStringLiteral("verein ExStellungswechsel"));
|
||||
}
|
||||
|
||||
void MsgCompares::compareZeitAb(const AdlerJson::Zeitangabe_DTG &zeit)
|
||||
{
|
||||
QCOMPARE(zeit.stunden, 5);
|
||||
QCOMPARE(zeit.minuten, 35);
|
||||
QCOMPARE(zeit.sekunden, 55);
|
||||
QCOMPARE(zeit.tag, 12);
|
||||
QCOMPARE(zeit.monat, 11);
|
||||
QCOMPARE(zeit.jahr, 2025);
|
||||
QCOMPARE(zeit.ZVz, QStringLiteral("ZVz"));
|
||||
QCOMPARE(zeit.ZDS, QStringLiteral("ZDS"));
|
||||
QCOMPARE(zeit.ZDM, QStringLiteral("ZDM"));
|
||||
}
|
||||
|
||||
void MsgCompares::compareZeitBis(const AdlerJson::Zeitangabe_DTG &zeit)
|
||||
{
|
||||
QCOMPARE(zeit.stunden, 5);
|
||||
QCOMPARE(zeit.minuten, 35);
|
||||
QCOMPARE(zeit.sekunden, 55);
|
||||
QCOMPARE(zeit.tag, 13);
|
||||
QCOMPARE(zeit.monat, 11);
|
||||
QCOMPARE(zeit.jahr, 2025);
|
||||
QCOMPARE(zeit.ZVz, QStringLiteral("ZVz"));
|
||||
QCOMPARE(zeit.ZDS, QStringLiteral("ZDS"));
|
||||
QCOMPARE(zeit.ZDM, QStringLiteral("ZDM"));
|
||||
}
|
||||
|
||||
void MsgCompares::compareKoordinaten(const QVector<AdlerJson::Koordinate> &koordinaten)
|
||||
{
|
||||
QCOMPARE ( koordinaten[0].latitude, 53.37792 );
|
||||
QCOMPARE ( koordinaten[0].longitude, 8.760 );
|
||||
QCOMPARE ( koordinaten[1].latitude, 53.37793 );
|
||||
QCOMPARE ( koordinaten[1].longitude, 8.761 );
|
||||
}
|
||||
|
||||
void MsgCompares::compareKoordinierungsdaten(const AdlerJson::Koordinierungsdaten &koordinierungsdaten)
|
||||
{
|
||||
QCOMPARE(koordinierungsdaten.art, ProjectDataManagement::L25_KindGuidingLine::NFA);
|
||||
QCOMPARE(koordinierungsdaten.name, QStringLiteral("Name ExHqKoordinierungsmassnahme"));
|
||||
QCOMPARE(koordinierungsdaten.truppenteil, QStringLiteral("Truppenteil ExHqKoordinierungsmassnahme"));
|
||||
compareZeitAb(koordinierungsdaten.ab);
|
||||
compareZeitBis(koordinierungsdaten.bis);
|
||||
compareKoordinaten(koordinierungsdaten.koordinaten);
|
||||
QCOMPARE(koordinierungsdaten.mittelpunkt.latitude, 53.37794);
|
||||
QCOMPARE(koordinierungsdaten.mittelpunkt.longitude, 8.762);
|
||||
QCOMPARE(koordinierungsdaten.radius, 66);
|
||||
QCOMPARE(koordinierungsdaten.maxGipfel, 123);
|
||||
}
|
||||
|
||||
void MsgCompares::compareFuehrungsdaten(const AdlerJson::Fuehrungsdaten &fuehrungsdaten)
|
||||
{
|
||||
QCOMPARE(fuehrungsdaten.art, AdlerJson::Art_L24::AO);
|
||||
QCOMPARE(fuehrungsdaten.name, QStringLiteral("Name EX-HQ(G) Führungslinien und Grenzen"));
|
||||
compareZeitAb(fuehrungsdaten.ab);
|
||||
compareZeitBis(fuehrungsdaten.bis);
|
||||
compareKoordinaten(fuehrungsdaten.koordinaten);
|
||||
QCOMPARE(fuehrungsdaten.linkerNachbar, QStringLiteral("linker Nachbar"));
|
||||
QCOMPARE(fuehrungsdaten.rechterNachbar, QStringLiteral("rechter Nachbar"));
|
||||
}
|
||||
|
||||
void MsgCompares::compareTechnischeDaten(const AdlerJson::TechnischeDaten &technischeDaten)
|
||||
{
|
||||
QCOMPARE(technischeDaten.status, AdlerJson::Status_L32::INV);
|
||||
QCOMPARE(technischeDaten.beschreibung, QStringLiteral("Beschreibung technischer Status"));
|
||||
}
|
||||
|
||||
void MsgCompares::compareFreitextDaten(const AdlerJson::FreitextDaten &freitextDaten)
|
||||
{
|
||||
QCOMPARE(freitextDaten.text, QStringLiteral("Freier Text"));
|
||||
}
|
||||
|
||||
void MsgCompares::compareManuelleQuittungDaten(const AdlerJson::ManuelleQuittungDaten &manuelleQuittungDaten)
|
||||
{
|
||||
QCOMPARE(manuelleQuittungDaten.feuerkampfreferenz, QStringLiteral("Manuelle Quittung"));
|
||||
}
|
||||
|
||||
void MsgCompares::compareFlugbahnberechnungDaten(const AdlerJson::FlugBerechnungsDaten &flugbahnberechnungDaten)
|
||||
{
|
||||
qDebug() << "compareFlugbahnberechnungDaten 1";
|
||||
QCOMPARE(flugbahnberechnungDaten.geschoss.geschosssorte, QStringLiteral("SMArt DM702"));
|
||||
qDebug() << "compareFlugbahnberechnungDaten 2";
|
||||
QCOMPARE(flugbahnberechnungDaten.geschoss.ladung, QStringLiteral("M DM72"));
|
||||
QCOMPARE(flugbahnberechnungDaten.geschoss.zuender, QStringLiteral("Aufschlag DM241"));
|
||||
QCOMPARE(flugbahnberechnungDaten.geschoss.zuenderFunktion, QStringLiteral("AZoV"));
|
||||
qDebug() << "compareFlugbahnberechnungDaten 3";
|
||||
//QCOMPARE(flugbahnberechnungDaten.geschoss.ladungsNummer, 4);
|
||||
QCOMPARE(flugbahnberechnungDaten.sprenghoehe, 0);
|
||||
qDebug() << "compareFlugbahnberechnungDaten 6";
|
||||
QCOMPARE(flugbahnberechnungDaten.standort.hoehe, 55);
|
||||
qDebug() << "compareFlugbahnberechnungDaten 7";
|
||||
QCOMPARE(flugbahnberechnungDaten.standort.koordinate.latitude, 53.37787);
|
||||
qDebug() << "compareFlugbahnberechnungDaten 8";
|
||||
QCOMPARE(flugbahnberechnungDaten.standort.koordinate.longitude, 8.7573);
|
||||
qDebug() << "compareFlugbahnberechnungDaten 9";
|
||||
QCOMPARE(flugbahnberechnungDaten.waffensystem, ProjectDataManagement::L26_EffectingSystemType::RRohr);
|
||||
qDebug() << "compareFlugbahnberechnungDaten 10";
|
||||
qDebug() << "winkelgruppe=" << AdlerJson::winkelgruppeMap.key(flugbahnberechnungDaten.winkelgruppe);
|
||||
QCOMPARE(flugbahnberechnungDaten.winkelgruppe, AdlerJson::Winkelgruppe::Untere);
|
||||
}
|
||||
|
||||
void MsgCompares::compareFlugbahndaten(const AdlerJson::Flugbahndaten &flugbahndaten)
|
||||
{
|
||||
qDebug() << "compareFlugbahndaten";
|
||||
QCOMPARE(flugbahndaten.fehlercode, AdlerJson::FlugbahnberechnungFehlercode::Ok);
|
||||
qDebug() << "flugbahndaten.zielkoordinate.hoehe = "<< flugbahndaten.zielkoordinate.hoehe;
|
||||
QCOMPARE(flugbahndaten.zielkoordinate.hoehe, 56);
|
||||
QCOMPARE(flugbahndaten.zielkoordinate.koordinate.latitude, 52.482048);
|
||||
QCOMPARE(flugbahndaten.zielkoordinate.koordinate.longitude, 11.583);
|
||||
QCOMPARE(flugbahndaten.waffensystem, ProjectDataManagement::L26_EffectingSystemType::RRohr);
|
||||
QCOMPARE(flugbahndaten.flugzeit, 300);
|
||||
QCOMPARE(flugbahndaten.gipfelhoehe, 200);
|
||||
QCOMPARE(flugbahndaten.schussrichtung, 45);
|
||||
QCOMPARE(flugbahndaten.fallwinkel, 55);
|
||||
|
||||
QCOMPARE(flugbahndaten.flugbahnpunkt[0].zeit, 1);
|
||||
QCOMPARE(flugbahndaten.flugbahnpunkt[0].xRelativ, 100);
|
||||
QCOMPARE(flugbahndaten.flugbahnpunkt[0].yRelativ, 200);
|
||||
QCOMPARE(flugbahndaten.flugbahnpunkt[0].zRelativ, 10);
|
||||
|
||||
QCOMPARE(flugbahndaten.flugbahnpunkt[1].zeit, 2);
|
||||
QCOMPARE(flugbahndaten.flugbahnpunkt[1].xRelativ, 200);
|
||||
QCOMPARE(flugbahndaten.flugbahnpunkt[1].yRelativ, 400);
|
||||
QCOMPARE(flugbahndaten.flugbahnpunkt[1].zRelativ, 20);
|
||||
|
||||
QCOMPARE(flugbahndaten.streuung.laengsstreuung, 2.2);
|
||||
QCOMPARE(flugbahndaten.streuung.seitenstreuung, 3.3);
|
||||
QCOMPARE(flugbahndaten.streuung.laengsstreuungH, 4.4);
|
||||
QCOMPARE(flugbahndaten.streuung.seitenstreuungH, 5.5);
|
||||
QCOMPARE(flugbahndaten.geschoss.geschosssorte, QStringLiteral("Spreng DM121"));
|
||||
QCOMPARE(flugbahndaten.geschoss.ladung, QStringLiteral("M DM72"));
|
||||
QCOMPARE(flugbahndaten.geschoss.ladungsNummer, 5);
|
||||
QCOMPARE(flugbahndaten.geschoss.zuender, QStringLiteral("Aufschlag DM241"));
|
||||
QCOMPARE(flugbahndaten.geschoss.zuenderFunktion, QStringLiteral("AZoV"));
|
||||
QCOMPARE(flugbahndaten.geschoss.zuenderZeit, 1000);
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
#ifndef MSGCOMPARES_H
|
||||
#define MSGCOMPARES_H
|
||||
|
||||
#include <AdlerJson/telegrams.h>
|
||||
|
||||
class MsgCompares
|
||||
{
|
||||
public:
|
||||
MsgCompares();
|
||||
|
||||
static void compareZieldaten(const AdlerJson::Zieldaten &zieldaten);
|
||||
static void compareZielmeldedaten(const AdlerJson::Zielmeldedaten &zielmeldedaten);
|
||||
static void compareFlugbahnpunkt0(const AdlerJson::Flugbahnpunkt &flugbahnpunkt);
|
||||
static void compareFlugbahnpunkt1(const AdlerJson::Flugbahnpunkt &flugbahnpunkt);
|
||||
static void compareStreuung(const AdlerJson::Streuungsdaten &streuung);
|
||||
static void compareFeuerkommando(const AdlerJson::Feuerkommando &feuerkommando);
|
||||
static void compareWirkmittelFeuerkommandoRakete(const QVector<AdlerJson::WirkmittelFeuerkommandoRakete> &wfrs);
|
||||
static void compareFeuerkommandoGeschosse(const AdlerJson::FeuerkommandoGeschosse &feuerkommandoGeschosse);
|
||||
static void compareFeuerHaltDaten(const AdlerJson::FeuerHaltDaten &feuerHaltDaten);
|
||||
static void compareFeuerstellungsdatenKoordinaten(const QVector<AdlerJson::KoordinateMitHoehe> &koordinaten);
|
||||
static void compareGeschosse(const QVector<AdlerJson::Geschoss> &geschosse);
|
||||
static void compareFeuerstellungsdaten(const AdlerJson::Feuerstellungsdaten &feuerstellungsdaten);
|
||||
static void compareWaffensystemdaten(const AdlerJson::Waffensystemdaten &waffensystemdaten);
|
||||
static void compareLadeplatzdaten(const AdlerJson::Ladeplatzdaten &ladeplatzdaten);
|
||||
static void compareStellungswechseldaten(const AdlerJson::Stellungswechseldaten &stellungswechseldaten);
|
||||
static void compareZeitAb(const AdlerJson::Zeitangabe_DTG &zeit);
|
||||
static void compareZeitBis(const AdlerJson::Zeitangabe_DTG &zeit);
|
||||
static void compareKoordinaten(const QVector<AdlerJson::Koordinate> &koordinaten);
|
||||
static void compareKoordinierungsdaten(const AdlerJson::Koordinierungsdaten &koordinierungsdaten);
|
||||
static void compareFuehrungsdaten(const AdlerJson::Fuehrungsdaten &fuehrungsdaten);
|
||||
static void compareTechnischeDaten(const AdlerJson::TechnischeDaten &technischeDaten);
|
||||
static void compareFreitextDaten(const AdlerJson::FreitextDaten &freitextDaten);
|
||||
static void compareManuelleQuittungDaten(const AdlerJson::ManuelleQuittungDaten &manuelleQuittungDaten);
|
||||
static void compareFlugbahnberechnungDaten(const AdlerJson::FlugBerechnungsDaten &flugbahnberechnungDaten);
|
||||
static void compareFlugbahndaten(const AdlerJson::Flugbahndaten &flugbahndaten);
|
||||
};
|
||||
|
||||
#endif // MSGCOMPARES_H
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
#include <QDebug>
|
||||
#include <nglapplication/nglcoreapplication.h>
|
||||
|
||||
#include <QJsonDocument>
|
||||
#include <QtTest/QTest>
|
||||
#include <AdlerJson/telegrams.h>
|
||||
|
||||
#include "ex_anmeldung.h"
|
||||
#include "ex_abmeldung.h"
|
||||
#include "ex_anmeldebestaetigung.h"
|
||||
#include "ex_status.h"
|
||||
#include "ex_fq_wirkfeldplanung.h"
|
||||
#include "ex_fq_feuerbereit.h"
|
||||
#include "ex_fq_feuern.h"
|
||||
#include "ex_fq_abgefeuert.h"
|
||||
#include "ex_fq_vollzugsmeldung.h"
|
||||
#include "ex_erkundungsanfrage.h"
|
||||
#include "ex_erkundungsergebnisse.h"
|
||||
#include "ex_fq_feuerkampf.h"
|
||||
#include "ex_fh_feuerhalt.h"
|
||||
#include "ex_sq_stellungsmeldung_fs.h"
|
||||
#include "ex_sq_stellungsmeldung_ws.h"
|
||||
#include "ex_sq_stellungsmeldung_lp.h"
|
||||
#include "ex_sq_stellungswechsel.h"
|
||||
#include "ex_hq_koordinierungsmassnahmen.h"
|
||||
#include "ex_hq_fuehrungslinien.h"
|
||||
#include "ex_tq_technische_quittung.h"
|
||||
#include "ex_aq_freitext.h"
|
||||
#include "ex_mq_manuelle_quittung.h"
|
||||
#include "ex_flugbahnberechnung.h"
|
||||
#include "ex_flugbahndaten.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int status = 0;
|
||||
status |= QTest::qExec(new TestExAnmeldung, argc, argv);
|
||||
status |= QTest::qExec(new TestExAbmeldung, argc, argv);
|
||||
status |= QTest::qExec(new TestExAnmeldebestaetigung, argc, argv);
|
||||
status |= QTest::qExec(new TestExStatus, argc, argv);
|
||||
status |= QTest::qExec(new TestExFqWirkfeldplanung, argc, argv); // EX-FQ(BA-BB-FK) 1000 Wirkfeldplanung
|
||||
status |= QTest::qExec(new TestExMqManuelleQuittung, argc, argv); // EX-MQ 1001 Manuelle Quittung
|
||||
status |= QTest::qExec(new TestExFqFeuerbereit, argc, argv); // EX-FQ(FB) 1002 Feuerbereit
|
||||
status |= QTest::qExec(new TestExFqFeuern, argc, argv); // EX-FQ(FN) 1003 Feuern
|
||||
status |= QTest::qExec(new TestExFqAbgefeuert, argc, argv); // EX-FQ(AF) 1004 Abgefeuert
|
||||
status |= QTest::qExec(new TestExFqVollzugsmeldung, argc, argv); // EX-FQ(VM) 1005 Vollzugsmeldung
|
||||
// status |= QTest::qExec(new TestExFqErkundungsanfrage, argc, argv);
|
||||
status |= QTest::qExec(new TestExFqFeuerkampf, argc, argv);
|
||||
status |= QTest::qExec(new TestExFeuerhalt, argc, argv); // EX-FH 1006 Feuer HALT / Einstellen
|
||||
status |= QTest::qExec(new TestExStellungsmeldungFS, argc, argv); // EX-SQ(FS) 2000 Stellungsmeldung Feuerstellung
|
||||
status |= QTest::qExec(new TestExStellungsmeldungWS, argc, argv); // EX-SQ(WS) 2001 Stellungsmeldung Waffensystem
|
||||
status |= QTest::qExec(new TestExStellungsmeldungLP, argc, argv); // EX-SQ(LP) 2002 Stellungsmeldung Ladeplatz
|
||||
status |= QTest::qExec(new TestExErkundungsergebnisse, argc, argv); // EX-Erkundungsergebnisse 5000 Senden Erkundungsergebnisse
|
||||
status |= QTest::qExec(new TestExStellungswechsel, argc, argv);
|
||||
status |= QTest::qExec(new TestExHqKoordinierungsmassnahmen, argc, argv); // EX-HQ(K) 3000 Führungslinien (Koordinierungsmaßnahmen zur Feuerunterstützung)
|
||||
status |= QTest::qExec(new TestExHqFuehrungslinien, argc, argv); // EX-HQ(G) 3001 Führungslinien und Grenzen
|
||||
status |= QTest::qExec(new TestExTqTechnischeQuittung, argc, argv);
|
||||
status |= QTest::qExec(new TestExAqFreitextmeldung, argc, argv); // EX-AQ 5001 Freitextmeldung
|
||||
status |= QTest::qExec(new TestExFlugbahnberechnung, argc, argv); // EX-Flugbahnberechnung 4001
|
||||
status |= QTest::qExec(new TestExFlugbahndaten, argc, argv); // EX-Flugbahndaten 4002
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
<!DOCTYPE Samples>
|
||||
<Samples>
|
||||
<Sample>
|
||||
<TopicName>LTS_ParticipantPosition</TopicName>
|
||||
<TypeName>ParticipantManagement::ParticipantPosition</TypeName>
|
||||
<Pause>1000</Pause>
|
||||
<DdsData count="10" type="ParticipantManagement::ParticipantPosition" topic="LTS_ParticipantPosition">
|
||||
<participantId>6</participantId>
|
||||
<participantTypeId>55</participantTypeId>
|
||||
<sampleTime>1712144768313</sampleTime>
|
||||
<pos count="3" type="Core::GeoPosition">
|
||||
<lon>0.15822</lon>
|
||||
<lat>0.92582</lat>
|
||||
<z>0</z>
|
||||
</pos>
|
||||
<partyId>2</partyId>
|
||||
<buildingId>0</buildingId>
|
||||
<roomId>0</roomId>
|
||||
<reportingSource>4</reportingSource>
|
||||
<mountedOn>0</mountedOn>
|
||||
<mountedParticipants count="1">
|
||||
<mountedParticipants.1>19</mountedParticipants.1>
|
||||
</mountedParticipants>
|
||||
</DdsData>
|
||||
</Sample>
|
||||
<Sample>
|
||||
<TopicName>LTS_ParticipantPosition</TopicName>
|
||||
<TypeName>ParticipantManagement::ParticipantPosition</TypeName>
|
||||
<Pause>1000</Pause>
|
||||
<DdsData count="10" type="ParticipantManagement::ParticipantPosition" topic="LTS_ParticipantPosition">
|
||||
<participantId>7</participantId>
|
||||
<participantTypeId>55</participantTypeId>
|
||||
<sampleTime>1712144770797</sampleTime>
|
||||
<pos count="3" type="Core::GeoPosition">
|
||||
<lon>0.15516</lon>
|
||||
<lat>0.92526</lat>
|
||||
<z>0</z>
|
||||
</pos>
|
||||
<partyId>2</partyId>
|
||||
<buildingId>0</buildingId>
|
||||
<roomId>0</roomId>
|
||||
<reportingSource>4</reportingSource>
|
||||
<mountedOn>0</mountedOn>
|
||||
<mountedParticipants count="1">
|
||||
<mountedParticipants.1>19</mountedParticipants.1>
|
||||
</mountedParticipants>
|
||||
</DdsData>
|
||||
</Sample>
|
||||
<Sample>
|
||||
<TopicName>LTS_ParticipantPosition</TopicName>
|
||||
<TypeName>ParticipantManagement::ParticipantPosition</TypeName>
|
||||
<Pause>1000</Pause>
|
||||
<DdsData count="10" type="ParticipantManagement::ParticipantPosition" topic="LTS_ParticipantPosition">
|
||||
<participantId>19</participantId>
|
||||
<participantTypeId>78</participantTypeId>
|
||||
<sampleTime>1712144810829</sampleTime>
|
||||
<pos count="3" type="Core::GeoPosition">
|
||||
<lon>0.155133</lon>
|
||||
<lat>0.925933</lat>
|
||||
<z>0</z>
|
||||
</pos>
|
||||
<partyId>2</partyId>
|
||||
<buildingId>0</buildingId>
|
||||
<roomId>0</roomId>
|
||||
<reportingSource>4</reportingSource>
|
||||
<mountedOn>0</mountedOn>
|
||||
</DdsData>
|
||||
</Sample>
|
||||
<Sample>
|
||||
<TopicName>LTS_ParticipantPosition</TopicName>
|
||||
<TypeName>ParticipantManagement::ParticipantPosition</TypeName>
|
||||
<Pause>1000</Pause>
|
||||
<DdsData count="10" type="ParticipantManagement::ParticipantPosition" topic="LTS_ParticipantPosition">
|
||||
<participantId>19</participantId>
|
||||
<participantTypeId>78</participantTypeId>
|
||||
<sampleTime>1712144810829</sampleTime>
|
||||
<pos count="3" type="Core::GeoPosition">
|
||||
<lon>0.155122</lon>
|
||||
<lat>0.925922</lat>
|
||||
<z>0</z>
|
||||
</pos>
|
||||
<partyId>2</partyId>
|
||||
<buildingId>0</buildingId>
|
||||
<roomId>0</roomId>
|
||||
<reportingSource>4</reportingSource>
|
||||
<mountedOn>0</mountedOn>
|
||||
</DdsData>
|
||||
</Sample>
|
||||
<Sample>
|
||||
<TopicName>LTS_ParticipantPosition</TopicName>
|
||||
<TypeName>ParticipantManagement::ParticipantPosition</TypeName>
|
||||
<Pause>1000</Pause>
|
||||
<DdsData count="10" type="ParticipantManagement::ParticipantPosition" topic="LTS_ParticipantPosition">
|
||||
<participantId>6</participantId>
|
||||
<participantTypeId>55</participantTypeId>
|
||||
<sampleTime>1712144768313</sampleTime>
|
||||
<pos count="3" type="Core::GeoPosition">
|
||||
<lon>0.15522</lon>
|
||||
<lat>0.92522</lat>
|
||||
<z>0</z>
|
||||
</pos>
|
||||
<partyId>2</partyId>
|
||||
<buildingId>0</buildingId>
|
||||
<roomId>0</roomId>
|
||||
<reportingSource>4</reportingSource>
|
||||
<mountedOn>0</mountedOn>
|
||||
</DdsData>
|
||||
</Sample>
|
||||
<Sample>
|
||||
<TopicName>LTS_ParticipantPosition</TopicName>
|
||||
<TypeName>ParticipantManagement::ParticipantPosition</TypeName>
|
||||
<Pause>1000</Pause>
|
||||
<DdsData count="10" type="ParticipantManagement::ParticipantPosition" topic="LTS_ParticipantPosition">
|
||||
<participantId>7</participantId>
|
||||
<participantTypeId>55</participantTypeId>
|
||||
<sampleTime>1712144770797</sampleTime>
|
||||
<pos count="3" type="Core::GeoPosition">
|
||||
<lon>0.155122</lon>
|
||||
<lat>0.92522</lat>
|
||||
<z>0</z>
|
||||
</pos>
|
||||
<partyId>2</partyId>
|
||||
<buildingId>0</buildingId>
|
||||
<roomId>0</roomId>
|
||||
<reportingSource>4</reportingSource>
|
||||
<mountedOn>0</mountedOn>
|
||||
</DdsData>
|
||||
</Sample>
|
||||
</Samples>
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
<!DOCTYPE Samples>
|
||||
<Samples>
|
||||
<Sample>
|
||||
<TopicName>LTS_ParticipantPosition</TopicName>
|
||||
<TypeName>ParticipantManagement::ParticipantPosition</TypeName>
|
||||
<Pause>1000</Pause>
|
||||
<DdsData count="10" topic="LTS_ParticipantPosition" type="ParticipantManagement::ParticipantPosition">
|
||||
<participantId>5</participantId>
|
||||
<participantTypeId>55</participantTypeId>
|
||||
<sampleTime>1712143792397</sampleTime>
|
||||
<pos count="3" type="Core::GeoPosition">
|
||||
<lon>0.154882</lon>
|
||||
<lat>0.925997</lat>
|
||||
<z>0</z>
|
||||
</pos>
|
||||
<partyId>2</partyId>
|
||||
<buildingId>0</buildingId>
|
||||
<roomId>0</roomId>
|
||||
<reportingSource>4</reportingSource>
|
||||
<mountedOn>0</mountedOn>
|
||||
<mountedParticipants count="1">
|
||||
<mountedParticipants.1>19</mountedParticipants.1>
|
||||
</mountedParticipants>
|
||||
</DdsData>
|
||||
</Sample>
|
||||
<Sample>
|
||||
<TopicName>LTS_ParticipantPosition</TopicName>
|
||||
<TypeName>ParticipantManagement::ParticipantPosition</TypeName>
|
||||
<Pause>1000</Pause>
|
||||
<DdsData count="10" topic="LTS_ParticipantPosition" type="ParticipantManagement::ParticipantPosition">
|
||||
<participantId>19</participantId>
|
||||
<participantTypeId>78</participantTypeId>
|
||||
<sampleTime>1712143760647</sampleTime>
|
||||
<pos count="3" type="Core::GeoPosition">
|
||||
<lon>0.154922</lon>
|
||||
<lat>0.925922</lat>
|
||||
<z>0</z>
|
||||
</pos>
|
||||
<partyId>2</partyId>
|
||||
<buildingId>0</buildingId>
|
||||
<roomId>0</roomId>
|
||||
<reportingSource>4</reportingSource>
|
||||
<mountedOn>0</mountedOn>
|
||||
</DdsData>
|
||||
</Sample>
|
||||
<Sample>
|
||||
<TopicName>LTS_ParticipantPosition</TopicName>
|
||||
<TypeName>ParticipantManagement::ParticipantPosition</TypeName>
|
||||
<Pause>1000</Pause>
|
||||
<DdsData count="10" topic="LTS_ParticipantPosition" type="ParticipantManagement::ParticipantPosition">
|
||||
<participantId>19</participantId>
|
||||
<participantTypeId>78</participantTypeId>
|
||||
<sampleTime>1712143760647</sampleTime>
|
||||
<pos count="3" type="Core::GeoPosition">
|
||||
<lon>0.154933</lon>
|
||||
<lat>0.925933</lat>
|
||||
<z>0</z>
|
||||
</pos>
|
||||
<partyId>2</partyId>
|
||||
<buildingId>0</buildingId>
|
||||
<roomId>0</roomId>
|
||||
<reportingSource>4</reportingSource>
|
||||
<mountedOn>0</mountedOn>
|
||||
</DdsData>
|
||||
</Sample>
|
||||
</Samples>
|
||||
@@ -0,0 +1,22 @@
|
||||
/**
|
||||
* Export definitions
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hanna E. Rathje, SLSE, 2015-08-04
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
#ifndef SAATELEGRAMS_EXPORT
|
||||
# ifdef BUILD_STATIC_LIBRARIES
|
||||
# define SAATELEGRAMS_EXPORT
|
||||
# else
|
||||
# if defined(MAKE_SAATELEGRAMS_LIB)
|
||||
# define SAATELEGRAMS_EXPORT Q_DECL_EXPORT
|
||||
# else
|
||||
# define SAATELEGRAMS_EXPORT Q_DECL_IMPORT
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
+1188
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,106 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* AesHandler for AdlerJson Plugin
|
||||
* $Id: aes_handler.h 62304 2024-03-21 08:17:45Z ewert_j $
|
||||
* $HeadURL: svn://slssvn/TDS/branches/product/features/ufom/Lts/Proxies/TrainingAreaBase/Plugins/AdlerJson/aes_handler.h $
|
||||
* $Author: ewert_j $
|
||||
* Created by Julius Ewert, ESIM, 2024-03-20
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "DDS/Core/function_reply_object.h"
|
||||
#include "logger.h"
|
||||
#include "main_dispatcher.h"
|
||||
#include "telegrams.h"
|
||||
#include <QDateTime>
|
||||
#include <QHash>
|
||||
#include <QObject>
|
||||
#include <QUrl>
|
||||
#include <AreaEffectSimulation/aes_dtc.h>
|
||||
#include <AreaEffectSimulation/aes_ftc.h>
|
||||
#include <LtsUtilsCore/data_modification_enum.h>
|
||||
#include <LtsUtilsGuiDds/request_helper.h>
|
||||
#include <ParticipantManagement/ppm.hpp>
|
||||
#include <ParticipantManagement/ppm_dtc.h>
|
||||
|
||||
namespace AdlerJson
|
||||
{
|
||||
|
||||
class MainDispatcher;
|
||||
class AesHandler
|
||||
: public QObject
|
||||
, protected AreaEffectSimulation::Interface::Ftc::AirSupportImpactModifyReplyHandler
|
||||
, protected AreaEffectSimulation::Interface::Ftc::OffRouteMineModifyReplyHandler
|
||||
, protected AreaEffectSimulation::Interface::Ftc::EffectClusterModifyReplyHandler
|
||||
, protected AreaEffectSimulation::Interface::Ftc::TrajectoryAdlerModifyReplyHandler
|
||||
, protected NotificationManagement::Interface::Ftc::CreateNotificationReplyHandler
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit AesHandler(std::shared_ptr<TrainingAreaBase::Interface::Fts> ftsTab, QObject *parent = nullptr);
|
||||
|
||||
bool init(MainDispatcher *mainDispatcher);
|
||||
bool sendAesModifyRequest(const QJsonObject &obj);
|
||||
bool sendExplosionArea(const QJsonObject &data);
|
||||
// DDS Overrides
|
||||
void onAirSupportImpactModifyReply(const Core::FunctionReplyObject &reply) override;
|
||||
void onOffRouteMineModifyReply(const Core::FunctionReplyObject &replyObject) override;
|
||||
void onEffectClusterModifyReply(const Core::FunctionReplyObject &replyObject) override;
|
||||
void onCreateNotificationReply(const Core::FunctionReplyObject &replyObject) override;
|
||||
|
||||
// Internal
|
||||
void onExplosionSingleChanged(const AreaEffectSimulation::ExplosionSingle &data, DataModification modType);
|
||||
void onEffectClusterChanged(const AreaEffectSimulation::EffectCluster &data, DataModification modType);
|
||||
|
||||
void handleCreateSingleExplosion(const TrainingAreaBase::TetraIcd::CreateSingleExplosion &data);
|
||||
void handleEXFire(const Feuerkampfdaten &data, int wsId);
|
||||
void handleEXDontFire(const Feuerkampfdaten &data, int wsId);
|
||||
// Reald Data
|
||||
void sendTrajectoryAdlerModifyRequest(const WirkfeldplanungData &data, int participantId, int wirkmittelIndex, int aesId);
|
||||
void handleEffectCluster(const WirkfeldplanungData &data, int wsId);
|
||||
|
||||
//
|
||||
void removeAllPendingEffectCluster(int partyId);
|
||||
std::shared_ptr<AreaEffectSimulation::Interface::Dtc> getDtc() { return m_dtcAes; };
|
||||
std::shared_ptr<AreaEffectSimulation::Interface::Ftc> getFtc() { return m_ftcAes; };
|
||||
|
||||
private:
|
||||
AreaEffectSimulation::Area createMinimumRect(int zone, const QVector<QPointF> &points);
|
||||
|
||||
signals:
|
||||
void explosionSingleChanged(const QJsonObject &jsonObj);
|
||||
|
||||
private:
|
||||
QList<qint32> findAllPendingEffectCluster(int partyId);
|
||||
void handleAmmoCount(const Feuerkampfdaten &data, int saaPartyId, bool sendExVollzug = false);
|
||||
|
||||
private:
|
||||
MainDispatcher *m_mainDispatcher;
|
||||
std::shared_ptr<AreaEffectSimulation::Interface::Ftc> m_ftcAes;
|
||||
std::shared_ptr<AreaEffectSimulation::Interface::Dtc> m_dtcAes;
|
||||
std::shared_ptr<ParticipantManagement::Interface::Dtc> m_dtcPpm;
|
||||
std::shared_ptr<TrainingAreaBase::DdsHandler> m_ddsHandler;
|
||||
|
||||
void onTrajectoryAdlerModifyReply(const Core::FunctionReplyObject &reply) override;
|
||||
|
||||
LtsUtils::RequestHelper *m_requestHelper;
|
||||
|
||||
QHash<int, AreaEffectSimulation::AesEffectState> m_singleExplosions;
|
||||
|
||||
WirkfeldplanungData m_wirkfeldPlanungsData;
|
||||
QHash<int, QString> m_aesIdToFeuerkampfReferenz; // key = aesId, value = feuerkampfReferenz
|
||||
|
||||
QHash<QString, int> m_feuerkampReferenzAmmoCounter; // key = feuerkampfReferenz, value = AmmoCounter
|
||||
QHash<QString, std::vector<ProjectDataManagement::L27_EffectorId>> m_feuerkampfReferenzWirkmittel; // key = feuerkampfReferenz, value = Kenner
|
||||
QHash<QString, bool> m_feuerkampfReferenzUsedFeuerHalt; // key = feuerkampfReferenz, value = boolean -> if Feuerhalt was activ
|
||||
|
||||
int m_participantId;
|
||||
int m_wirkmittelIndex;
|
||||
int m_aesId;
|
||||
QHash<int, int> aesIdWsId; // key = aesId value = wsId
|
||||
|
||||
LOGGER_T m_logger;
|
||||
};
|
||||
|
||||
} // namespace AdlerJson
|
||||
@@ -0,0 +1,69 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* AsmHandler for AdlerJson Plugin
|
||||
* $Id: pdm_handler.cpp 62304 2024-03-21 08:17:45Z ewert_j $
|
||||
* $HeadURL: svn://slssvn/TDS/branches/product/features/ufom/Lts/Proxies/TrainingAreaBase/Plugins/UFomHlaJson/pdm_handler.cpp $
|
||||
* $Author: ewert_j $
|
||||
* Created by Hanna E. Rathje, 2025-11-18
|
||||
*/
|
||||
|
||||
#include "asm_handler.h"
|
||||
|
||||
#include <QJsonArray>
|
||||
#include <QJsonDocument>
|
||||
#include <LtsUtilsCore/dds_vector.h>
|
||||
|
||||
|
||||
namespace AdlerJson
|
||||
{
|
||||
AsmHandler::AsmHandler(QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_dtcAsm(nullptr)
|
||||
, m_ftcAsm(nullptr)
|
||||
, m_exerciseId(-1)
|
||||
, m_logger(getLogger("AsmHandler"))
|
||||
{}
|
||||
|
||||
bool AsmHandler::init(MainDispatcher* mainDispatcher)
|
||||
{
|
||||
m_ftcAsm = AssetManagement::Interface::Ftc::create(mainDispatcher->ddsHandler()->ddsConnector());
|
||||
m_ftcAsm->enableAssetModify();
|
||||
|
||||
m_dtcAsm = AssetManagement::Interface::Dtc::create(mainDispatcher->ddsHandler()->ddsConnector());
|
||||
if (!m_dtcAsm->enableAsset())
|
||||
{
|
||||
ERROR_LOG(m_logger)<<" Can't read data from ASM";
|
||||
return false;
|
||||
}
|
||||
m_exerciseId = mainDispatcher->exerciseId();
|
||||
m_dtcAsm->waitForHistoricalDataAsset(1000);
|
||||
|
||||
return true;
|
||||
}
|
||||
/*!
|
||||
* \brief AsmHandler::modifyAssetAdlerProperties
|
||||
* update asset properties: if hostAddress is found in asset (asset.name())
|
||||
* exerciseId of party will be stored in the props else -1
|
||||
* \param hostAddress
|
||||
* \param exerciseId
|
||||
*/
|
||||
void AsmHandler::modifyAssetAdlerProperties(int assetId, bool isSaaConnected)
|
||||
{
|
||||
WARNING_LOG(m_logger)<<">> modify asset properties: set exerciseId: "<<m_exerciseId<<" assetName: "<<assetId;
|
||||
// get asset by corresponding hostAddress. = asset.name()
|
||||
AssetManagement::Asset asset = m_dtcAsm->asset(assetId);
|
||||
if (asset.id() <= 0)
|
||||
return;
|
||||
|
||||
QJsonObject assetPropsObj = QJsonDocument::fromJson(asset.properties().c_str()).object();
|
||||
assetPropsObj[QStringLiteral("exerciseId")] = isSaaConnected ? m_exerciseId : -1;
|
||||
asset.properties(QJsonDocument(assetPropsObj).toJson().toStdString());
|
||||
m_ftcAsm->assetModifyRequest(asset);
|
||||
}
|
||||
|
||||
void AsmHandler::onAssetModifyReply(const Core::FunctionReplyObject &reply)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "Got Function Reply error ? "<<reply.error();
|
||||
}
|
||||
|
||||
} // namespace AdlerJson
|
||||
@@ -0,0 +1,53 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* $Id: $
|
||||
* $HeadURL: $
|
||||
* $Author: $
|
||||
* Created by Steve K., ESZS 12-01-2026
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "logger.h"
|
||||
#include <AssetManagement/asm_dtc.h>
|
||||
#include <AssetManagement/asm_ftc.h>
|
||||
#include "main_dispatcher.h"
|
||||
#include <QObject>
|
||||
|
||||
namespace AssetManagement
|
||||
{
|
||||
namespace Interface
|
||||
{
|
||||
class Dtc;
|
||||
class Ftc;
|
||||
}
|
||||
}
|
||||
|
||||
namespace AdlerJson
|
||||
{
|
||||
|
||||
class MainDispatcher;
|
||||
class AsmHandler : public QObject
|
||||
, protected AssetManagement::Interface::Ftc::AssetModifyReplyHandler
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit AsmHandler(QObject *parent = nullptr);
|
||||
bool init(MainDispatcher* mainDispatcher);
|
||||
|
||||
std::shared_ptr<AssetManagement::Interface::Dtc> getDtc() { return m_dtcAsm; }
|
||||
std::shared_ptr<AssetManagement::Interface::Ftc> getFtc() { return m_ftcAsm; }
|
||||
void modifyAssetAdlerProperties(int assetId, bool isSaaConnected = false);
|
||||
private:
|
||||
void onAssetModifyReply(const Core::FunctionReplyObject &reply) override;
|
||||
|
||||
private:
|
||||
std::shared_ptr<AssetManagement::Interface::Dtc> m_dtcAsm;
|
||||
std::shared_ptr<AssetManagement::Interface::Ftc> m_ftcAsm;
|
||||
int m_exerciseId;
|
||||
LOGGER_T m_logger;
|
||||
|
||||
|
||||
};
|
||||
|
||||
} // namespace AdlerJson
|
||||
@@ -0,0 +1,278 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* FlmHandler for AdlerJson Plugin
|
||||
* $Id: pdm_handler.cpp 62304 2024-03-21 08:17:45Z ewert_j $
|
||||
* $HeadURL: svn://slssvn/TDS/branches/product/features/ufom/Lts/Proxies/TrainingAreaBase/Plugins/UFomHlaJson/pdm_handler.cpp $
|
||||
* $Author: ewert_j $
|
||||
* Created by Hanna E. Rathje, 2025-11-18
|
||||
*/
|
||||
|
||||
#include "flm_handler.h"
|
||||
#include "FileManagement/flm_operator_rights.h"
|
||||
#include "main_dispatcher.h"
|
||||
#include "nglsettings/nglsettings_settings.h"
|
||||
#include "ngltools/ngltools_filesystem.h"
|
||||
|
||||
#include <QJsonArray>
|
||||
#include <QJsonDocument>
|
||||
#include <FileManagement/flm_dtc.h>
|
||||
#include <LtsUtilsCore/dds_vector.h>
|
||||
|
||||
namespace AdlerJson
|
||||
{
|
||||
FlmHandler::FlmHandler(QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_exerciseId(-1)
|
||||
, m_parentFolderId(-1)
|
||||
, m_partyId(-1)
|
||||
, m_folderHXMessagesId(-1)
|
||||
, m_dtcFlm(nullptr)
|
||||
, m_ftcFlm(nullptr)
|
||||
, m_ftcNom(nullptr)
|
||||
, m_opmDtc(nullptr)
|
||||
, m_logger(getLogger("FlmHandler"))
|
||||
{
|
||||
}
|
||||
|
||||
bool FlmHandler::init(MainDispatcher *mainDispatcher)
|
||||
{
|
||||
m_mainDispatcher = mainDispatcher;
|
||||
m_exerciseId = mainDispatcher->exerciseId();
|
||||
m_dtcFlm = FileManagement::Interface::Dtc::create(mainDispatcher->ddsHandler()->ddsConnector());
|
||||
m_ftcFlm = FileManagement::Interface::Ftc::create(mainDispatcher->ddsHandler()->ddsConnector());
|
||||
m_dtcFlm->enableFileContent();
|
||||
m_dtcFlm->enableFolder();
|
||||
m_ftcFlm->enableFileContentModify();
|
||||
m_ftcFlm->enablePathCreate();
|
||||
m_ftcNom = NotificationManagement::Interface::Ftc::create(mainDispatcher->ddsHandler()->ddsConnector());
|
||||
m_ftcNom->enableAll();
|
||||
m_opmDtc = OperatorManagement::Interface::Dtc::create(mainDispatcher->ddsHandler()->ddsConnector());
|
||||
m_opmDtc->enableUser();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FlmHandler::processHQMessage(int partyId, const QString &name, int meldungsnummer, const QJsonObject &obj)
|
||||
{
|
||||
ERROR_LOG(m_logger) << "exerciseId: " << m_exerciseId << ", partyId: " << partyId
|
||||
<< ", name: " << name
|
||||
<< ", meldungsnummer: " << meldungsnummer;
|
||||
|
||||
// get FolderId for PartyId
|
||||
int partyFolderId = m_dtcFlm->getPartyFolderId(m_exerciseId, partyId);
|
||||
|
||||
const QString folderName = QStringLiteral("Messages");
|
||||
int folderHXMessagesId = m_dtcFlm->findFolder(partyFolderId, folderName);
|
||||
|
||||
ERROR_LOG(m_logger) << "folderHXMessagesId: " << folderHXMessagesId;
|
||||
|
||||
if (folderHXMessagesId <= 0)
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Folder Messages does not exist for exerciseId: " << m_exerciseId << ", partyId: " << partyId;
|
||||
return false;
|
||||
}
|
||||
|
||||
FileManagement::FileContentModifyRequest fileContentReq;
|
||||
fileContentReq.isTemplate(false);
|
||||
fileContentReq.isHidden(true);
|
||||
fileContentReq.folderId(folderHXMessagesId);
|
||||
const QVector<int> fldPath = LtsUtils::convert<QVector<int>>(m_dtcFlm->folder(folderHXMessagesId).path());
|
||||
fileContentReq.fileCategory(FileManagement::FileCategory::Exercise);
|
||||
fileContentReq.fileType(FileManagement::FileType::AdlerJson);
|
||||
fileContentReq.fileStatus(FileManagement::FileStatus::Valid);
|
||||
|
||||
QByteArray content = QJsonDocument(obj).toJson(QJsonDocument::Compact).constData();
|
||||
fileContentReq.content(LtsUtils::convert<std::vector<uint8_t>>(content));
|
||||
|
||||
fileContentReq.isUsedBy(false);
|
||||
fileContentReq.usedBy(0);
|
||||
fileContentReq.lastModified(m_mainDispatcher->ddsHandler()->partitionTime());
|
||||
fileContentReq.exerciseId(m_exerciseId);
|
||||
fileContentReq.operatorId(99); // organizer
|
||||
|
||||
DEBUG_LOG(m_logger) << "HQ: name: " << fileContentReq.name() << ", folderId: " << folderHXMessagesId << ", exerciseId: " << m_exerciseId << ", partyId: " << partyId;
|
||||
|
||||
// Check if Filename already exists
|
||||
QRegularExpression re(QStringLiteral("_\\d+$"));
|
||||
QString baseName = name + QStringLiteral(" (") + QString::number(meldungsnummer) + QStringLiteral(")");
|
||||
baseName.remove(re);
|
||||
|
||||
// nornalized (important for Umlaute in baseName)
|
||||
baseName = baseName.normalized(QString::NormalizationForm_C);
|
||||
ERROR_LOG(m_logger) << "BaseName: " << baseName << "|";
|
||||
|
||||
QStringList fileNames;
|
||||
if (!m_dtcFlm->getAllFiles(fileContentReq.fileType(), folderHXMessagesId, fileNames, true))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error while reading fileNames for folderId: " << folderHXMessagesId;
|
||||
return false;
|
||||
}
|
||||
|
||||
int maxNumber = 0;
|
||||
for (const QString &fileName : qAsConst(fileNames))
|
||||
{
|
||||
QString normalizedName = fileName.normalized(QString::NormalizationForm_C);
|
||||
DEBUG_LOG(m_logger) << "normalized fileName: " << normalizedName << "|";
|
||||
|
||||
if (!normalizedName.startsWith(baseName))
|
||||
continue;
|
||||
|
||||
QString rest = fileName.mid(baseName.length());
|
||||
DEBUG_LOG(m_logger) << "rest: " << rest;
|
||||
if (rest.contains(QStringLiteral(".")))
|
||||
rest = rest.section(QStringLiteral("."), 0, 0);
|
||||
|
||||
if (rest.startsWith(QStringLiteral("_")))
|
||||
rest = rest.mid(1);
|
||||
|
||||
if (rest.isEmpty())
|
||||
maxNumber = std::max(maxNumber, 0);
|
||||
else
|
||||
{
|
||||
bool ok;
|
||||
int currentNum = rest.toInt(&ok);
|
||||
if (ok)
|
||||
maxNumber = std::max(maxNumber, currentNum);
|
||||
}
|
||||
DEBUG_LOG(m_logger) << " maxNumber: " << maxNumber;
|
||||
}
|
||||
|
||||
const QString newName = baseName
|
||||
+ QStringLiteral("_") + QString::number(++maxNumber);
|
||||
DEBUG_LOG(m_logger) << "newName : " << newName;
|
||||
fileContentReq.name(newName.toStdString());
|
||||
|
||||
// fileId will be in reply
|
||||
m_partyId = partyId;
|
||||
m_folderHXMessagesId = folderHXMessagesId;
|
||||
m_ftcFlm->fileContentModifyRequest(fileContentReq, this);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void FlmHandler::createHQNotification(const int partyId, const int folderId, const int fileId)
|
||||
{
|
||||
qint64 currentTime = m_mainDispatcher->ddsHandler()->partitionTime();
|
||||
|
||||
QScopedPointer<NGL::Settings> s(new NGL::Settings(NGL::findProjectConfigFile()));
|
||||
qint64 expiryTime = currentTime + s->getInteger(QStringLiteral("NOM/expiryIntervalMSec"), 2 * 24 * 60 * 60 * 1000); // default 2 day
|
||||
NotificationManagement::NomNotification notif;
|
||||
|
||||
notif.title(tr("HQ Report").toStdString());
|
||||
/// for more see in nom_test.cpp
|
||||
QString linkName = tr("Open HQ Report Dialog");
|
||||
QString content = QStringLiteral("[%1](//flmHQReport/?party=%2&folder=%3&file=%4)").arg(linkName).arg(partyId).arg(folderId).arg(fileId);
|
||||
QMap<QString, QString> linkMap;
|
||||
parseContent(content, linkMap);
|
||||
// now replace the strings
|
||||
QMapIterator<QString, QString> it(linkMap);
|
||||
while (it.hasNext())
|
||||
{
|
||||
it.next();
|
||||
|
||||
content = content.replace(QStringLiteral("[%1](%2)").arg(it.value(), it.key()), QStringLiteral("<a href='%1'>%2</a>").arg(it.key(), it.value()));
|
||||
}
|
||||
|
||||
notif.content(content.toStdString());
|
||||
notif.timeStamp(currentTime);
|
||||
notif.expiryTime(expiryTime);
|
||||
|
||||
int prio = s->getInteger(QStringLiteral("NOM/notificationPriority"), 3); // default prio 3: normal
|
||||
DEBUG_LOG(m_logger) << " Setting: NotificationPriority: " << prio;
|
||||
notif.priority(static_cast<NotificationManagement::Priority_def::type>(prio));
|
||||
notif.processedPriority(NotificationManagement::Priority_def::Low);
|
||||
notif.exerciseId(m_exerciseId);
|
||||
|
||||
for (const auto &userId : m_opmDtc->getOperatorsByOperatorRight(OperatorRights::FileManagementFilesEdit))
|
||||
{
|
||||
NotificationManagement::Address addr;
|
||||
addr.addressId(userId);
|
||||
addr.isRead(false);
|
||||
addr.name(m_opmDtc->user(userId).name());
|
||||
addr.addressType(NotificationManagement::AddressType_def::Operator);
|
||||
notif.recipientIds().push_back(addr);
|
||||
}
|
||||
|
||||
NotificationManagement::CreateNotificationRequest notifReq;
|
||||
notifReq.notification(notif);
|
||||
|
||||
if (!m_ftcNom->createNotificationRequest(notifReq, this))
|
||||
ERROR_LOG(m_logger) << "Error requesting create Notification data";
|
||||
}
|
||||
|
||||
void FlmHandler::initHQFolders(int partyId)
|
||||
{
|
||||
// get FolderId for Exercise
|
||||
int exerciseFolderId = m_dtcFlm->getExerciseFolderId(m_exerciseId);
|
||||
|
||||
if (exerciseFolderId <= 0)
|
||||
{
|
||||
ERROR_LOG(m_logger) << "No exercise Folder for exerciseId: " << m_exerciseId;
|
||||
return;
|
||||
}
|
||||
|
||||
const QString &partyName = m_dtcFlm->getPartyFolderName(partyId);
|
||||
|
||||
std::vector<std::string> vecFolderNames = {"HQ Data", partyName.toStdString(), "Messages"};
|
||||
|
||||
FileManagement::PathCreateRequest req;
|
||||
req.path(vecFolderNames);
|
||||
req.parentId(exerciseFolderId);
|
||||
req.isEditable(false);
|
||||
req.operatorId(99); // Organizer
|
||||
|
||||
m_ftcFlm->pathCreateRequest(req, this);
|
||||
}
|
||||
|
||||
void FlmHandler::onFileContentModifyReply(const Core::FunctionReplyObject &reply)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "Got Function Reply: " << reply.translated();
|
||||
|
||||
if (reply.error())
|
||||
ERROR_LOG(m_logger) << "Error while insert HX Message: " << reply.translated() << ", error: " << reply.error();
|
||||
else
|
||||
createHQNotification(m_partyId, m_folderHXMessagesId, reply.id());
|
||||
}
|
||||
|
||||
void FlmHandler::onPathCreateReply(const Core::FunctionReplyObject &reply)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "Got Function Reply: " << reply.translated();
|
||||
|
||||
if (reply.error())
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error while creating folders: " << reply.translated() << ", error: " << reply.error();
|
||||
}
|
||||
}
|
||||
|
||||
void FlmHandler::onCreateNotificationReply(const Core::FunctionReplyObject &replyObject)
|
||||
{
|
||||
INFO_LOG(m_logger) << "FlmHandler: Got createReply with id " << replyObject.id() << " and errorString " << replyObject.translated();
|
||||
}
|
||||
|
||||
bool FlmHandler::parseContent(const QString &contentString, QMap<QString, QString> &retMap)
|
||||
{
|
||||
if (contentString.isEmpty())
|
||||
return false;
|
||||
|
||||
// Mark Down Regex lookig for String between ]( and ) eg: TestLingk "[LinkName](http::blahblah)"
|
||||
QRegularExpression regLink(QStringLiteral("(?<=\\]\\()(.*?)(?=\\))"));
|
||||
QRegularExpressionMatch matchLink = regLink.match(contentString);
|
||||
QRegularExpression regDesc(QStringLiteral("(?<=\\[)(.*?)(?=\\]\\()"));
|
||||
QRegularExpressionMatch matchDesc = regDesc.match(contentString);
|
||||
|
||||
QRegularExpressionMatchIterator itLink = regLink.globalMatch(contentString);
|
||||
QRegularExpressionMatchIterator itDesc = regDesc.globalMatch(contentString);
|
||||
while (itLink.hasNext() && itDesc.hasNext())
|
||||
{
|
||||
QString linkRef = itLink.next().captured();
|
||||
QString linkDesc = itDesc.next().captured();
|
||||
if (!linkRef.isEmpty() && !linkDesc.isEmpty())
|
||||
{
|
||||
retMap.insert(linkRef, linkDesc);
|
||||
}
|
||||
}
|
||||
|
||||
return retMap.size();
|
||||
}
|
||||
|
||||
} // namespace AdlerJson
|
||||
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* FlmHandler for UFomHlaJson Plugin
|
||||
* $Id: pdm_handler.h 62304 2024-03-21 08:17:45Z ewert_j $
|
||||
* $HeadURL: svn://slssvn/TDS/branches/product/features/ufom/Lts/Proxies/TrainingAreaBase/Plugins/UFomHlaJson/pdm_handler.h $
|
||||
* $Author: ewert_j $
|
||||
* Created by Julius Ewert, ESIM, 2024-03-20
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "logger.h"
|
||||
#include <QObject>
|
||||
#include <FileManagement/flm_ftc.h>
|
||||
#include <NotificationManagement/nom_ftc.h>
|
||||
#include <NotificationManagement/nom_ftc_types.h>
|
||||
#include <Plugins/OperatorManagement/opm_data_plugin_interface.h>
|
||||
#include <TrainingAreaBase/dds_handler.h>
|
||||
|
||||
namespace FileManagement
|
||||
{
|
||||
namespace Interface
|
||||
{
|
||||
class Dtc;
|
||||
}
|
||||
} // namespace FileManagement
|
||||
|
||||
namespace AdlerJson
|
||||
{
|
||||
|
||||
class MainDispatcher;
|
||||
class FlmHandler
|
||||
: public QObject
|
||||
, protected FileManagement::Interface::Ftc::FileContentModifyReplyHandler
|
||||
, protected FileManagement::Interface::Ftc::PathCreateReplyHandler
|
||||
, protected NotificationManagement::Interface::Ftc::CreateNotificationReplyHandler
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit FlmHandler(QObject *parent = nullptr);
|
||||
|
||||
bool processHQMessage(int partyId, const QString &name, int meldungsnummer, const QJsonObject &obj);
|
||||
void createHQNotification(const int partyId, const int folderId, const int fileId);
|
||||
signals:
|
||||
public slots:
|
||||
bool init(MainDispatcher *mainDispatcher);
|
||||
void initHQFolders(int partyId);
|
||||
|
||||
private:
|
||||
void onFileContentModifyReply(const Core::FunctionReplyObject &reply) override;
|
||||
void onPathCreateReply(const Core::FunctionReplyObject &reply) override;
|
||||
void onCreateNotificationReply(const Core::FunctionReplyObject &replyObject) override final;
|
||||
bool parseContent(const QString &contentString, QMap<QString, QString> &retMap);
|
||||
|
||||
private:
|
||||
MainDispatcher *m_mainDispatcher = nullptr;
|
||||
int m_exerciseId;
|
||||
int m_parentFolderId;
|
||||
int m_partyId;
|
||||
int m_folderHXMessagesId;
|
||||
std::shared_ptr<FileManagement::Interface::Dtc> m_dtcFlm;
|
||||
std::shared_ptr<FileManagement::Interface::Ftc> m_ftcFlm;
|
||||
std::shared_ptr<NotificationManagement::Interface::Ftc> m_ftcNom;
|
||||
std::shared_ptr<OperatorManagement::Interface::Dtc> m_opmDtc;
|
||||
LOGGER_T m_logger;
|
||||
};
|
||||
|
||||
} // namespace AdlerJson
|
||||
@@ -0,0 +1,844 @@
|
||||
#include "generatetelegrams.h"
|
||||
|
||||
GenerateTelegrams::GenerateTelegrams() {}
|
||||
|
||||
void GenerateTelegrams::addHeaderData(AdlerJson::EXTelegramBase &tele, const int saaId, const QString referenceUuid)
|
||||
{
|
||||
tele.sender = QStringLiteral("SAA%1@GUEZ.DE").arg(saaId);
|
||||
tele.receiver = QStringLiteral("EXCON@GUEZ.DE");
|
||||
tele.timestamp = QDateTime::currentDateTime().toString(Qt::DateFormat::ISODate);
|
||||
tele.referenceUuid = referenceUuid;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateConnectMessage(AdlerJson::EXRegistration &exRegistration, int partyId, bool isVerbund)
|
||||
{
|
||||
exRegistration.partyId = partyId;
|
||||
exRegistration.adlerVerbund = isVerbund;
|
||||
exRegistration.szenar = QStringLiteral("UI Test");
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateConnectResponseMessage(AdlerJson::ExAnmeldebestaetigung &exAnmeldebestaetigung)
|
||||
{
|
||||
exAnmeldebestaetigung.anBestaetigungsdaten.error = AdlerJson::L45_AnmeldebestaetigungFehlercode::Ok;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateDisconnectMessage(AdlerJson::EXDeregistration &eXDeregistration, int partyId) { eXDeregistration.partyId = partyId; }
|
||||
|
||||
void GenerateTelegrams::generateStatusMessage(AdlerJson::EXStatus &exStatus, AdlerJson::Szenarstatus status) { exStatus.status = status; }
|
||||
|
||||
void GenerateTelegrams::generateConnectionTestMessage() {}
|
||||
|
||||
void GenerateTelegrams::generateZieldaten(AdlerJson::Zieldaten &wzd)
|
||||
{
|
||||
wzd.nummer = 7;
|
||||
wzd.geometrie = ProjectDataManagement::L4_TargetGeometry::Point; // EX-L4
|
||||
|
||||
// koordinate
|
||||
AdlerJson::KoordinateMitHoehe zap; // EX-L14
|
||||
zap.hoehe = 0;
|
||||
|
||||
AdlerJson::Koordinate zkn;
|
||||
zkn.latitude = 53.0672;
|
||||
zkn.longitude = 8.86687;
|
||||
zap.koordinate = zkn;
|
||||
wzd.koordinate = zap;
|
||||
|
||||
// relativKoordinate
|
||||
AdlerJson::KoordinateMitHoehe zapr; // EX-L14
|
||||
zapr.hoehe = 5;
|
||||
zapr.koordinate.latitude = 53.8;
|
||||
zapr.koordinate.longitude = 8.8;
|
||||
wzd.relativKoordinate = zapr;
|
||||
|
||||
// wfp.feuerkommandos = fk;
|
||||
|
||||
wzd.breiteRadius = 25;
|
||||
wzd.tiefe = 26;
|
||||
wzd.zielachse = 17;
|
||||
wzd.zog = 7;
|
||||
wzd.elemente = 1;
|
||||
wzd.typ = QStringLiteral("PERS"); // EX-L20 pdm_targe_type
|
||||
wzd.subTyp = QStringLiteral("APERS"); // EX-L21 pdm_target_subtype
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateWirkmittelFeuerkommando_Gmlrs(QVector<AdlerJson::WirkmittelFeuerkommandoRakete> &wfrs)
|
||||
{
|
||||
AdlerJson::Treffpunkt treffpunkt;
|
||||
treffpunkt.anzahl = 1;
|
||||
treffpunkt.koordinate.koordinate.latitude = 5.5;
|
||||
treffpunkt.koordinate.koordinate.longitude = 6.6;
|
||||
treffpunkt.koordinate.hoehe = 7;
|
||||
AdlerJson::WirkmittelFeuerkommandoRakete wfr;
|
||||
wfr.kenner = ProjectDataManagement::L27_EffectorId::B1;
|
||||
wfr.treffpunkte.append(treffpunkt);
|
||||
wfr.flugzeit = 456.3;
|
||||
wfr.gipfelhoehe = 300;
|
||||
wfr.schussrichtung = 30.0;
|
||||
wfr.fallwinkel = 5;
|
||||
wfr.anflug = ProjectDataManagement::L48_TrajectoryRocket::Nominal;
|
||||
wfr.gps = ProjectDataManagement::L46_GpsFrequency::L1;
|
||||
wfr.wirkzeit = 55;
|
||||
wfrs.append(wfr);
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateEXFQBABBFK(AdlerJson::ExAwesPlanning &req)
|
||||
{
|
||||
// Beginn WirkfeldPlanungsDaten
|
||||
AdlerJson::WirkfeldplanungData wfp;
|
||||
|
||||
wfp.feuerkampfReferenz = QStringLiteral("REF:%1").arg(qrand());
|
||||
|
||||
generateZieldaten(wfp.zieldaten); // Zieldaten EX-L12
|
||||
|
||||
wfp.abfeuerungsArt = AdlerJson::Abfeuerungsart::A;
|
||||
wfp.forderung = ProjectDataManagement::L7_Request::VER;
|
||||
wfp.dauer = 0;
|
||||
|
||||
// Beginn Feuerkommando
|
||||
AdlerJson::Feuerkommando fk;
|
||||
{
|
||||
fk.verein = QStringLiteral("AB7X");
|
||||
fk.typ = ProjectDataManagement::L26_EffectingSystemType::RRohr;
|
||||
QVector<AdlerJson::WirkmittelFeuerkommando> fkl;
|
||||
// Beginn Wirkmittel liste)
|
||||
{
|
||||
AdlerJson::WirkmittelFeuerkommando wfk;
|
||||
wfk.kenner = ProjectDataManagement::L27_EffectorId::B1;
|
||||
|
||||
// Beginn AuftreffPunkt
|
||||
AdlerJson::KoordinateMitHoehe ap;
|
||||
ap.hoehe = 0;
|
||||
|
||||
AdlerJson::Koordinate kn;
|
||||
kn.latitude = 53.0672;
|
||||
kn.longitude = 8.86687;
|
||||
ap.koordinate = kn;
|
||||
// Setzte Auftreffpunkt
|
||||
wfk.auftreffpunkt = ap;
|
||||
|
||||
wfk.flugzeit = 30;
|
||||
wfk.gipfelhoehe = 377;
|
||||
wfk.schussrichtung = 177;
|
||||
AdlerJson::FeuerkommandoGeschosse wfg;
|
||||
// BEginn FeuerkommandoGeschosse
|
||||
{
|
||||
wfg.geschosssorte = QStringLiteral("Spreng DM121");
|
||||
wfg.ladung = QStringLiteral("M DM72"); // L10_Load::M_DM72 (table pdm_load_type);
|
||||
wfg.zuender = QStringLiteral("Aufschlag BB DM371"); // L11_Igniter::Aufschlag_DM241 (table pdm_igniter_type);
|
||||
wfg.zuenderFunktion = QStringLiteral("AZoV"); // L41_IgniterFunction::AZoV (table pdm_igniter_funciton)
|
||||
wfg.zuenderZeit = 0;
|
||||
wfg.anzahl = 7;
|
||||
wfg.intervall = 1.0;
|
||||
}
|
||||
|
||||
wfk.geschoss = wfg;
|
||||
|
||||
QVector<AdlerJson::Flugbahnpunkt> fpl;
|
||||
// Begin Flugbahnpunkt Liste
|
||||
{
|
||||
AdlerJson::Flugbahnpunkt fp;
|
||||
fp.zRelativ = 300;
|
||||
fp.xRelativ = 200;
|
||||
fp.yRelativ = 77;
|
||||
fp.zeit = 17;
|
||||
fpl.append(fp);
|
||||
|
||||
fp.zRelativ = 700;
|
||||
fp.xRelativ = 900;
|
||||
fp.yRelativ = 177;
|
||||
fp.zeit = 19;
|
||||
fpl.append(fp);
|
||||
|
||||
fp.zRelativ = 777;
|
||||
fp.xRelativ = 977;
|
||||
fp.yRelativ = 277;
|
||||
fp.zeit = 33;
|
||||
fpl.append(fp);
|
||||
|
||||
} // Ende Flugbahnpunkt Liste
|
||||
wfk.flugbahnpunkt = fpl;
|
||||
|
||||
// Streuung
|
||||
AdlerJson::Streuungsdaten streuung;
|
||||
streuung.seitenstreuungH = 0.7;
|
||||
streuung.laengsstreuungH = 0.3;
|
||||
streuung.seitenstreuung = 0.7;
|
||||
streuung.laengsstreuung = 7.7;
|
||||
// Setzte Streuung zu Wirkfeldfeuerkommando
|
||||
wfk.streuung = streuung;
|
||||
|
||||
fkl.append(wfk);
|
||||
// wfk. = fkl;
|
||||
|
||||
} // Ende Wirkmittel Liste
|
||||
fk.wirkmittel = fkl;
|
||||
|
||||
// Ende Feuerkommando
|
||||
}
|
||||
|
||||
wfp.feuerkommando = fk;
|
||||
generateWirkmittelFeuerkommando_Gmlrs(wfp.feuerkommando.wirkmittelRakete);
|
||||
|
||||
// set Wfp to data
|
||||
req.wirkfeldplanungData = wfp;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateEXFQBABBFK_Gmlrs(AdlerJson::ExAwesPlanning &req)
|
||||
{
|
||||
//Beginn WirkfeldPlanungsDaten
|
||||
AdlerJson::WirkfeldplanungData wfp;
|
||||
|
||||
wfp.feuerkampfReferenz = QStringLiteral("REF:%1").arg(qrand());
|
||||
wfp.zieldaten.nummer = 143;
|
||||
wfp.abfeuerungsArt = AdlerJson::Abfeuerungsart::F;
|
||||
wfp.dauer = 0;
|
||||
|
||||
//Beginn Feuerkommando
|
||||
AdlerJson::Feuerkommando fk;
|
||||
{
|
||||
fk.verein = QStringLiteral("AB13X");
|
||||
fk.typ = ProjectDataManagement::L26_EffectingSystemType::Mars; // "typ": "Mars",
|
||||
// Beginn Wirkmittel liste)
|
||||
{
|
||||
AdlerJson::WirkmittelFeuerkommandoRakete wfk;
|
||||
|
||||
wfk.kenner = ProjectDataManagement::L27_EffectorId::NO_211;
|
||||
wfk.fallwinkel = 0;
|
||||
wfk.anflug = ProjectDataManagement::L48_TrajectoryRocket::Nominal;
|
||||
|
||||
//Beginn Treffpunkte
|
||||
AdlerJson::Treffpunkt tp;
|
||||
tp.anzahl = 1;
|
||||
tp.koordinate.hoehe = 99;
|
||||
tp.koordinate.koordinate.latitude = 53.0214;
|
||||
tp.koordinate.koordinate.longitude = 8.9886;
|
||||
wfk.treffpunkte.append(tp);
|
||||
|
||||
tp.koordinate.koordinate.latitude = 53.0207;
|
||||
tp.koordinate.koordinate.longitude = 8.98852;
|
||||
wfk.treffpunkte.append(tp);
|
||||
|
||||
tp.koordinate.koordinate.latitude = 53.0189;
|
||||
tp.koordinate.koordinate.longitude = 8.98855;
|
||||
wfk.treffpunkte.append(tp);
|
||||
|
||||
tp.koordinate.koordinate.latitude = 53.0196;
|
||||
tp.koordinate.koordinate.longitude = 8.98712;
|
||||
wfk.treffpunkte.append(tp);
|
||||
|
||||
tp.koordinate.koordinate.latitude = 53.0201;
|
||||
tp.koordinate.koordinate.longitude = 8.99008;
|
||||
tp.anzahl = 2;
|
||||
wfk.treffpunkte.append(tp);
|
||||
|
||||
wfk.flugzeit = 66.03185272216797;
|
||||
wfk.gipfelhoehe = 0;
|
||||
wfk.schussrichtung = 3134.477668706035;
|
||||
wfk.gps = ProjectDataManagement::L46_GpsFrequency::L1;
|
||||
wfk.wirkzeit = 0;
|
||||
|
||||
// beginn FeuerkommandoGeschosse
|
||||
AdlerJson::FeuerkommandoGeschosse wfg;
|
||||
wfg.anzahl = 6;
|
||||
wfg.geschosssorte = QStringLiteral("Unitary M31");
|
||||
wfg.intervall = 5.0;
|
||||
wfg.zuenderFunktion = QStringLiteral("AZoV");
|
||||
wfg.zuenderZeit = 29;
|
||||
|
||||
wfk.geschoss = wfg;
|
||||
|
||||
fk.wirkmittelRakete.append(wfk);
|
||||
} //Ende Wirkmittel Liste
|
||||
|
||||
//Ende Feuerkommando
|
||||
}
|
||||
|
||||
wfp.feuerkommando = fk;
|
||||
|
||||
//set Wfp to data
|
||||
req.wirkfeldplanungData = wfp;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateEXFQBABBFK_Dm72(AdlerJson::ExAwesPlanning &req)
|
||||
{
|
||||
//Beginn WirkfeldPlanungsDaten
|
||||
AdlerJson::WirkfeldplanungData wfp;
|
||||
|
||||
wfp.feuerkampfReferenz = QStringLiteral("REF:%1").arg(qrand());
|
||||
wfp.zieldaten.nummer = 143;
|
||||
wfp.abfeuerungsArt = AdlerJson::Abfeuerungsart::B;
|
||||
wfp.dauer = 0;
|
||||
|
||||
//Beginn Feuerkommando
|
||||
AdlerJson::Feuerkommando fk;
|
||||
{
|
||||
fk.verein = QStringLiteral("AB72X");
|
||||
fk.typ = ProjectDataManagement::L26_EffectingSystemType::Mars; // "typ": "Mars",
|
||||
// Beginn Wirkmittel liste)
|
||||
{
|
||||
AdlerJson::WirkmittelFeuerkommandoRakete wfk;
|
||||
|
||||
wfk.kenner = ProjectDataManagement::L27_EffectorId::NO_212;
|
||||
wfk.fallwinkel = 605;
|
||||
|
||||
//Beginn Treffpunkte
|
||||
AdlerJson::Treffpunkt tp;
|
||||
tp.anzahl = 6;
|
||||
tp.koordinate.hoehe = 99;
|
||||
tp.koordinate.koordinate.latitude = 53.0279;
|
||||
tp.koordinate.koordinate.longitude = 8.73684;
|
||||
wfk.treffpunkte.append(tp);
|
||||
|
||||
wfk.flugzeit = 66.03185272216797;
|
||||
wfk.gipfelhoehe = 0;
|
||||
wfk.schussrichtung = 0.0;
|
||||
wfk.wirkzeit = 3;
|
||||
|
||||
// beginn FeuerkommandoGeschosse
|
||||
AdlerJson::FeuerkommandoGeschosse wfg;
|
||||
wfg.anzahl = 6;
|
||||
wfg.geschosssorte = QStringLiteral("Mine DM72");
|
||||
wfg.intervall = 5.0;
|
||||
wfg.zuenderZeit = 49;
|
||||
|
||||
wfk.geschoss = wfg;
|
||||
|
||||
fk.wirkmittelRakete.append(wfk);
|
||||
} //Ende Wirkmittel Liste
|
||||
}//Ende Feuerkommando
|
||||
|
||||
wfp.feuerkommando = fk;
|
||||
|
||||
//set Wfp to data
|
||||
req.wirkfeldplanungData = wfp;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateFeuerbereit(AdlerJson::ExFeuerbereit &req)
|
||||
{
|
||||
|
||||
req.feuerkampfdaten.feuerkampfReferenz = QStringLiteral("feuerkampfReferenz 1");
|
||||
req.feuerkampfdaten.verein = QStringLiteral("AB7X");
|
||||
req.feuerkampfdaten.kenner = ProjectDataManagement::L27_EffectorId::B1;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateFeuern(AdlerJson::ExFeuern &req)
|
||||
{
|
||||
req.feuerkampfdaten.feuerkampfReferenz = QStringLiteral("feuerkampfReferenz 1");
|
||||
req.feuerkampfdaten.verein = QStringLiteral("AB7X");
|
||||
req.feuerkampfdaten.kenner = ProjectDataManagement::L27_EffectorId::B1;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateFeuern_Gmlrs(AdlerJson::ExFeuern &req)
|
||||
{
|
||||
req.feuerkampfdaten.feuerkampfReferenz = QStringLiteral("feuerkampfReferenz 1");
|
||||
req.feuerkampfdaten.verein = QStringLiteral("AB13X");
|
||||
req.feuerkampfdaten.kenner = ProjectDataManagement::L27_EffectorId::NO_211;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateFeuern_Dm72(AdlerJson::ExFeuern &req)
|
||||
{
|
||||
req.feuerkampfdaten.feuerkampfReferenz = QStringLiteral("feuerkampfReferenz 1");
|
||||
req.feuerkampfdaten.verein = QStringLiteral("AB72X");
|
||||
req.feuerkampfdaten.kenner = ProjectDataManagement::L27_EffectorId::NO_212;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateNichtFeuern(AdlerJson::exNichtFeuern &req)
|
||||
{
|
||||
req.feuerkampfdaten.feuerkampfReferenz = QStringLiteral("feuerkampfReferenz 1");
|
||||
req.feuerkampfdaten.verein = QStringLiteral("AB7X");
|
||||
req.feuerkampfdaten.kenner = ProjectDataManagement::L27_EffectorId::B1;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateAbgefeuert(AdlerJson::ExAbgefeuert &req)
|
||||
{
|
||||
req.feuerkampfdaten.feuerkampfReferenz = QStringLiteral("feuerkampfReferenz 1");
|
||||
req.feuerkampfdaten.verein = QStringLiteral("AB7X");
|
||||
req.feuerkampfdaten.kenner = ProjectDataManagement::L27_EffectorId::B1;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateVollzugsmeldung(AdlerJson::ExVollzugsmeldung &req)
|
||||
{
|
||||
req.feuerkampfdaten.feuerkampfReferenz = QStringLiteral("feuerkampfReferenz 1");
|
||||
req.feuerkampfdaten.verein = QStringLiteral("AB7X");
|
||||
req.feuerkampfdaten.kenner = ProjectDataManagement::L27_EffectorId::B1;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateAbmeldung(AdlerJson::EXDeregistration &req) { req.partyId = 2; }
|
||||
|
||||
// void GenerateTelegrams::generateErkundungsanfrage(AdlerJson::ExErkundungsanfrage &req)
|
||||
// {
|
||||
// Q_UNUSED(req);
|
||||
// // kein Data-Bereich bei Erkundungsanfrage
|
||||
// }
|
||||
|
||||
void GenerateTelegrams::generateErkundungsergebnisse(AdlerJson::ExErkundungsergebnisse &req)
|
||||
{
|
||||
AdlerJson::Erkundungseinheit einheit; // EX-L29
|
||||
AdlerJson::KoordinateMitHoehe ladeplatz; // EX-L14
|
||||
AdlerJson::Erkundungsstellungen stellungen; // EX-L30
|
||||
AdlerJson::Wirkungsbereich wirkungsbereich; // EX-L18 Wirkungsbereich
|
||||
|
||||
einheit.r = 5;
|
||||
einheit.verein = QStringLiteral("verein Erkundungsdaten");
|
||||
|
||||
ladeplatz.hoehe = 55;
|
||||
ladeplatz.koordinate.latitude = 53.37790;
|
||||
ladeplatz.koordinate.longitude = 8.758;
|
||||
|
||||
AdlerJson::KoordinateMitHoehe waffenplatz1;
|
||||
AdlerJson::KoordinateMitHoehe waffenplatz2;
|
||||
|
||||
waffenplatz1.hoehe = 56;
|
||||
waffenplatz1.koordinate.latitude = 53.37791;
|
||||
waffenplatz1.koordinate.longitude = 8.759;
|
||||
|
||||
waffenplatz2.hoehe = 57;
|
||||
waffenplatz2.koordinate.latitude = 53.37792;
|
||||
waffenplatz2.koordinate.longitude = 8.760;
|
||||
|
||||
stellungen.waffenplaetze.append(waffenplatz1);
|
||||
stellungen.waffenplaetze.append(waffenplatz2);
|
||||
|
||||
wirkungsbereich.grundrichtung = 33;
|
||||
wirkungsbereich.links = 44;
|
||||
wirkungsbereich.rechts = 55;
|
||||
|
||||
stellungen.wirkungsbereich = wirkungsbereich;
|
||||
|
||||
req.erkundungsdaten.einheit = einheit;
|
||||
req.erkundungsdaten.ladeplatz = ladeplatz;
|
||||
req.erkundungsdaten.stellungen = stellungen;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateFeuerkampf(AdlerJson::ExFeuerkampf &req)
|
||||
{
|
||||
AdlerJson::KoordinateMitHoehe auftreffpunkt;
|
||||
auftreffpunkt.hoehe = 56;
|
||||
auftreffpunkt.koordinate.latitude = 53.37791;
|
||||
auftreffpunkt.koordinate.longitude = 8.759;
|
||||
|
||||
AdlerJson::FeuerkommandoGeschosse geschoss;
|
||||
geschoss.geschosssorte = QStringLiteral("Spreng DM121");
|
||||
geschoss.ladung = QStringLiteral("M DM72"); // L10_Load::M_DM72 (table pdm_load_type);
|
||||
geschoss.zuender = 4; // L11_Igniter::Aufschlag_DM241 (table pdm_igniter_type);
|
||||
geschoss.zuenderFunktion = 2; // L41_IgniterFunction::AZoV (table pdm_igniter_funciton)
|
||||
geschoss.zuenderZeit = 0;
|
||||
geschoss.anzahl = 1;
|
||||
geschoss.intervall = 1.0;
|
||||
|
||||
QVector<AdlerJson::Flugbahnpunkt> fpl;
|
||||
// Begin Flugbahnpunkt Liste
|
||||
{
|
||||
AdlerJson::Flugbahnpunkt fp;
|
||||
fp.zRelativ = 300;
|
||||
fp.xRelativ = 200;
|
||||
fp.yRelativ = 77;
|
||||
fp.zeit = 17;
|
||||
fpl.append(fp);
|
||||
|
||||
fp.zRelativ = 700;
|
||||
fp.xRelativ = 900;
|
||||
fp.yRelativ = 177;
|
||||
fp.zeit = 19;
|
||||
fpl.append(fp);
|
||||
|
||||
} // Ende Flugbahnpunkt Liste
|
||||
|
||||
AdlerJson::WirkmittelFeuerkommando wirkmittelFeuerkommando;
|
||||
wirkmittelFeuerkommando.kenner = ProjectDataManagement::L27_EffectorId::C2;
|
||||
wirkmittelFeuerkommando.auftreffpunkt = auftreffpunkt;
|
||||
wirkmittelFeuerkommando.flugzeit = 77;
|
||||
wirkmittelFeuerkommando.gipfelhoehe = 78;
|
||||
wirkmittelFeuerkommando.schussrichtung = 79;
|
||||
wirkmittelFeuerkommando.geschoss = geschoss;
|
||||
wirkmittelFeuerkommando.flugbahnpunkt = fpl;
|
||||
|
||||
AdlerJson::Feuerkommando feuerkommando;
|
||||
|
||||
feuerkommando.verein = QStringLiteral("verein Feuerkommando");
|
||||
feuerkommando.wirkmittel.append(wirkmittelFeuerkommando);
|
||||
// qCritical() << "wirkmittelFeuerkommando.size=" << feuerkommando.wirkmittel.size();
|
||||
AdlerJson::Zielmeldedaten zielmeldedaten;
|
||||
|
||||
generateZieldaten(zielmeldedaten.zieldaten);
|
||||
zielmeldedaten.abfeuerungsArt = AdlerJson::Abfeuerungsart::F;
|
||||
zielmeldedaten.forderung = ProjectDataManagement::L7_Request::BEL;
|
||||
zielmeldedaten.dauer = 88;
|
||||
zielmeldedaten.feuerkommandos.append(feuerkommando);
|
||||
|
||||
req.zielmeldedaten = zielmeldedaten;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateFeuerhalt(AdlerJson::ExFeuerhalt &req)
|
||||
{
|
||||
req.feuerHaltDaten.verein = QStringLiteral("123456");
|
||||
req.feuerHaltDaten.kenner = ProjectDataManagement::L27_EffectorId::A;
|
||||
req.feuerHaltDaten.kategorie = ProjectDataManagement::L22_FireHaltCategory::R;
|
||||
req.feuerHaltDaten.feuerkampfReferenz = QStringLiteral("feuerHaltDaten");
|
||||
req.feuerHaltDaten.zpNummer = 5;
|
||||
req.feuerHaltDaten.koordinate.latitude = 53.11172;
|
||||
req.feuerHaltDaten.koordinate.longitude = 8.86687;
|
||||
req.feuerHaltDaten.radius = 50;
|
||||
req.feuerHaltDaten.entladenSchuss = true;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateStellungsmeldungFS(AdlerJson::ExFeuerstellungFS &req)
|
||||
{
|
||||
req.feuerstellungsdaten.typ = ProjectDataManagement::L26_EffectingSystemType::RRohr;
|
||||
req.feuerstellungsdaten.status = ProjectDataManagement::L28_Status::Einsatzbereit;
|
||||
req.feuerstellungsdaten.feuereinheit.verein = QStringLiteral("verein ExFeuerstellungFS");
|
||||
req.feuerstellungsdaten.feuereinheit.r = 5;
|
||||
req.feuerstellungsdaten.feuereinheit.oi = ProjectDataManagement::L19_Oi::F3;
|
||||
req.feuerstellungsdaten.mittelpunkt.koordinate.latitude = 53.37791;
|
||||
req.feuerstellungsdaten.mittelpunkt.koordinate.longitude = 8.759;
|
||||
req.feuerstellungsdaten.mittelpunkt.hoehe = 20;
|
||||
AdlerJson::KoordinateMitHoehe koordinate1;
|
||||
AdlerJson::KoordinateMitHoehe koordinate2;
|
||||
koordinate1.hoehe = 22;
|
||||
koordinate1.koordinate.latitude = 53.37792;
|
||||
koordinate1.koordinate.longitude = 8.760;
|
||||
koordinate2.hoehe = 23;
|
||||
koordinate2.koordinate.latitude = 53.37793;
|
||||
koordinate2.koordinate.longitude = 8.761;
|
||||
req.feuerstellungsdaten.koordinaten.append(koordinate1);
|
||||
req.feuerstellungsdaten.koordinaten.append(koordinate2);
|
||||
|
||||
AdlerJson::Geschoss geschoss1;
|
||||
AdlerJson::Geschoss geschoss2;
|
||||
geschoss1.geschosssorte = QStringLiteral("Mine DM72");
|
||||
geschoss1.ladung = QStringLiteral("M DM72"); // L10_Load::M_DM72 (table pdm_load_type);
|
||||
geschoss1.zuender = 11; // L11_Igniter::Doppel_DM183 (table pdm_igniter_type)
|
||||
geschoss1.anzahl = 6;
|
||||
|
||||
geschoss2.geschosssorte = QStringLiteral("Leucht DM116");
|
||||
geschoss2.ladung = QStringLiteral("B L8A1"); // L10_Load::B_L8A1 (table pdm_load_type)
|
||||
geschoss2.zuender = 3; // L11_Igniter::Aufschlag_BB_DM371 (table pdm_igniter_type)
|
||||
geschoss2.anzahl = 7;
|
||||
req.feuerstellungsdaten.geschosse.append(geschoss1);
|
||||
req.feuerstellungsdaten.geschosse.append(geschoss2);
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateStellungsmeldungWS(AdlerJson::ExFeuerstellungWS &req)
|
||||
{
|
||||
req.waffensystemdaten.typ = ProjectDataManagement::L26_EffectingSystemType::RRohr;
|
||||
req.waffensystemdaten.kenner = ProjectDataManagement::L27_EffectorId::B1;
|
||||
req.waffensystemdaten.status = ProjectDataManagement::L28_Status::Einsatzbereit;
|
||||
req.waffensystemdaten.einheit.verein = QStringLiteral("AB7X");
|
||||
req.waffensystemdaten.einheit.r = 6;
|
||||
req.waffensystemdaten.einheit.oi = ProjectDataManagement::L19_Oi::F6;
|
||||
|
||||
AdlerJson::Geschoss geschoss1;
|
||||
AdlerJson::Geschoss geschoss2;
|
||||
geschoss1.geschosssorte = QStringLiteral("Mine DM72");
|
||||
geschoss1.ladung = QStringLiteral("M DM72"); // L10_Load::M_DM72 (table pdm_load_type);
|
||||
geschoss1.zuender = QStringLiteral("Doppel DM183"); // L11_Igniter::Doppel_DM183 (table pdm_igniter_type)
|
||||
geschoss1.anzahl = 6;
|
||||
|
||||
geschoss2.geschosssorte = QStringLiteral("Leucht DM116");
|
||||
geschoss2.ladung = QStringLiteral("B L8A1"); // L10_Load::B_L8A1 (table pdm_load_type)
|
||||
geschoss2.zuender = QStringLiteral("Aufschlag BB DM371"); // L11_Igniter::Aufschlag_BB_DM371 (table pdm_igniter_type)
|
||||
geschoss2.anzahl = 7;
|
||||
req.waffensystemdaten.geschosse.append(geschoss1);
|
||||
req.waffensystemdaten.geschosse.append(geschoss2);
|
||||
|
||||
req.waffensystemdaten.koordinate.koordinate.latitude = 53.088354;
|
||||
req.waffensystemdaten.koordinate.koordinate.longitude = 8.853092;
|
||||
req.waffensystemdaten.koordinate.hoehe = 20;
|
||||
|
||||
req.waffensystemdaten.wirkungsbereich.grundrichtung = 1;
|
||||
req.waffensystemdaten.wirkungsbereich.links = 2;
|
||||
req.waffensystemdaten.wirkungsbereich.rechts = 3;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateStellungsmeldungWS_Gmlrs(AdlerJson::ExFeuerstellungWS &req)
|
||||
{
|
||||
req.waffensystemdaten.typ = ProjectDataManagement::L26_EffectingSystemType::Mars;
|
||||
req.waffensystemdaten.kenner = ProjectDataManagement::L27_EffectorId::NO_211;
|
||||
req.waffensystemdaten.status = ProjectDataManagement::L28_Status::NichtEinsatzbereit;
|
||||
req.waffensystemdaten.einheit.verein = QStringLiteral("AB13X");
|
||||
req.waffensystemdaten.einheit.r = 6;
|
||||
req.waffensystemdaten.einheit.oi = ProjectDataManagement::L19_Oi::F6;
|
||||
|
||||
AdlerJson::Geschoss geschoss1;
|
||||
AdlerJson::Geschoss geschoss2;
|
||||
geschoss1.geschosssorte = QStringLiteral("GMLRS Unitary M31");
|
||||
geschoss1.ladung = QStringLiteral("Default"); // L10_Load::M_DM72 (table pdm_load_type);
|
||||
geschoss1.zuender = QStringLiteral("Default"); // L11_Igniter::Doppel_DM183 (table pdm_igniter_type)
|
||||
geschoss1.anzahl = 6;
|
||||
|
||||
geschoss2.geschosssorte = QStringLiteral("GMLRS Unitary M31");
|
||||
geschoss2.ladung = QStringLiteral("Default"); // L10_Load::M_DM72 (table pdm_load_type);
|
||||
geschoss2.zuender = QStringLiteral("Default"); // L11_Igniter::Doppel_DM183 (table pdm_igniter_type)
|
||||
geschoss2.anzahl = 6;
|
||||
|
||||
req.waffensystemdaten.geschosse.append(geschoss1);
|
||||
req.waffensystemdaten.geschosse.append(geschoss2);
|
||||
|
||||
req.waffensystemdaten.koordinate.koordinate.latitude = 53.088354;
|
||||
req.waffensystemdaten.koordinate.koordinate.longitude = 8.853092;
|
||||
req.waffensystemdaten.koordinate.hoehe = 20;
|
||||
|
||||
req.waffensystemdaten.wirkungsbereich.grundrichtung = 1;
|
||||
req.waffensystemdaten.wirkungsbereich.links = 2;
|
||||
req.waffensystemdaten.wirkungsbereich.rechts = 3;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateStellungsmeldungWS_Dm72(AdlerJson::ExFeuerstellungWS &req)
|
||||
{
|
||||
req.waffensystemdaten.typ = ProjectDataManagement::L26_EffectingSystemType::Mars;
|
||||
req.waffensystemdaten.kenner = ProjectDataManagement::L27_EffectorId::NO_212;
|
||||
req.waffensystemdaten.status = ProjectDataManagement::L28_Status::NichtEinsatzbereit;
|
||||
req.waffensystemdaten.einheit.verein = QStringLiteral("AB72X");
|
||||
req.waffensystemdaten.einheit.r = 1;
|
||||
req.waffensystemdaten.einheit.oi = ProjectDataManagement::L19_Oi::F1;
|
||||
|
||||
AdlerJson::Geschoss geschoss1;
|
||||
AdlerJson::Geschoss geschoss2;
|
||||
geschoss1.geschosssorte = QStringLiteral("Mine DM72");
|
||||
geschoss1.ladung = QStringLiteral("Default");
|
||||
geschoss1.zuender = QStringLiteral("Default");
|
||||
geschoss1.anzahl = 6;
|
||||
|
||||
geschoss2.geschosssorte = QStringLiteral("Mine DM72");
|
||||
geschoss2.ladung = QStringLiteral("Default");
|
||||
geschoss2.zuender = QStringLiteral("Default");
|
||||
geschoss2.anzahl = 6;
|
||||
|
||||
req.waffensystemdaten.geschosse.append(geschoss1);
|
||||
req.waffensystemdaten.geschosse.append(geschoss2);
|
||||
|
||||
req.waffensystemdaten.koordinate.koordinate.latitude = 53.0737;
|
||||
req.waffensystemdaten.koordinate.koordinate.longitude = 8.89542;
|
||||
req.waffensystemdaten.koordinate.hoehe = 20;
|
||||
|
||||
req.waffensystemdaten.wirkungsbereich.grundrichtung = 1;
|
||||
req.waffensystemdaten.wirkungsbereich.links = 2;
|
||||
req.waffensystemdaten.wirkungsbereich.rechts = 3;
|
||||
}
|
||||
|
||||
|
||||
void GenerateTelegrams::generateStellungsmeldungLP(AdlerJson::ExFeuerstellungLP &req)
|
||||
{
|
||||
req.ladeplatzdaten.einheit.r = 5;
|
||||
req.ladeplatzdaten.einheit.verein = QStringLiteral("verein StellungsmeldungLP");
|
||||
req.ladeplatzdaten.einheit.oi = ProjectDataManagement::L19_Oi::F3;
|
||||
|
||||
req.ladeplatzdaten.koordinate.koordinate.latitude = 53.37791;
|
||||
req.ladeplatzdaten.koordinate.koordinate.longitude = 8.759;
|
||||
req.ladeplatzdaten.koordinate.hoehe = 20;
|
||||
AdlerJson::Geschoss geschoss1;
|
||||
AdlerJson::Geschoss geschoss2;
|
||||
geschoss1.geschosssorte = QStringLiteral("Mine DM72");
|
||||
geschoss1.ladung = QStringLiteral("M DM72"); // L10_Load::M_DM72 (table pdm_load_type);
|
||||
geschoss1.zuender = QStringLiteral("Doppel DM183"); // L11_Igniter::Doppel_DM183 (table pdm_igniter_type);
|
||||
geschoss1.anzahl = 6;
|
||||
|
||||
geschoss2.geschosssorte = QStringLiteral("Leucht DM116");
|
||||
geschoss2.ladung = QStringLiteral("B L8A1"); // L10_Load::B_L8A1 (table pdm_load_type)
|
||||
geschoss2.zuender = QStringLiteral("Aufschlag_BB_DM371"); // L11_Igniter::Aufschlag_BB_DM371(table pdm_igniter_type);
|
||||
geschoss2.anzahl = 7;
|
||||
req.ladeplatzdaten.geschosse.append(geschoss1);
|
||||
req.ladeplatzdaten.geschosse.append(geschoss2);
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateStellungswechsel(AdlerJson::ExStellungswechsel &req)
|
||||
{
|
||||
req.stellungswechseldaten.oi = ProjectDataManagement::L19_Oi::F3;
|
||||
req.stellungswechseldaten.r = 5;
|
||||
req.stellungswechseldaten.verein = QStringLiteral("verein ExStellungswechsel");
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateZeit1(AdlerJson::Zeitangabe_DTG &zeit)
|
||||
{
|
||||
zeit.stunden = 5;
|
||||
zeit.minuten = 35;
|
||||
zeit.sekunden = 55;
|
||||
zeit.tag = 12;
|
||||
zeit.monat = 11;
|
||||
zeit.jahr = 2025;
|
||||
|
||||
zeit.ZVz = QStringLiteral("ZVz");
|
||||
zeit.ZDS = QStringLiteral("ZDS");
|
||||
zeit.ZDM = QStringLiteral("ZDM");
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateZeit2(AdlerJson::Zeitangabe_DTG &zeit)
|
||||
{
|
||||
zeit.stunden = 5;
|
||||
zeit.minuten = 35;
|
||||
zeit.sekunden = 55;
|
||||
zeit.tag = 13;
|
||||
zeit.monat = 11;
|
||||
zeit.jahr = 2025;
|
||||
|
||||
zeit.ZVz = QStringLiteral("ZVz");
|
||||
zeit.ZDS = QStringLiteral("ZDS");
|
||||
zeit.ZDM = QStringLiteral("ZDM");
|
||||
}
|
||||
|
||||
|
||||
void GenerateTelegrams::generateKoordinierungsmassnahmen(AdlerJson::ExHqKoordinierungsmassnahmen &req)
|
||||
{
|
||||
req.koordinierungsdaten.art = ProjectDataManagement::L25_KindGuidingLine::NFA; // EX-L25
|
||||
req.koordinierungsdaten.name = QStringLiteral("Name ExHqKoordinierungsmassnahme");
|
||||
req.koordinierungsdaten.truppenteil = QStringLiteral("Truppenteil ExHqKoordinierungsmassnahme");
|
||||
generateZeit1(req.koordinierungsdaten.ab);
|
||||
generateZeit2(req.koordinierungsdaten.bis);
|
||||
|
||||
AdlerJson::Koordinate koordinate1;
|
||||
AdlerJson::Koordinate koordinate2;
|
||||
koordinate1.latitude = 53.37792;
|
||||
koordinate1.longitude = 8.760;
|
||||
koordinate2.latitude = 53.37793;
|
||||
koordinate2.longitude = 8.761;
|
||||
req.koordinierungsdaten.koordinaten.append(koordinate1);
|
||||
req.koordinierungsdaten.koordinaten.append(koordinate2);
|
||||
req.koordinierungsdaten.mittelpunkt.latitude = 53.37794;
|
||||
req.koordinierungsdaten.mittelpunkt.longitude = 8.762;
|
||||
req.koordinierungsdaten.radius = 66;
|
||||
req.koordinierungsdaten.maxGipfel = 123;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateKoordinierungsmassnahmen_EX_L25(AdlerJson::ExHqKoordinierungsmassnahmen &req,
|
||||
ProjectDataManagement::L25_KindGuidingLine kind,
|
||||
int i)
|
||||
{
|
||||
req.koordinierungsdaten.art = kind; // EX-L25
|
||||
req.koordinierungsdaten.meldungsnummer = i;
|
||||
req.koordinierungsdaten.name = QStringLiteral("Name ExHqKoordinierungsmassnahme");
|
||||
req.koordinierungsdaten.truppenteil = QStringLiteral("Truppenteil ExHqKoordinierungsmassnahme");
|
||||
generateZeit1(req.koordinierungsdaten.ab);
|
||||
generateZeit2(req.koordinierungsdaten.bis);
|
||||
|
||||
AdlerJson::Koordinate koordinate1;
|
||||
AdlerJson::Koordinate koordinate2;
|
||||
AdlerJson::Koordinate koordinate3;
|
||||
koordinate1.latitude = 52.49303888888889;
|
||||
koordinate1.longitude = 11.53173888888889;
|
||||
koordinate2.latitude = 52.49305277777784;
|
||||
koordinate2.longitude = 11.53527777777777;
|
||||
koordinate3.latitude = 52.49056944444446;
|
||||
koordinate3.longitude = 11.53326388888889;
|
||||
req.koordinierungsdaten.koordinaten.append(koordinate1);
|
||||
req.koordinierungsdaten.koordinaten.append(koordinate2);
|
||||
req.koordinierungsdaten.koordinaten.append(koordinate3);
|
||||
req.koordinierungsdaten.mittelpunkt.latitude = 52.49222037;
|
||||
req.koordinierungsdaten.mittelpunkt.longitude = 11.53342685;
|
||||
req.koordinierungsdaten.radius = 66;
|
||||
req.koordinierungsdaten.maxGipfel = 123;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateFuehrungslinien(AdlerJson::ExHqFuehrungslinien &req)
|
||||
{
|
||||
req.fuehrungsdaten.art = AdlerJson::Art_L24::AO;
|
||||
req.fuehrungsdaten.name = QStringLiteral("Name EX-HQ(G) Führungslinien und Grenzen");
|
||||
generateZeit1(req.fuehrungsdaten.ab);
|
||||
generateZeit2(req.fuehrungsdaten.bis);
|
||||
AdlerJson::Koordinate koordinate1;
|
||||
AdlerJson::Koordinate koordinate2;
|
||||
koordinate1.latitude = 53.37792;
|
||||
koordinate1.longitude = 8.760;
|
||||
koordinate2.latitude = 53.37793;
|
||||
koordinate2.longitude = 8.761;
|
||||
req.fuehrungsdaten.koordinaten.append(koordinate1);
|
||||
req.fuehrungsdaten.koordinaten.append(koordinate2);
|
||||
req.fuehrungsdaten.linkerNachbar = QStringLiteral("linker Nachbar");
|
||||
req.fuehrungsdaten.rechterNachbar = QStringLiteral("rechter Nachbar");
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateFuehrungslinien_EX_L24(AdlerJson::ExHqFuehrungslinien &req, AdlerJson::Art_L24 art24, int meldungsnummer)
|
||||
{
|
||||
req.fuehrungsdaten.koordinaten.clear();
|
||||
req.fuehrungsdaten.art = art24;
|
||||
req.fuehrungsdaten.name = QStringLiteral("Fuehrungslinie");
|
||||
req.fuehrungsdaten.meldungsnummer = meldungsnummer;
|
||||
generateZeit1(req.fuehrungsdaten.ab);
|
||||
generateZeit2(req.fuehrungsdaten.bis);
|
||||
AdlerJson::Koordinate koordinate1;
|
||||
AdlerJson::Koordinate koordinate2;
|
||||
AdlerJson::Koordinate koordinate3;
|
||||
koordinate1.latitude = 52.49303888888889;
|
||||
koordinate1.longitude = 11.53173888888889;
|
||||
koordinate2.latitude = 52.49305277777784;
|
||||
koordinate2.longitude = 11.53527777777777;
|
||||
koordinate3.latitude = 52.49056944444446;
|
||||
koordinate3.longitude = 11.53326388888889;
|
||||
req.fuehrungsdaten.koordinaten.append(koordinate1);
|
||||
req.fuehrungsdaten.koordinaten.append(koordinate2);
|
||||
req.fuehrungsdaten.koordinaten.append(koordinate3);
|
||||
req.fuehrungsdaten.linkerNachbar = QStringLiteral("linker Nachbar");
|
||||
req.fuehrungsdaten.rechterNachbar = QStringLiteral("rechter Nachbar");
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateTechnischeQuittung(AdlerJson::ExTqTechnischeQuittung &req)
|
||||
{
|
||||
req.technischeDaten.status = AdlerJson::Status_L32::INV;
|
||||
req.technischeDaten.beschreibung = QStringLiteral("Beschreibung technischer Status");
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateManuelleQuittung(AdlerJson::ExMqManuelleQuittung &req)
|
||||
{
|
||||
req.mqManuelleQuittungDaten.feuerkampfreferenz = QStringLiteral("Manuelle Quittung");
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateFlugbahnberechnung(AdlerJson::ExFlugbahnberechnung &req)
|
||||
{
|
||||
req.flugbahnberechnungDaten.geschoss.geschosssorte = QStringLiteral("SMArt DM702");
|
||||
req.flugbahnberechnungDaten.geschoss.ladung = QStringLiteral("M DM72"); // L10_Load::M_DM72 (table pdm_load_type);
|
||||
|
||||
req.flugbahnberechnungDaten.geschoss.zuender = QStringLiteral("Zeit DM52"); // L11_Igniter::Zeit_DM52 (table pdm_igniter_type)
|
||||
req.flugbahnberechnungDaten.geschoss.zuenderFunktion = QStringLiteral("ZZ"); // L41_IgniterFunction::ZZ (table pdm_igniter_funciton)
|
||||
req.flugbahnberechnungDaten.sprenghoehe = 0;
|
||||
req.flugbahnberechnungDaten.standort.hoehe = 55;
|
||||
req.flugbahnberechnungDaten.standort.koordinate.latitude = 53.37787;
|
||||
req.flugbahnberechnungDaten.standort.koordinate.longitude = 8.7573;
|
||||
req.flugbahnberechnungDaten.zielkoordinate.hoehe = 56;
|
||||
req.flugbahnberechnungDaten.zielkoordinate.koordinate.latitude = 53.37788;
|
||||
req.flugbahnberechnungDaten.zielkoordinate.koordinate.longitude = 8.7574;
|
||||
req.flugbahnberechnungDaten.waffensystem = ProjectDataManagement::L26_EffectingSystemType::RRohr;
|
||||
req.flugbahnberechnungDaten.winkelgruppe = AdlerJson::Winkelgruppe::Untere;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateFlugbahndaten(AdlerJson::ExFlugbahndaten &req)
|
||||
{
|
||||
req.flugbahndaten.fehlercode = AdlerJson::FlugbahnberechnungFehlercode::Ok;
|
||||
req.flugbahndaten.zielkoordinate.hoehe = 56;
|
||||
req.flugbahndaten.zielkoordinate.koordinate.latitude = 52.482048;
|
||||
req.flugbahndaten.zielkoordinate.koordinate.longitude = 11.583;
|
||||
req.flugbahndaten.waffensystem = ProjectDataManagement::L26_EffectingSystemType::RRohr;
|
||||
req.flugbahndaten.flugzeit = 300;
|
||||
req.flugbahndaten.gipfelhoehe = 200;
|
||||
req.flugbahndaten.schussrichtung = 45;
|
||||
req.flugbahndaten.fallwinkel = 55;
|
||||
|
||||
AdlerJson::Flugbahnpunkt flugbahnpunkt;
|
||||
for (int i = 0; i < 30; ++i)
|
||||
{
|
||||
flugbahnpunkt.zeit += 1.0;
|
||||
flugbahnpunkt.xRelativ += 100;
|
||||
flugbahnpunkt.yRelativ += 200;
|
||||
flugbahnpunkt.zRelativ += 10;
|
||||
req.flugbahndaten.flugbahnpunkt.append(flugbahnpunkt);
|
||||
}
|
||||
for (int i = 0; i < 30; ++i)
|
||||
{
|
||||
flugbahnpunkt.zeit += 1.0;
|
||||
flugbahnpunkt.xRelativ -= 100;
|
||||
flugbahnpunkt.yRelativ -= 200;
|
||||
flugbahnpunkt.zRelativ -= 10;
|
||||
req.flugbahndaten.flugbahnpunkt.append(flugbahnpunkt);
|
||||
}
|
||||
|
||||
req.flugbahndaten.streuung.laengsstreuung = 2.2;
|
||||
req.flugbahndaten.streuung.seitenstreuung = 3.3;
|
||||
req.flugbahndaten.streuung.laengsstreuungH = 4.4;
|
||||
req.flugbahndaten.streuung.seitenstreuungH = 5.5;
|
||||
req.flugbahndaten.geschoss.geschosssorte = QStringLiteral("Spreng DM121");
|
||||
req.flugbahndaten.geschoss.ladung = QStringLiteral("M DM72"); // L10_Load::M_DM72 (table pdm_load_type);
|
||||
req.flugbahndaten.geschoss.ladungsNummer = 5;
|
||||
req.flugbahndaten.geschoss.zuender = QStringLiteral("Aufschlag DM241"); // L11_Igniter::Aufschlag_DM241;(table pdm_igniter_type)
|
||||
req.flugbahndaten.geschoss.zuenderFunktion = QStringLiteral("AZoV"); // L41_IgniterFunction::AZoV;(table pdm_igniter_function)
|
||||
req.flugbahndaten.geschoss.zuenderZeit = 1000;
|
||||
}
|
||||
|
||||
void GenerateTelegrams::generateFreitextmeldung(AdlerJson::ExAqFreitextmeldung &req) { req.freitextDaten.text = QStringLiteral("Freier Text"); }
|
||||
@@ -0,0 +1,54 @@
|
||||
#pragma once
|
||||
|
||||
#include "telegrams.h"
|
||||
|
||||
class GenerateTelegrams
|
||||
{
|
||||
public:
|
||||
GenerateTelegrams();
|
||||
|
||||
static void SAATELEGRAMS_EXPORT addHeaderData(AdlerJson::EXTelegramBase &tele, const int saaId, const QString referenceUuid = QString{});
|
||||
static void SAATELEGRAMS_EXPORT generateConnectResponseMessage(AdlerJson::ExAnmeldebestaetigung &exAnmeldebestaetigung);
|
||||
static void SAATELEGRAMS_EXPORT generateConnectMessage(AdlerJson::EXRegistration &exRegistration, int partyId, bool isVerbund = true);
|
||||
static void SAATELEGRAMS_EXPORT generateDisconnectMessage(AdlerJson::EXDeregistration &eXDeregistration, int partyId);
|
||||
static void SAATELEGRAMS_EXPORT generateStatusMessage(AdlerJson::EXStatus &exStatus, AdlerJson::Szenarstatus status);
|
||||
static void SAATELEGRAMS_EXPORT generateConnectionTestMessage();
|
||||
static void SAATELEGRAMS_EXPORT generateAbmeldung(AdlerJson::EXDeregistration &req);
|
||||
static void SAATELEGRAMS_EXPORT generateZeit1(AdlerJson::Zeitangabe_DTG &zeit);
|
||||
static void SAATELEGRAMS_EXPORT generateZeit2(AdlerJson::Zeitangabe_DTG &zeit);
|
||||
|
||||
// fire
|
||||
static void SAATELEGRAMS_EXPORT generateZieldaten(AdlerJson::Zieldaten &wzd);
|
||||
static void SAATELEGRAMS_EXPORT generateWirkmittelFeuerkommando_Gmlrs(QVector<AdlerJson::WirkmittelFeuerkommandoRakete> &wfr);
|
||||
static void SAATELEGRAMS_EXPORT generateEXFQBABBFK(AdlerJson::ExAwesPlanning &req);
|
||||
static void SAATELEGRAMS_EXPORT generateEXFQBABBFK_Gmlrs(AdlerJson::ExAwesPlanning &req);
|
||||
static void SAATELEGRAMS_EXPORT generateEXFQBABBFK_Dm72(AdlerJson::ExAwesPlanning &req);
|
||||
static void SAATELEGRAMS_EXPORT generateFeuerbereit(AdlerJson::ExFeuerbereit &req);
|
||||
static void SAATELEGRAMS_EXPORT generateFeuern(AdlerJson::ExFeuern &req);
|
||||
static void SAATELEGRAMS_EXPORT generateFeuern_Gmlrs(AdlerJson::ExFeuern &req);
|
||||
static void SAATELEGRAMS_EXPORT generateFeuern_Dm72(AdlerJson::ExFeuern &req);
|
||||
static void SAATELEGRAMS_EXPORT generateNichtFeuern(AdlerJson::exNichtFeuern &req);
|
||||
|
||||
static void SAATELEGRAMS_EXPORT generateAbgefeuert(AdlerJson::ExAbgefeuert &req);
|
||||
static void SAATELEGRAMS_EXPORT generateVollzugsmeldung(AdlerJson::ExVollzugsmeldung &req);
|
||||
// static void SAATELEGRAMS_EXPORT generateErkundungsanfrage(AdlerJson::ExErkundungsanfrage &req);
|
||||
static void SAATELEGRAMS_EXPORT generateErkundungsergebnisse(AdlerJson::ExErkundungsergebnisse &req);
|
||||
static void SAATELEGRAMS_EXPORT generateFeuerkampf(AdlerJson::ExFeuerkampf &req);
|
||||
static void SAATELEGRAMS_EXPORT generateFeuerhalt(AdlerJson::ExFeuerhalt &req);
|
||||
static void SAATELEGRAMS_EXPORT generateStellungsmeldungFS(AdlerJson::ExFeuerstellungFS &req);
|
||||
static void SAATELEGRAMS_EXPORT generateStellungsmeldungWS(AdlerJson::ExFeuerstellungWS &req);
|
||||
static void SAATELEGRAMS_EXPORT generateStellungsmeldungWS_Gmlrs(AdlerJson::ExFeuerstellungWS &req);
|
||||
static void SAATELEGRAMS_EXPORT generateStellungsmeldungWS_Dm72(AdlerJson::ExFeuerstellungWS &req);
|
||||
static void SAATELEGRAMS_EXPORT generateStellungsmeldungLP(AdlerJson::ExFeuerstellungLP &req);
|
||||
static void SAATELEGRAMS_EXPORT generateStellungswechsel(AdlerJson::ExStellungswechsel &req);
|
||||
static void SAATELEGRAMS_EXPORT generateKoordinierungsmassnahmen(AdlerJson::ExHqKoordinierungsmassnahmen &req);
|
||||
static void SAATELEGRAMS_EXPORT generateKoordinierungsmassnahmen_EX_L25(AdlerJson::ExHqKoordinierungsmassnahmen &req,
|
||||
ProjectDataManagement::L25_KindGuidingLine kind, int i);
|
||||
static void SAATELEGRAMS_EXPORT generateFuehrungslinien(AdlerJson::ExHqFuehrungslinien &req);
|
||||
static void SAATELEGRAMS_EXPORT generateFuehrungslinien_EX_L24(AdlerJson::ExHqFuehrungslinien &req, AdlerJson::Art_L24 art24, int meldungsnummer);
|
||||
static void SAATELEGRAMS_EXPORT generateTechnischeQuittung(AdlerJson::ExTqTechnischeQuittung &req);
|
||||
static void SAATELEGRAMS_EXPORT generateFreitextmeldung(AdlerJson::ExAqFreitextmeldung &req);
|
||||
static void SAATELEGRAMS_EXPORT generateManuelleQuittung(AdlerJson::ExMqManuelleQuittung &req);
|
||||
static void SAATELEGRAMS_EXPORT generateFlugbahnberechnung(AdlerJson::ExFlugbahnberechnung &req);
|
||||
static void SAATELEGRAMS_EXPORT generateFlugbahndaten(AdlerJson::ExFlugbahndaten &req);
|
||||
};
|
||||
@@ -0,0 +1,6 @@
|
||||
#include "interface_controller.h"
|
||||
|
||||
InterfaceController::InterfaceController()
|
||||
{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
class InterfaceController
|
||||
{
|
||||
public:
|
||||
InterfaceController();
|
||||
|
||||
public Q_SLOTS:
|
||||
void onRegistration();
|
||||
void onDeregistration();
|
||||
|
||||
void onNewConnection();
|
||||
void onWebSocketDisconnected();
|
||||
void onTextMessageReceived(const QByteArray &baJson);
|
||||
};
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,159 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* HlaDispatcher for AdlerJson Plugin
|
||||
* $Id: hla_dispatcher.h 62304 2024-03-21 08:17:45Z ewert_j $
|
||||
* $HeadURL: svn://slssvn/TDS/branches/product/features/ufom/Lts/Proxies/TrainingAreaBase/Plugins/AdlerJson/hla_dispatcher.h $
|
||||
* $Author: ewert_j $
|
||||
* Created by Julius Ewert, ESIM, 2024-03-20
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QHash>
|
||||
#include <QObject>
|
||||
#include <QVector>
|
||||
#include <QWebSocket>
|
||||
#include <DDS/Core/function_reply_object.h> // tr_lts
|
||||
#include <TrainingAreaBase/tab_plugin_interface.h>
|
||||
// #include "logger.h"
|
||||
#include "aes_handler.h"
|
||||
#include "asm_handler.h"
|
||||
#include "flm_handler.h"
|
||||
#include "pdm_handler.h"
|
||||
#include "ppm_handler.h"
|
||||
#include "saa_interface.h"
|
||||
#include "telegrams.h"
|
||||
#include "ws_interface.h"
|
||||
|
||||
// #include <NotificationManagement/nom_ftc.h>
|
||||
#include <NotificationManagement/nom_enums.hpp>
|
||||
// #include <TrainingAreaBase/tab_dts.h>
|
||||
// #include <TrainingAreaBase/tab_fts.h>
|
||||
|
||||
class QTimer;
|
||||
namespace AdlerJson
|
||||
{
|
||||
using namespace TrainingAreaBase;
|
||||
class JsonHandlerRx;
|
||||
class JsonHandlerTx;
|
||||
class DdsHandler;
|
||||
// class EXStatus;
|
||||
|
||||
struct TrajectoryIdentifier
|
||||
{
|
||||
int aesItemId;
|
||||
int explosionId;
|
||||
};
|
||||
|
||||
class JsonDispatcher final
|
||||
: public TrainingAreaBase::Plugin::Interface
|
||||
, protected TrainingAreaBase::Interface::Fts::AdlerCalculateTrajectoryRequestHandler
|
||||
, protected NotificationManagement::Interface::Ftc::CreateNotificationReplyHandler
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
JsonDispatcher(TrainingAreaBase::Plugin::DataProvider *pdp,
|
||||
const std::shared_ptr<TrainingAreaBase::RecvFromTab> &recvFromTabCb,
|
||||
const std::shared_ptr<TrainingAreaBase::TxMixin> &sendToTabCb,
|
||||
NGL::Settings *settings,
|
||||
std::shared_ptr<TrainingAreaBase::DdsHandler> &ddsHandler,
|
||||
std::shared_ptr<FlmHandler> &flmHandler,
|
||||
MainDispatcher *mainDispatcher);
|
||||
|
||||
public Q_SLOTS:
|
||||
bool init() override;
|
||||
|
||||
public:
|
||||
std::shared_ptr<TrainingAreaBase::SendToTab> sendToTab() override;
|
||||
bool isDebugInterface() const override { return false; }
|
||||
bool canSendData() const override;
|
||||
void exerciseChanged() override { return; }
|
||||
const char *name() const override { return tr_lts("dds", "APHLA"); }
|
||||
std::shared_ptr<SAAInterface> getSAAByParty(const int partyId);
|
||||
std::shared_ptr<SAAInterface> getSAAByWs(const int wsId);
|
||||
QString getSender() { return QStringLiteral("EXCON@GUEZ.DE"); }
|
||||
// SendToTele
|
||||
bool sendExFeuerbereit(const ExFeuerbereit &exFBDataIn, const int partyId);
|
||||
bool sendExAbgefeuert(const ExAbgefeuert &exAFDataIn, int partyId);
|
||||
bool sendExMqManuelleQuittung(const ExMqManuelleQuittung &exMQDataIn, int partyId);
|
||||
bool sendExTqTechnischeQuittung(const ExTqTechnischeQuittung &exTQDataIn, int partyId);
|
||||
bool sendExVollzugsmeldung(const ExVollzugsmeldung &exVZDataIn, int partyId);
|
||||
void onAdlerCalculateTrajectoryRequest(const rti::core::SampleIdentity &cookie, const TrainingAreaBase::AdlerCalculateTrajectoryRequest &request) override;
|
||||
int getAssetId(const QString &saaName) const;
|
||||
// misc
|
||||
void cleanupSaaInterfaces(const QString &saaName, int wsId, int partyId);
|
||||
void getCreateNotificationRequestData(const int wsId,
|
||||
const QString &title,
|
||||
NotificationManagement::CreateNotification &data,
|
||||
const QString &content = {},
|
||||
const QStringList &contentArgs = {});
|
||||
void createNotificationRequest(const int wsId, const QString &title, const NotificationManagement::MessageType messageType, const NotificationManagement::NotificationType notificationType, const QString &content = {}, const QStringList &contentArgs = {});
|
||||
|
||||
public Q_SLOTS:
|
||||
void onSAARegistration(const int wsId, const int partyId, const QString &saaName, const QString &szenarName, bool isVerbund, const QString &uuid);
|
||||
void onSAADeregistration(const int wsId, const int partyId);
|
||||
void onSAAConnectionTest(const int wsId, const QString &uuid);
|
||||
void onSAAStatus(const int wsId, const EXStatus &status);
|
||||
void onSAAExceptionStatus(const int wsId, const TechnischeDaten &exceptionStatus);
|
||||
void onSAASQWS(const int wsId, const Waffensystemdaten &exSQWS);
|
||||
void onSAASQFS(const int wsId, const Feuerstellungsdaten &exSQFS);
|
||||
void onSAASQLP(const int wsId, const Ladeplatzdaten &exSQLP);
|
||||
void onSAAHXGuidingLines(const int wsId, const Koordinierungsdaten &koordinierungsdaten);
|
||||
void onSAAHXGuidingLinesAndBoundaries(const int wsId, const Fuehrungsdaten &fuehrungsdaten);
|
||||
void onSSAEXFIREHALT(const int wsId, const FeuerHaltDaten &feuerhaltdaten);
|
||||
void onSAATrajectoryData(const int wsId, const Flugbahndaten &exFlugbahndaten, const QString referenceUuid);
|
||||
|
||||
void onWebSocketConnected();
|
||||
void onNewWebsocketConnected(const int wsId, const QString &address, qint16 port);
|
||||
void onWSDisconnected(const int wsId);
|
||||
void onWebsocketExternalConnectionStateChanged(bool bConnected);
|
||||
void onWebSocketError();
|
||||
void onRecivedTelegram(int wsId, const QJsonObject &telegramData);
|
||||
void onTextMessageReceived(const QByteArray &message);
|
||||
void connectWebsocket();
|
||||
void reallyConnectWebsocket() { connectWebsocket(); }
|
||||
|
||||
void onKeepAliveTimerTimeout();
|
||||
void onCreateNotificationReply(const Core::FunctionReplyObject &replyObject);
|
||||
Q_SIGNALS:
|
||||
void broadcastTelegramsRequest(const int equipmentNumber, const int broadcastIndex, const int resetCounter);
|
||||
void jsonTelegramReceived(const TrainingAreaBase::TetraIcd::TrainingAreaTelegram *tele);
|
||||
void websocketConnected(quint16 port);
|
||||
|
||||
private:
|
||||
QUrl webSocketUrl() const;
|
||||
bool isConnectionTest(QJsonDocument &doc);
|
||||
QString getParticipantInfoLink(const QString &verein, const int partyId, const bool isVerbund);
|
||||
|
||||
std::shared_ptr<SAAInterface> getSAAByName(const QString &saaName);
|
||||
|
||||
private:
|
||||
std::shared_ptr<TrainingAreaBase::RecvFromTab> m_recvFromTabCb;
|
||||
std::shared_ptr<JsonHandlerRx> m_recvFromWebsocket;
|
||||
std::shared_ptr<JsonHandlerTx> m_sendToWebsocket;
|
||||
// DDS
|
||||
MainDispatcher *m_mainDispatcher;
|
||||
std::shared_ptr<FlmHandler> m_flmHandler;
|
||||
std::shared_ptr<PpmHandler> m_ppmHandler;
|
||||
|
||||
std::shared_ptr<TrainingAreaBase::Interface::Fts> m_ftsTab;
|
||||
std::shared_ptr<TrainingAreaBase::Interface::Dts> m_dtsTab;
|
||||
std::shared_ptr<NotificationManagement::Interface::Ftc> m_ftcNom;
|
||||
|
||||
QVector<std::shared_ptr<SAAInterface>> m_saaInterfaces;
|
||||
QMap<int, QTimer *> m_connectionKeepaliveTimer;
|
||||
|
||||
QHash<QString, TrajectoryIdentifier> m_trajectoryIdentifier; // key = exFlugbahnberechnung.uuid
|
||||
QHash<QString, Core::GeoPosition> m_positionsLaunch; // key = exFlugbahnberechnung.uuid
|
||||
|
||||
NGL::Settings *m_settings;
|
||||
QWebSocket *m_webSocket;
|
||||
std::shared_ptr<TrainingAreaBase::WebSocketInterface> m_webSocketInterface;
|
||||
QTimer *m_webSocketReconnectTimer;
|
||||
bool m_bWarnedOnce;
|
||||
rti::core::SampleIdentity m_cookieCalculateTrajectoryAdler;
|
||||
int m_explosionIndex;
|
||||
NGL::INGLLogger &m_logger;
|
||||
};
|
||||
|
||||
} // namespace AdlerJson
|
||||
@@ -0,0 +1,347 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* JsonHandlerRx for AdlerJson Plugin
|
||||
* $Id: hla_handler_rx.cpp 62899 2024-05-29 11:08:50Z ewert_j $
|
||||
* $HeadURL: svn://slssvn/TDS/branches/product/features/ufom/Lts/Proxies/TrainingAreaBase/Plugins/AdlerJson/hla_handler_rx.cpp $
|
||||
* $Author: ewert_j $
|
||||
* Created by Julius Ewert, ESIM, 2024-03-20
|
||||
*/
|
||||
|
||||
#include "json_handler_rx.h"
|
||||
#include "aes_handler.h"
|
||||
#include "json_dispatcher.h"
|
||||
#include "ppm_handler.h"
|
||||
#include "telegrams.h"
|
||||
#include <QJsonDocument>
|
||||
|
||||
namespace AdlerJson
|
||||
{
|
||||
JsonHandlerRx::JsonHandlerRx(const std::shared_ptr<TrainingAreaBase::RecvFromTab> &recvFromTabCb,
|
||||
const std::shared_ptr<TrainingAreaBase::TxMixin> &sendToTabCb,
|
||||
JsonDispatcher *dispatcher,
|
||||
AesHandler *aesHandler,
|
||||
PpmHandler *ppmHandler)
|
||||
: m_rxHandler(recvFromTabCb)
|
||||
, m_txHandler(sendToTabCb) // std::static_pointer_cast<TrainingAreaBase::SendToTab>(sendToTabCb))
|
||||
, m_dispatcher(dispatcher)
|
||||
, m_bWarnedOnce(false)
|
||||
, m_bWarnedOnceTx(false)
|
||||
, m_aesHandler(aesHandler)
|
||||
, m_ppmHandler(ppmHandler)
|
||||
, m_logger(getLogger("JsonHandlerRx"))
|
||||
{
|
||||
}
|
||||
bool JsonHandlerRx::handleTelegram(int wsId, const QJsonObject &telegram, int &errorcode)
|
||||
{
|
||||
errorcode = 0;
|
||||
using namespace TrainingAreaBase::TetraIcd;
|
||||
|
||||
if (!telegram.contains(JsonKeys::TYPE_ID()))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "telegram not contains typeId";
|
||||
}
|
||||
|
||||
const int typeId = telegram[JsonKeys::TYPE_ID()].toInt();
|
||||
const QString typeName = telegram[JsonKeys::TYPE()].toString();
|
||||
const QString uuid = telegram[JsonKeys::UUID_()].toString();
|
||||
const QString referenceUuid = telegram[JsonKeys::REFERENCE_UUID()].toString();
|
||||
|
||||
INFO_LOG(m_logger) << "[handleTelegram] typeId=" << typeId << " typeName=" << typeName << " uuid=" << uuid << " referenceUuid=" << referenceUuid;
|
||||
|
||||
try
|
||||
{
|
||||
switch (typeId)
|
||||
{
|
||||
case AdlerJson::TelegramIds::EX_REGISTRATION_REQUEST(): // EX-Anmeldung
|
||||
{
|
||||
QJsonObject dataObj = telegram[JsonKeys::DATA()].toObject();
|
||||
int partyId = dataObj.value(JsonKeys::PARTY_ID()).toInt(0);
|
||||
QString saaName = telegram[JsonKeys::SENDER()].toString();
|
||||
QString szenarName = dataObj.value(JsonKeys::SZENAR()).toString();
|
||||
bool isVerbund = dataObj.value(JsonKeys::ADLER_VERBUND()).toBool();
|
||||
m_dispatcher->onSAARegistration(wsId, partyId, saaName, szenarName, isVerbund, uuid);
|
||||
WARNING_LOG(m_logger) << "On Register ------------------- partyId= " << partyId << ", saaName= " << saaName << ", szenarName= " << szenarName
|
||||
<< ", isVerbund= " << isVerbund << ", wsId= " << wsId;
|
||||
break;
|
||||
}
|
||||
case TelegramIds::EX_DEREGISTRATION_REQUEST(): // EX-Abmeldung
|
||||
{
|
||||
const int partyId = telegram[JsonKeys::DATA()].toObject().value(JsonKeys::PARTY_ID()).toInt(0);
|
||||
m_dispatcher->onSAADeregistration(wsId, partyId);
|
||||
WARNING_LOG(m_logger) << "[EX_DEREGISTRATION_REQUEST] EX-Abmeldung -------------------------------------";
|
||||
break;
|
||||
}
|
||||
case TelegramIds::EX_CONNECTION_TEST_REQUEST(): // EX-Verbindungsanfrage
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "[EX_CONNECTION_TEST_REQUEST] EX-Verbindungsanfrage -------------------------------------";
|
||||
m_dispatcher->onSAAConnectionTest(wsId, uuid);
|
||||
break;
|
||||
}
|
||||
case TelegramIds::EX_STATUS(): // EX-Status
|
||||
{
|
||||
WARNING_LOG(m_logger) << "[EX_STATUS] EX-Status -------------------------------------";
|
||||
auto data = telegram[JsonKeys::DATA()];
|
||||
const QString status = data.toObject().value(JsonKeys::STATUS()).toString(QStringLiteral(""));
|
||||
|
||||
EXStatus exStatus;
|
||||
exStatus.status = strToSzenarstatus(status);
|
||||
|
||||
m_dispatcher->onSAAStatus(wsId, exStatus);
|
||||
break;
|
||||
}
|
||||
case TelegramIds::EX_TQ(): // Technische Quittierung
|
||||
{
|
||||
WARNING_LOG(m_logger) << "[EX_TQ] Technische Quittierung -------------------------------------";
|
||||
const auto data = telegram[JsonKeys::DATA()].toObject();
|
||||
bool bOk = true;
|
||||
TechnischeDaten technischeDaten;
|
||||
AdlerJson::technischeDatenFromJson(data, technischeDaten, bOk);
|
||||
m_dispatcher->onSAAExceptionStatus(wsId, technischeDaten);
|
||||
break;
|
||||
}
|
||||
case TelegramIds::EX_FIRE(): // EX-FQ(FN) Feuern
|
||||
{
|
||||
WARNING_LOG(m_logger) << "[EX-FQ(FN)] EX-Feuern -------------------------------------";
|
||||
auto data = telegram[JsonKeys::DATA()].toObject();
|
||||
bool bOk = true;
|
||||
Feuerkampfdaten exFire;
|
||||
feuerkampfdatenFromJson(data, exFire, bOk);
|
||||
|
||||
// send to AES
|
||||
|
||||
m_aesHandler->handleEXFire(exFire, wsId);
|
||||
break;
|
||||
}
|
||||
case TelegramIds::EX_AWES_PLANNING(): // EX-FQ(BA-BB-FK) Wirkfeldplanung
|
||||
{
|
||||
WARNING_LOG(m_logger) << "[EX_AWES_PLANNING] EX-FQ(BA-BB-FK) Wirkfeldplanung";
|
||||
auto data = telegram[JsonKeys::DATA()].toObject();
|
||||
WirkfeldplanungData wirkfeldplanungData;
|
||||
bool bOk = true;
|
||||
wirkfeldplanungDataFromJson(data, wirkfeldplanungData, bOk);
|
||||
DEBUG_LOG(m_logger) << "\n-------------------"
|
||||
<< "\nwirkfeldplanungData"
|
||||
<< "\n dauer: " << wirkfeldplanungData.dauer << "\n abfeuerungsArt: " << static_cast<int>(wirkfeldplanungData.abfeuerungsArt)
|
||||
<< "\n feuerkampfReferenz: '" << wirkfeldplanungData.feuerkampfReferenz << "'"
|
||||
<< "\n verein: '" << wirkfeldplanungData.feuerkommando.verein << "'"
|
||||
<< "\n bOk: " << bOk << "\n-------------------";
|
||||
|
||||
m_aesHandler->handleEffectCluster(wirkfeldplanungData, wsId);
|
||||
break;
|
||||
}
|
||||
case TelegramIds::EX_POSITION_REPORT_WEAPON(): // Only sent by SAA ( Ex-SQ(WS) Stellungsmeldung Waffensystem)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "[EX_POSITION_REPORT_WEAPON] Ex-SQ(WS) Stellungsmeldung Waffensystem";
|
||||
auto data = telegram[JsonKeys::DATA()].toObject();
|
||||
Waffensystemdaten exSQWS;
|
||||
bool bOk = true;
|
||||
waffensystemdatenFromJson(data, exSQWS, bOk);
|
||||
if (!bOk)
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Received Ex-SQ(WS) but couldn't parse the jsondata ";
|
||||
break;
|
||||
}
|
||||
|
||||
m_dispatcher->onSAASQWS(wsId, exSQWS);
|
||||
|
||||
break;
|
||||
}
|
||||
case TelegramIds::EX_POSITION_REPORT_FIRE(): // Only sent by SAA ( Ex-SQ(FS) Stellungsmeldung Feuerstellung)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "[EX_POSITION_REPORT_FIRE] Ex-SQ(FS) Stellungsmeldung Feuerstellung";
|
||||
auto data = telegram[JsonKeys::DATA()].toObject();
|
||||
Feuerstellungsdaten exSQFS;
|
||||
bool bOk = true;
|
||||
feuerstellungsdatenFromJson(data, exSQFS, bOk);
|
||||
if (!bOk)
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Received Ex-SQ(FS) but couldn't parse the jsondata ";
|
||||
break;
|
||||
}
|
||||
|
||||
m_dispatcher->onSAASQFS(wsId, exSQFS);
|
||||
|
||||
break;
|
||||
}
|
||||
case TelegramIds::EX_POSITION_REPORT_LOADING_PLACE(): // sent by SAA+EXCON ( EX-SQ(LP)Stellungsmeldung Ladeplatz)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "[EX_POSITION_REPORT_LOADING_PLACE] EX-SQ(LP)Stellungsmeldung Ladeplatz";
|
||||
auto data = telegram[JsonKeys::DATA()].toObject();
|
||||
Ladeplatzdaten exSQLP;
|
||||
bool bOk = true;
|
||||
ladeplatzdatenFromJson(data, exSQLP, bOk);
|
||||
if (!bOk)
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Received Ex-SQ(LP) but couldn't parse the jsondata ";
|
||||
break;
|
||||
}
|
||||
|
||||
m_dispatcher->onSAASQLP(wsId, exSQLP);
|
||||
|
||||
break;
|
||||
}
|
||||
case TelegramIds::EX_FLUGBAHNDATEN(): // sent by SAA (EX-Flugbahndaten)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "[EX_FLUGBAHNDATEN] EX-Flugbahndaten";
|
||||
auto data = telegram[JsonKeys::DATA()].toObject();
|
||||
Flugbahndaten flugbahndaten;
|
||||
bool bOk = true;
|
||||
flugbahndatenFromJson(data, flugbahndaten, bOk);
|
||||
if (!bOk)
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Received EX-Flugbahndaten but couldn't parse the jsondata ";
|
||||
break;
|
||||
}
|
||||
DEBUG_LOG(m_logger) << "Vor onSAATrajectoryData wsId=" << wsId;
|
||||
if (static_cast<int>(flugbahndaten.fehlercode) == 0)
|
||||
m_dispatcher->onSAATrajectoryData(wsId, flugbahndaten, referenceUuid);
|
||||
else
|
||||
errorcode = static_cast<int>(flugbahndaten.fehlercode);
|
||||
break;
|
||||
}
|
||||
case TelegramIds::EX_GUIDING_LINES(): // sent by SAA ( EX-HQ(K) Koordinierungsmassnahmen)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "[EX_GUIDING_LINES] EX-HQ Koordinierungsmassnahmen";
|
||||
auto data = telegram[JsonKeys::DATA()].toObject();
|
||||
Koordinierungsdaten koordinierungsdaten;
|
||||
bool bOk = true;
|
||||
koordinierungsdatenFromJson(data, koordinierungsdaten, bOk);
|
||||
|
||||
if (koordinierungsdaten.name.isEmpty())
|
||||
koordinierungsdaten.name = QString(QStringLiteral("%1 - %2")).arg(typeName).arg(uuid);
|
||||
else
|
||||
koordinierungsdaten.name = QString(QStringLiteral("%1 - %2")).arg(typeName).arg(koordinierungsdaten.name);
|
||||
|
||||
m_dispatcher->onSAAHXGuidingLines(wsId, koordinierungsdaten);
|
||||
break;
|
||||
}
|
||||
case TelegramIds::EX_GUIDING_LINES_AND_BOUNDARIES(): // sent by SAA ( EX-HQ(G)Fuehrungslinien und Grenzen)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "[EX_GUIDING_LINES_AND_BOUNDARIES] EX-HQ(G)Fuehrungslinien und Grenzen ";
|
||||
auto data = telegram[JsonKeys::DATA()].toObject();
|
||||
Fuehrungsdaten fuehrungsdaten;
|
||||
bool bOk = true;
|
||||
fuehrungsdatenFromJson(data, fuehrungsdaten, bOk);
|
||||
|
||||
if (fuehrungsdaten.name.isEmpty())
|
||||
fuehrungsdaten.name = QString(QStringLiteral("%1 - %2")).arg(typeName).arg(uuid);
|
||||
else
|
||||
fuehrungsdaten.name = QString(QStringLiteral("%1 - %2")).arg(typeName).arg(fuehrungsdaten.name);
|
||||
|
||||
m_dispatcher->onSAAHXGuidingLinesAndBoundaries(wsId, fuehrungsdaten);
|
||||
break;
|
||||
}
|
||||
case TelegramIds::EX_FIRE_HALT(): // sent by SAA (EX-FH Feuerhalt)
|
||||
{
|
||||
WARNING_LOG(m_logger) << "[EX_FIRE_HALT] Feuerhalt";
|
||||
|
||||
auto data = telegram[QStringLiteral("data")].toObject();
|
||||
bool bOk = true;
|
||||
FeuerHaltDaten feuerhaltdaten;
|
||||
|
||||
feuerHaltDatenFromJson(data, feuerhaltdaten, bOk);
|
||||
|
||||
m_dispatcher->onSSAEXFIREHALT(wsId, feuerhaltdaten);
|
||||
break;
|
||||
}
|
||||
case TelegramIds::EX_DONT_FIRE(): // send by SAA EX-FQ(nFN)
|
||||
{
|
||||
WARNING_LOG(m_logger) << "[EX_DONT_FIRE] Dont Fire";
|
||||
auto data = telegram[QStringLiteral("data")].toObject();
|
||||
bool bOk = true;
|
||||
Feuerkampfdaten feuerkampfdaten;
|
||||
|
||||
exNichtFeuernFromJson(data, feuerkampfdaten, bOk);
|
||||
|
||||
m_aesHandler->handleEXDontFire(feuerkampfdaten, wsId);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
WARNING_LOG(m_logger) << "Cant handle Telegram typeId=" << typeId;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (const std::exception &e)
|
||||
{
|
||||
WARNING_LOG(m_logger) << "Could not parse json: " << e.what() << " (" << ")";
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool JsonHandlerRx::handleTelegram(const QByteArray &baJson)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "JsonHandlerRx::handleTelegram";
|
||||
|
||||
if (baJson.isEmpty())
|
||||
return false;
|
||||
const QJsonObject obj = QJsonDocument::fromJson(baJson).object();
|
||||
|
||||
const QJsonValue typeId = obj.value(QStringLiteral("typeId"));
|
||||
if (!typeId.isDouble())
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Can not read type id: " << baJson;
|
||||
return false;
|
||||
}
|
||||
const QJsonObject data = obj.value(QStringLiteral("data")).toObject();
|
||||
if (typeId.toInt() != 21)
|
||||
ERROR_LOG(m_logger) << "Telegram before filter: " << baJson;
|
||||
try
|
||||
{
|
||||
QJsonValue header = data[QStringLiteral("header")];
|
||||
|
||||
QJsonObject obj = header.toObject();
|
||||
|
||||
ERROR_LOG(m_logger) << "Telegram header: " << obj.count();
|
||||
if (!obj.isEmpty())
|
||||
{
|
||||
int eqNo = obj[QStringLiteral("equipmentNumber")].toInt(0);
|
||||
if (eqNo <= 0)
|
||||
return false;
|
||||
if (!checkExercise(eqNo))
|
||||
return false;
|
||||
}
|
||||
if (typeId.toInt() != 21)
|
||||
ERROR_LOG(m_logger) << "Telegram after filter: " << baJson;
|
||||
}
|
||||
catch (const std::exception &e)
|
||||
{
|
||||
WARNING_LOG(m_logger) << "Could not parse json: " << e.what() << " (" << baJson << ")";
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool JsonHandlerRx::checkExercise(int equipmentNumber) const { return m_ppmHandler->isEqNumberInExercise(equipmentNumber); }
|
||||
|
||||
template <typename T> void JsonHandlerRx::rxData(const T &data)
|
||||
{
|
||||
if (!m_rxHandler)
|
||||
{
|
||||
if (!m_bWarnedOnce)
|
||||
{
|
||||
ERROR_LOG(m_logger) << "No RecvFromTab available";
|
||||
m_bWarnedOnce = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
emit m_dispatcher->jsonTelegramReceived(&data);
|
||||
return m_rxHandler->rxData(data);
|
||||
}
|
||||
|
||||
template <typename T> void JsonHandlerRx::txData(const T &data)
|
||||
{
|
||||
if (!m_txHandler)
|
||||
{
|
||||
if (!m_bWarnedOnceTx)
|
||||
{
|
||||
ERROR_LOG(m_logger) << "No RecvFromTab available";
|
||||
m_bWarnedOnceTx = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
emit m_dispatcher->jsonTelegramReceived(&data);
|
||||
m_txHandler->txData(data);
|
||||
}
|
||||
|
||||
} // namespace AdlerJson
|
||||
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* JsonHandlerRx for AdlerJson Plugin
|
||||
* $Id: hla_handler_rx.h 62304 2024-03-21 08:17:45Z ewert_j $
|
||||
* $HeadURL: svn://slssvn/TDS/branches/product/features/ufom/Lts/Proxies/TrainingAreaBase/Plugins/AdlerJson/hla_handler_rx.h $
|
||||
* $Author: ewert_j $
|
||||
* Created by Julius Ewert, ESIM, 2024-03-20
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <TrainingAreaBase/recv_from_tab.h>
|
||||
#include <TrainingAreaBase/tx_mixin.h>
|
||||
#include <TrainingAreaBase/tab_plugin_interface.h>
|
||||
#include <QObject>
|
||||
#include <QString>
|
||||
#include <memory>
|
||||
#include "logger.h"
|
||||
|
||||
namespace AdlerJson
|
||||
{
|
||||
class AesHandler;
|
||||
class PpmHandler;
|
||||
class JsonDispatcher;
|
||||
class JsonHandlerRx : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit JsonHandlerRx(const std::shared_ptr<TrainingAreaBase::RecvFromTab> &recvFromTabCb,
|
||||
const std::shared_ptr<TrainingAreaBase::TxMixin> &sendToTabCb,
|
||||
JsonDispatcher *dispatcher,
|
||||
AesHandler *aesHandler,
|
||||
PpmHandler *ppmHandler);
|
||||
|
||||
bool handleTelegram (const QByteArray &baJson );
|
||||
bool handleTelegram (TrainingAreaBase::TetraIcd::TrainingAreaTelegram *tabTele);
|
||||
bool handleTelegram (int wsId, const QJsonObject& telegram, int &errorcode);
|
||||
Q_SIGNALS:
|
||||
void participantConnectionState(int equipmentNumber, bool dataCommunicationPossible);
|
||||
private:
|
||||
template<typename T>
|
||||
void rxData (const T &data );
|
||||
|
||||
template<typename T>
|
||||
void txData (const T &data );
|
||||
|
||||
bool checkExercise (int equipmentNumber) const;
|
||||
private:
|
||||
std::shared_ptr<TrainingAreaBase::RecvFromTab> m_rxHandler;
|
||||
std::shared_ptr<TrainingAreaBase::TxMixin> m_txHandler;
|
||||
JsonDispatcher *m_dispatcher;
|
||||
bool m_bWarnedOnce;
|
||||
bool m_bWarnedOnceTx;
|
||||
AesHandler *m_aesHandler;
|
||||
PpmHandler *m_ppmHandler;
|
||||
LOGGER_T m_logger;
|
||||
};
|
||||
|
||||
} // namespace AdlerJson
|
||||
@@ -0,0 +1,408 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* JsonHandlerTx for AdlerJson Plugin
|
||||
* $Id: hla_handler_tx.cpp 62899 2024-05-29 11:08:50Z ewert_j $
|
||||
* $HeadURL: svn://slssvn/TDS/branches/product/features/ufom/Lts/Proxies/TrainingAreaBase/Plugins/AdlerJson/hla_handler_tx.cpp $
|
||||
* $Author: ewert_j $
|
||||
* Created by Julius Ewert, ESIM, 2024-03-20
|
||||
*/
|
||||
|
||||
#include "json_handler_tx.h"
|
||||
#include "json_dispatcher.h"
|
||||
#include "ppm_handler.h"
|
||||
#include "pdm_handler.h"
|
||||
#include "aes_handler.h"
|
||||
#include <ProjectDataManagement/pdm_enums.hpp>
|
||||
#include <QJsonDocument>
|
||||
#include <QWebSocket>
|
||||
namespace AdlerJson
|
||||
{
|
||||
class PpmHandler;
|
||||
JsonHandlerTx::JsonHandlerTx(TrainingAreaBase::Plugin::DataProvider *pdp, MainDispatcher *mainDispatcher)
|
||||
: m_pdp(pdp)
|
||||
, m_mainDispatcher(mainDispatcher)
|
||||
, m_webSocket(nullptr)
|
||||
, m_bWebsocketConnectedToExternalSystem(false)
|
||||
, m_logger(getLogger("JsonHandlerTx"))
|
||||
{}
|
||||
|
||||
void JsonHandlerTx::onWebSocketConnected(QWebSocket *webSocket)
|
||||
{
|
||||
m_webSocket = webSocket;
|
||||
if (!m_webSocket)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void JsonHandlerTx::onWebSocketDisconnected()
|
||||
{
|
||||
m_mainDispatcher->ppmHandler()->disconnect(this);
|
||||
m_mainDispatcher->pdmHandler()->disconnect(this);
|
||||
m_webSocket = nullptr;
|
||||
}
|
||||
|
||||
void JsonHandlerTx::onWebsocketConnectedToExternalSystem(bool bConnected)
|
||||
{
|
||||
m_bWebsocketConnectedToExternalSystem = bConnected;
|
||||
|
||||
INFO_LOG(m_logger) << "Connected to SAA";
|
||||
const auto tele2 = m_pdp->exerciseEnvironmentData();
|
||||
sendToTx(&tele2, true);
|
||||
connect(m_mainDispatcher->aesHandler().get(), &AesHandler::explosionSingleChanged, this, &JsonHandlerTx::onGenericTelegram, Qt::UniqueConnection);
|
||||
connect(m_mainDispatcher->ppmHandler().get(), &PpmHandler::participantUnmount, this, &JsonHandlerTx::onGenericTelegram, Qt::UniqueConnection);
|
||||
connect(m_mainDispatcher->ppmHandler().get(), &PpmHandler::participantMount, this, &JsonHandlerTx::onGenericTelegram, Qt::UniqueConnection);
|
||||
connect(m_mainDispatcher->ppmHandler().get(), &PpmHandler::participantChanged, this, &JsonHandlerTx::onGenericTelegram, Qt::UniqueConnection);
|
||||
connect(m_mainDispatcher->pdmHandler().get(), &PdmHandler::sendChargeTypes, this, &JsonHandlerTx::onGenericTelegram, Qt::UniqueConnection);
|
||||
m_mainDispatcher->pdmHandler()->getChargeTypes();
|
||||
m_mainDispatcher->ppmHandler()->getParticipants();
|
||||
}
|
||||
|
||||
TrainingAreaBase::SendToTab::HandleState JsonHandlerTx::canHandleTelegram(int equipmentNumber, int telegramId) const
|
||||
{
|
||||
Q_UNUSED(equipmentNumber);
|
||||
using namespace TrainingAreaBase::TetraIcd;
|
||||
// This will sy NO when there is no websocket connection
|
||||
//XKCD
|
||||
/*
|
||||
if (!m_webSocket || !m_bWebsocketConnectedToExternalSystem)
|
||||
return HandleState::No;
|
||||
*/
|
||||
if (telegramId == Constraints<CreateSingleExplosion>::id())
|
||||
return HandleState::YesShare;
|
||||
|
||||
//XKCD fill m_dataCommunicationPossible
|
||||
//if (equipmentNumber <= 0 || !m_dataCommunicationPossible.value(equipmentNumber, false))
|
||||
// return HandleState::No;
|
||||
|
||||
if (telegramId == Constraints<ExConfirmationReport>::id() ||
|
||||
telegramId == Constraints<ExFireReadiness>::id() ||
|
||||
telegramId == Constraints<ExFiredReport>::id())
|
||||
return HandleState::YesConsume;
|
||||
return HandleState::No;
|
||||
}
|
||||
|
||||
void JsonHandlerTx::resetSendCounter()
|
||||
{
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::Init &data)
|
||||
{
|
||||
return sendToTx(&data);
|
||||
}
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::DemandVulnerabilityStateChange &data)
|
||||
{
|
||||
return sendToTx(&data);
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::CesHitInformation &data)
|
||||
{
|
||||
return sendToTx(&data);
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::ExerciseEnvironmentData &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::Acknowledge &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::DemandBite &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::SetVulnerabilityModel &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::DemandEquipmentConfigurationReport &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::LanguageSelection &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::EquipmentMessage &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::EquipmentMessageOC &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::CreateSingleExplosion &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
//m_mainDispatcher->aesHandler()->handleCreateSingleExplosion(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::CreateAreaExplosion &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::CreateMineArea &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::MineAreaSingleMineState &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::CreateNContamination &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::CreateCContamination &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::DeactivateEffectSimulation &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::ModifyAreaEffectSimulationName &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::PauseEffectSimulation &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::ResumeEffectSimulation &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::MineTriggered &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::DusMineReactivation &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::CreateFunctionalArea &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::CreateDusSingleMine &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::ExerciseStateData &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::OpaquePayloadDataOut &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::ParticipantSwVersionsRequest &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::TechnicalArea &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false; // only for Tetra - really?
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::CesHitRequest &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::ParticipantMode &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::DemandParticipantMode &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::ParticipantConfiguration &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::DemandParticipantConfiguration &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::ExerciseEquipmentAssignmentComplete &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::Sanitation &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::SelectiveReammunition &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::SetDevicePowerRequest &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::OcCommand &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::UAVPerformMission &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::UAVChangeState &data)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::ExFireReadiness &data)
|
||||
{
|
||||
FATAL_LOG(m_logger) << "!!!!!!!!!!!!!!!!!!!!!!!!!!!! Received ExFireReadiness for " << data.partyId << " ref: " << data.reference;
|
||||
ExFeuerbereit ex;
|
||||
ex.feuerkampfdaten.feuerkampfReferenz = data.reference;
|
||||
return m_mainDispatcher->jsonDispatcher()->sendExFeuerbereit(ex, data.partyId);
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::ExFiredReport &data)
|
||||
{
|
||||
FATAL_LOG(m_logger) << "!!!!!!!!!!!!!!!!!!!!!!!!!!!! Received ExFiredReport for " << data.partyId << " ref: " << data.reference << " unit/identifier "<< data.unitIdentifier << "/" << data.identifier;
|
||||
ExAbgefeuert exa;
|
||||
exa.feuerkampfdaten.feuerkampfReferenz = data.reference;
|
||||
exa.feuerkampfdaten.kenner = waffensystemkennerMap.value(data.identifier); //data.identifier // new ENUM!;
|
||||
exa.feuerkampfdaten.verein = data.unitIdentifier;
|
||||
return m_mainDispatcher->jsonDispatcher()->sendExAbgefeuert(exa, data.partyId);
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::txData(const TrainingAreaBase::TetraIcd::ExConfirmationReport &data)
|
||||
{
|
||||
FATAL_LOG(m_logger) << "!!!!!!!!!!!!!!!!!!!!!!!!!!!! Received ExConfirmationReport for " << data.partyId << " ref: " << data.reference << " unit/identifier "<< data.unitIdentifier << "/" << data.identifier;
|
||||
ExVollzugsmeldung exv;
|
||||
exv.feuerkampfdaten.feuerkampfReferenz = data.reference;
|
||||
exv.feuerkampfdaten.kenner = waffensystemkennerMap.value(data.identifier);
|
||||
exv.feuerkampfdaten.verein = data.unitIdentifier;
|
||||
return m_mainDispatcher->jsonDispatcher()->sendExVollzugsmeldung(exv, data.partyId);
|
||||
}
|
||||
|
||||
void JsonHandlerTx::onParticipantConnectionState(const int equipmentNumber, const bool dataCommunicationPossible)
|
||||
{
|
||||
INFO_LOG(m_logger) << "onParticipantConnectionState - " << equipmentNumber
|
||||
<< ", communication possible: " << dataCommunicationPossible;
|
||||
if (equipmentNumber == -1)
|
||||
m_dataCommunicationPossible.clear();
|
||||
m_dataCommunicationPossible[equipmentNumber] = dataCommunicationPossible;
|
||||
}
|
||||
|
||||
void JsonHandlerTx::onGenericTelegram(const QJsonObject &telegram)
|
||||
{
|
||||
if (!m_webSocket || !m_bWebsocketConnectedToExternalSystem)
|
||||
return;
|
||||
const QByteArray ba = QJsonDocument(telegram).toJson(QJsonDocument::Compact);
|
||||
DEBUG_LOG(m_logger) << "Sending tele: " << ba;
|
||||
m_webSocket->sendTextMessage(QString::fromUtf8(ba));
|
||||
}
|
||||
|
||||
void JsonHandlerTx::onGenericTelegram1(const int wsId, const QJsonObject &telegram)
|
||||
{
|
||||
m_wsInterface->sendTelegram(wsId,&telegram);
|
||||
}
|
||||
|
||||
bool JsonHandlerTx::sendToTx(const TrainingAreaBase::TetraIcd::TrainingAreaTelegram *data, const bool bForce)
|
||||
{
|
||||
Q_UNUSED(bForce);
|
||||
QJsonObject telegram;
|
||||
telegram[QStringLiteral("data")] = data->toJson();
|
||||
telegram[QStringLiteral("type")] = data->type();
|
||||
telegram[QStringLiteral("typeId")] = data->id();
|
||||
ERROR_LOG(m_logger) << QJsonDocument(telegram).toJson(QJsonDocument::Compact).toStdString();
|
||||
onGenericTelegram(telegram);
|
||||
return true;
|
||||
}
|
||||
|
||||
QHash<int, bool> JsonHandlerTx::dataCommunicationPossible() const
|
||||
{
|
||||
return m_dataCommunicationPossible;
|
||||
}
|
||||
|
||||
|
||||
} // namespace AdlerJson
|
||||
|
||||
|
||||
|
||||
|
||||
Loaded 100 of 16245 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user