Retrolefty & TeslaFan, I have clarified my documentation (www.swiftEnterprises.biz
) to reflect that the hardware (pcb) and software IS open source. Several of the parts within, namely the radio receiver, transmitter, and network controller chip, purchased from elsewhere, are proprietary to their manufacturers. This is clarified on the website.
And TeslaFan, you are correct, all packets contain the "name" as well as "value" and a few more bytes of overhead for error correction etc. "Steve's favorite Number" is 24 bytes, its value 4 more, and with overhead let's just round way up and call it 50 bytes total. We are running 5000 bps or 500 bytes/sec. So to answer your question, a latency therefore of about 1/10 second. Keep datum names short and you may see 1/20 second.
The total database is not stored on any one RD-11, but cached at each. Once a datum is read by your Arduino host, the attached RD-11 could delete it until requested again. It uses an LRU cache replacement scheme. At least one copy of any datum will always exist. The space used by each datum is the same as the transmission packet, about 50 bytes, or about 20 datums per 1K of memory. I currently have just over 1K of free memory, so to answer the second question, about 20 datums, depending on size, multiplied by the number of systems.
I am already experimenting with using a system which has far more memory (about 8x), which may be available for Version 2.
You are correct that this kind of network organization is not optimally efficient. I have traded that off for simplicity of operation. I am giving priority to two basic design goals:
(1) it must be extremely simple to unsophisticated programmers. For example, I would venture a guess that 90% of the people using Arduinos cannot define "blocking call". Thus I have taken great pains to keep it to just "read" and "write".
(2) we are focusing on simple and small systems.
Also, I have clarified the "Future Features" page to contain a section which explains about blocking. And for the most part, you are wrong, it will not block. It does use a "timeOut" to allow the program to use "old" values for a fixed time, like 1/5 second (default), or longer, and re-transmits BEFORE that time is up so that we should not have to block except the first access, or when there is heavy network traffic.
Also in version 2, I have a number of efficiency improvements envisioned as well. One very specific one is to assign a number to the last 128 "names" transmitted, and in future transmit only that single byte instead of the entire name. You can "work around" this now by using short names on high-trafficed items! We also have a "no error correction" mode which still includes a parity bit on all bytes but eliminates anything more than that and which shortens the packets still farther. A "name" reduced to one byte and a value of 2 bytes, with no other overhead but a packet start, is now 4 bytes instead of 50 and has a 1/125 second latency on our 500 byte/sec radio.
I can envision a huge number of applications for the RD-11 with just 2 or 3 systems, such as where a sensor or two is needed far from the main device. And I can support a dozen or two systems easily. I think that covers a huge need among Arduino experimenters. If you need to transmit gigabytes of data among hundreds of systems, look elsewhere.
Hope that all helps,