I've been intensively working during this week, developing a simple configuration tool for my wireless network. It happened that I found I was wasting some of my time in basic operations like changing addresses, network id's and frequency channels. For every intervention I had to manually send SWAP commands from minicom, a bit hard when you're doing these changes a dozen of times per day. Finally, this management tool will simplify my life, at least along my developments.
Figure 1: SWAP Device Management Tool
This tool has been entirely developed using Java ME under Netbeans. This means that it should work on either Linux, Mac or Windows. I admit that this application may have been developed using other cross-platform languages like C++, Python or Ruby. It just happens that Java provides me a good compromise between fast-delivery and good integration with third-party UML tools. On the other hand, this development has been the perfect excuse for creating two Java libraries for the panStamp project:
jcc11xx is a java library for communicating with a panStamp connected to a computer USB port and running the modem application. This library provides the necessary classes and methods to transmit and receive wireless CC11XX packets in an asynchronous way.
jswap is a Java library, sitting on top of jcc11xx, that implements the SWAP protocol layer and some other smart features like a basic XML parser and a device/endpoint management platform. This library may seem a little overkilled for the basic management tool but I had other projects in mind. In particular, I've been always thinking in this library as a way of providing wireless SWAP connectivity for Home Automation, HVAC and Home Theater software. Once jswap get to a complete stage, I'll surely start a new project consisting in a new generation of opnodes for wireless networks.
Figure 2: Java SWAP stack
Back to the management tool, there is still some work to do, mainly in how custom configurations are stored in the computer and also in the way device product codes are translated into something readable and understandable by the end user. By the way, developing such automatic identification algorithm will bring me to other needs, like the one of having to identify device resources (endpoints) and inherent functionalities. All this just after receiving an eight-byte product code (standard endpoint 0) wirelessly.