Skip to content

Comments

Add (client only) support for rda3#348

Draft
wirew0rm wants to merge 7 commits intomainfrom
rda3
Draft

Add (client only) support for rda3#348
wirew0rm wants to merge 7 commits intomainfrom
rda3

Conversation

@wirew0rm
Copy link
Member

@wirew0rm wirew0rm commented Jul 5, 2024

This adds support for RDA3, the protocol used by CMW/FESA based devices.

  • Fixes some quirks in the cmwlight serialiser that are needed to serialize the control messages:
    • support for maps
    • deserialise empty objects/maps
    • some minor bugs
    • add unittests with real world data to prevent regressions
  • Adds a lightweight zeromq STREAM based nameserver client to resolve rda3 device names
  • Add a cmwlight client implementation

There are still some open points, for now only get requests are handled completely, subscriptions generally work but need a bit more state-tracking to be reliable

  • finish the state machine
  • replace some fixed strings with the actual data (e.g. client information)
  • integrate the name server into the client.
  • general code cleanup

@wirew0rm wirew0rm had a problem deploying to configure coverage July 5, 2024 12:57 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 5, 2024 12:57 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 5, 2024 12:57 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 5, 2024 12:57 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 5, 2024 12:57 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 5, 2024 12:57 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 8, 2024 21:04 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 8, 2024 21:04 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 8, 2024 21:04 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 8, 2024 21:04 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 8, 2024 21:04 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 8, 2024 21:04 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 9, 2024 06:57 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 9, 2024 06:57 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 9, 2024 06:57 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 9, 2024 06:57 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 9, 2024 06:57 — with GitHub Actions Failure
@wirew0rm wirew0rm had a problem deploying to configure coverage July 9, 2024 06:57 — with GitHub Actions Failure
@wirew0rm wirew0rm temporarily deployed to configure coverage January 15, 2025 13:36 — with GitHub Actions Inactive
@wirew0rm wirew0rm temporarily deployed to configure coverage January 15, 2025 13:36 — with GitHub Actions Inactive
@wirew0rm wirew0rm temporarily deployed to configure coverage January 15, 2025 13:36 — with GitHub Actions Inactive
@wirew0rm wirew0rm temporarily deployed to configure coverage January 15, 2025 13:36 — with GitHub Actions Inactive
@wirew0rm wirew0rm temporarily deployed to configure coverage January 15, 2025 13:36 — with GitHub Actions Inactive
@wirew0rm wirew0rm temporarily deployed to configure coverage January 15, 2025 13:36 — with GitHub Actions Inactive
@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
13.8% Coverage on New Code (required ≥ 80%)
10.8% Duplication on New Code (required ≤ 3%)
C Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

wirew0rm and others added 7 commits February 20, 2026 19:26
Signed-off-by: Alexander Krimm <A.Krimm@gsi.de>
 - Enable support for std::map and nesting
   Support for nested Datastructures was not implemented correctly before
   because only serialise + deserialise was checked but not the actual
   serialised output.
 - Add parsing rda3 data into a map
 - Allows fieldnames with starting with a numeric value by prefixing them with ' x_'.
 - fix handling of empty nested objects/maps

Signed-off-by: Alexander Krimm <A.Krimm@gsi.de>
Signed-off-by: Alexander Krimm <A.Krimm@gsi.de>
Serialisation only, as deserialisation is not possible due to the
IoSerialiser expecting to be able to deduce the type of the field at
compile time via `IoSerialiser<Proto, T>::getTypeId()`.

Signed-off-by: Alexander Krimm <A.Krimm@gsi.de>
Fixes two compatibility issues in the cmw light serialisation format.
- The branches for skipping bool arrays that don't exist in the target
  object were missing => added additional branches.
- CMW always serialises n_dims, [nx, ...], n_elem, [x1, ...] even for 1D
  arrays. Before only the number of elements was (de)serialised leading
  to incompatible serialised data and crashes on deserialisation.

Also adds a testcase which exercises these field types and apply fixes.

Signed-off-by: Alexander Krimm <A.Krimm@gsi.de>
Allows (de)serialising lists of reflectable objects.
Due to the current structure of the code, some error reporting features
are not supported for nested objects.

Also fixes an off by one error which consumes one additional byte from
the buffer after the object.

Signed-off-by: Alexander Krimm <A.Krimm@gsi.de>
Also implements a lightweight rda3 directory client

Signed-off-by: Alexander Krimm <A.Krimm@gsi.de>
@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
0.0% Coverage on New Code (required ≥ 80%)
8.6% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant