Migrates AudioVideoManagement to generated rtiddsgen API

Converts accessor calls to plain member access across avm service and plugin.
This commit is contained in:
berrux-dev committed 2026-09-21 02:45:51 +02:00
1 parent 82356f23e5
commit 40f767fc4d
29 files changed
+308 -295

No files matched your search

@@ -29,7 +29,6 @@ class TopicEditor : public TopicEditorBase::TopicEditor
~TopicEditor(); ~TopicEditor();
private: private:
NGL::INGLLogger& m_logger;
void updateInternalData() override final; void updateInternalData() override final;
void retranslate() override final; void retranslate() override final;
@@ -79,26 +79,26 @@ void AvmFtTests::tryCreate()
m_menuStructId = -2; m_menuStructId = -2;
ModifyMenuStructRequest request; ModifyMenuStructRequest request;
request.id(0); request.id = 0;
request.name("TestGlobalMenu"); request.name = "TestGlobalMenu";
int newId = -10000000; int newId = -10000000;
request.menuEntries().resize(3); request.menuEntries.resize(3);
request.menuEntries()[0].name().set("Test-1"); request.menuEntries[0].name.set("Test-1");
request.menuEntries()[0].id(newId++); request.menuEntries[0].id = newId++;
request.menuEntries()[0].parentId(request.id()); request.menuEntries[0].parentId = request.id;
request.menuEntries()[0].isGroup(true); request.menuEntries[0].isGroup = true;
request.menuEntries()[1].mountingPointId(m_mountingPointId); request.menuEntries[1].mountingPointId = m_mountingPointId;
request.menuEntries()[1].id(newId++); request.menuEntries[1].id = newId++;
request.menuEntries()[1].parentId(request.menuEntries()[0].id()); request.menuEntries[1].parentId = request.menuEntries[0].id;
request.menuEntries()[1].isGroup(false); request.menuEntries[1].isGroup = false;
request.menuEntries()[2].mountingPointId(m_mountingPointId+1); request.menuEntries[2].mountingPointId = m_mountingPointId+1;
request.menuEntries()[2].id(newId++); request.menuEntries[2].id = newId++;
request.menuEntries()[2].parentId(request.menuEntries()[0].id()); request.menuEntries[2].parentId = request.menuEntries[0].id;
request.menuEntries()[2].isGroup(false); request.menuEntries[2].isGroup = false;
if (!m_ftc->modifyMenuStructRequest(request, this)) if (!m_ftc->modifyMenuStructRequest(request, this))
{ {
@@ -112,26 +112,26 @@ void AvmFtTests::tryModify()
{ {
INFO_LOG(m_logger) << "trying to send modify request for menuStructId = " << m_menuStructId; INFO_LOG(m_logger) << "trying to send modify request for menuStructId = " << m_menuStructId;
ModifyMenuStructRequest request; ModifyMenuStructRequest request;
request.id(m_menuStructId); request.id = m_menuStructId;
request.name("TestGlobalMenuModify"); request.name = "TestGlobalMenuModify";
int newId = -10000000; int newId = -10000000;
request.menuEntries().resize(3); request.menuEntries.resize(3);
request.menuEntries()[0].name().set("Test-1-mod"); request.menuEntries[0].name.set("Test-1-mod");
request.menuEntries()[0].id(newId++); request.menuEntries[0].id = newId++;
request.menuEntries()[0].parentId(request.id()); request.menuEntries[0].parentId = request.id;
request.menuEntries()[0].isGroup(true); request.menuEntries[0].isGroup = true;
request.menuEntries()[1].mountingPointId(m_mountingPointId); request.menuEntries[1].mountingPointId = m_mountingPointId;
request.menuEntries()[1].id(newId++); request.menuEntries[1].id = newId++;
request.menuEntries()[1].parentId(request.menuEntries()[0].id()); request.menuEntries[1].parentId = request.menuEntries[0].id;
request.menuEntries()[1].isGroup(false); request.menuEntries[1].isGroup = false;
request.menuEntries()[2].mountingPointId(m_mountingPointId+1); request.menuEntries[2].mountingPointId = m_mountingPointId+1;
request.menuEntries()[2].id(newId++); request.menuEntries[2].id = newId++;
request.menuEntries()[2].parentId(request.menuEntries()[0].id()); request.menuEntries[2].parentId = request.menuEntries[0].id;
request.menuEntries()[2].isGroup(false); request.menuEntries[2].isGroup = false;
if (!m_ftc->modifyMenuStructRequest(request, this)) if (!m_ftc->modifyMenuStructRequest(request, this))
{ {
@@ -145,7 +145,7 @@ void AvmFtTests::tryDelete()
{ {
INFO_LOG(m_logger) << "trying to send delete request for menuStructId = " << m_menuStructId; INFO_LOG(m_logger) << "trying to send delete request for menuStructId = " << m_menuStructId;
RemoveMenuStructRequest request; RemoveMenuStructRequest request;
request.id(m_menuStructId); request.id = m_menuStructId;
if (!m_ftc->removeMenuStructRequest(request, this)) if (!m_ftc->removeMenuStructRequest(request, this))
{ {
@@ -84,14 +84,14 @@ void AvmVcaTests::create()
{ {
CnrTvcProfile createRequest; CnrTvcProfile createRequest;
createRequest.id(0); // create createRequest.id = 0; // create
createRequest.exerciseId(m_exerciseId); createRequest.exerciseId = m_exerciseId;
createRequest.operatorId(m_operatorId); createRequest.operatorId = m_operatorId;
createRequest.data().resize(3); createRequest.data.resize(3);
createRequest.data()[0] = CnrTvcProfileData(m_cnrConfigIds.at(0), RadioSystem::Cnr); createRequest.data[0] = CnrTvcProfileData(m_cnrConfigIds.at(0), RadioSystem::Cnr);
createRequest.data()[1] = CnrTvcProfileData(m_tvcConfigIds.at(0), RadioSystem::Tvc); createRequest.data[1] = CnrTvcProfileData(m_tvcConfigIds.at(0), RadioSystem::Tvc);
createRequest.data()[2] = CnrTvcProfileData(m_cnrConfigIds.at(1), RadioSystem::Cnr); createRequest.data[2] = CnrTvcProfileData(m_cnrConfigIds.at(1), RadioSystem::Cnr);
m_modifyReplyReceived = false; m_modifyReplyReceived = false;
bool status = m_ftc->modifyCnrTvcProfileRequest(createRequest, this); bool status = m_ftc->modifyCnrTvcProfileRequest(createRequest, this);
@@ -100,7 +100,7 @@ void AvmVcaTests::create()
QVERIFY(m_circuitId > 0); QVERIFY(m_circuitId > 0);
CnrTvcProfile expected = createRequest; CnrTvcProfile expected = createRequest;
expected.id(m_circuitId); expected.id = m_circuitId;
QTRY_COMPARE(m_dtc->cnrTvcProfile(m_circuitId), expected); QTRY_COMPARE(m_dtc->cnrTvcProfile(m_circuitId), expected);
} }
@@ -108,21 +108,21 @@ void AvmVcaTests::modify()
{ {
CnrTvcProfile request; CnrTvcProfile request;
request.id(m_circuitId); // modify request.id = m_circuitId; // modify
request.exerciseId(m_exerciseId); request.exerciseId = m_exerciseId;
request.operatorId(m_operatorId); request.operatorId = m_operatorId;
request.data().resize(4); request.data.resize(4);
request.data()[0] = CnrTvcProfileData(m_tvcConfigIds.at(0), RadioSystem::Tvc); request.data[0] = CnrTvcProfileData(m_tvcConfigIds.at(0), RadioSystem::Tvc);
request.data()[1] = CnrTvcProfileData(m_tvcConfigIds.at(1), RadioSystem::Tvc); request.data[1] = CnrTvcProfileData(m_tvcConfigIds.at(1), RadioSystem::Tvc);
request.data()[2] = CnrTvcProfileData(m_cnrConfigIds.at(2), RadioSystem::Cnr); request.data[2] = CnrTvcProfileData(m_cnrConfigIds.at(2), RadioSystem::Cnr);
request.data()[3] = CnrTvcProfileData(m_cnrConfigIds.at(1), RadioSystem::Cnr); request.data[3] = CnrTvcProfileData(m_cnrConfigIds.at(1), RadioSystem::Cnr);
m_modifyReplyReceived = false; m_modifyReplyReceived = false;
bool status = m_ftc->modifyCnrTvcProfileRequest(request, this); bool status = m_ftc->modifyCnrTvcProfileRequest(request, this);
QVERIFY(status); QVERIFY(status);
QTRY_VERIFY(m_modifyReplyReceived); QTRY_VERIFY(m_modifyReplyReceived);
QCOMPARE(m_circuitId, request.id()); QCOMPARE(m_circuitId, request.id);
CnrTvcProfile expected = request; CnrTvcProfile expected = request;
QTRY_COMPARE(m_dtc->cnrTvcProfile(m_circuitId), expected); QTRY_COMPARE(m_dtc->cnrTvcProfile(m_circuitId), expected);
@@ -131,13 +131,13 @@ void AvmVcaTests::modify()
void AvmVcaTests::remove() void AvmVcaTests::remove()
{ {
Core::RemoveElementRequest request; Core::RemoveElementRequest request;
request.id(m_circuitId); request.id = m_circuitId;
m_removeReplyReceived = false; m_removeReplyReceived = false;
bool status = m_ftc->removeCnrTvcProfileRequest(request, this); bool status = m_ftc->removeCnrTvcProfileRequest(request, this);
QVERIFY(status); QVERIFY(status);
QTRY_VERIFY(m_removeReplyReceived); QTRY_VERIFY(m_removeReplyReceived);
QCOMPARE(m_circuitId, request.id()); QCOMPARE(m_circuitId, request.id);
CnrTvcProfile expected; CnrTvcProfile expected;
QTRY_COMPARE(m_dtc->cnrTvcProfile(m_circuitId), expected); QTRY_COMPARE(m_dtc->cnrTvcProfile(m_circuitId), expected);
@@ -138,16 +138,16 @@ void MvsTests::tryModifyVideoTeam()
{ {
VideoTeamModifyRequest request; VideoTeamModifyRequest request;
request.id(m_teamId); request.id = m_teamId;
request.name("MVS001"); request.name = "MVS001";
request.streamName("Stream name for MVS001"); request.streamName = "Stream name for MVS001";
if (m_exerciseId > 0) if (m_exerciseId > 0)
request.exerciseId(m_exerciseId); request.exerciseId = m_exerciseId;
else else
request.exerciseId(0); request.exerciseId = 0;
request.vtPort(0); request.vtPort = 0;
request.ssrc(0); request.ssrc = 0;
if (!m_ftc->videoTeamModifyRequest(request, this)) if (!m_ftc->videoTeamModifyRequest(request, this))
{ {
@@ -180,13 +180,13 @@ void MvsTests::tryCreateVideoReceiver()
INFO_LOG(m_logger) << "trying to send createRequest VideoReceiver"; INFO_LOG(m_logger) << "trying to send createRequest VideoReceiver";
VideoReceiverModifyRequest request; VideoReceiverModifyRequest request;
request.id(0); request.id = 0;
request.streamName("Stream name MVS_00"); request.streamName = "Stream name MVS_00";
request.mainStructureElementId(m_radioStationId); request.mainStructureElementId = m_radioStationId;
request.teamId(m_teamId); request.teamId = m_teamId;
request.hostName("Hostname"); request.hostName = "Hostname";
request.frequency(0); request.frequency = 0;
request.isLocked(false); request.isLocked = false;
if (!m_ftc->videoReceiverModifyRequest(request, this)) if (!m_ftc->videoReceiverModifyRequest(request, this))
{ {
@@ -202,13 +202,13 @@ void MvsTests::tryModifyVideoReceiver()
{ {
VideoReceiverModifyRequest request; VideoReceiverModifyRequest request;
request.id(m_receiverId); request.id = m_receiverId;
request.streamName("Stream name MVS_001"); request.streamName = "Stream name MVS_001";
request.mainStructureElementId(m_radioStationId); request.mainStructureElementId = m_radioStationId;
request.teamId(m_teamId); request.teamId = m_teamId;
request.hostName("Hostname"); request.hostName = "Hostname";
request.frequency(0); request.frequency = 0;
request.isLocked(false); request.isLocked = false;
if (!m_ftc->videoReceiverModifyRequest(request, this)) if (!m_ftc->videoReceiverModifyRequest(request, this))
{ {
@@ -224,9 +224,9 @@ void MvsTests::tryModifyAvsVideoReceiver()
{ {
VideoReceiverModifyAvsRequest request; VideoReceiverModifyAvsRequest request;
request.id(m_receiverId); request.id = m_receiverId;
request.dbm(80); request.dbm = 80;
request.snr(20); request.snr = 20;
if (!m_ftc->videoReceiverModifyAvsRequest(request, this)) if (!m_ftc->videoReceiverModifyAvsRequest(request, this))
{ {
@@ -242,8 +242,8 @@ void MvsTests::tryModifyActiveVideoReceiver()
{ {
VideoReceiverModifyActiveRequest request; VideoReceiverModifyActiveRequest request;
request.id(m_receiverId); request.id = m_receiverId;
request.isActive(true); request.isActive = true;
if (!m_ftc->videoReceiverModifyActiveRequest(request, this)) if (!m_ftc->videoReceiverModifyActiveRequest(request, this))
{ {
@@ -260,7 +260,7 @@ void MvsTests::tryDeleteVideoReceiver()
{ {
Core::RemoveElementRequest request; Core::RemoveElementRequest request;
request.id(m_receiverId); request.id = m_receiverId;
if (!m_ftc->videoReceiverRemoveRequest(request, this)) if (!m_ftc->videoReceiverRemoveRequest(request, this))
{ {
@@ -34,20 +34,20 @@ MainStructureElement createBuilding()
static int mseId = 0; static int mseId = 0;
static int seId = 0; static int seId = 0;
MainStructureElement building; MainStructureElement building;
building.id(++mseId); building.id = ++mseId;
building.name("Building"); building.name = "Building";
building.structureElementId(++seId); building.structureElementId = ++seId;
building.properties("{}"); building.properties = "{}";
StructureElement mountingPoint; StructureElement mountingPoint;
mountingPoint.id(++seId); mountingPoint.id = ++seId;
mountingPoint.name("MP_OUT0001"); mountingPoint.name = "MP_OUT0001";
mountingPoint.displayName("Outdoor Camera 1"); mountingPoint.displayName = "Outdoor Camera 1";
mountingPoint.mainStructureElementId(building.id()); mountingPoint.mainStructureElementId = building.id;
mountingPoint.structureElementTypeId(StructureElementType::MountingPoint); mountingPoint.structureElementTypeId = StructureElementType::MountingPoint;
mountingPoint.mountingPointTypeId(MountingPointType::OutdoorCamera); mountingPoint.mountingPointTypeId = MountingPointType::OutdoorCamera;
mountingPoint.properties("{}"); mountingPoint.properties = "{}";
building.elements().push_back(mountingPoint); building.elements.push_back(mountingPoint);
return building; return building;
} }
@@ -57,9 +57,9 @@ InstrumentationAsset createAsset()
static int id = 0; static int id = 0;
InstrumentationAsset asset; InstrumentationAsset asset;
asset.id(++id); asset.id = ++id;
asset.name(QStringLiteral("CAM_UBEOCE000%1").arg(id).toUtf8().constData()); asset.name = QStringLiteral("CAM_UBEOCE000%1").arg(id).toUtf8().constData();
asset.mountingPointTypeId(MountingPointType::OutdoorCamera); asset.mountingPointTypeId = MountingPointType::OutdoorCamera;
return asset; return asset;
} }
@@ -68,41 +68,41 @@ MountingPointAsset createMount(InstrumentationAsset &asset, const StructureEleme
{ {
static int id = 0; static int id = 0;
MountingPointAsset mount; MountingPointAsset mount;
mount.id(++id); mount.id = ++id;
mount.assetId(asset.id()); mount.assetId = asset.id;
mount.structureElementId(mountingPoint.id()); mount.structureElementId = mountingPoint.id;
asset.assetStateId(InstrumentationAssetState::Mounted); asset.assetStateId = InstrumentationAssetState::Mounted;
return mount; return mount;
} }
void unmount(InstrumentationAsset &asset) void unmount(InstrumentationAsset &asset)
{ {
asset.assetStateId(InstrumentationAssetState::Unmounted); asset.assetStateId = InstrumentationAssetState::Unmounted;
} }
void assign(MainStructureElement &building, int exerciseId) void assign(MainStructureElement &building, int exerciseId)
{ {
building.properties(QStringLiteral("{\"available_in_exercise\": [%1]}").arg(exerciseId).toUtf8().constData()); building.properties = QStringLiteral("{\"available_in_exercise\": [%1]}").arg(exerciseId).toUtf8().constData();
} }
void unassign(MainStructureElement &building) void unassign(MainStructureElement &building)
{ {
building.properties("{}"); building.properties = "{}";
} }
void assign(InstrumentationAsset &asset, int exerciseId) void assign(InstrumentationAsset &asset, int exerciseId)
{ {
Q_ASSERT(asset.assetStateId() == InstrumentationAssetState::Mounted); Q_ASSERT(asset.assetStateId == InstrumentationAssetState::Mounted);
std::vector<int> exercises{exerciseId}; std::vector<int> exercises{exerciseId};
asset.availableInExercise(exercises); asset.availableInExercise = exercises;
} }
void unassign(InstrumentationAsset &asset) void unassign(InstrumentationAsset &asset)
{ {
Q_ASSERT(asset.assetStateId() == InstrumentationAssetState::Mounted); Q_ASSERT(asset.assetStateId == InstrumentationAssetState::Mounted);
asset.availableInExercise().clear(); asset.availableInExercise.clear();
} }
class AssignmentSpy : public QObject class AssignmentSpy : public QObject
@@ -196,7 +196,7 @@ void AssetAssignmentManagerTest::testStartMountedAssigned()
MainStructureElement building = createBuilding(); MainStructureElement building = createBuilding();
InstrumentationAsset asset1 = createAsset(); InstrumentationAsset asset1 = createAsset();
InstrumentationAsset asset2 = createAsset(); InstrumentationAsset asset2 = createAsset();
MountingPointAsset mount = createMount(asset1, building.elements()[0]); MountingPointAsset mount = createMount(asset1, building.elements[0]);
assign(building, EXERCISE_42); assign(building, EXERCISE_42);
assign(asset1, EXERCISE_42); assign(asset1, EXERCISE_42);
@@ -236,7 +236,7 @@ void AssetAssignmentManagerTest::testRuntimeMountAssign()
// create the mount, building still unassigned // create the mount, building still unassigned
MountingPointAsset mount = createMount(asset1, building.elements()[0]); MountingPointAsset mount = createMount(asset1, building.elements[0]);
notifications.push_back(std::bind(&AssetAssignmentManager::onAssetChanged, &mgr, asset1, DataModification::eModified)); notifications.push_back(std::bind(&AssetAssignmentManager::onAssetChanged, &mgr, asset1, DataModification::eModified));
notifications.push_back(std::bind(&AssetAssignmentManager::onMountingChanged, &mgr, mount, DataModification::eAdded)); notifications.push_back(std::bind(&AssetAssignmentManager::onMountingChanged, &mgr, mount, DataModification::eAdded));
fireRandomly(notifications); fireRandomly(notifications);
@@ -290,7 +290,7 @@ void AssetAssignmentManagerTest::testRuntimeAssignMount()
// mount the asset and assign it as the building is assigned already // mount the asset and assign it as the building is assigned already
MountingPointAsset mount = createMount(asset1, building.elements()[0]); MountingPointAsset mount = createMount(asset1, building.elements[0]);
assign(asset1, EXERCISE_42); assign(asset1, EXERCISE_42);
notifications.push_back(std::bind(&AssetAssignmentManager::onMountingChanged, &mgr, mount, DataModification::eAdded)); notifications.push_back(std::bind(&AssetAssignmentManager::onMountingChanged, &mgr, mount, DataModification::eAdded));
notifications.push_back(std::bind(&AssetAssignmentManager::onAssetChanged, &mgr, asset1, DataModification::eModified)); notifications.push_back(std::bind(&AssetAssignmentManager::onAssetChanged, &mgr, asset1, DataModification::eModified));
@@ -316,7 +316,7 @@ void AssetAssignmentManagerTest::testStartMountedRuntimeAssign()
MainStructureElement building = createBuilding(); MainStructureElement building = createBuilding();
InstrumentationAsset asset1 = createAsset(); InstrumentationAsset asset1 = createAsset();
InstrumentationAsset asset2 = createAsset(); InstrumentationAsset asset2 = createAsset();
MountingPointAsset mount = createMount(asset1, building.elements()[0]); MountingPointAsset mount = createMount(asset1, building.elements[0]);
notifications.push_back(std::bind(&AssetAssignmentManager::onMainStructureElementChanged, &mgr, building, DataModification::eAdded)); notifications.push_back(std::bind(&AssetAssignmentManager::onMainStructureElementChanged, &mgr, building, DataModification::eAdded));
notifications.push_back(std::bind(&AssetAssignmentManager::onAssetChanged, &mgr, asset1, DataModification::eAdded)); notifications.push_back(std::bind(&AssetAssignmentManager::onAssetChanged, &mgr, asset1, DataModification::eAdded));
notifications.push_back(std::bind(&AssetAssignmentManager::onAssetChanged, &mgr, asset2, DataModification::eAdded)); notifications.push_back(std::bind(&AssetAssignmentManager::onAssetChanged, &mgr, asset2, DataModification::eAdded));
@@ -365,7 +365,7 @@ void AssetAssignmentManagerTest::testStartAssignedRuntimeMount()
// mount asset1 and assign it as the building is assigned already // mount asset1 and assign it as the building is assigned already
MountingPointAsset mount = createMount(asset1, building.elements()[0]); MountingPointAsset mount = createMount(asset1, building.elements[0]);
assign(asset1, EXERCISE_42); assign(asset1, EXERCISE_42);
notifications.push_back(std::bind(&AssetAssignmentManager::onAssetChanged, &mgr, asset1, DataModification::eModified)); notifications.push_back(std::bind(&AssetAssignmentManager::onAssetChanged, &mgr, asset1, DataModification::eModified));
notifications.push_back(std::bind(&AssetAssignmentManager::onMountingChanged, &mgr, mount, DataModification::eAdded)); notifications.push_back(std::bind(&AssetAssignmentManager::onMountingChanged, &mgr, mount, DataModification::eAdded));
@@ -390,7 +390,7 @@ void AssetAssignmentManagerTest::testRuntimeUnmountUnassign()
MainStructureElement building = createBuilding(); MainStructureElement building = createBuilding();
InstrumentationAsset asset1 = createAsset(); InstrumentationAsset asset1 = createAsset();
InstrumentationAsset asset2 = createAsset(); InstrumentationAsset asset2 = createAsset();
MountingPointAsset mount = createMount(asset1, building.elements()[0]); MountingPointAsset mount = createMount(asset1, building.elements[0]);
assign(building, EXERCISE_42); assign(building, EXERCISE_42);
assign(asset1, EXERCISE_42); assign(asset1, EXERCISE_42);
@@ -440,7 +440,7 @@ void AssetAssignmentManagerTest::testRuntimeUnassignUnmount()
MainStructureElement building = createBuilding(); MainStructureElement building = createBuilding();
InstrumentationAsset asset1 = createAsset(); InstrumentationAsset asset1 = createAsset();
InstrumentationAsset asset2 = createAsset(); InstrumentationAsset asset2 = createAsset();
MountingPointAsset mount = createMount(asset1, building.elements()[0]); MountingPointAsset mount = createMount(asset1, building.elements[0]);
assign(building, EXERCISE_42); assign(building, EXERCISE_42);
assign(asset1, EXERCISE_42); assign(asset1, EXERCISE_42);
@@ -490,7 +490,7 @@ void AssetAssignmentManagerTest::testRuntimeReassign()
MainStructureElement building = createBuilding(); MainStructureElement building = createBuilding();
InstrumentationAsset asset1 = createAsset(); InstrumentationAsset asset1 = createAsset();
InstrumentationAsset asset2 = createAsset(); InstrumentationAsset asset2 = createAsset();
MountingPointAsset mount = createMount(asset1, building.elements()[0]); MountingPointAsset mount = createMount(asset1, building.elements[0]);
assign(building, EXERCISE_42); assign(building, EXERCISE_42);
assign(asset1, EXERCISE_42); assign(asset1, EXERCISE_42);
@@ -535,7 +535,7 @@ void AssetAssignmentManagerTest::testShutdownMountedAssigned()
MainStructureElement building = createBuilding(); MainStructureElement building = createBuilding();
InstrumentationAsset asset1 = createAsset(); InstrumentationAsset asset1 = createAsset();
InstrumentationAsset asset2 = createAsset(); InstrumentationAsset asset2 = createAsset();
MountingPointAsset mount = createMount(asset1, building.elements()[0]); MountingPointAsset mount = createMount(asset1, building.elements[0]);
assign(building, EXERCISE_42); assign(building, EXERCISE_42);
assign(asset1, EXERCISE_42); assign(asset1, EXERCISE_42);
@@ -576,7 +576,7 @@ void AssetAssignmentManagerTest::testDoublePendingAssign()
MainStructureElement building = createBuilding(); MainStructureElement building = createBuilding();
InstrumentationAsset asset1 = createAsset(); InstrumentationAsset asset1 = createAsset();
InstrumentationAsset asset2 = createAsset(); InstrumentationAsset asset2 = createAsset();
MountingPointAsset mount = createMount(asset1, building.elements()[0]); MountingPointAsset mount = createMount(asset1, building.elements[0]);
assign(building, EXERCISE_42); assign(building, EXERCISE_42);
assign(asset1, EXERCISE_42); assign(asset1, EXERCISE_42);
@@ -50,7 +50,7 @@ public:
const Streams &findStreams(Asset *asset) override const Streams &findStreams(Asset *asset) override
{ {
Q_ASSERT(asset); Q_ASSERT(asset);
return findStreams(asset->data().id()); return findStreams(asset->data().id);
} }
bool isEmpty() const { return m_cache.empty(); } bool isEmpty() const { return m_cache.empty(); }
@@ -100,7 +100,7 @@ public:
void remove(Asset *asset) override void remove(Asset *asset) override
{ {
Q_ASSERT(asset); Q_ASSERT(asset);
auto count = m_cache.erase(asset->data().id()); auto count = m_cache.erase(asset->data().id);
Q_ASSERT(count == 1); Q_ASSERT(count == 1);
} }
@@ -151,11 +151,11 @@ public:
Asset *createAsset(int id, MountingPointType mpType, const std::string &properties) Asset *createAsset(int id, MountingPointType mpType, const std::string &properties)
{ {
InstrumentationAsset data; InstrumentationAsset data;
data.id(id); data.id = id;
data.name(QStringLiteral("ASSET_000%1").arg(id).toUtf8().constData()); data.name = QStringLiteral("ASSET_000%1").arg(id).toUtf8().constData();
data.hostname(QStringLiteral("host_000%1").arg(id).toUtf8().constData()); data.hostname = QStringLiteral("host_000%1").arg(id).toUtf8().constData();
data.mountingPointTypeId(mpType); data.mountingPointTypeId = mpType;
data.properties(properties); data.properties = properties;
return new Asset(data); return new Asset(data);
} }
@@ -163,12 +163,12 @@ Asset *createAsset(int id, MountingPointType mpType, const std::string &properti
MountingPoint *createMountingPoint(int id, MountingPointType mpType) MountingPoint *createMountingPoint(int id, MountingPointType mpType)
{ {
StructureElement data; StructureElement data;
data.id(id); data.id = id;
data.name(QStringLiteral("MP_000%1").arg(id).toUtf8().constData()); data.name = QStringLiteral("MP_000%1").arg(id).toUtf8().constData();
data.displayName(QStringLiteral("display name %1").arg(id).toUtf8().constData()); data.displayName = QStringLiteral("display name %1").arg(id).toUtf8().constData();
data.structureElementTypeId(StructureElementType::MountingPoint); data.structureElementTypeId = StructureElementType::MountingPoint;
data.mountingPointTypeId(mpType); data.mountingPointTypeId = mpType;
data.properties("{}"); data.properties = "{}";
return new MountingPoint(data); return new MountingPoint(data);
} }
@@ -177,7 +177,7 @@ void setProperties(Asset *asset, const std::string &newProperties)
{ {
Q_ASSERT(asset); Q_ASSERT(asset);
InstrumentationAsset data = asset->data(); InstrumentationAsset data = asset->data();
data.properties(newProperties); data.properties = newProperties;
asset->update(data); asset->update(data);
} }
@@ -185,7 +185,7 @@ void setDisplayName(MountingPoint *mp, const std::string &newDisplayName)
{ {
Q_ASSERT(mp); Q_ASSERT(mp);
StructureElement data = mp->data(); StructureElement data = mp->data();
data.displayName(newDisplayName); data.displayName = newDisplayName;
mp->update(data); mp->update(data);
} }
@@ -194,9 +194,9 @@ void setRecording(MountingPoint *mp, bool on)
Q_ASSERT(mp); Q_ASSERT(mp);
StructureElement data = mp->data(); StructureElement data = mp->data();
if (on) if (on)
data.properties(R"({"record": true})"); data.properties = R"({"record": true})";
else else
data.properties(R"({"record": false})"); data.properties = R"({"record": false})";
mp->update(data); mp->update(data);
} }
@@ -204,7 +204,7 @@ void mount(Asset *asset, MountingPoint *mp)
{ {
Q_ASSERT(asset); Q_ASSERT(asset);
InstrumentationAsset data = asset->data(); InstrumentationAsset data = asset->data();
data.assetStateId(InstrumentationAssetState::Mounted); data.assetStateId = InstrumentationAssetState::Mounted;
asset->update(data); asset->update(data);
asset->mount(mp); asset->mount(mp);
} }
@@ -222,7 +222,21 @@ Database::AvmDeviceConfig dcEntry(int64_t id, const std::string &context, cons
return dc; return dc;
} }
bool operator==(const Database::AvmDeviceConfig &lhs, const Database::AvmDeviceConfig &rhs) } // anonymous namespace
namespace AudioVideoManagement
{
namespace Database
{
// rtiddsgen 4.7 emits the generated Database structs without any comparison
// operators and also declares 30 unreleated free operator== overloads directly
// in namespace AudioVideoManagement (avm.hpp). Unqualified lookup from that
// namespace stops at the first enclosing declaration found, so an operator
// defined at global scope is never reached, and ADL cannot see it either
// because the anonymous namespace is not associated with these operands.
// Declaring it in the namespace of the operands is what makes it findable.
bool operator==(const AvmDeviceConfig &lhs, const AvmDeviceConfig &rhs)
{ {
if (lhs.id != rhs.id) if (lhs.id != rhs.id)
return false; return false;
@@ -242,7 +256,8 @@ bool operator==(const Database::AvmDeviceConfig &lhs, const Database::AvmDeviceC
return true; return true;
} }
} // anonymous namespace } // namespace Database
} // namespace AudioVideoManagement
namespace AudioVideoManagement namespace AudioVideoManagement
@@ -307,12 +322,12 @@ void AudioVideoHandlerImplTest::testAssignCameraVideo()
QVERIFY(dtsSpy.m_removed.empty()); QVERIFY(dtsSpy.m_removed.empty());
// verify DB // verify DB
const Streams &streams = dbMock.findStreams(m_indoorCam->data().id()); const Streams &streams = dbMock.findStreams(m_indoorCam->data().id);
QVERIFY(!streams.second); QVERIFY(!streams.second);
QVERIFY(streams.first == dcEntry(1, "ex_42", "AXIS_VIDEO_CHANNEL", "av_0001", "EXCAVS01", "url=rtsp://root:root@host_0001:554;mode=1;", 0)); QVERIFY(streams.first == dcEntry(1, "ex_42", "AXIS_VIDEO_CHANNEL", "av_0001", "EXCAVS01", "url=rtsp://root:root@host_0001:554;mode=1;", 0));
// verify DDS // verify DDS
QCOMPARE(dtsSpy.m_published[0], Stream(1, "av_0001", StreamType::Video, m_mpIndoor->data().id())); QCOMPARE(dtsSpy.m_published[0], Stream(1, "av_0001", StreamType::Video, m_mpIndoor->data().id));
} }
/** /**
@@ -356,16 +371,16 @@ void AudioVideoHandlerImplTest::testAssignCameraVideoAudio(const std::string &ca
QVERIFY(dtsSpy.m_removed.empty()); QVERIFY(dtsSpy.m_removed.empty());
// verfiy DB // verfiy DB
const Streams &streams = dbMock.findStreams(m_outdoorCam->data().id()); const Streams &streams = dbMock.findStreams(m_outdoorCam->data().id);
QVERIFY(streams.second); QVERIFY(streams.second);
QVERIFY(streams.first == dcEntry(1, "ex_42", "AXIS_VIDEO_CHANNEL", "av_0002", "EXCAVS01", "url=rtsp://root:root@host_0002:554;mode=1;", 2)); QVERIFY(streams.first == dcEntry(1, "ex_42", "AXIS_VIDEO_CHANNEL", "av_0002", "EXCAVS01", "url=rtsp://root:root@host_0002:554;mode=1;", 2));
QVERIFY(*streams.second == dcEntry(2, "ex_42", "AXIS_AUDIO_CHANNEL", "av_0002", "EXCAVS01", "url=http://root:root@host_0002:80;mode=1;", 1)); QVERIFY(*streams.second == dcEntry(2, "ex_42", "AXIS_AUDIO_CHANNEL", "av_0002", "EXCAVS01", "url=http://root:root@host_0002:80;mode=1;", 1));
// verify DDS // verify DDS
const Stream &videoStream = dtsSpy.m_published[0]; const Stream &videoStream = dtsSpy.m_published[0];
QCOMPARE(videoStream, Stream(1, "av_0002", StreamType::Video, m_mpOutdoor->data().id())); QCOMPARE(videoStream, Stream(1, "av_0002", StreamType::Video, m_mpOutdoor->data().id));
const Stream &audioStream = dtsSpy.m_published[1]; const Stream &audioStream = dtsSpy.m_published[1];
QCOMPARE(audioStream, Stream(2, "av_0002", expectedStreamType, m_mpOutdoor->data().id())); QCOMPARE(audioStream, Stream(2, "av_0002", expectedStreamType, m_mpOutdoor->data().id));
} }
/** /**
@@ -385,12 +400,12 @@ void AudioVideoHandlerImplTest::testAssignAnnouncementUnit()
QVERIFY(dtsSpy.m_removed.empty()); QVERIFY(dtsSpy.m_removed.empty());
// verfiy DB // verfiy DB
const Streams &streams = dbMock.findStreams(m_announcementUnit->data().id()); const Streams &streams = dbMock.findStreams(m_announcementUnit->data().id);
QVERIFY(!streams.second); QVERIFY(!streams.second);
QVERIFY(streams.first == dcEntry(1, "ex_42", "AXIS_AUDIO_CHANNEL", "av_0003", "EXCAVS01", "url=http://root:root@host_0003:80;codec=aac;mode=1;", 0)); QVERIFY(streams.first == dcEntry(1, "ex_42", "AXIS_AUDIO_CHANNEL", "av_0003", "EXCAVS01", "url=http://root:root@host_0003:80;codec=aac;mode=1;", 0));
// verify DDS // verify DDS
QCOMPARE(dtsSpy.m_published[0], Stream(1, "av_0003", StreamType::AudioOut, m_mpAnnouncementUnit->data().id())); QCOMPARE(dtsSpy.m_published[0], Stream(1, "av_0003", StreamType::AudioOut, m_mpAnnouncementUnit->data().id));
} }
/** /**
@@ -463,14 +478,14 @@ void AudioVideoHandlerImplTest::testUpdateRemoveAssignedAsset()
QVERIFY(dtsSpy.m_removed.empty()); QVERIFY(dtsSpy.m_removed.empty());
// verify DB // verify DB
Streams streams = dbMock.findStreams(m_indoorCam->data().id()); Streams streams = dbMock.findStreams(m_indoorCam->data().id);
QVERIFY(streams.second); QVERIFY(streams.second);
QVERIFY(streams.first == dcEntry(1, "ex_42", "AXIS_VIDEO_CHANNEL", "av_0001", "EXCAVS01", "url=rtsp://root:root@host_0001:554;mode=1;", 2)); QVERIFY(streams.first == dcEntry(1, "ex_42", "AXIS_VIDEO_CHANNEL", "av_0001", "EXCAVS01", "url=rtsp://root:root@host_0001:554;mode=1;", 2));
QVERIFY(*streams.second == dcEntry(2, "ex_42", "AXIS_AUDIO_CHANNEL", "av_0001", "EXCAVS01", "url=http://root:root@host_0001:80;mode=1;", 1)); QVERIFY(*streams.second == dcEntry(2, "ex_42", "AXIS_AUDIO_CHANNEL", "av_0001", "EXCAVS01", "url=http://root:root@host_0001:80;mode=1;", 1));
// verify DDS // verify DDS
QCOMPARE(dtsSpy.m_published[0], Stream(1, "av_0001", StreamType::Video, m_mpIndoor->data().id())); QCOMPARE(dtsSpy.m_published[0], Stream(1, "av_0001", StreamType::Video, m_mpIndoor->data().id));
QCOMPARE(dtsSpy.m_published[1], Stream(2, "av_0001", StreamType::AudioIn, m_mpIndoor->data().id())); QCOMPARE(dtsSpy.m_published[1], Stream(2, "av_0001", StreamType::AudioIn, m_mpIndoor->data().id));
// remove microphone again => removal of audio stream // remove microphone again => removal of audio stream
@@ -482,12 +497,12 @@ void AudioVideoHandlerImplTest::testUpdateRemoveAssignedAsset()
QCOMPARE(static_cast<int>(dtsSpy.m_removed.size()), 1); QCOMPARE(static_cast<int>(dtsSpy.m_removed.size()), 1);
// verify DB // verify DB
streams = dbMock.findStreams(m_indoorCam->data().id()); streams = dbMock.findStreams(m_indoorCam->data().id);
QVERIFY(!streams.second); QVERIFY(!streams.second);
QVERIFY(streams.first == dcEntry(1, "ex_42", "AXIS_VIDEO_CHANNEL", "av_0001", "EXCAVS01", "url=rtsp://root:root@host_0001:554;mode=1;", 0)); QVERIFY(streams.first == dcEntry(1, "ex_42", "AXIS_VIDEO_CHANNEL", "av_0001", "EXCAVS01", "url=rtsp://root:root@host_0001:554;mode=1;", 0));
// verify DDS // verify DDS
QCOMPARE(dtsSpy.m_published[0], Stream(1, "av_0001", StreamType::Video, m_mpIndoor->data().id())); QCOMPARE(dtsSpy.m_published[0], Stream(1, "av_0001", StreamType::Video, m_mpIndoor->data().id));
QCOMPARE(static_cast<int>(dtsSpy.m_removed[0]), 2); QCOMPARE(static_cast<int>(dtsSpy.m_removed[0]), 2);
@@ -529,12 +544,12 @@ void AudioVideoHandlerImplTest::testUpdateAssignedMountingPoint()
QVERIFY(dtsSpy.m_removed.empty()); QVERIFY(dtsSpy.m_removed.empty());
// verify DB // verify DB
Streams streams = dbMock.findStreams(m_indoorCam->data().id()); Streams streams = dbMock.findStreams(m_indoorCam->data().id);
QVERIFY(!streams.second); QVERIFY(!streams.second);
QVERIFY(streams.first == dcEntry(1, "ex_42", "AXIS_VIDEO_CHANNEL", "av_0001", "EXCAVS01", "url=rtsp://root:root@host_0001:554;mode=1;", 0)); QVERIFY(streams.first == dcEntry(1, "ex_42", "AXIS_VIDEO_CHANNEL", "av_0001", "EXCAVS01", "url=rtsp://root:root@host_0001:554;mode=1;", 0));
// verify DDS // verify DDS
QCOMPARE(dtsSpy.m_published[0], Stream(1, "av_0001", StreamType::Video, m_mpIndoor->data().id())); QCOMPARE(dtsSpy.m_published[0], Stream(1, "av_0001", StreamType::Video, m_mpIndoor->data().id));
// set recording-flag on MountingPoint // set recording-flag on MountingPoint
@@ -546,12 +561,12 @@ void AudioVideoHandlerImplTest::testUpdateAssignedMountingPoint()
QVERIFY(dtsSpy.m_removed.empty()); QVERIFY(dtsSpy.m_removed.empty());
// verify DB // verify DB
streams = dbMock.findStreams(m_indoorCam->data().id()); streams = dbMock.findStreams(m_indoorCam->data().id);
QVERIFY(!streams.second); QVERIFY(!streams.second);
QVERIFY(streams.first == dcEntry(1, "ex_42", "AXIS_VIDEO_CHANNEL", "av_0001", "EXCAVS01", "url=rtsp://root:root@host_0001:554;mode=1;recording=ECRS@EXCAVS01;recordcontrol=prealarm;", 0)); QVERIFY(streams.first == dcEntry(1, "ex_42", "AXIS_VIDEO_CHANNEL", "av_0001", "EXCAVS01", "url=rtsp://root:root@host_0001:554;mode=1;recording=ECRS@EXCAVS01;recordcontrol=prealarm;", 0));
// verify DDS // verify DDS
QCOMPARE(dtsSpy.m_published[0], Stream(1, "av_0001", StreamType::Video, m_mpIndoor->data().id())); // no change here QCOMPARE(dtsSpy.m_published[0], Stream(1, "av_0001", StreamType::Video, m_mpIndoor->data().id)); // no change here
} }
void AudioVideoHandlerImplTest::testDeviceDefinitionCameraVideo() void AudioVideoHandlerImplTest::testDeviceDefinitionCameraVideo()
@@ -18,7 +18,7 @@ namespace AudioVideoManagement
Asset::Asset(const InfrastructureManagement::InstrumentationAsset &asset) Asset::Asset(const InfrastructureManagement::InstrumentationAsset &asset)
: m_data(new InfrastructureManagement::InstrumentationAsset(asset)) : m_data(new InfrastructureManagement::InstrumentationAsset(asset))
{ {
Q_ASSERT(asset.id() > 0); Q_ASSERT(asset.id > 0);
} }
Asset::~Asset() = default; Asset::~Asset() = default;
@@ -23,18 +23,18 @@ namespace
bool isAssigned(const InfrastructureManagement::InstrumentationAsset &asset) bool isAssigned(const InfrastructureManagement::InstrumentationAsset &asset)
{ {
return asset.availableInExercise().size() > 0; return asset.availableInExercise.size() > 0;
} }
int assignedExercise(const InfrastructureManagement::InstrumentationAsset &asset) int assignedExercise(const InfrastructureManagement::InstrumentationAsset &asset)
{ {
Q_ASSERT(asset.availableInExercise().size() == 1); Q_ASSERT(asset.availableInExercise.size() == 1);
return asset.availableInExercise()[0]; return asset.availableInExercise[0];
} }
bool isMountingPoint(const InfrastructureManagement::StructureElement &structureElement) bool isMountingPoint(const InfrastructureManagement::StructureElement &structureElement)
{ {
return structureElement.structureElementTypeId() == InfrastructureManagement::StructureElementType::MountingPoint; return structureElement.structureElementTypeId == InfrastructureManagement::StructureElementType::MountingPoint;
} }
} // anonymous namespace } // anonymous namespace
@@ -96,7 +96,7 @@ void AssetAssignmentManager::onMainStructureElementChanged(const InfrastructureM
if (modType == DataModification::eAdded) if (modType == DataModification::eAdded)
{ {
for (const auto &structureElement: data.elements()) for (const auto &structureElement: data.elements)
{ {
if (!isMountingPoint(structureElement)) if (!isMountingPoint(structureElement))
continue; continue;
@@ -115,11 +115,11 @@ void AssetAssignmentManager::onMainStructureElementChanged(const InfrastructureM
// Are the contained StructureElements still the same as before? // Are the contained StructureElements still the same as before?
// For now we simply assume that the MountingPoints are still the same // For now we simply assume that the MountingPoints are still the same
// and we just update them. // and we just update them.
for (const auto &structureElement: data.elements()) for (const auto &structureElement: data.elements)
{ {
if (!isMountingPoint(structureElement)) if (!isMountingPoint(structureElement))
continue; continue;
MountingPoint *mountingPoint = findMountingPoint(structureElement.id()).second; MountingPoint *mountingPoint = findMountingPoint(structureElement.id).second;
Q_ASSERT(mountingPoint); Q_ASSERT(mountingPoint);
if (mountingPoint) if (mountingPoint)
mountingPoint->update(structureElement); mountingPoint->update(structureElement);
@@ -162,10 +162,10 @@ void AssetAssignmentManager::addAsset(const InfrastructureManagement::Instrument
*/ */
void AssetAssignmentManager::modifyAsset(const InfrastructureManagement::InstrumentationAsset &asset) void AssetAssignmentManager::modifyAsset(const InfrastructureManagement::InstrumentationAsset &asset)
{ {
if (hasPendingModifications(asset.id())) if (hasPendingModifications(asset.id))
return m_pendingModifications.push_back(asset); return m_pendingModifications.push_back(asset);
auto found = findAsset(asset.id()); auto found = findAsset(asset.id);
Asset *foundAsset = found.second; Asset *foundAsset = found.second;
Q_ASSERT(foundAsset); Q_ASSERT(foundAsset);
@@ -197,7 +197,7 @@ void AssetAssignmentManager::modifyAsset(const InfrastructureManagement::Instrum
*/ */
void AssetAssignmentManager::removeAsset(const InfrastructureManagement::InstrumentationAsset &asset) void AssetAssignmentManager::removeAsset(const InfrastructureManagement::InstrumentationAsset &asset)
{ {
auto assetAndExercise = findAsset(asset.id()); auto assetAndExercise = findAsset(asset.id);
Asset *foundAsset = assetAndExercise.second; Asset *foundAsset = assetAndExercise.second;
Exercise *exercise = assetAndExercise.first; Exercise *exercise = assetAndExercise.first;
Q_ASSERT(foundAsset); Q_ASSERT(foundAsset);
@@ -258,14 +258,14 @@ void AssetAssignmentManager::unassignAsset(Asset *asset, Exercise *exercise, con
*/ */
void AssetAssignmentManager::addMount(const InfrastructureManagement::MountingPointAsset &mount) void AssetAssignmentManager::addMount(const InfrastructureManagement::MountingPointAsset &mount)
{ {
Asset *asset = pool()->findAsset(mount.assetId()); Asset *asset = pool()->findAsset(mount.assetId);
if (!asset) if (!asset)
{ {
m_pendingMounts.push_back(mount); m_pendingMounts.push_back(mount);
return; return;
} }
MountingPoint *mountingPoint = pool()->findMountingPoint(mount.structureElementId()); MountingPoint *mountingPoint = pool()->findMountingPoint(mount.structureElementId);
if (!mountingPoint) if (!mountingPoint)
{ {
m_pendingMounts.push_back(mount); m_pendingMounts.push_back(mount);
@@ -279,7 +279,7 @@ void AssetAssignmentManager::addMount(const InfrastructureManagement::MountingPo
void AssetAssignmentManager::removeMount(const InfrastructureManagement::MountingPointAsset &mount) void AssetAssignmentManager::removeMount(const InfrastructureManagement::MountingPointAsset &mount)
{ {
auto exerciseAndAsset = findAsset(mount.assetId()); auto exerciseAndAsset = findAsset(mount.assetId);
Asset *asset = exerciseAndAsset.second; Asset *asset = exerciseAndAsset.second;
Exercise *exercise = exerciseAndAsset.first; Exercise *exercise = exerciseAndAsset.first;
Q_ASSERT(asset); Q_ASSERT(asset);
@@ -304,7 +304,7 @@ void AssetAssignmentManager::tryUnmount(Asset *asset, Exercise *exercise)
if (exercise) if (exercise)
inPoolExercise = exercise == pool(); inPoolExercise = exercise == pool();
else else
inPoolExercise = pool()->findAsset(asset->data().id()); inPoolExercise = pool()->findAsset(asset->data().id);
if (!inPoolExercise) if (!inPoolExercise)
{ {
@@ -366,7 +366,7 @@ void AssetAssignmentManager::processPendingRemoves()
bool AssetAssignmentManager::hasPendingModifications(int assetId) bool AssetAssignmentManager::hasPendingModifications(int assetId)
{ {
auto idMatches = [assetId] (const InfrastructureManagement::InstrumentationAsset &asset) { return asset.id() == assetId; }; auto idMatches = [assetId] (const InfrastructureManagement::InstrumentationAsset &asset) { return asset.id == assetId; };
auto found = std::find_if(m_pendingModifications.begin(), m_pendingModifications.end(), idMatches); auto found = std::find_if(m_pendingModifications.begin(), m_pendingModifications.end(), idMatches);
return found != m_pendingModifications.end(); return found != m_pendingModifications.end();
} }
@@ -157,9 +157,9 @@ QString recordingString(bool hasRecordingOn_, bool usePrealarm)
bool isMountingPointOfInterest(const InfrastructureManagement::InstrumentationAsset &asset) bool isMountingPointOfInterest(const InfrastructureManagement::InstrumentationAsset &asset)
{ {
return (asset.mountingPointTypeId() == InfrastructureManagement::MountingPointType::IndoorCamera || return (asset.mountingPointTypeId == InfrastructureManagement::MountingPointType::IndoorCamera ||
asset.mountingPointTypeId() == InfrastructureManagement::MountingPointType::OutdoorCamera || asset.mountingPointTypeId == InfrastructureManagement::MountingPointType::OutdoorCamera ||
asset.mountingPointTypeId() == InfrastructureManagement::MountingPointType::AnnouncementUnit); asset.mountingPointTypeId == InfrastructureManagement::MountingPointType::AnnouncementUnit);
} }
bool hasRecordingOn(const JsonObject &mountingPointProperties) bool hasRecordingOn(const JsonObject &mountingPointProperties)
@@ -170,10 +170,10 @@ bool hasRecordingOn(const JsonObject &mountingPointProperties)
Stream toDds(const AvmDeviceConfigEx &dc, int32_t mountintPointId) Stream toDds(const AvmDeviceConfigEx &dc, int32_t mountintPointId)
{ {
Stream stream; Stream stream;
stream.id(dc.id); stream.id = dc.id;
stream.name(dc.name.toStdString()); stream.name = dc.name.toStdString();
stream.type(dc.streamType); stream.type = dc.streamType;
stream.mountingPointId(mountintPointId); stream.mountingPointId = mountintPointId;
return stream; return stream;
} }
@@ -208,12 +208,12 @@ Streams::Streams(Asset *asset_, const AvmDeviceConfigEx &first_, const AvmDevice
int32_t Streams::assetId() const int32_t Streams::assetId() const
{ {
return asset->data().id(); return asset->data().id;
} }
int32_t Streams::mountingPointId() const int32_t Streams::mountingPointId() const
{ {
return asset->mountingPoint()->data().id(); return asset->mountingPoint()->data().id;
} }
@@ -246,23 +246,23 @@ Streams AudioVideoHandlerImpl::createStreams(Asset *asset_)
Database::AvmDeviceConfig dc; Database::AvmDeviceConfig dc;
dc.context = m_exContext.toString(); dc.context = m_exContext.toString();
dc.controller = avController(); dc.controller = avController();
dc.name = internalStreamName(asset_->mountingPoint()->data().id()); dc.name = internalStreamName(asset_->mountingPoint()->data().id);
const InfrastructureManagement::InstrumentationAsset &asset = asset_->data(); const InfrastructureManagement::InstrumentationAsset &asset = asset_->data();
const JsonObject assetProperties = jsonFromString(asset.properties()); const JsonObject assetProperties = jsonFromString(asset.properties);
const JsonObject mpProperties = JsonObject::fromJson(asset_->mountingPoint()->data().properties()); const JsonObject mpProperties = JsonObject::fromJson(asset_->mountingPoint()->data().properties);
if (asset.mountingPointTypeId() == InfrastructureManagement::MountingPointType::AnnouncementUnit) if (asset.mountingPointTypeId == InfrastructureManagement::MountingPointType::AnnouncementUnit)
{ {
dc.definition = deviceDefinitionAnnouncementUnit(asset.hostname(), assetProperties, mpProperties); dc.definition = deviceDefinitionAnnouncementUnit(asset.hostname, assetProperties, mpProperties);
dc.type = avTypeAudioChannel(assetProperties); dc.type = avTypeAudioChannel(assetProperties);
return {asset_, {dc, StreamType::AudioOut}}; return {asset_, {dc, StreamType::AudioOut}};
} }
Q_ASSERT(asset.mountingPointTypeId() == InfrastructureManagement::MountingPointType::IndoorCamera || Q_ASSERT(asset.mountingPointTypeId == InfrastructureManagement::MountingPointType::IndoorCamera ||
asset.mountingPointTypeId() == InfrastructureManagement::MountingPointType::OutdoorCamera); asset.mountingPointTypeId == InfrastructureManagement::MountingPointType::OutdoorCamera);
dc.definition = deviceDefinitionCameraVideo(asset.hostname(), assetProperties, mpProperties); dc.definition = deviceDefinitionCameraVideo(asset.hostname, assetProperties, mpProperties);
dc.type = avTypeVideoChannel(assetProperties); dc.type = avTypeVideoChannel(assetProperties);
if (!cameraHasMicrophone(assetProperties) && !cameraHasSpeaker(assetProperties)) if (!cameraHasMicrophone(assetProperties) && !cameraHasSpeaker(assetProperties))
@@ -279,7 +279,7 @@ Streams AudioVideoHandlerImpl::createStreams(Asset *asset_)
else else
audioStreamType = StreamType::AudioOut; audioStreamType = StreamType::AudioOut;
dcAudio.definition = deviceDefinitionCameraAudio(asset.hostname(), assetProperties, mpProperties); dcAudio.definition = deviceDefinitionCameraAudio(asset.hostname, assetProperties, mpProperties);
dcAudio.type = avTypeAudioChannel(assetProperties); dcAudio.type = avTypeAudioChannel(assetProperties);
return {asset_, {dc, StreamType::Video}, {dcAudio, audioStreamType}}; return {asset_, {dc, StreamType::Video}, {dcAudio, audioStreamType}};
} }
@@ -324,7 +324,7 @@ void AudioVideoHandlerImpl::onAssetChanged(Asset *asset)
{ {
Q_ASSERT(m_isActive); Q_ASSERT(m_isActive);
Q_ASSERT(asset); Q_ASSERT(asset);
DEBUG_LOG(m_logger) << m_exContext << ": Asset changed: " << asset->data().name() << "(" << asset->data().id() << ")"; DEBUG_LOG(m_logger) << m_exContext << ": Asset changed: " << asset->data().name << "(" << asset->data().id << ")";
updateDeviceConfig(asset); updateDeviceConfig(asset);
} }
@@ -333,7 +333,7 @@ void AudioVideoHandlerImpl::onMountingPointChanged(MountingPoint *mountingPoint)
{ {
Q_ASSERT(m_isActive); Q_ASSERT(m_isActive);
Q_ASSERT(mountingPoint); Q_ASSERT(mountingPoint);
DEBUG_LOG(m_logger) << m_exContext << ": MountingPoint changed: " << mountingPoint->data().name() << "(" << mountingPoint->data().id() << ")"; DEBUG_LOG(m_logger) << m_exContext << ": MountingPoint changed: " << mountingPoint->data().name << "(" << mountingPoint->data().id << ")";
updateDeviceConfig(mountingPoint->asset()); updateDeviceConfig(mountingPoint->asset());
} }
@@ -104,7 +104,9 @@ void AVSocket::onConnectToAVS()
this, &AVSocket::onDisconnected); this, &AVSocket::onDisconnected);
connect(m_avsSocket, &QTcpSocket::connected, connect(m_avsSocket, &QTcpSocket::connected,
this, [this] {m_bErrorInTcpComWarnedOnce = false;}); this, [this] {m_bErrorInTcpComWarnedOnce = false;});
connect(m_avsSocket, QOverload<QAbstractSocket::SocketError>::of(&QTcpSocket::error), // Qt6: QAbstractSocket::error() (the getter/signal overload pair) was
// replaced by the errorOccurred signal.
connect(m_avsSocket, &QAbstractSocket::errorOccurred,
this, &AVSocket::onError); this, &AVSocket::onError);
connect(m_avsSocket, &QTcpSocket::readyRead, connect(m_avsSocket, &QTcpSocket::readyRead,
this, &AVSocket::onReadyRead); this, &AVSocket::onReadyRead);
@@ -141,7 +141,9 @@ void AvaComm::queryTimeline(const QString &streamName, const boost::optional<Ava
void AvaComm::setVolume(AvaVolume db) void AvaComm::setVolume(AvaVolume db)
{ {
static const QString cmd = QStringLiteral("setVolume 1 %1"); static const QString cmd = QStringLiteral("setVolume 1 %1");
m_avSocket.send(cmd.arg(db).toUtf8()); // Qt6 QString::arg is enable_if-constrained to arithmetic types and no
// longer picks up the implicit operator int() of AvaVolume.
m_avSocket.send(cmd.arg(int(db)).toUtf8());
} }
void AvaComm::startStream(const QString &dialogId, const QString &streamName, AvaSpeed speed) void AvaComm::startStream(const QString &dialogId, const QString &streamName, AvaSpeed speed)
@@ -21,7 +21,6 @@
class QByteArray; class QByteArray;
class QString; class QString;
class QStringList;
class QRect; class QRect;
namespace AudioVideoManagement namespace AudioVideoManagement
@@ -21,8 +21,6 @@
#include <QtCore/QObject> #include <QtCore/QObject>
#include <chrono> #include <chrono>
class QStringList;
namespace AudioVideoManagement namespace AudioVideoManagement
{ {
@@ -14,6 +14,7 @@
#include <QtCore/QString> #include <QtCore/QString>
#include <QtCore/QStringList> #include <QtCore/QStringList>
#include <QtCore/QVector> #include <QtCore/QVector>
#include <QtCore/QPair>
#include <chrono> #include <chrono>
#include <cstdint> #include <cstdint>
@@ -30,9 +30,9 @@ bool DtcImplCustom::isFreeVideoTeam(int exerciseId, int videoTeamId)
for (const auto &sample : m_dtcVideoTeam->readAlive()) for (const auto &sample : m_dtcVideoTeam->readAlive())
{ {
if (sample.data().id() == videoTeamId && if (sample.data().id == videoTeamId &&
(sample.data().exerciseId() == exerciseId || (sample.data().exerciseId == exerciseId ||
sample.data().exerciseId() != 0) ) sample.data().exerciseId != 0) )
return false; return false;
} }
@@ -49,9 +49,9 @@ bool DtcImplCustom::getActiveFrequencyPlanningIdForExercise(int exerciseId, int
for (const auto &sample : m_dtcActiveFrequencyPlanning->readAlive()) for (const auto &sample : m_dtcActiveFrequencyPlanning->readAlive())
{ {
if (sample.data().exerciseId() == exerciseId) if (sample.data().exerciseId == exerciseId)
{ {
frequencyPlanningId = sample.data().frequencyPlanningId(); frequencyPlanningId = sample.data().frequencyPlanningId;
return true; return true;
} }
} }
@@ -74,9 +74,9 @@ bool DtcImplCustom::mountingPointForStreamName(const QString &streamName, int &m
const std::string streamNameStd = streamName.toStdString(); const std::string streamNameStd = streamName.toStdString();
for (const auto &sample : m_dtcStreamName->readAlive()) for (const auto &sample : m_dtcStreamName->readAlive())
{ {
if (sample.data().internalName() == streamNameStd) if (sample.data().internalName == streamNameStd)
{ {
mountingPointId = sample.data().mountingPointId(); mountingPointId = sample.data().mountingPointId;
return true; return true;
} }
} }
@@ -94,8 +94,8 @@ int DtcImplCustom::getActiveVideoReceiver(int teamId)
for (const auto &sample : m_dtcVideoReceiver->readAlive()) for (const auto &sample : m_dtcVideoReceiver->readAlive())
{ {
if (sample.data().teamId() == teamId && sample.data().isActive() ) if (sample.data().teamId == teamId && sample.data().isActive )
return sample.data().id(); return sample.data().id;
} }
return 0; return 0;
@@ -43,18 +43,18 @@ QString toMenuDef(const AudioVideoManagement::AvMenuEntry &menuEntry,
// no prefix2 // no prefix2
} }
if (!menuEntry.isGroup()) if (!menuEntry.isGroup)
return QStringLiteral("%1{%2}").arg(prefix1, QString::fromStdString(menuEntry.name().get())); return QStringLiteral("%1{%2}").arg(prefix1, QString::fromStdString(menuEntry.name.get()));
QString def = QStringLiteral("%1{%2:").arg(prefix1, QString::fromStdString(menuEntry.name().get())); QString def = QStringLiteral("%1{%2:").arg(prefix1, QString::fromStdString(menuEntry.name.get()));
for (const auto &entry : meCont) for (const auto &entry : meCont)
{ {
bool isChildEntry = entry.parentId() == menuEntry.id(); bool isChildEntry = entry.parentId == menuEntry.id;
if (!isChildEntry) if (!isChildEntry)
continue; continue;
Q_ASSERT(!entry.isGroup()); Q_ASSERT(!entry.isGroup);
def += QStringLiteral(" %1{%2}").arg(prefix2, QString::fromStdString(entry.name().get())); def += QStringLiteral(" %1{%2}").arg(prefix2, QString::fromStdString(entry.name.get()));
} }
def += QLatin1Char('}'); def += QLatin1Char('}');
return def; return def;
@@ -65,12 +65,12 @@ QString toMenuDef(const AudioVideoManagement::MenuStruct &menuStruct)
// Hint: MenuStruct-entries are sorted already (done by the Service (HandlerMenuStruct)). // Hint: MenuStruct-entries are sorted already (done by the Service (HandlerMenuStruct)).
QStringList entries; QStringList entries;
entries.reserve(menuStruct.menuEntries().size()); // probably more than needed, but avoid clazy warning entries.reserve(menuStruct.menuEntries.size()); // probably more than needed, but avoid clazy warning
for (const auto &entry : menuStruct.menuEntries()) for (const auto &entry : menuStruct.menuEntries)
{ {
bool isToplevelEntry = entry.parentId() == menuStruct.id(); bool isToplevelEntry = entry.parentId == menuStruct.id;
if (isToplevelEntry) if (isToplevelEntry)
entries.append(toMenuDef(entry, menuStruct.menuEntries(), menuStruct.isAudio())); entries.append(toMenuDef(entry, menuStruct.menuEntries, menuStruct.isAudio));
} }
return entries.join(QLatin1Char(' ')); return entries.join(QLatin1Char(' '));
} }
@@ -83,13 +83,13 @@ void selectAtFirstPos(const AudioVideoManagement::MenuStruct &menu, QStringList
{ {
using AudioVideoManagement::AvMenuEntry; using AudioVideoManagement::AvMenuEntry;
auto withMountingPointId = [mountingPointId] (const AvMenuEntry &entry) { return entry.mountingPointId() && entry.mountingPointId().get() == mountingPointId; }; auto withMountingPointId = [mountingPointId] (const AvMenuEntry &entry) { return entry.mountingPointId && entry.mountingPointId.get() == mountingPointId; };
auto found = std::find_if(menu.menuEntries().begin(), menu.menuEntries().end(), withMountingPointId); auto found = std::find_if(menu.menuEntries.begin(), menu.menuEntries.end(), withMountingPointId);
if (found == menu.menuEntries().end()) if (found == menu.menuEntries.end())
return; return;
QString streamName = QString::fromStdString(found->name().get()); QString streamName = QString::fromStdString(found->name.get());
auto currentPosInSelection = std::find(selection.begin(), selection.end(), streamName); auto currentPosInSelection = std::find(selection.begin(), selection.end(), streamName);
if (currentPosInSelection == selection.begin()) if (currentPosInSelection == selection.begin())
@@ -170,7 +170,7 @@ void AvsMenus::onSessionEstablished()
void AvsMenus::onMenuStructChanged(const MenuStruct &menu, DataModification modType) void AvsMenus::onMenuStructChanged(const MenuStruct &menu, DataModification modType)
{ {
if (menu.isAudio()) if (menu.isAudio)
m_announcementMenu.onChanged(menu, modType); m_announcementMenu.onChanged(menu, modType);
else else
m_videoMenu.onChanged(menu, modType); m_videoMenu.onChanged(menu, modType);
@@ -188,13 +188,13 @@ void AvsMenus::sendAnnouncementMenu(const MenuStruct &menu, const boost::optiona
stateList.reserve(6); stateList.reserve(6);
int i = 0; int i = 0;
for (const auto &audioEntry : menu.menuEntries()) for (const auto &audioEntry : menu.menuEntries)
{ {
bool isToplevel = audioEntry.parentId() == menu.id(); bool isToplevel = audioEntry.parentId == menu.id;
if (!isToplevel) if (!isToplevel)
break; // only select toplevel entries. Hint: menuEntries are ordered so that all toplevel entries are at the front. break; // only select toplevel entries. Hint: menuEntries are ordered so that all toplevel entries are at the front.
selection.append(QString::fromStdString(audioEntry.name().get())); selection.append(QString::fromStdString(audioEntry.name.get()));
int zustand = 1; // wird derzeit nicht gespeichert, also per default auf 1 int zustand = 1; // wird derzeit nicht gespeichert, also per default auf 1
stateList += QString::number(zustand); stateList += QString::number(zustand);
++i; ++i;
@@ -247,10 +247,10 @@ void AvsMenus::Menu::setMenu(int menuId)
{ {
Q_ASSERT(menuId > 0); Q_ASSERT(menuId > 0);
MenuStruct menu = m_dtc->menuStruct(menuId); MenuStruct menu = m_dtc->menuStruct(menuId);
if (menu.id() != menuId) if (menu.id != menuId)
return; return;
Q_ASSERT(menu.isAudio() == m_isAudio); Q_ASSERT(menu.isAudio == m_isAudio);
//replace mvs streams //replace mvs streams
replaceMvsEntries(menu); replaceMvsEntries(menu);
@@ -260,14 +260,14 @@ void AvsMenus::Menu::setMenu(int menuId)
void AvsMenus::Menu::replaceMvsEntries(MenuStruct &menu) const void AvsMenus::Menu::replaceMvsEntries(MenuStruct &menu) const
{ {
std::vector<AvMenuEntry> newMenu; std::vector<AvMenuEntry> newMenu;
newMenu.reserve(menu.menuEntries().size()); newMenu.reserve(menu.menuEntries.size());
for (auto menuEntry : menu.menuEntries()) for (auto menuEntry : menu.menuEntries)
{ {
if (menuEntry.mountingPointId().is_set() && menuEntry.mountingPointId().get() < 0) if (menuEntry.mountingPointId.is_set() && menuEntry.mountingPointId.get() < 0)
menuEntry.name() = m_dtc->videoTeam(menuEntry.mountingPointId().get()*-1).streamName(); menuEntry.name = m_dtc->videoTeam(menuEntry.mountingPointId.get()*-1).streamName;
newMenu.push_back(std::move(menuEntry)); newMenu.push_back(std::move(menuEntry));
} }
std::swap(menu.menuEntries(), newMenu); std::swap(menu.menuEntries, newMenu);
} }
void AvsMenus::Menu::setAnnouncementUnit(int mountingPointId) void AvsMenus::Menu::setAnnouncementUnit(int mountingPointId)
@@ -278,10 +278,10 @@ void AvsMenus::Menu::setAnnouncementUnit(int mountingPointId)
return; return;
const MenuStruct menu = m_dtc->menuStruct(*m_defaultMenu); const MenuStruct menu = m_dtc->menuStruct(*m_defaultMenu);
if (menu.id() != *m_defaultMenu) if (menu.id != *m_defaultMenu)
return; return;
Q_ASSERT(menu.isAudio() == m_isAudio); Q_ASSERT(menu.isAudio == m_isAudio);
setMenu(menu, mountingPointId); setMenu(menu, mountingPointId);
} }
@@ -317,10 +317,10 @@ void AvsMenus::Menu::onSessionEstablished()
void AvsMenus::Menu::onMenuAdded(MenuStruct menu) void AvsMenus::Menu::onMenuAdded(MenuStruct menu)
{ {
if (!menu.isDefault()) if (!menu.isDefault)
return; return;
m_defaultMenu = menu.id(); m_defaultMenu = menu.id;
if (!m_currentMenu) if (!m_currentMenu)
{ {
@@ -331,7 +331,7 @@ void AvsMenus::Menu::onMenuAdded(MenuStruct menu)
void AvsMenus::Menu::onMenuChanged(MenuStruct menu) void AvsMenus::Menu::onMenuChanged(MenuStruct menu)
{ {
if (m_currentMenu == menu.id()) if (m_currentMenu == menu.id)
{ {
replaceMvsEntries(menu); replaceMvsEntries(menu);
setMenu(menu); setMenu(menu);
@@ -340,7 +340,7 @@ void AvsMenus::Menu::onMenuChanged(MenuStruct menu)
void AvsMenus::Menu::onMenuRemoved(const MenuStruct &menu) void AvsMenus::Menu::onMenuRemoved(const MenuStruct &menu)
{ {
if (m_currentMenu != menu.id()) if (m_currentMenu != menu.id)
return; return;
m_currentMenu.reset(); m_currentMenu.reset();
@@ -349,9 +349,9 @@ void AvsMenus::Menu::onMenuRemoved(const MenuStruct &menu)
void AvsMenus::Menu::setMenu(const MenuStruct &menu, const boost::optional<int> &mountingPointIdOfSelectedStream) void AvsMenus::Menu::setMenu(const MenuStruct &menu, const boost::optional<int> &mountingPointIdOfSelectedStream)
{ {
Q_ASSERT(menu.id() > 0); Q_ASSERT(menu.id > 0);
Q_ASSERT(m_ismDtc); Q_ASSERT(m_ismDtc);
m_currentMenu = menu.id(); m_currentMenu = menu.id;
/* /*
const auto &mountedAssets = m_ismDtc->mountingPointAssets(); const auto &mountedAssets = m_ismDtc->mountingPointAssets();
@@ -360,17 +360,17 @@ void AvsMenus::Menu::setMenu(const MenuStruct &menu, const boost::optional<int>
std::vector<AudioVideoManagement::AvMenuEntry> menuEntriesToUse; std::vector<AudioVideoManagement::AvMenuEntry> menuEntriesToUse;
for (const auto &entry : realMenu.menuEntries()) for (const auto &entry : realMenu.menuEntries())
{ {
if (!entry.isGroup() && !entry.mountingPointId().is_set() ) if (!entry.isGroup() && !entry.mountingPointId.is_set() )
continue; continue;
bool isMounted = false; bool isMounted = false;
if(!entry.isGroup() && entry.mountingPointId().is_set()) if(!entry.isGroup() && entry.mountingPointId.is_set())
{ {
for (const auto &mountedAsset : mountedAssets) for (const auto &mountedAsset : mountedAssets)
{ {
if (mountedAsset.structureElementId() == entry.mountingPointId().get()) if (mountedAsset.structureElementId() == entry.mountingPointId.get())
{ {
isMounted = true; isMounted = true;
break; break;
@@ -91,11 +91,11 @@ Database::AvmCnrConfig toDb(const ModifyCnrConfigRequest &config)
result.radioCircuit = QString::fromStdString(config.radioCircuit()); result.radioCircuit = QString::fromStdString(config.radioCircuit());
result.callSign = QString::fromStdString(config.callSign()); result.callSign = QString::fromStdString(config.callSign());
result.partyId = config.partyId(); result.partyId = config.partyId();
if (config.unitId().is_set()) if (config.unitId.is_set())
result.unitId = config.unitId().get(); result.unitId = config.unitId.get();
result.recording = config.recording(); result.recording = config.recording();
if (config.exerciseId().is_set()) if (config.exerciseId.is_set())
result.exerciseId = config.exerciseId().get(); result.exerciseId = config.exerciseId.get();
return result; return result;
} }
@@ -490,21 +490,21 @@ bool CnrHandler::checkConstraint(const std::function<bool (const CnrConfig &)> &
// or when both exercises are currently active. // or when both exercises are currently active.
// If one is global and one local the constraint must always hold if the local exercise is active // If one is global and one local the constraint must always hold if the local exercise is active
// Otherwise the constraint must always hold // Otherwise the constraint must always hold
bool bothLocal = config.exerciseId().is_set() && exerciseId.is_initialized(); bool bothLocal = config.exerciseId.is_set() && exerciseId.is_initialized();
if (bothLocal) if (bothLocal)
{ {
bool sameExercise = config.exerciseId().get() == *exerciseId; bool sameExercise = config.exerciseId.get() == *exerciseId;
bool bothActive = isActiveExercise(config.exerciseId().get()) && isActiveExercise(*exerciseId); bool bothActive = isActiveExercise(config.exerciseId.get()) && isActiveExercise(*exerciseId);
if (!sameExercise && !bothActive) if (!sameExercise && !bothActive)
continue; continue;
} }
else if(config.exerciseId().is_set() && !exerciseId.is_initialized()) else if(config.exerciseId.is_set() && !exerciseId.is_initialized())
{ {
if(!isActiveExercise(config.exerciseId().get())) if(!isActiveExercise(config.exerciseId.get()))
continue; continue;
} }
else if(exerciseId.is_initialized() && !config.exerciseId().is_set()) else if(exerciseId.is_initialized() && !config.exerciseId.is_set())
{ {
if(!isActiveExercise(*exerciseId)) if(!isActiveExercise(*exerciseId))
continue; continue;
@@ -662,10 +662,10 @@ bool CnrHandler::isActiveExercise(int exerciseId) const
bool CnrHandler::needDeviceConfig(const CnrConfig &config) const bool CnrHandler::needDeviceConfig(const CnrConfig &config) const
{ {
// For global, we always need the config // For global, we always need the config
if (!config.exerciseId().is_set()) if (!config.exerciseId.is_set())
return true; return true;
int32_t exerciseId = config.exerciseId().get(); int32_t exerciseId = config.exerciseId.get();
// Not for inactive exercises // Not for inactive exercises
if (!isActiveExercise(exerciseId)) if (!isActiveExercise(exerciseId))
return false; return false;
@@ -702,8 +702,8 @@ bool CnrHandler::haveActiveFrequencyPlanning() const
QString CnrHandler::exerciseList(const CnrConfig &config) const QString CnrHandler::exerciseList(const CnrConfig &config) const
{ {
// Local // Local
if (config.exerciseId().is_set()) if (config.exerciseId.is_set())
return ExerciseContext(config.exerciseId().get()).toString(); return ExerciseContext(config.exerciseId.get()).toString();
// Global - all active exercises, no matter if they have active plannings or not // Global - all active exercises, no matter if they have active plannings or not
QStringList exerciseList; QStringList exerciseList;
@@ -100,7 +100,7 @@ Core::FunctionReplyObject isValid(int configId, int64_t exerciseId, Handler *han
return reply.setStr(tr_lts("dds", "%1 config %2 does not exist")).arg(configTypeAsString).arg(configId); return reply.setStr(tr_lts("dds", "%1 config %2 does not exist")).arg(configTypeAsString).arg(configId);
const auto &config = handler->config(configId); const auto &config = handler->config(configId);
if (config.exerciseId().is_set() && config.exerciseId().get() != exerciseId) if (config.exerciseId.is_set() && config.exerciseId.get() != exerciseId)
return reply.setStr(tr_lts("dds", "%1 config %2 cannot be used in exercise %3")).arg(configTypeAsString).arg(configId).arg(exerciseId); return reply.setStr(tr_lts("dds", "%1 config %2 cannot be used in exercise %3")).arg(configTypeAsString).arg(configId).arg(exerciseId);
return reply; return reply;
@@ -17,21 +17,21 @@ namespace AudioVideoManagement
void Exercise::add(std::unique_ptr<Asset> &&asset) void Exercise::add(std::unique_ptr<Asset> &&asset)
{ {
Q_ASSERT(asset.get()); Q_ASSERT(asset.get());
auto insertResult = m_assets.insert(std::make_pair(asset->data().id(), std::move(asset))); auto insertResult = m_assets.insert(std::make_pair(asset->data().id, std::move(asset)));
Q_ASSERT(insertResult.second); Q_ASSERT(insertResult.second);
} }
void Exercise::add(std::unique_ptr<MountingPoint> &&mountingPoint) void Exercise::add(std::unique_ptr<MountingPoint> &&mountingPoint)
{ {
Q_ASSERT(mountingPoint.get()); Q_ASSERT(mountingPoint.get());
auto insertResult = m_mountingPoints.insert(std::make_pair(mountingPoint->data().id(), std::move(mountingPoint))); auto insertResult = m_mountingPoints.insert(std::make_pair(mountingPoint->data().id, std::move(mountingPoint)));
Q_ASSERT(insertResult.second); Q_ASSERT(insertResult.second);
} }
std::unique_ptr<Asset> Exercise::take(Asset *asset) std::unique_ptr<Asset> Exercise::take(Asset *asset)
{ {
Q_ASSERT(asset); Q_ASSERT(asset);
auto found = m_assets.find(asset->data().id()); auto found = m_assets.find(asset->data().id);
Q_ASSERT(found != m_assets.end()); Q_ASSERT(found != m_assets.end());
std::unique_ptr<Asset> taken = std::move(found->second); std::unique_ptr<Asset> taken = std::move(found->second);
@@ -42,7 +42,7 @@ std::unique_ptr<Asset> Exercise::take(Asset *asset)
std::unique_ptr<MountingPoint> Exercise::take(MountingPoint *mountingPoint) std::unique_ptr<MountingPoint> Exercise::take(MountingPoint *mountingPoint)
{ {
Q_ASSERT(mountingPoint); Q_ASSERT(mountingPoint);
auto found = m_mountingPoints.find(mountingPoint->data().id()); auto found = m_mountingPoints.find(mountingPoint->data().id);
Q_ASSERT(found != m_mountingPoints.end()); Q_ASSERT(found != m_mountingPoints.end());
std::unique_ptr<MountingPoint> taken = std::move(found->second); std::unique_ptr<MountingPoint> taken = std::move(found->second);
@@ -36,7 +36,7 @@ ExerciseContext ExerciseContext::fromString(const QString &s)
Q_ASSERT(s.startsWith(EX_PREFIX())); Q_ASSERT(s.startsWith(EX_PREFIX()));
bool couldConvert = false; bool couldConvert = false;
int exerciseId = s.midRef(EX_PREFIX().size()).toInt(&couldConvert); int exerciseId = s.mid(EX_PREFIX().size()).toInt(&couldConvert);
Q_ASSERT(couldConvert); Q_ASSERT(couldConvert);
return ExerciseContext(exerciseId); return ExerciseContext(exerciseId);
} }
@@ -86,8 +86,8 @@ Database::AvmFrequencyPlanning toDb(const FrequencyPlanning &ddsPlan)
{ {
Database::AvmFrequencyPlanning dbPlan; Database::AvmFrequencyPlanning dbPlan;
dbPlan.id = ddsPlan.id(); dbPlan.id = ddsPlan.id();
if (ddsPlan.exerciseId().is_set()) if (ddsPlan.exerciseId.is_set())
dbPlan.exerciseId = ddsPlan.exerciseId().get(); dbPlan.exerciseId = ddsPlan.exerciseId.get();
dbPlan.dateOfCreation = ddsPlan.date(); dbPlan.dateOfCreation = ddsPlan.date();
dbPlan.frequencySetId = ddsPlan.frequencySetId(); dbPlan.frequencySetId = ddsPlan.frequencySetId();
@@ -384,8 +384,8 @@ Core::FunctionReplyObject FrequencyPlanningHandler::validateModifyRequest(const
const FrequencyPlanning &oldPlan = *found; const FrequencyPlanning &oldPlan = *found;
if ((oldPlan.exerciseId().is_set() && oldPlan.exerciseId().get() != request.exerciseId()) if ((oldPlan.exerciseId.is_set() && oldPlan.exerciseId.get() != request.exerciseId())
|| (!oldPlan.exerciseId().is_set() && request.exerciseId() != 0)) || (!oldPlan.exerciseId.is_set() && request.exerciseId() != 0))
return reply.setStr(tr_lts("dds", "Exercise may not be changed")); return reply.setStr(tr_lts("dds", "Exercise may not be changed"));
if (request.frequencySetId() != oldPlan.frequencySetId()) if (request.frequencySetId() != oldPlan.frequencySetId())
@@ -417,7 +417,7 @@ Core::FunctionReplyObject FrequencyPlanningHandler::validateRequest(const Core::
return reply.setStr(tr_lts("dds", "FrequencyPlanning %1 does not exist")).arg(request.id()); return reply.setStr(tr_lts("dds", "FrequencyPlanning %1 does not exist")).arg(request.id());
const FrequencyPlanning &plan = *foundPlan; const FrequencyPlanning &plan = *foundPlan;
int exerciseId = plan.exerciseId().is_set() ? plan.exerciseId().get() : 0; int exerciseId = plan.exerciseId.is_set() ? plan.exerciseId.get() : 0;
auto foundActivePlan = m_activePlannings.constFind(exerciseId); auto foundActivePlan = m_activePlannings.constFind(exerciseId);
bool isActive = foundActivePlan != m_activePlannings.constEnd() && foundActivePlan->frequencyPlanningId == plan.id(); bool isActive = foundActivePlan != m_activePlannings.constEnd() && foundActivePlan->frequencyPlanningId == plan.id();
if (isActive) if (isActive)
@@ -542,7 +542,7 @@ Core::FunctionReplyObject FrequencyPlanningHandler::testActivation(const std::ve
for (const FrequencyPlanningData &entry : entries) for (const FrequencyPlanningData &entry : entries)
{ {
const CnrConfig &cnrConfig = m_cnrHandler->config(entry.cnrConfigId()); const CnrConfig &cnrConfig = m_cnrHandler->config(entry.cnrConfigId());
bool isGlobal = !cnrConfig.exerciseId().is_set(); bool isGlobal = !cnrConfig.exerciseId.is_set();
if (!isGlobal) if (!isGlobal)
continue; continue;
@@ -619,7 +619,7 @@ std::vector<int> FrequencyPlanningHandler::takenGlobalCnrConfigs(const std::vect
for (const FrequencyPlanningData &entry : plan.data()) for (const FrequencyPlanningData &entry : plan.data())
{ {
const CnrConfig &cnrConfig = m_cnrHandler->config(entry.cnrConfigId()); const CnrConfig &cnrConfig = m_cnrHandler->config(entry.cnrConfigId());
bool isGlobal = !cnrConfig.exerciseId().is_set(); bool isGlobal = !cnrConfig.exerciseId.is_set();
if (isGlobal) if (isGlobal)
result.push_back(cnrConfig.id()); result.push_back(cnrConfig.id());
} }
@@ -774,7 +774,7 @@ void FrequencyPlanningHandler::onCnrConfigRemoved(int cnrConfigId)
req.data().erase(found); req.data().erase(found);
req.date() = fp.date(); req.date() = fp.date();
req.exerciseId() = fp.exerciseId().is_set() ? fp.exerciseId().get() : 0; req.exerciseId() = fp.exerciseId.is_set() ? fp.exerciseId.get() : 0;
req.frequencySetId() = fp.frequencySetId(); req.frequencySetId() = fp.frequencySetId();
req.id() = fp.id(); req.id() = fp.id();
req.name() = fp.name(); req.name() = fp.name();
@@ -28,16 +28,16 @@ static FrequencyPlanningStatus convert(const ModifyFrequencyPlanningStatusReques
} }
newData.uuid() = request.uuid().empty() ? oldData.uuid() : request.uuid(); newData.uuid() = request.uuid().empty() ? oldData.uuid() : request.uuid();
newData.id() = oldData.id(); newData.id() = oldData.id();
if (request.sent().is_set()) if (request.sent.is_set())
{ {
newData.sent() = request.sent().get(); newData.sent() = request.sent.get();
newData.requester() = request.requester(); // ! Requester is only sent, when data gets sent. newData.requester() = request.requester(); // ! Requester is only sent, when data gets sent.
} }
if (request.received().is_set()) if (request.received.is_set())
newData.received() = request.received().get(); newData.received() = request.received.get();
if (request.activated().is_set()) if (request.activated.is_set())
{ {
newData.activated() = request.activated().get(); newData.activated() = request.activated.get();
newData.requester() = request.requester(); // ! Requester is only sent, when data gets activated. newData.requester() = request.requester(); // ! Requester is only sent, when data gets activated.
} }
newData.isActive() = request.isActive(); newData.isActive() = request.isActive();
@@ -17,7 +17,7 @@ namespace AudioVideoManagement
MountingPoint::MountingPoint(const InfrastructureManagement::StructureElement &mountingPoint) MountingPoint::MountingPoint(const InfrastructureManagement::StructureElement &mountingPoint)
: m_data(new InfrastructureManagement::StructureElement(mountingPoint)) : m_data(new InfrastructureManagement::StructureElement(mountingPoint))
{ {
Q_ASSERT(mountingPoint.id() > 0); Q_ASSERT(mountingPoint.id > 0);
} }
MountingPoint::~MountingPoint() = default; MountingPoint::~MountingPoint() = default;
@@ -124,12 +124,12 @@ Database::AvmFrequencyPlanningStatus ObjectFrequencyPlanningStatus::toDbData(con
dbData.content = QString::fromStdString(ddsData.content()); dbData.content = QString::fromStdString(ddsData.content());
dbData.reason = ddsData.reason().underlying(); dbData.reason = ddsData.reason().underlying();
if (ddsData.sent().is_set()) if (ddsData.sent.is_set())
dbData.sent = ddsData.sent().get(); dbData.sent = ddsData.sent.get();
if (ddsData.received().is_set()) if (ddsData.received.is_set())
dbData.received = ddsData.received().get(); dbData.received = ddsData.received.get();
if (ddsData.activated().is_set()) if (ddsData.activated.is_set())
dbData.activated = ddsData.activated().get(); dbData.activated = ddsData.activated.get();
return dbData; return dbData;
} }
@@ -34,9 +34,9 @@ AudioVideoManagement::Database::AvmMenuStruct toDb(const AudioVideoManagement::A
dbItem.rowid = ddsItem.rowId(); dbItem.rowid = ddsItem.rowId();
if (ddsItem.isGroup()) if (ddsItem.isGroup())
dbItem.name = QString::fromStdString(ddsItem.name().get()); dbItem.name = QString::fromStdString(ddsItem.name.get());
else else
dbItem.mountingPointId = ddsItem.mountingPointId().get(); dbItem.mountingPointId = ddsItem.mountingPointId.get();
return dbItem; return dbItem;
} }
@@ -106,11 +106,11 @@ void StreamNameMapping::onStreamNameChanged(const StreamName &streamName, DataMo
{ {
case DataModification::eAdded: case DataModification::eAdded:
case DataModification::eModified: case DataModification::eModified:
define(streamName.mountingPointId(), {QString::fromStdString(streamName.internalName()), QString::fromStdString(streamName.displayName())}); define(streamName.mountingPointId, {QString::fromStdString(streamName.internalName), QString::fromStdString(streamName.displayName)});
return; return;
case DataModification::eRemoved: case DataModification::eRemoved:
remove(streamName.mountingPointId()); remove(streamName.mountingPointId);
return; return;
} }
Q_ASSERT(false); Q_ASSERT(false);
@@ -66,8 +66,8 @@ Database::AvmTvcConfig toDb(const ModifyTvcConfigRequest &request)
result.info = QString::fromStdString(request.info()); result.info = QString::fromStdString(request.info());
result.recording = request.recording(); result.recording = request.recording();
result.tetraChannelId = request.tetraChannelId(); result.tetraChannelId = request.tetraChannelId();
if (request.exerciseId().is_set()) if (request.exerciseId.is_set())
result.exerciseId = request.exerciseId().get(); result.exerciseId = request.exerciseId.get();
return result; return result;
} }
@@ -426,7 +426,7 @@ void TvcHandler::onContextActivated(const ExerciseContext &context)
for (const TvcConfig &tvcConfig : qAsConst(m_cache)) for (const TvcConfig &tvcConfig : qAsConst(m_cache))
{ {
bool isLocal = tvcConfig.exerciseId().is_set(); bool isLocal = tvcConfig.exerciseId.is_set();
if (isLocal) if (isLocal)
{ {
if (tvcConfig.exerciseId() == context.id()) if (tvcConfig.exerciseId() == context.id())
@@ -448,7 +448,7 @@ void TvcHandler::onContextDeactivated(const ExerciseContext &context)
for (const TvcConfig &tvcConfig : qAsConst(m_cache)) for (const TvcConfig &tvcConfig : qAsConst(m_cache))
{ {
bool isLocal = tvcConfig.exerciseId().is_set(); bool isLocal = tvcConfig.exerciseId.is_set();
if (isLocal) if (isLocal)
{ {
@@ -534,11 +534,11 @@ bool TvcHandler::checkConstraint(const std::function<bool (const TvcConfig &)> &
// If both configs are local the constraint must hold if they are in the same exercise // If both configs are local the constraint must hold if they are in the same exercise
// or when both exercises are currently active. // or when both exercises are currently active.
// Otherwise (one or both are global) the constraint must always hold // Otherwise (one or both are global) the constraint must always hold
bool bothLocal = config.exerciseId().is_set() && exerciseId.is_initialized(); bool bothLocal = config.exerciseId.is_set() && exerciseId.is_initialized();
if (bothLocal) if (bothLocal)
{ {
bool sameExercise = config.exerciseId().get() == *exerciseId; bool sameExercise = config.exerciseId.get() == *exerciseId;
bool bothActive = isActiveExercise(config.exerciseId().get()) && isActiveExercise(*exerciseId); bool bothActive = isActiveExercise(config.exerciseId.get()) && isActiveExercise(*exerciseId);
if (!sameExercise && !bothActive) if (!sameExercise && !bothActive)
continue; continue;
} }
@@ -556,9 +556,9 @@ bool TvcHandler::checkConstraint(const std::function<bool (const TvcConfig &)> &
*/ */
QString TvcHandler::exerciseList(const TvcConfig &config) const QString TvcHandler::exerciseList(const TvcConfig &config) const
{ {
bool isLocal = config.exerciseId().is_set(); bool isLocal = config.exerciseId.is_set();
if (isLocal) if (isLocal)
return ExerciseContext(config.exerciseId().get()).toString(); return ExerciseContext(config.exerciseId.get()).toString();
// for global config // for global config
QString exerciseList; QString exerciseList;
@@ -574,9 +574,9 @@ QString TvcHandler::exerciseList(const TvcConfig &config) const
bool TvcHandler::needDeviceConfig(const TvcConfig &config) const bool TvcHandler::needDeviceConfig(const TvcConfig &config) const
{ {
bool isGlobal = !config.exerciseId().is_set(); bool isGlobal = !config.exerciseId.is_set();
bool hasActiveExericse = m_activeExercises->count() > 0; bool hasActiveExericse = m_activeExercises->count() > 0;
return (isGlobal && hasActiveExericse) || (!isGlobal && isActiveExercise(config.exerciseId().get())); return (isGlobal && hasActiveExericse) || (!isGlobal && isActiveExercise(config.exerciseId.get()));
} }
} // namespace AudioVideoManagement } // namespace AudioVideoManagement
@@ -20,7 +20,6 @@
class QByteArray; class QByteArray;
class QString; class QString;
class QStringList;
namespace AudioVideoManagement namespace AudioVideoManagement
{ {
@@ -21,8 +21,6 @@
#include <QtCore/QObject> #include <QtCore/QObject>
#include <chrono> #include <chrono>
class QStringList;
namespace AudioVideoManagement namespace AudioVideoManagement
{ {