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:
- 64bit Integer Input Record (int64in)
- 64bit Integer Output Record (int64out)
- Long String Input Record (lsi)
- Long String Output Record (lso)
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.