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/

Reply via email to