Portability Issues
There are two important portability issues that you need to take into account when moving data back and forth from the handheld to the desktop. They are byte ordering and structure packing.
Byte Ordering
The Palm OS runs on a Motorola platform, which stores bytes differently from Windows running on an Intel platform. This crucial difference can royally mess up data transfers if you are not careful.
On the handheld, the 16-bit number 0x0102 is stored with the high byte, 0x01, first, and the low byte, 0x02, second. In the conduit on Windows, the same number is stored with the low byte, 0x02, first, and the high byte, 0x01, second. As a result, any two-byte values stored in your records or in your AppInfo block must be swapped when transferred between the two systems. (If you fail to swap, a simple request for 3 boxes of toys on the handheld would be processed on the desktop as a request for 768 boxes!) A similar problem occurs with four-byte values; they are also stored in switched forms (see Table 12.2).
Table 12-2. Comparison of Byte Orderings for the Four-Byte Value 0x01020304
|
Palm Handheld Byte Order |
Wintel Byte Order |
|---|---|
0x01 |
0x04 |
0x02 |
0x03 |
0x03 |
0x02 |
0x04 |
0x01 |
Note
Strings are not affected by this byte ordering. On both platforms, the string “abc” is stored in the order “a”, “b”, “c”, “\0”.
The HotSync Manager provides routines for converting two- and four-byte values from the handheld to host byte ordering:
Word SyncHHtoHostWord(Word value) DWord SyncHHToHostDWord(DWord ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access