diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9dbdb26..0732b8c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -16,6 +16,7 @@ set(SOURCES asn1Motion2DConvert.cpp asn1OrientationConvert.cpp asn1OrientationUtils.c + asn1PointConvert.cpp asn1PoseConvert.cpp asn1QuaterniondConvert.cpp asn1QuaterniondUtils.c @@ -54,6 +55,7 @@ set(HEADERS asn1Motion2DConvert.hpp asn1OrientationConvert.hpp asn1OrientationUtils.h + asn1PointConvert.hpp asn1PoseConvert.hpp asn1QuaterniondConvert.hpp asn1QuaterniondUtils.h @@ -77,6 +79,10 @@ set(HEADERS ia5stringConvert.hpp ) +file(GLOB TYPE_SOURCES + ${${LIB}_BINARY_DIR}/asn1/*.c +) + # ASN.1 types are imported and compiled locally to the project, but not installed esrocos_asn1_types_package(${LIB}_local_types OUTDIR asn1 @@ -86,7 +92,7 @@ esrocos_asn1_types_package(${LIB}_local_types link_directories(${CMAKE_INSTALL_PREFIX}/lib) # Target library -add_library(${LIB} SHARED ${SOURCES}) +add_library(${LIB} SHARED ${SOURCES} ${TYPE_SOURCES}) set_target_properties(${LIB} PROPERTIES LINKER_LANGUAGE CXX) esrocos_pkgconfig_dependency(${LIB} eigen3 @@ -95,7 +101,7 @@ target_include_directories(${LIB} PUBLIC ${CMAKE_INSTALL_PREFIX}/include PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ) -add_dependencies(${LIB} ${LIB}_local_types) +add_dependencies(${LIB} ${LIB}_local_types_generate_c) # Install headers, libraries and pkg-config file install(FILES ${HEADERS} diff --git a/src/asn1Matrix3dConvert.cpp b/src/asn1Matrix3dConvert.cpp index 2515fdc..82b6e18 100644 --- a/src/asn1Matrix3dConvert.cpp +++ b/src/asn1Matrix3dConvert.cpp @@ -19,11 +19,10 @@ void Matrix3d_fromAsn1(base::Matrix3d& result, const asn1SccMatrix3d& asnVal) void Matrix3d_toAsn1(asn1SccMatrix3d& result, const base::Matrix3d& baseObj) { - result.nCount = 3; - for (int j = 0; j < result.nCount; j++) + + for (int j = 0; j < 3; j++) { - result.arr[j].nCount = 3; - for (int i = 0; i < result.arr[j].nCount; i++) + for (int i = 0; i < 3; i++) { result.arr[j].arr[i] = baseObj(i, j); } diff --git a/src/asn1Matrix4dConvert.cpp b/src/asn1Matrix4dConvert.cpp index 6811ff8..5d11641 100644 --- a/src/asn1Matrix4dConvert.cpp +++ b/src/asn1Matrix4dConvert.cpp @@ -20,11 +20,9 @@ void Matrix4d_fromAsn1(base::Matrix4d& result, const asn1SccMatrix4d& asnVal) void Matrix4d_toAsn1(asn1SccMatrix4d& result, const base::Matrix4d& baseObj) { - result.nCount = 4; - for (int j = 0; j < result.nCount; j++) + for (int j = 0; j < 4; j++) { - result.arr[j].nCount = 4; - for (int i = 0; i < result.arr[j].nCount; i++) + for (int i = 0; i < 4; i++) { result.arr[j].arr[i] = baseObj(i, j); } diff --git a/src/asn1Matrix6dConvert.cpp b/src/asn1Matrix6dConvert.cpp index 9441e43..23c2b56 100644 --- a/src/asn1Matrix6dConvert.cpp +++ b/src/asn1Matrix6dConvert.cpp @@ -22,11 +22,9 @@ void Matrix6d_fromAsn1(base::Matrix6d& result, const asn1SccMatrix6d& asnVal) void Matrix6d_toAsn1(asn1SccMatrix6d& result, const base::Matrix6d& baseObj) { - result.nCount = 6; - for (int j = 0; j < result.nCount; j++) + for (int j = 0; j < 6; j++) { - result.arr[j].nCount = 6; - for (int i = 0; i < result.arr[j].nCount; i++) + for (int i = 0; i < 6; i++) { result.arr[j].arr[i] = baseObj(i, j); } diff --git a/src/asn1PointConvert.cpp b/src/asn1PointConvert.cpp new file mode 100644 index 0000000..98780a7 --- /dev/null +++ b/src/asn1PointConvert.cpp @@ -0,0 +1,29 @@ +/* + * H2020 ESROCOS Project + * Company: GMV Aerospace & Defence S.A.U. + * Licence: GPLv2 + */ + +/* + * Conversion functions for asn1Point (implementation). + */ + +#include "asn1PointConvert.hpp" +#include + +void Point_fromAsn1(base::Vector3d& result, const asn1SccPoint& asnVal) +{ + for (int i = 0; i < 3; i++) + { + result[i] = asnVal.arr[i]; + } +} + +void Point_toAsn1(asn1SccPoint& result, const base::Vector3d& baseObj) +{ + for (int i = 0; i < 3; i++) + { + result.arr[i] = baseObj[i]; + } +} + diff --git a/src/asn1PointConvert.hpp b/src/asn1PointConvert.hpp new file mode 100644 index 0000000..42cc3ee --- /dev/null +++ b/src/asn1PointConvert.hpp @@ -0,0 +1,21 @@ +/* + * H2020 ESROCOS Project + * Company: GMV Aerospace & Defence S.A.U. + * Licence: GPLv2 + */ + +/* + * Conversion functions for asn1Point (header). + */ + +#ifndef ASN1POINTCONVERT_HPP +#define ASN1POINTCONVERT_HPP + +#include "baseTypes.h" +#include "base/Eigen.hpp" + +// Conversion functions +void Point_fromAsn1(base::Vector3d& result, const asn1SccPoint& asnVal); +void Point_toAsn1(asn1SccPoint& result, const base::Vector3d& baseObj); + +#endif //ASN1POINTCONVERT_HPP diff --git a/src/asn1QuaterniondUtils.c b/src/asn1QuaterniondUtils.c index fc698fb..4ba9e92 100644 --- a/src/asn1QuaterniondUtils.c +++ b/src/asn1QuaterniondUtils.c @@ -15,7 +15,6 @@ asn1SccQuaterniond Quaterniond_create(double w, double x, double y, double z) { asn1SccQuaterniond result; - result.nCount = 4; result.arr[0] = x; result.arr[1] = y; result.arr[2] = z; diff --git a/src/asn1TransformWithCovarianceConvert.cpp b/src/asn1TransformWithCovarianceConvert.cpp index 49f1c32..bdfcb1c 100644 --- a/src/asn1TransformWithCovarianceConvert.cpp +++ b/src/asn1TransformWithCovarianceConvert.cpp @@ -15,17 +15,17 @@ void TransformWithCovariance_fromAsn1(base::TransformWithCovariance& result, const asn1SccTransformWithCovariance& asnVal) { - Vector3d_fromAsn1(result.translation, asnVal.translation); - Orientation_fromAsn1(result.orientation, asnVal.orientation); - Matrix6d_fromAsn1(result.cov, asnVal.cov); + Vector3d_fromAsn1(result.translation, asnVal.data.translation); + Orientation_fromAsn1(result.orientation, asnVal.data.orientation); + Matrix6d_fromAsn1(result.cov, asnVal.data.cov); } void TransformWithCovariance_toAsn1(asn1SccTransformWithCovariance& result, const base::TransformWithCovariance& baseObj) { - Vector3d_toAsn1(result.translation, baseObj.translation); - Orientation_toAsn1(result.orientation, baseObj.orientation); - Matrix6d_toAsn1(result.cov, baseObj.cov); + Vector3d_toAsn1(result.data.translation, baseObj.translation); + Orientation_toAsn1(result.data.orientation, baseObj.orientation); + Matrix6d_toAsn1(result.data.cov, baseObj.cov); } diff --git a/src/asn1TwistWithCovarianceConvert.cpp b/src/asn1TwistWithCovarianceConvert.cpp index a01dbfa..9f837ac 100644 --- a/src/asn1TwistWithCovarianceConvert.cpp +++ b/src/asn1TwistWithCovarianceConvert.cpp @@ -14,17 +14,17 @@ void TwistWithCovariance_fromAsn1(base::TwistWithCovariance& result, const asn1SccTwistWithCovariance& asnVal) { - Vector3d_fromAsn1(result.vel, asnVal.vel); - Vector3d_fromAsn1(result.rot, asnVal.rot); - Matrix6d_fromAsn1(result.cov, asnVal.cov); + Vector3d_fromAsn1(result.vel, asnVal.data.vel); + Vector3d_fromAsn1(result.rot, asnVal.data.rot); + Matrix6d_fromAsn1(result.cov, asnVal.data.cov); } void TwistWithCovariance_toAsn1(asn1SccTwistWithCovariance& result, const base::TwistWithCovariance& baseObj) { - Vector3d_toAsn1(result.vel, baseObj.vel); - Vector3d_toAsn1(result.rot, baseObj.rot); - Matrix6d_toAsn1(result.cov, baseObj.cov); + Vector3d_toAsn1(result.data.vel, baseObj.vel); + Vector3d_toAsn1(result.data.rot, baseObj.rot); + Matrix6d_toAsn1(result.data.cov, baseObj.cov); } diff --git a/src/asn1Vector3dConvert.cpp b/src/asn1Vector3dConvert.cpp index 110282e..2dcb0af 100644 --- a/src/asn1Vector3dConvert.cpp +++ b/src/asn1Vector3dConvert.cpp @@ -22,8 +22,7 @@ void Vector3d_fromAsn1(base::Vector3d& result, const asn1SccVector3d& asnVal) void Vector3d_toAsn1(asn1SccVector3d& result, const base::Vector3d& baseObj) { - result.nCount = 3; - for (int i = 0; i < result.nCount; i++) + for (int i = 0; i < 3; i++) { result.arr[i] = baseObj[i]; } diff --git a/src/asn1Vector3dUtils.c b/src/asn1Vector3dUtils.c index 6a5869c..d60feda 100644 --- a/src/asn1Vector3dUtils.c +++ b/src/asn1Vector3dUtils.c @@ -14,7 +14,6 @@ asn1SccVector3d Vector3d_create(double x, double y, double z) { asn1SccVector3d result; - result.nCount = 3; result.arr[0] = x; result.arr[1] = y; result.arr[2] = z; diff --git a/src/asn1Vector4dConvert.cpp b/src/asn1Vector4dConvert.cpp index 4723967..a3a9018 100644 --- a/src/asn1Vector4dConvert.cpp +++ b/src/asn1Vector4dConvert.cpp @@ -21,8 +21,7 @@ void Vector4d_fromAsn1(base::Vector4d& result, const asn1SccVector4d& asnVal) void Vector4d_toAsn1(asn1SccVector4d& result, const base::Vector4d& baseObj) { - result.nCount = 4; - for (int i = 0; i < result.nCount; i++) + for (int i = 0; i < 4; i++) { result.arr[i] = baseObj[i]; } diff --git a/src/asn1Vector4dUtils.c b/src/asn1Vector4dUtils.c index 83ba877..4bd8fc5 100644 --- a/src/asn1Vector4dUtils.c +++ b/src/asn1Vector4dUtils.c @@ -14,7 +14,6 @@ asn1SccVector4d Vector4d_create(double x, double y, double z, double w) { asn1SccVector4d result; - result.nCount = 4; result.arr[0] = x; result.arr[1] = y; result.arr[2] = z; diff --git a/src/asn1Vector6dConvert.cpp b/src/asn1Vector6dConvert.cpp index cfdf566..cea07b8 100644 --- a/src/asn1Vector6dConvert.cpp +++ b/src/asn1Vector6dConvert.cpp @@ -21,8 +21,7 @@ void Vector6d_fromAsn1(base::Vector6d& result, const asn1SccVector6d& asnVal) void Vector6d_toAsn1(asn1SccVector6d& result, const base::Vector6d& baseObj) { - result.nCount = 6; - for (int i = 0; i < result.nCount; i++) + for (int i = 0; i < 6; i++) { result.arr[i] = baseObj[i]; } diff --git a/src/asn1Vector6dUtils.c b/src/asn1Vector6dUtils.c index ce46622..1a7cc84 100644 --- a/src/asn1Vector6dUtils.c +++ b/src/asn1Vector6dUtils.c @@ -14,7 +14,6 @@ asn1SccVector6d Vector6d_create(double v0, double v1, double v2, double v3, double v4, double v5) { asn1SccVector6d result; - result.nCount = 6; result.arr[0] = v0; result.arr[1] = v1; result.arr[2] = v2;