An better way than using variant clusters or flatte/unflatten from string is to separate the way an interface should be handled from the function this interface has. e.g. You could have several statemachines that keep their own information and have a common interface to the user program.
INIT read the settings from somewhere (inifile for that interface)
DOIT does the thing needed (read data)
EXIT updates the settings and makes way for the other interfaces.
It is a bit of work to keep the information in the userprogram as little as possible but makes it also easy to extend your software with yet another interface.
The only info needed from "above" seems to me
the channels, the range and speed in which they need to be updated. All other info seems device dependent !
T
he most important feature you add, when thinking about your problem is clarity in programming while variant clusters and flatten/unflatten from string adds complexity.
In my opinion these conversion functions are the last option, when every other possibility is tried.
greetings from the Netherlands