I’m not a 100% sure if I understand the purpose of the dataPointInterface correctly. What I think it is:
It is an interface which is called whenever a value for an IO point is received. The value can be manipulated at this point before it is written to the IO point. So you could do data conversion stuff like converting from int to float or the other way around. And because you get the link id you could also do something like mapping value ranges to each other. For example if you have IO points io1 and io2 and io1 produces values in the range [0;100] and io2 expects values in the range [0;300] you could map it here like follows (super simplified pseudocode )
if (src == io1 and dest == io2) mapValues();
Am I right?