We have an application that is essentially a viewer for a large, read-only database.
New versions of both the application and the database will be coming out over time.
We want a user to be able to beam both to another person with minimal difficulty. The
current capabilities of the PalmOS Exchange Manager make the beaming possible, but
they don't permit the exercise of much intelligence in the choice of what gets beamed.
What we would like is a one-button operation that beams both the application, if
needed, and the current database to the recipient. "If needed" means "don't send the
application if the recipient already has it", or preferably, if he has a version
that's at least as up-to-date as sender's. It would also be nice if we could send the
database only if recipient doesn't already have it, or if he has a less up-to-date
version of it. All this can be determined manually by the user(s), but it's not very
convenient.
The problem the Exchange Manager has with such logic is ... well, mainly that it
wasn't designed for it. Exchange Manager beaming is very much a one-way operation --
the only thing the sending application gets to find out is whether there *is* a
recipient device, not even whether it has the application at which the transmitted
object is targetted. There is no provision for message exchanging and handshaking.
With some difficulty, I implemented some logic of this sort, wherein the application
could send a small dummy record containing nothing but a control code. The receiving
application could examine this code and respond to it (by relaunching itself, BTW --
it doesn't seem to work for an application to do an Exchange Manager within the same
execution where it was launched via sysAppLaunchCmdExgReceiveData). The sender would
sit in a loop waiting until another instance of itself had been launched and had
successfully received the return record, signalling this by inter-application
communication through the Feature Manager. This actually worked, after a fashion, but
was impractical because of the various unsupressable alerts the Exchange Manager
raised, which would be hopelessly confusing to the user. I couldn't even find a way
of sequencing the sending of two objects (the application and the database) without
intervention from the user.
The IR Library looked like a promising alternative, but it appears to lack one
essential capability that the Exchange Manager has: the ability to launch an
application in response to a received IR message.
It appears that the Exchange Library (on which the Exchange Manager is evidently
layered) might have what we need, but it is unfortunately not documented. There are
also four undocumented ("system-only") Exchange Manager functions that look promising:
ExgConnect, ExgGet, ExgInit, and ExgNotifyReceive.
For the moment, I am giving up on implementing the capabilities we want. But any
advice, or information from Palm about future plans, would be much appreciated.
Greg Lutz
NearSpace, Inc.
--
For information on using the Palm Developer Forums, or to unsubscribe, please see
http://www.palmos.com/dev/tech/support/forums/