Skip to content

Conversation

@smarsching
Copy link
Contributor

This PR adds support for writing values of types Long and long[] to the EPICS Jackie PV support (core-pv-jackie). Support for these data types is needed because at least some widgets (e.g. Text Entry) use them.

Closes #3603.

Checklist

  • Testing:

    • The feature has automated tests
    • Tests were run
  • Documentation:

    • The feature is documented
    • The documentation is up to date
    • Release notes:
      • Added an entry if the change is breaking or significant
      • Added an entry when adding a new feature

@eddybl
Copy link

eddybl commented Nov 3, 2025

as all of these changes only affect the Jackie support and a review might be difficult how can we proceed with this PR? "testing" it might be difficult for others, but do you want to review the code quality or what is actually done?

We decided to implement a default behaviour which is slightly different to how the JCA case for the same issue of the Long to Integer conversion:

  • JCA: writing 9,999,999,999 to a longout results in the value -2,147,482,648 being written
  • Default behaviour for Jackie with the above fix: writing too large values just caps at the maximum, so 9,999,999,999 will end up as 2,147,482,647
    • the behaviour can be configured via the settings to also mimic JCA among others ( via the core/pv-jackie/src/main/resources/pv_jackie_preferences.properties ):
# How to process write operations specifying a long value that is greater than
# 2147483647 or less than -2147483648. Possible settings are:
#
# - COERCE
# - COERCE_AND_WARN
# - CONVERT
# - CONVERT_AND_WARN
# - FAIL
# - TRUNCATE
# - TRUNCATE_AND_WARN
long_conversion_mode=COERCE_AND_WARN

For us obviously the fix is more important, so we have to evaluate how to proceed here. Of course, we would prefer a merge into the mainline (so we can built our version based on that until the next version release). If this would be could be merged over the next 1-2 weeks we would wait for that.

If that is not realistic we would implement a local patched version for our use case

@georgweiss
Copy link
Collaborator

@eddybl, isn't Jackie just an alternative to ca? If so I should be able to run tests with a soft IOC, right?

@eddybl
Copy link

eddybl commented Nov 3, 2025

Alternative zu JCA, not an alternative zu CA. It is an alternative implementation of the CA protocol:

EPICS Jackie is a pure Java implementation of the Channel Access protocol used by EPICS. It is fully interoperable with other implementations of the Channel Access protocol and runs Java 8. Versions 1.x and 2.x of the library are also compatible with Java 6 and 7.

( https://oss.aquenos.com/epics/jackie/ )

@georgweiss
Copy link
Collaborator

Of course, alternative to JCA, that's what I meant.

@eddybl
Copy link

eddybl commented Nov 3, 2025

yes you should be able to run any tests with soft IOC

Copy link
Collaborator

@georgweiss georgweiss left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Works as described

@georgweiss georgweiss merged commit 48b8c9c into ControlSystemStudio:master Nov 3, 2025
2 checks passed
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.

Writing to a DBR_LONG PV from a Text Entry widget results in an exception when using the EPICS Jackie backend

3 participants