Found it in palmos.com, thought maybe it will be interesting to a few of you.
Palm OS 5.2 is mainly a bug fix release. In addition, it contains a small set of new features and modifications, most notably a new handwriting recognition engine called Graffiti 2. The Graffiti 2 engine is based on the well-known Jot product from Communications Intelligence Corporation (CIC). Furthermore, as part of this release to licensees, we have defined a platform collapsible input area API for all licensees to use.
Alongside this release is a minor update to the 68K OS, Palm OS 4.1.2. Palm OS 4.1.2 is Palm OS 4.1 with the addition of the Graffiti 2 handwriting recognition engine.
Neither Palm OS 5.2 nor 4.1.2 development require a new SDK. As always, we encourage developers to use the most recent SDK available from the SDK download site. For testing purposes, a new version of the Palm OS 5 Simulator with Palm OS 5.2 is available on the Simulator web page, and new Palm OS 4.1.2 ROM images for the Palm OS Emulator are available from the PalmSource developer program. Use these tools to verify that neither the fixed bugs in Palm OS 5.2 nor the introduction of the Graffiti 2 engine cause any incompatibilities with your application. In regards to the Graffiti 2 engine, there are a few cases described below that you should watch out for.
Finally, as always, we at PalmSource, Inc. cannot comment on when these new versions will appear on new devices or whether upgrades to existing devices will be available. Please visit our licensee's developer and/or product pages for information pertaining to their devices.
For more information on Palm OS 5 see the Palm OS 5 main site.
Bug Fixes
The following list summarizes the bugs that were fixed in Palm OS 5.2 that may affect your application:
Formatting some 128MB and larger SD cards may freeze the device
Memory leak occurs if sound played asynchronously does not terminate before exit of application
Algorithm which computes the interval between two repeat events is incorrect
An emulated 68K "Exchange Library in Application" (ELIA) will not get called
Attempting to use a 68K FEPs on Palm OS 5.0/Palm OS 5.1 results in a Fatal Alert
Unable to check multiple SMS using a TCP connection with VirtualPhone test application
Netlib: NetLibSocketAccept returns garbage in address buffer.
Netlib: NetLibReceivePB with iovlen > 1 causes Fatal Exception
Netlib: The pointer of servNameP and protoNameP returned by NetLibGetServByName is wrong
The array of pointer aliasList and addressList in NetHostInfoBufType and NetLibGetHostByName is not terminated by NULL pointer.
Netlib: The value of port in NetSocketAddrINType returned by NetLibReceive, NetLibReceivePB, NetLibSocketAccept, NetLibSocketAddr is wrong
The value of ifInstance and ifCreator in NetSocketAddrRawType is wrong
The value of family in NetSocketAddrINType returned by NetLibReceivePB is endian swapped
The direction argument of NetLibSocketShutdown() is ignored and always handled as if the value is netSocketDirInput
NetLibTracePrintF with argments doesn't work
A zero-length packet cannot be received in UDP
NetLibReceivePB for UDP socket ignores iov array > 1
If using NetLibSocketConnect or NetLibSend for UDP without calling NetLibSocketBind in advance, the outgoing datagram has source port zero
TCP socket cannot send any data after receiving FIN from peer
NetLibSocketBind doesn't fail if the port is already used and busy
NetLibSend with zero length data fails with timeout error
Once NetIFAttach fails by specifying non-existing creator the system may crash with Fatal Exception.
If a background task is in the middle of GetHostByName and you attempt to shut down an interface (PPP or SLIP) from a foreground task (by turning off the device for example), the device crashes with a divide-by-zero exception in NetLib's udp_retransmit function
Noise is heard (for Unsampled Data) if a blank sound is inserted on one channel while the opposite channel has sound.
Crash in low-memory situations in the square-wave emulator
Values returned by SysBatteryInfo() function are wrong
Synchronizing to the memory card using VFSExportDatabaseToFile results in a PalmOS error message: "MemoryMgr.c Line:2571. Non-word aligned handle." on Palm OS 5.0/Palm OS 5.1
Calling SndPlaySmf () with the sndSmfCmdDuration SndSmfCmdEnum command value as the 2nd param returns a max UInt32 value (-1 as an Int32) instead of the actual MIDI sound duration in milliseconds.
LstSetListChoices fails if itemsText passed in is the same as the existing itemsText in the list
Transparent color cannot be set on version 2 bitmaps with16 bit color by calling BmpSetTransparentValue() and BmpGetTransparentValue() from 68K application
VCard data encoded by Base64 is decoded by vCard, 0x1b will not appear
MS-CHAP authentication over PPP fails ('normal' CHAP works)
When the Attention manager close its dialog, no update event was posted to update the form behind
Problem in TCP retransmission code cause unnecessary retransmission on slow link
If PPP environment allowed 8bit clean communication path, received packet is just passed from PPP to TCP/IP stack. But PPP data is non-aligned because the length of the PPP header can vary such as one octet. This causes Fatal Exception in TCP/IP stack.
TCP checksum error observed in packets sent from Palm OS 5.0.
NetLibSocketSend() returns 0 instead of netErrTimeout when it timed out.
If compressed bitmap size is greater than threshold, BmpCompress() returns an uncompressed bitmap but still sets the compression flag
Popup list closed when vchrAttnStateChanged is posted even if the attention manager is not opening a dialog. Example: such as with AlmEnableNotification(true) is called
a mistake in kCopyStructForDictParamsCmdBlk definition
DmOpenDatabaseInfo crashes the system when trying to obtain a LocalID
Every time a task is created and deleted (such as with sound playback) 8 bytes of memory is leaked.
SslDemo app fails to run on 32bit Roms
PACE crash calling AccFldGetLineInfo68K()
PACE does not properly copy over the selector field in the gadgetMisc structure
A fatal alert occurs when decoding specific vObjects
Fatal alert could occur when one shared library's install function calls SysLibLoad to load another shared library
Fatal error could occur when 68K callback (serial manager window handler, procedure alarm, attention manager, notification) is launched while native ARM application is being run. The fix in OS 5.2 does mean that the callback code can not "cache" things like form IDs to be used later.
Serial manager wakeup handler callback's pointer freed once active application exits
Only 1 procedure alarm among all applications can be set in the system at any one time.
68K Shift/Rotate instructions don't work correctly on PACE in certain cases
VFSFileRead communication fails if bytesToRead is bigger than file
Graffiti 2 Handwriting
Graffiti 2 is a new character recognition engine that replaces the Graffiti engine that had been used in the past. The engine is based on the popular JOT product from CIC that you may be familiar with. The primary difference between Graffiti and Graffiti 2 is the addition of more natural character recognition by allowing users to use multi-stroke characters in the input area.
In Graffiti 2, the first stroke of a multi-byte character might match the stroke for another character. In this case, the Graffiti 2 engine first enqueues the interim single-stroke character followed by a backspace and then finally the multi-stroke character. For example, The first stroke of a "k" character matches the stroke for the "l" character. When the user draws the first stroke of the "k," the Graffiti 2 engine processes that stroke and sends the "l" character to the key queue. When the user draws the second stroke of the "k," the Graffiti 2 engine sends a backspace to erase the "l" and then sends the "k" character. If your application has processed the "l" in the meantime, it has done so in error.
If your application processes characters as they are received, you should be aware that the following characters could be the interim first stroke characters of a multi-stroke character:
The letter l
The space character
The single quote
The minus sign
In most cases applications do not process character keyDownEvents one by one and will need to change very little if at all. The twomost common compatibility scenarios that we have come upon in third party testing are:
Applications that use the "l" character and multi-stroke characters as menu shortcuts or application-defined command characters
Applications with field autofill functionality
See the Graffiti 2 Compatibility Tips FAQ in the developer Knowledge Base for more detailed information about when you need to and how you can work around compatibility issue with Graffiti 2.
Other New Features and Modifications
1) Flag added for Internal Cellular Phone modules
Added the following line to SerialVdrv.h:
#define portCellularPort 0x00000400 // Set if the port is a direct connection to an internal cellular phone module
#define serDevCellularCapable 0x00000080 // Connects to a cellular phone module
to SerialMgr.h and modified SerialMgr.c to report the new flag.
2) Dropped automatic request for telephony RSSI value from phone in response to a Bluetooth PPP connection. This improves both interoperability with Bluetooth phones as well as performance when connected.
3) Increased netMaxNumSockets from 4 to 11.
4) Increased number of network packet buffers in the system.
5) Increase compatibility with SMS networks.
6) Added extended sound stream APIs that are built on top of the existing sound stream architecture. A developer can specify a format type when creating a stream and then feed uncompressed data into that stream, provided the device has the proper codec. Palm OS contains only the raw PCM codec; licensees can add others, such as MP3 or Vorbis.
Collapsible Input Area API
For Palm OS 5.2 we worked with our licensees to define a platform API for collapsible input areas, and licensees have agreed to conform to this API. Although we have yet to add support for a collapsible input area into the OS, this will match the API that we will use in the future. As a third party developer, this means that moving forward you will be able to target a single API, and at least the majority of your interactions with the input area will work on multiple devices and on future releases.
Because we have not yet officially implemented this feature as part of the OS, there is no reference implementation via a Palm OS Simulator or emulator ROM for developers to test against. As licensees release devices that do implement support for collapsible input areas we will work with them to make a Simulator and/or Emulator ROMs available to developers.