A little more progress

I managed to get the Modbus module actually working and talking to the serial devices that I have as well as to a Lantronix device server. I had apparently broken the TCP socket stuff during a rewrite of the Modbus code before OpenDAX even existed. This also caused some bugs in the tagbase handling logic to show up and I dealt with those. There is probably still some uglyness lurking in there that I need to test for and eliminate.

This code is still very immature and I've begun to notice that there are some spots that might cause eternal system call blocks or undetected failures. I put my little /* TODO: comments in some of those places but I really should clean it all up before it gets out of hand.

I had talked about starting work on an interpreter for IL but I think the timing may be premature. I need to get the module and tagbase handling code cleaned up and as complete as I can. This will make it easier for others to start on some modules, so that perhaps this project can start heading somewhere. I need to seriously consider dealing with user defined data types too.

I've also kicked around the idea of allowing modules to register to know when certain tags change. This would allow modules to sleep until a change in the tagbase occurs. It is starting to become apparent that there are quite a few module types that will simply need to know that some tags have changed and constantly polling for those changes is probably less efficient than the added overhead of checking the tags and sending messages. These are things that I need to think about some more. This may also bring me back to a shared memory idea on the tagbase instead of a pure messaging structure. Messaging scales to network transparency more easily than shared memory does. So this is to be avoided if I can help it but I want to keep the performance up on this thing too.

Stay tuned.