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.