Comment 13 for bug 907761

Revision history for this message
Andrew Johnson (anj) wrote :

Hi Dirk,

Thanks for looking at this, I merged it yesterday.

Note that long strings != dynamic arrays.

The original aim for dynamic arrays was so CA monitors of large waveforms would only send NORD instead of NELM elements — the current tech-talk conversations about pyepics are discussing exactly this, where they have a large waveform that stores images which can vary in size and they only want CA to distribute the much smaller Region-Of-Interest.

The long strings implementation doesn't currently call strlen() on the source field, although it could probably be made to do so and update the request length appropriately. That's trivial for SPC_ATTRIBUTE and DBF_*LINK fields (done here but not committed), but it's a harder problem for DBF_STRING fields since the routines in dbConvert.c can't update the request length. I'll probably move this work into the 3.15 tree — it's really a new feature that might need more extensive changes to implement fully, and there have already been other changes in this area.

BTW you have to use camonitor or "caget -c" to use dynamic arrays, they only work when the data is provided through a CA callback which caget only uses when given the -c flag.

- Andrew