DiamondLightSource/pythonSoftIOC

Support new EPICS 7 records

AlexanderWells-diamond opened this issue · 3 comments

As PythonSoftIOC already has support for EPICS 7, through epicscorelibs, it seems sensible to add support for the new record types available.

The full list is available here: https://epics.anl.gov/base/R7-0/7-docs/RecordReference.html
The most useful ones on first glance appear to be:

There are many other record types available (as well as many from previous EPICS versions that we never supported), so some investigation is required to confirm the exact list of useful records to add.

Regarding other record types, I'd suggest only providing driver support for record types which map directly to a primitive type. I suspect this only includes int64 and long strings.

Looking at lsi and lso I'm disappointed to see two points not properly covered:

  • Unicode support appears to be ruled out by the phrase "The ... record is used to [support] an arbitrary ASCII string." I think we're going to have to continue with our extension to UTF-8 for these new record types.
  • Null termination does not appear to be discussed at all: are these strings null terminated? I guess they must be as there is no separate length field.

If we do support lsi/lso I suggest calling them lsIn, lsOut and make them behave just like stringIn/stringOut.

After some discussion it was decided we should only implement int64in/out, as the lsi and lso records offer no advantages ontop of our already existing longStringIn/Out record types. Other new record types do not directly map to Python types.