I'm looking at how I would distribute a remote firmware update to a micro where the only communication medium is a slow and unreliable wireless data stream.
The Xbee has the option of a 100 byte packetized payload, or a 'transparent' byte by byte mode which emulates a physical wire. I believe in transparent mode
it periodically checks its Tx buffer, packetizes whatever is there and sends it out as quickly as possible. The over the air protocol has a retry mechanism but there is no guarantee that every packet will be delivered.
In theory an ancient serial protocol such as zmodem could be used in transparent mode providing that the sending code can cope with the long delays when an Xbee encounters a transmission/ACK error and goes into its pause-retry loop before finally succeeding or failing.
Using the 100 byte packet mode would mean having to roll my own system that keeps track of which data blocks have been successfully transmitted and what still needs to be sent, plus the housekeeping of starting/ending/aborting transfers.