-
Notifications
You must be signed in to change notification settings - Fork 14
✨ QDMI Environment Implementation #154
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Changes from 61 commits
0887df6
302c416
3aab49e
52bd8d7
49cc0bf
3ba8a92
6f658f6
25abdd4
98971ba
98a8659
c2b2935
f88b60c
c1591fe
4e7b8f8
bd849ae
3858563
3929d0a
16afe77
9bbc775
7b3e8df
ba5a676
e67355f
67312db
94e4b25
20a2841
e239964
7474cbe
83a6b18
c71b2c3
d0db550
0e9bcb2
d2218d5
889b27c
a83cbf4
709ac33
4572c14
123d2e6
f562d03
64ea415
6df7dee
e3e6694
04a8218
0bda557
56ba00d
aff6f1e
10710d0
e305c46
9f38ad9
248a112
aba1df1
80cd577
ab49391
3234155
2f2e03e
4ef85b5
0202474
34718bc
5a121c5
f8eb819
d2f3321
8c747b3
3a3576d
35dc853
c7ffdc3
e3467e6
b4c416d
d61e4e7
abe1b30
891abf3
abbbbd5
c7432aa
ecc8fcd
b88ff2f
72cf9eb
ddd73a1
80628dd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same holds for this file as commented above.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It is reverted. |
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -26,10 +26,14 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |||||
|
|
||||||
| #include <algorithm> | ||||||
| #include <array> | ||||||
| #include <chrono> | ||||||
| #include <cmath> | ||||||
| #include <complex> | ||||||
| #include <cstddef> | ||||||
| #include <cstdint> | ||||||
| #include <cstdlib> | ||||||
| #include <cstring> | ||||||
| #include <ctime> | ||||||
| #include <functional> | ||||||
| #include <iterator> | ||||||
| #include <limits> | ||||||
|
|
@@ -77,6 +81,24 @@ struct CXX_QDMI_Operation_impl_d { | |||||
| std::string name; | ||||||
| }; | ||||||
|
|
||||||
| struct CXX_QDMI_TelemetrySensor_impl_d { | ||||||
| std::string id; | ||||||
| std::string unit; | ||||||
| uint64_t sampling_rate; | ||||||
| }; | ||||||
|
|
||||||
| struct CXX_QDMI_Device_TelemetrySensor_Query_impl_d { | ||||||
| std::chrono::time_point<std::chrono::system_clock> start_time; | ||||||
| std::chrono::time_point<std::chrono::system_clock> end_time; | ||||||
| std::chrono::seconds timeout = std::chrono::seconds(); | ||||||
| CXX_QDMI_TelemetrySensor telemetry_sensor = nullptr; | ||||||
| std::vector<std::chrono::time_point<std::chrono::system_clock>> | ||||||
| result_timestamps; | ||||||
| std::vector<double> result_values; | ||||||
| QDMI_TelemetrySensor_Query_Status status = | ||||||
| QDMI_TELEMETRYSENSOR_QUERY_STATUS_CREATED; | ||||||
| }; | ||||||
|
|
||||||
| namespace { | ||||||
| /** | ||||||
| * @brief Static function to maintain the device state. | ||||||
|
|
@@ -159,6 +181,11 @@ constexpr CXX_QDMI_Site_impl_d SITE4{4}; | |||||
| constexpr std::array<const CXX_QDMI_Site_impl_d *, 5> CXX_DEVICE_SITES = { | ||||||
| &SITE0, &SITE1, &SITE2, &SITE3, &SITE4}; | ||||||
|
|
||||||
| const CXX_QDMI_TelemetrySensor_impl_d ENVSEN{"t4k", "K", 60}; | ||||||
|
|
||||||
| constexpr std::array<const CXX_QDMI_TelemetrySensor_impl_d *, 1> | ||||||
| CXX_DEVICE_TELEMETRYSENSORS{&ENVSEN}; | ||||||
|
|
||||||
| constexpr std::array<const CXX_QDMI_Site_impl_d *, 20> | ||||||
| // clang-format off | ||||||
| DEVICE_COUPLING_MAP = { | ||||||
|
|
@@ -773,6 +800,9 @@ int CXX_QDMI_device_session_query_device_property( | |||||
| ADD_SINGLE_VALUE_PROPERTY(QDMI_DEVICE_PROPERTY_NEEDSCALIBRATION, size_t, 0, | ||||||
| prop, size, value, size_ret) | ||||||
|
|
||||||
| ADD_LIST_PROPERTY(QDMI_DEVICE_PROPERTY_TELEMETRYSENSORS, | ||||||
| CXX_QDMI_TelemetrySensor, CXX_DEVICE_TELEMETRYSENSORS, prop, | ||||||
| size, value, size_ret) | ||||||
| ADD_SINGLE_VALUE_PROPERTY( | ||||||
| QDMI_DEVICE_PROPERTY_PULSESUPPORT, QDMI_Device_Pulse_Support_Level, | ||||||
| QDMI_DEVICE_PULSE_SUPPORT_LEVEL_NONE, prop, size, value, size_ret) | ||||||
|
|
@@ -889,3 +919,226 @@ int CXX_QDMI_device_session_query_operation_property( | |||||
| } | ||||||
| return QDMI_ERROR_NOTSUPPORTED; | ||||||
| } /// [DOXYGEN FUNCTION END] | ||||||
|
|
||||||
| int CXX_QDMI_device_session_query_telemetrysensor_property( | ||||||
| CXX_QDMI_Device_Session session, CXX_QDMI_TelemetrySensor telemetry_sensor, | ||||||
| QDMI_TelemetrySensor_Property prop, size_t size, void *value, | ||||||
| size_t *size_ret) { | ||||||
| if (session == nullptr || telemetry_sensor == nullptr || | ||||||
| (value != nullptr && size == 0) || | ||||||
| (prop >= QDMI_TELEMETRYSENSOR_PROPERTY_MAX && | ||||||
| prop != QDMI_TELEMETRYSENSOR_PROPERTY_CUSTOM1 && | ||||||
| prop != QDMI_TELEMETRYSENSOR_PROPERTY_CUSTOM2 && | ||||||
| prop != QDMI_TELEMETRYSENSOR_PROPERTY_CUSTOM3 && | ||||||
| prop != QDMI_TELEMETRYSENSOR_PROPERTY_CUSTOM4 && | ||||||
| prop != QDMI_TELEMETRYSENSOR_PROPERTY_CUSTOM5)) { | ||||||
| return QDMI_ERROR_INVALIDARGUMENT; | ||||||
| } | ||||||
| ADD_STRING_PROPERTY(QDMI_TELEMETRYSENSOR_PROPERTY_ID, | ||||||
| telemetry_sensor->id.c_str(), prop, size, value, size_ret) | ||||||
| ADD_STRING_PROPERTY(QDMI_TELEMETRYSENSOR_PROPERTY_UNIT, | ||||||
| telemetry_sensor->unit.c_str(), prop, size, value, | ||||||
| size_ret) | ||||||
| ADD_SINGLE_VALUE_PROPERTY(QDMI_TELEMETRYSENSOR_PROPERTY_SAMPLINGRATE, | ||||||
| uint64_t, telemetry_sensor->sampling_rate, prop, | ||||||
| size, value, size_ret) | ||||||
| return QDMI_ERROR_NOTSUPPORTED; | ||||||
| } | ||||||
|
|
||||||
| int CXX_QDMI_device_session_create_device_telemetrysensor_query( | ||||||
| CXX_QDMI_Device_Session session, | ||||||
| CXX_QDMI_Device_TelemetrySensor_Query *query) { | ||||||
|
|
||||||
| if (session == nullptr || query == nullptr) { | ||||||
| return QDMI_ERROR_INVALIDARGUMENT; | ||||||
| } | ||||||
| if (session->status != CXX_QDMI_DEVICE_SESSION_STATUS::INITIALIZED) { | ||||||
| return QDMI_ERROR_BADSTATE; | ||||||
| } | ||||||
| *query = new CXX_QDMI_Device_TelemetrySensor_Query_impl_d(); | ||||||
| (*query)->start_time = std::chrono::system_clock::now(); | ||||||
| (*query)->end_time = std::chrono::system_clock::now(); | ||||||
| (*query)->status = QDMI_TELEMETRYSENSOR_QUERY_STATUS_CREATED; | ||||||
|
|
||||||
| return QDMI_SUCCESS; | ||||||
| } | ||||||
|
|
||||||
| int CXX_QDMI_device_telemetrysensor_query_set_parameter( | ||||||
| CXX_QDMI_Device_TelemetrySensor_Query query, | ||||||
| QDMI_Device_TelemetrySensor_Query_Parameter param, size_t size, | ||||||
| const void *value) { | ||||||
|
|
||||||
| if (query == nullptr || (value != nullptr && size == 0) || | ||||||
| (param >= QDMI_DEVICE_TELEMETRYSENSOR_QUERY_PARAMETER_MAX && | ||||||
| param != QDMI_DEVICE_TELEMETRYSENSOR_QUERY_PARAMETER_CUSTOM1 && | ||||||
| param != QDMI_DEVICE_TELEMETRYSENSOR_QUERY_PARAMETER_CUSTOM2 && | ||||||
| param != QDMI_DEVICE_TELEMETRYSENSOR_QUERY_PARAMETER_CUSTOM3 && | ||||||
| param != QDMI_DEVICE_TELEMETRYSENSOR_QUERY_PARAMETER_CUSTOM4 && | ||||||
| param != QDMI_DEVICE_TELEMETRYSENSOR_QUERY_PARAMETER_CUSTOM5) || | ||||||
| value == nullptr || (size != sizeof(decltype(query->start_time)))) { | ||||||
|
||||||
| value == nullptr || (size != sizeof(decltype(query->start_time)))) { | |
| value == nullptr) { |
The check (size != sizeof(decltype(query->start_time))) must be placed somewhere differently because also other information than of the start_time's type can be returned, e.g., a sensor pointer. This check should be handled in the respective cases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Corrected.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@burgholzer What is the latest state here regarding the CodeCov setup? Should these changes be reverted?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The current state is #154 (comment)
We should not need to explicitly set any secrets or tokens in workflows here. Any respective changes can be reverted here or should be moved to a separate PR that gets merged before this PR does.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is reverted. Have any support tickets been created?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No. Would you mind creating one?