After doing some research on both Linux and Empeg's IrDA capabilities, I would like to start a project to create a universal IrDA "daemon" for the Empeg. This would enable most IrDA compatible devices to transfer data to the Empeg, and then the Empeg could be set up to perform actions based upon the data transferred. The way that I am thinking about implementing this may be useful to recieving Bluetooth signals also.

Seeing the names suggested on this thread by wfaulk gave me the idea to name this server Empire, for EMPeg Infra REd.

Here is what I am suggesting: The server would listen for OBEX objects coming across the IrDA port via the IrOBEX protocol. OBEX is a standard way of encapsulating any kind of object, even a small string of text into a higher level protocol over IR. They make comparisons to HTTP all the time, but the important thing is that many comsumer products use IrOBEX as a IrDA protocol. Palm, WinCE, Linux, mobile phones, TheAmigo's pager, etc. all support OBEX as a method of communicating. This makes it ideal, especially since the OpenOBEX project for Linux supports recieving OBEX objects over Bluetooth as well as IR. This could possibly make the Empire server into a Bluetooth server as well (with some work and Bluetooth hardware).

I started out investigating IrCOMM as a solution to all of this, but reading through some of the mailing list posts for the linux-irda project, I learned that IrCOMM is kind of like the bastard child of the project, while IrOBEX is encouraged for use. I did write a small IrCOMM server for the Empeg, but as they were saying, it was unstable and would drop data occasionally.

We would have several types of objects that we would support, and these would be extensible. I see for the initial server having "control" objects that would map to the Empeg's control set that we send over the serial port. Examples are VolUp and VolDown. The OBEX header would indicate that these are control objects, then the data would be the command to send to the Serial port to make the Empeg respond. This will be my first goal when writing this server. Others would be "multi-controls" for having multiple commands per OBEX object for if you wanted to send "macros" to the Empeg. The server could possibly also handle remote file/record storage so you could store your PDA's calendar on the Empeg or beam your phone's address book.

TheAmigo already compiled up OpenOBEX for the Empeg and was able to transfer data from his pager to the Empeg, and he helped me get it cross-compiled myself. This package includes a program called obex_palm3 which will listen for a Palm beaming request, and recieve the file, copying it to the /tmp directory. This is a great place to start from, and I will most likely be wanting input along the way because I haven't created a daemon in Linux before. If anyone has suggestions about this project they will be gladly welcomed! Since this will probably interface quite a bit with other applications that I may not write, I would like to make this as much of a collaborative effort as possible when it comes to design. I plan to write this app anyway, but I may want input on "big picture how" along the way.

Possible scenarios with this project:

  • Back up your PDA's records to the Empeg, then display them on-screen with a display application
  • Bluetooth remote control with Palm/WinCE device/Zaurus
  • Backup your Phone's address book to the Empeg via bluetooth or IR

and the one I want to develop for:
  • Remote Empeg Playlist chooser for the Palm.
_________________________
Mark Cushman