Figure 10-1 shows the functionality of the toolkit, which was developed in the C programming language in order to allow it to be ported to a wide range of operating systems and platforms. The C language is supported in many mobile devices and network servers. The toolkit provides an easy-to-use API to generate and parse SyncML messages without the need to know the SyncML DTD in depth.
Figure 10-1. Functionality of the Reference Implementation
The toolkit does not contain the logic required to handle the Synchronization Protocol and the Device Management Protocol [SDP02].
These are things that an application designer still needs to know and implement. There is a fine line, which the SyncML Initiative does not want to cross, between speeding up the development of SyncML devices by providing a reference implementation and getting in competition with synchronization vendors. Therefore SyncML provides the Reference Implementation Toolkit, which speeds up the development of SyncML Agents, but does not get into the synchronization business itself.
In addition to the reference toolkit, SyncML also provides an open-source sample implementation of an HTTP client and an OBEX client and server. The reference toolkit and the sample transport implementations are also used by the SyncML Conformance Test Suite (SCTS), which is described in Chapter 13.
The following features characterize the toolkit:
It contains a small and optimized linear parser for the SyncML DTD, and the MetaInf [SMI02] and the DevInf DTDs [SDI02].
It can encode and decode SyncML messages in XML and WBXML [WBXML01].
Pluggable components allow for flexible exchange of implementations of specific toolkit components, such as the Encoder/Decoder or the Memory Management.
Callback functions hand over parsed information to the application.
Currently the toolkit code is developed, tested, and released for the following environments:
Windows® 98, NT, and 2000
Linux™ (RedHat Distribution)
Palm OS® V3.5
Symbian OS® release 6.0