Perhaps I needed a break or perhaps because I heard BSR E1.31 has been ratified? Either way, I started work on a module for sending/receiving “Streaming DMX” or “SACN”. I havedone this once before so the port should be easy. I plan on releasing this after I 1) get it working and 2) modify it to meet the ratified version. Since I’m also the author of Wireshark dissector for this protocol I guess I can do both at the same time.
After a bit of clean up I finally got the NetBurner test application code posted. I think users may have a problem the the “linked” acnsrc folder. They may need to delete and recreate this. If so, I will document the process. I put this in a new ”build-netburner-ide” subdirectory incase someone wanted to build their netburner application via a command line which should be possible.
Philip reorganized the structure of the repository today so we could add a few test applications. The test application for each port do the same thing. I have test applications for linux, cygwin and an IDE complied version for MSVC Express. I am working on a NetBurner port.
The test application does not do much yet. First it uses SLP to find a Directory Agent (see openSLP if you need one). Once a DA is found you can register a component with DA and discover other components with the same DCID. If you get that far, you can select and create an SDT session with any of the other components found.
Philip and I are working a new directory structure for the repository. This will allow us to post some test applications. It looks like it will look something like this:
trunk/ # change to whatever name you want
openacnsrc/ # the current tree
builddir.mk # maybe rename "openacn.mk"?
common/
dmp/
include/
platform/
rlp/
sdt/
slp/
build-xxx-xxx # moved up a level from current
build-yyy-yyy
openacndoc # the optional documentation tree
testappsrc # your test apps
other-submodule # Not part of openacn trunk
At at mile post. Well sort of. I worked around the CYGWIN issue and now have ports to XP, cygwin, Netburner and Ubuntu (Linux). I can get instance of each running. They can register them themselves, find each other and create and maintain an SDT session with each to other! All code is posed in the repository.
I think I can use the CONFIG_RLP_SINGLE_CLIENT define to remove the need for destination address. This will allow me to continue to test on cygwin. At the moment, SDT is the only client so this should not be a problem. At some point, I plan on adding a E1.31 (streaming ACN) client. Without the destination address, we will not be able to have both at the same time.
Just because it is easier for me, I had been porting to cygwin on my XP box before a final port to Linux. The two seem to weed out any odd compiler warnings (and sometime found new ones). However, I have discovered that the network stack provided by cygwin does not support Winsock2 calls (at this time). Winsock2 is need to get the destination address of an incoming UDP multi-cast packet. This is used in the RLP layer. So until cygwin is fixed, my port to it will come to a stop
openACN is becoming more stable. My current ports are 1) Windows XP 2) Netburner and 3) Ubuntu. I am working on an example application. The application looks for similar devices and automatically joins/connects/subscribes itself to them. Then when a button (or virtual button) is press, on one instance, an indicator (or virtual indicator) will light up.
So I have been working up the stack starting from SLP to achieve this simple design. Occasionally along the way stopping and making improvements. I have been working on making thing go cleanly when devices become available or go away.
Additionally I have been playing with the threading model. In the past, I had been coding on a non-preemptive OS. Now having ported to Windows and Linux things needed to change a bit.
So far, I have worked thru the SLP and Discovery modules. RLP is stable and I’m working on improving the SDT layer