Small bugfixes
Change-Id: Ic1bf2f0f9d48549b58fe186639efabe772dfc9de
Signed-off-by: Thomas Psota <thomas.psota@iese.fraunhofer.de>
diff --git a/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/map_v2/common/ElementContainer.h b/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/map_v2/common/ElementContainer.h
index 4d7b630..f6700cc 100644
--- a/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/map_v2/common/ElementContainer.h
+++ b/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/map_v2/common/ElementContainer.h
@@ -17,7 +17,7 @@
namespace map {
struct ElementContainerPath {
- static constexpr char IdShort[] = "idShort";
+ static constexpr char IdShort[] = "idShort";
};
template<typename IElementType>
@@ -98,13 +98,20 @@
if (n > this->size())
return nullptr;
- // Find element in object tree
- auto & objectList = this->getMap().template Get<basyx::object::object_list_t&>();
- auto & obj = objectList.at(n);
+ // Iterate through object map
+ int i = 0;
+
+ for(const auto & entry : map.Get<basyx::object::object_map_t&>())
+ {
+ if (i++ == n)
+ {
+ // Get id of object and create temporary
+ const auto & id = entry.first;
+ return this->getElement(id);
+ };
+ };
- // Get id of object and create temporary
- const auto & id = obj.getProperty(ElementContainerPath::IdShort).Get<std::string&>();
- return this->getElement(id);
+ return nullptr;
};
diff --git a/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/map_v2/qualifier/Identifiable.h b/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/map_v2/qualifier/Identifiable.h
index b50fb5a..91ba983 100644
--- a/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/map_v2/qualifier/Identifiable.h
+++ b/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/map_v2/qualifier/Identifiable.h
@@ -18,7 +18,7 @@
static constexpr char IdType[] = "idType";
static constexpr char Id[] = "id";
static constexpr char AdministrativeInformation[] = "administrativeInformation";
- static constexpr char Identifier[] = "identifier";
+ static constexpr char Identifier[] = "Identification";
};
private:
map::AdministrativeInformation administrativeInformation;
@@ -31,8 +31,8 @@
bool hasAdministrativeInformation() const noexcept override;
// Inherited via IIdentifiable
- const AdministrativeInformation & getAdministrativeInformation() const override;
- AdministrativeInformation & getAdministrativeInformation() override;
+ const api::IAdministrativeInformation & getAdministrativeInformation() const override;
+ api::IAdministrativeInformation & getAdministrativeInformation() override;
virtual simple::Identifier getIdentification() const override;
diff --git a/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/map_v2/submodelelement/operation/OperationVariable.h b/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/map_v2/submodelelement/operation/OperationVariable.h
index 670ad91..b688d42 100644
--- a/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/map_v2/submodelelement/operation/OperationVariable.h
+++ b/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/map_v2/submodelelement/operation/OperationVariable.h
@@ -43,6 +43,8 @@
{
return *this->value;
};
+
+ virtual inline KeyElements getKeyElementType() const override { return KeyElements::OperationVariable; };
};
diff --git a/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/simple/aas/AssetAdministrationShell.h b/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/simple/aas/AssetAdministrationShell.h
index e52889a..be14ce2 100644
--- a/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/simple/aas/AssetAdministrationShell.h
+++ b/sdks/c++/basys.sdk.cc/include/BaSyx/submodel/simple/aas/AssetAdministrationShell.h
@@ -50,8 +50,8 @@
virtual simple::Reference getReference() const override;
// Inherited via IIdentifiable
- virtual const AdministrativeInformation & getAdministrativeInformation() const override;
- virtual AdministrativeInformation & getAdministrativeInformation() override;
+ virtual const api::IAdministrativeInformation & getAdministrativeInformation() const override;
+ virtual api::IAdministrativeInformation & getAdministrativeInformation() override;
virtual Identifier getIdentification() const override;
diff --git a/sdks/c++/basys.sdk.cc/src/server/CMakeLists.txt b/sdks/c++/basys.sdk.cc/src/server/CMakeLists.txt
index 8d40802..95155f4 100644
--- a/sdks/c++/basys.sdk.cc/src/server/CMakeLists.txt
+++ b/sdks/c++/basys.sdk.cc/src/server/CMakeLists.txt
@@ -23,6 +23,7 @@
target_sources(${BASYX_SERVER_LIB_SUFFIX}
PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/server/TCPServer.cpp
${BASYX_SHARED_INCLUDE_DIR}/TCPServer.h
${BASYX_SHARED_INCLUDE_DIR}/BaSyxNativeProvider.h
)
diff --git a/sdks/c++/basys.sdk.cc/src/server/server/TCPServer.cpp b/sdks/c++/basys.sdk.cc/src/server/server/TCPServer.cpp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sdks/c++/basys.sdk.cc/src/server/server/TCPServer.cpp
diff --git a/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/qualifier/HasDataSpecification.cpp b/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/qualifier/HasDataSpecification.cpp
index fafd9df..1f52305 100644
--- a/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/qualifier/HasDataSpecification.cpp
+++ b/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/qualifier/HasDataSpecification.cpp
@@ -13,7 +13,7 @@
: vab::ElementMap()
, dataSpecification()
{
- this->map.insertKey(Path::DataSpecification, basyx::object::make_object_ref(&dataSpecification));
+ this->map.insertKey(Path::DataSpecification, this->dataSpecification);
}
void HasDataSpecification::addDataSpecification(const simple::Reference & reference)
@@ -36,4 +36,4 @@
};
return dataSpecs;
-}
\ No newline at end of file
+}
diff --git a/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/qualifier/Identifiable.cpp b/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/qualifier/Identifiable.cpp
index c6abe71..882f8ce 100644
--- a/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/qualifier/Identifiable.cpp
+++ b/sdks/c++/basys.sdk.cc/src/submodel/submodel/map_v2/qualifier/Identifiable.cpp
@@ -33,12 +33,12 @@
};
}
-const AdministrativeInformation & Identifiable::getAdministrativeInformation() const
+const api::IAdministrativeInformation & Identifiable::getAdministrativeInformation() const
{
return this->administrativeInformation;
}
-AdministrativeInformation & Identifiable::getAdministrativeInformation()
+api::IAdministrativeInformation & Identifiable::getAdministrativeInformation()
{
return this->administrativeInformation;
}
diff --git a/sdks/c++/basys.sdk.cc/src/submodel/submodel/simple/aas/AssetAdministrationShell.cpp b/sdks/c++/basys.sdk.cc/src/submodel/submodel/simple/aas/AssetAdministrationShell.cpp
index bf500dc..ec9bed5 100644
--- a/sdks/c++/basys.sdk.cc/src/submodel/submodel/simple/aas/AssetAdministrationShell.cpp
+++ b/sdks/c++/basys.sdk.cc/src/submodel/submodel/simple/aas/AssetAdministrationShell.cpp
@@ -75,12 +75,12 @@
}
-const AdministrativeInformation & AssetAdministrationShell::getAdministrativeInformation() const
+const api::IAdministrativeInformation & AssetAdministrationShell::getAdministrativeInformation() const
{
return this->identifiable.getAdministrativeInformation();
}
-AdministrativeInformation & AssetAdministrationShell::getAdministrativeInformation()
+api::IAdministrativeInformation & AssetAdministrationShell::getAdministrativeInformation()
{
return this->identifiable.getAdministrativeInformation();
}
diff --git a/sdks/c++/basys.sdk.cc/tests/CMakeLists.txt b/sdks/c++/basys.sdk.cc/tests/CMakeLists.txt
index 07135d7..3ab7351 100644
--- a/sdks/c++/basys.sdk.cc/tests/CMakeLists.txt
+++ b/sdks/c++/basys.sdk.cc/tests/CMakeLists.txt
@@ -24,7 +24,6 @@
add_subdirectory(regression/util)
add_subdirectory(regression/vab)
-add_subdirectory(regression/aas)
add_subdirectory(regression/submodel)
### Integration tests ###
diff --git a/sdks/c++/basys.sdk.cc/tests/regression/submodel/api/common/test_ElementContainer.cpp b/sdks/c++/basys.sdk.cc/tests/regression/submodel/api/common/test_ElementContainer.cpp
index 112af29..abd197f 100644
--- a/sdks/c++/basys.sdk.cc/tests/regression/submodel/api/common/test_ElementContainer.cpp
+++ b/sdks/c++/basys.sdk.cc/tests/regression/submodel/api/common/test_ElementContainer.cpp
@@ -52,6 +52,25 @@
ASSERT_EQ(propB->getValue(), 5);
};
+TYPED_TEST(ElementContainerTest, TestGetByIndex)
+{
+ auto prop = util::make_unique<Property<int>>("prop1");
+ prop->setValue(5);
+
+ auto prop2 = util::make_unique<Property<float>>("prop2");
+ prop2->setValue(10.0f);
+
+ this->elementContainer->addElement(std::move(prop));
+ this->elementContainer->addElement(std::move(prop2));
+ ASSERT_EQ(this->elementContainer->size(), 2);
+
+ auto submodelElement1 = this->elementContainer->getElement(0);
+ ASSERT_TRUE(submodelElement1->getIdShort() == "prop1" || submodelElement1->getIdShort() == "prop2");
+
+ auto submodelElement2 = this->elementContainer->getElement(0);
+ ASSERT_TRUE(submodelElement2->getIdShort() == "prop1" || submodelElement2->getIdShort() == "prop2");
+};
+
TYPED_TEST(ElementContainerTest, TestCreate)
{
auto prop = this->elementContainer->template createElement<Property<int>>("testProperty");