I've been looking at ways in which the RailDriver device might be supported and it seems to me that an expansion of the ats plugin proxy might be the least disruptive.
I have this idea of developing a raildriver dll which is called by the ats proxy plugin. The changes to the proxy code would be relatively small, basically adding a call to initialise the new dll and hence the raildriver and then calling a "control position" function everytime elapse is called. This function would return the required states of the various controls on the raildriver hardware.
Where this scheme falls down is the limited scope for feeding the required control states back into the core program. The ATS_HANDLES structure (returned by Elapse) provides a way to feed back desired throttle, brake and reverser control states to the core program which is a start but it doesn't support any other controls such as the horn or the various ats controls.
Therefore I was wondering if there was any possibility of providing an expanded ATS_HANDLES structure containing additional controls for use between the core program and the ats proxy. This would obviously require changes in the core code to act upon the additional control requests. This wouldn't affect existing plugins as they would continue to be called with the existing structure but it would start to open up the proxy as the starting point of a more general purpose control interface.
Now I could do this myself but everytime there was a new release it would have to be done again. I don't see this as a problem for the proxy as I expect that to be relatively stable and thus less likely to change whereas the core program is going to be evolving all the time.
Perhaps you could give this idea some consideration.
