13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************/
23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* module:          SyncML Command Builder                               */
33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*                                                                       */
43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* file:            mgrcmdbuilder.c                                      */
53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* target system:   all                                                  */
63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* target OS:       all                                                  */
73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*                                                                       */
83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Description:                                                          */
93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Core Module for assembling SyncML compliant documents                 */
103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************/
113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*
143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright Notice
153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright (c) Ericsson, IBM, Lotus, Matsushita Communication
163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Industrial Co., Ltd., Motorola, Nokia, Openwave Systems, Inc.,
173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Palm, Inc., Psion, Starfish Software, Symbian, Ltd. (2001).
183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * All Rights Reserved.
193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Implementation of all or part of any Specification may require
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * licenses under third party intellectual property rights,
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * including without limitation, patent rights (such a third party
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * may or may not be a Supporter). The Sponsors of the Specification
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * are not responsible and shall not be held responsible in any
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * manner for identifying or failing to identify any or all such
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * third party intellectual property rights.
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * THIS DOCUMENT AND THE INFORMATION CONTAINED HEREIN ARE PROVIDED
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * ON AN "AS IS" BASIS WITHOUT WARRANTY OF ANY KIND AND ERICSSON, IBM,
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * LOTUS, MATSUSHITA COMMUNICATION INDUSTRIAL CO. LTD, MOTOROLA,
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * NOKIA, PALM INC., PSION, STARFISH SOFTWARE AND ALL OTHER SYNCML
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * SPONSORS DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * SHALL ERICSSON, IBM, LOTUS, MATSUSHITA COMMUNICATION INDUSTRIAL CO.,
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * LTD, MOTOROLA, NOKIA, PALM INC., PSION, STARFISH SOFTWARE OR ANY
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * OTHER SYNCML SPONSOR BE LIABLE TO ANY PARTY FOR ANY LOSS OF
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PROFITS, LOSS OF BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * BUSINESS, OR FOR DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL,
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PUNITIVE OR CONSEQUENTIAL DAMAGES OF ANY KIND IN CONNECTION WITH
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * THIS DOCUMENT OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * The above notice and this paragraph must be included on all copies
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * of this document that are made.
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *  Definitions
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *************************************************************************/
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Include Headers */
583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <smldef.h>
593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xltenc.h"
603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xltdec.h"
613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "libmem.h"
623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "mgr.h"
633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Used external functions */
663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyextern Ret_t smlLockWriteBuffer(InstanceID_t id, MemPtr_t *pWritePosition, MemSize_t *freeSize);
673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyextern Ret_t smlUnlockWriteBuffer(InstanceID_t id, MemSize_t writtenBytes);
683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef __SML_LITE__  /* these API calls are NOT included in the Toolkit lite version */
703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  extern Ret_t addInfo(InstanceInfoPtr_t pInfo);
713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  extern InstanceInfoPtr_t findInfo(InstanceID_t id);
723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  extern Ret_t removeInfo(InstanceID_t id);
733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Prototypes of exported SyncML API functions */
763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlStartMessage(InstanceID_t id, SmlSyncHdrPtr_t pContent);
773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlStartMessageExt(InstanceID_t id, SmlSyncHdrPtr_t pContent, SmlVersion_t vers);
783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlEndMessage(InstanceID_t id, Boolean_t final);
793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlStartSync(InstanceID_t id, SmlSyncPtr_t pContent);
803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlEndSync(InstanceID_t id);
813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef ATOMIC_SEND  /* these API calls are NOT included in the Toolkit lite version */
833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  SML_API Ret_t smlStartAtomic(InstanceID_t id, SmlAtomicPtr_t pContent);
843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  SML_API Ret_t smlEndAtomic(InstanceID_t id);
853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef SEQUENCE_SEND
873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  SML_API Ret_t smlStartSequence(InstanceID_t id, SmlSequencePtr_t pContent);
883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  SML_API Ret_t smlEndSequence(InstanceID_t id);
893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef ADD_SEND
923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  SML_API Ret_t smlAddCmd(InstanceID_t id, SmlAddPtr_t pContent);
933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlAlertCmd(InstanceID_t id, SmlAlertPtr_t pContent);
953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlDeleteCmd(InstanceID_t id, SmlDeletePtr_t pContent);
963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef GET_SEND
973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  SML_API Ret_t smlGetCmd(InstanceID_t id, SmlGetPtr_t pContent);
983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlPutCmd(InstanceID_t id, SmlPutPtr_t pContent);
1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlMapCmd(InstanceID_t id, SmlMapPtr_t pContent);
1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlResultsCmd(InstanceID_t id, SmlResultsPtr_t pContent);
1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlStatusCmd(InstanceID_t id, SmlStatusPtr_t pContent);
1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlReplaceCmd(InstanceID_t id, SmlReplacePtr_t pContent);
1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef COPY_SEND  /* these API calls are NOT included in the Toolkit lite version */
1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  SML_API Ret_t smlCopyCmd(InstanceID_t id, SmlCopyPtr_t pContent);
1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef EXEC_SEND
1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  SML_API Ret_t smlExecCmd(InstanceID_t id, SmlExecPtr_t pContent);
1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef SEARCH_SEND
1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  SML_API Ret_t smlSearchCmd(InstanceID_t id, SmlSearchPtr_t pContent);
1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Private function prototypes */
1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambystatic Ret_t mgrCreateNextCommand(InstanceID_t id, SmlProtoElement_t cmdType, VoidPtr_t pContent);
1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyRet_t mgrResetWorkspace (InstanceID_t id);
1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************
1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *  Exported SyncML API functions
1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *************************************************************************/
1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlStartMessage
1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Start a SyncML Message
1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              SmlSyncHdrPtr_t
1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * NOTE:            (%%% luz 2003-08-06) this entry point is for compatibilty reasons only
1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  and works for SyncML 1.0 only
1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  please use smlStartMessageExt() instead in new projects.
1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlStartMessage(InstanceID_t id, SmlSyncHdrPtr_t pContent)
1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* just call smlStartMessageExt with vers set to SyncML 1.0 */
1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return smlStartMessageExt(id,pContent,SML_VERS_1_1);
1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlStartMessageExt
1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * (%%% added by luz 2003-08-06 to support SyncML versions other than
1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 1.0 with new vers parameter)
1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Start a SyncML Message
1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  SyncML version
1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              SmlSyncHdrPtr_t
1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlStartMessageExt(InstanceID_t id, SmlSyncHdrPtr_t pContent, SmlVersion_t vers)
1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* --- Definitions --- */
1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  InstanceInfoPtr_t   pInstanceInfo;               // pointer the the instance info structure for this id
1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  Ret_t               rc;
1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  MemPtr_t            pCurrentWritePosition;       // current Position from to which to write
1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  MemPtr_t            pBeginPosition;              // saves the first position which has been written
1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  MemSize_t           freeSize;                    // size of free memory for writing
1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #ifdef NOWSM
1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pInstanceInfo = (InstanceInfoPtr_t)id; // ID is the instance info pointer
1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #else
1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    /* --- Retrieve the corresponding instanceInfo structure --- */
1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #ifdef __SML_LITE__  /* Only ONE instance is supported in the Toolkit lite version */
1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      pInstanceInfo = mgrGetInstanceListAnchor();
1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #else
1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      pInstanceInfo = (InstanceInfoPtr_t) findInfo(id);
1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #endif
1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #endif
1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (pInstanceInfo==NULL) return SML_ERR_MGR_INVALID_INSTANCE_INFO;
1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* --- Get Write Access to the workspace --- */
1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  rc = smlLockWriteBuffer(id, &pCurrentWritePosition, &freeSize);
1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (rc!=SML_ERR_OK) {
1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // abort, unlock the buffer again without changing it's current position
1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    smlUnlockWriteBuffer(id, (MemSize_t)0);
2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return rc;
2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #ifdef NOWSM
2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  // remember where outgoing message starts in buffer
2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  smlSetOutgoingBegin(id);
2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #endif
2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* Remember the position we have started writing */
2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  pBeginPosition=pCurrentWritePosition;
2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* --- Call the encoder module --- */
2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /*     (Saves the returned encoder state to the corresponding instanceInfo structure */
2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  rc = xltEncInit(pInstanceInfo->instanceOptions->encoding, pContent,
2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                  pCurrentWritePosition+freeSize, &pCurrentWritePosition,
2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                  (XltEncoderPtr_t *)&(pInstanceInfo->encoderState),
2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                  vers);
2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (rc!=SML_ERR_OK) {
2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // abort, unlock the buffer again without changing it's current position
2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    smlUnlockWriteBuffer(id, (MemSize_t)0);
2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  	// Reset the encoder module (free the encoding object)
2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	  xltEncReset(pInstanceInfo->encoderState);
2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // this encoding job is over! reset instanceInfo pointer
2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pInstanceInfo->encoderState=NULL;
2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return rc;
2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* --- End Write Access to the workspace --- */
2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  rc = smlUnlockWriteBuffer(id, (MemSize_t)pCurrentWritePosition-(MemSize_t)pBeginPosition);
2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return rc;
2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
2353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlEndMessage
2363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * End a SyncML Message
2383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
2403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
2413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              Boolean_t
2433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Final Flag indicates last message within a package
2443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
2463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
2473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
2483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlEndMessage(InstanceID_t id, Boolean_t final)
2493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* --- Definitions --- */
2523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  InstanceInfoPtr_t   pInstanceInfo;               // pointer the the instance info structure for this id
2533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  Ret_t               rc;
2543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  MemPtr_t            pCurrentWritePosition;       // current Position from to which to write
2553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  MemPtr_t            pBeginPosition;              // saves the first position which has been written
2563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  MemSize_t           freeSize;                    // size of free memory for writing
2573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #ifdef NOWSM
2603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pInstanceInfo = (InstanceInfoPtr_t)id; // ID is the instance info pointer
2613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #else
2623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    /* --- Retrieve the corresponding instanceInfo structure --- */
2633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #ifdef __SML_LITE__  /* Only ONE instance is supported in the Toolkit lite version */
2643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      pInstanceInfo = mgrGetInstanceListAnchor();
2653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #else
2663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      pInstanceInfo = (InstanceInfoPtr_t) findInfo(id);
2673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #endif
2683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #endif
2693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (pInstanceInfo==NULL) return SML_ERR_MGR_INVALID_INSTANCE_INFO;
2713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  // %%% luz 2003-08-19: added NULL check as previously failed encoding will delete encoder
2723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (pInstanceInfo->encoderState==NULL) return SML_ERR_MGR_INVALID_INSTANCE_INFO;
2733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* --- Get Write Access to the workspace --- */
2763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  rc = smlLockWriteBuffer(id, &pCurrentWritePosition, &freeSize);
2773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (rc!=SML_ERR_OK) {
2793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // abort, unlock the buffer again without changing it's current position
2803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    smlUnlockWriteBuffer(id, (MemSize_t)0);
2813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return rc;
2823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* Remember the position we have started writing */
2863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  pBeginPosition=pCurrentWritePosition;
2873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* -- set Final Flag --*/
2893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  ((XltEncoderPtr_t)(pInstanceInfo->encoderState))->final = final;
2903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* --- Call the encoder module --- */
2923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  rc = xltEncTerminate(pInstanceInfo->encoderState, pCurrentWritePosition+freeSize,&pCurrentWritePosition);
2933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (rc!=SML_ERR_OK) {
2953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // abort, unlock the buffer again without changing it's current position
2963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    smlUnlockWriteBuffer(id, (MemSize_t)0);
2973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // this encoding job is over! reset instanceInfo pointer
2983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pInstanceInfo->encoderState=NULL;
2993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return rc;
3013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
3023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  // this encoding job is over! reset instanceInfo pointer
3043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  // (the decoding object itself has been freed by the decoder)
3053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  pInstanceInfo->encoderState=NULL;
3063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* --- End Write Access to the workspace --- */
3083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  rc = smlUnlockWriteBuffer(id, (MemSize_t)pCurrentWritePosition-(MemSize_t)pBeginPosition);
3093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return rc;
3123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
3133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
3193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlStartSync
3203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
3213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Start synchronizing
3223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
3233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
3243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
3253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
3263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              SyncPtr_t
3273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
3283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
3293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
3303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
3313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
3323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlStartSync(InstanceID_t id, SmlSyncPtr_t pContent)
3333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
3343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_SYNC_START, pContent);
3353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
3363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
3403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlEndSync
3413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
3423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * End synchronizing
3433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
3443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
3453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
3463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
3473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
3483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
3493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlEndSync(InstanceID_t id)
3503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
3513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_SYNC_END, NULL);
3523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
3533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef ATOMIC_SEND  /* these API calls are NOT included in the Toolkit lite version */
3563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
3583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlStartAtomic
3593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
3603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Start an atomic sequence
3613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
3623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
3633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
3643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
3653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              SmlAtomicPtr_t
3663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
3673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
3683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
3693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
3703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
3713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlStartAtomic(InstanceID_t id, SmlAtomicPtr_t pContent)
3723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
3733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_ATOMIC_START, pContent);
3743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
3753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
3783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlEndAtomic
3793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
3803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * End an atomic sequence
3813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
3823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
3833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
3843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
3853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
3863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
3873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
3883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlEndAtomic(InstanceID_t id)
3893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
3903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_ATOMIC_END, NULL);
3913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
3923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
3943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef SEQUENCE_SEND
3963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
3983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlStartSequence
3993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Start a sequence
4013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
4033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
4043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              SequencePtr_t
4063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
4073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
4093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
4103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
4113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlStartSequence(InstanceID_t id, SmlSequencePtr_t pContent)
4123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
4133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_SEQUENCE_START, pContent);
4143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
4153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
4193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlEndSequence
4203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * End a sequence
4223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
4243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
4253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
4273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
4283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
4293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlEndSequence(InstanceID_t id)
4303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
4313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_SEQUENCE_END, NULL);
4323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
4333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
4353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef ADD_SEND
4383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
4393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlAddCmd
4403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Create a Add Command
4423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
4443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
4453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              SmlAddPtr_t
4473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
4483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
4503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
4513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
4523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlAddCmd(InstanceID_t id, SmlAddPtr_t pContent)
4533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
4543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_ADD, pContent);
4553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
4563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
4573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
4603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlAlertCmd
4613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Create a Alert Command
4633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
4653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
4663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              SmlAlertPtr_t
4683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
4693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
4713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
4723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
4733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlAlertCmd(InstanceID_t id, SmlAlertPtr_t pContent)
4743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
4753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   return mgrCreateNextCommand(id, SML_PE_ALERT, pContent);
4763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
4773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
4823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlDeleteCmd
4833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Create a Start Message Command
4853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
4873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
4883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              DeletePtr_t
4903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
4913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
4923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
4933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
4943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
4953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlDeleteCmd(InstanceID_t id, SmlDeletePtr_t pContent)
4963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
4973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_DELETE, pContent);
4983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
4993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef GET_SEND
5033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
5063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlGetCmd
5073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Create a Get Command
5093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
5113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
5123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              GetPtr_t
5143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
5153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
5173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
5183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
5193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlGetCmd(InstanceID_t id, SmlGetPtr_t pContent)
5203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
5213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_GET, pContent);
5223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
5233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
5253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
5283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlPutCmd
5293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Create a Put Command
5313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
5333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
5343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              PutPtr_t
5363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
5373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
5393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
5403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
5413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlPutCmd(InstanceID_t id, SmlPutPtr_t pContent)
5423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
5433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_PUT, pContent);
5443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
5453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
5493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlMapCmd
5503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Create a Map Command
5523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
5543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
5553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              MapPtr_t
5573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
5583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
5603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
5613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
5623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlMapCmd(InstanceID_t id, SmlMapPtr_t pContent)
5633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
5643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_MAP, pContent);
5653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
5663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
5703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlResultsCmd
5713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Create a Results  Command
5733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
5753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
5763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              ResultsPtr_t
5783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
5793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
5813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
5823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
5833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlResultsCmd(InstanceID_t id, SmlResultsPtr_t pContent)
5843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
5853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_RESULTS, pContent);
5863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
5873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
5933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlStatusCmd
5943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Create a Status Command
5963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
5973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
5983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
5993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              StatusPtr_t
6013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
6023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
6043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
6053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
6063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlStatusCmd(InstanceID_t id, SmlStatusPtr_t pContent)
6073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
6083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_STATUS, pContent);
6093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
6103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
6143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlReplaceCmd
6153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Create a Replace Command
6173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
6193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
6203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              SmlReplacePtr_t
6223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
6233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
6253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
6263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
6273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlReplaceCmd(InstanceID_t id, SmlReplacePtr_t pContent)
6283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
6293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_REPLACE, pContent);
6303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
6313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef COPY_SEND  /* these API calls are NOT included in the Toolkit lite version */
6353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
6383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlCopyCmd
6393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Create a Copy Command
6413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
6433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
6443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              CopyPtr_t
6463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
6473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
6493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
6503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
6513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlCopyCmd(InstanceID_t id, SmlCopyPtr_t pContent)
6523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
6533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_COPY, pContent);
6543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
6553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
6573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef EXEC_SEND
6593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
6613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlExecCmd
6623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Create a Exec Command
6643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
6663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
6673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              ExecPtr_t
6693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
6703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
6723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
6733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
6743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlExecCmd(InstanceID_t id, SmlExecPtr_t pContent)
6753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
6763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_EXEC, pContent);
6773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
6783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
6803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef SEARCH_SEND
6823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
6843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlSearchCmd
6853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Create a Search Command
6873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
6893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
6903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              SearchPtr_t
6923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Data to pass along with that SyncML command
6933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
6943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
6953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
6963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
6973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlSearchCmd(InstanceID_t id, SmlSearchPtr_t pContent)
6983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
6993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return mgrCreateNextCommand(id, SML_PE_SEARCH, pContent);
7003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
7013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
7043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************
7073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *  Exported SyncML API functions (FULL-SIZE TOOLKIT ONLY)
7083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *************************************************************************/
7093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef __SML_LITE__  /* these API calls are NOT included in the Toolkit lite version */
7113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
7123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlStartEvaluation
7133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
7143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Starts an evaluation run which prevents further API-Calls to write tags -
7153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * just the tag-sizes are calculated. Must be sopped via smlEndEvaluation
7163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
7173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
7183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
7193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
7203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
7213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
7223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
7233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
7243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlStartEvaluation(InstanceID_t id)
7253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
7263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  InstanceInfoPtr_t   pInstanceInfo;               // pointer the the instance info structure for this id
7273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  Ret_t               rc;
7283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #ifdef NOWSM
7303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pInstanceInfo = (InstanceInfoPtr_t)id; // ID is the instance info pointer
7313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #else
7323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    /* --- Retrieve the corresponding instanceInfo structure --- */
7333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #ifdef __SML_LITE__  /* Only ONE instance is supported in the Toolkit lite version */
7343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      pInstanceInfo = mgrGetInstanceListAnchor();
7353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #else
7363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      pInstanceInfo = (InstanceInfoPtr_t) findInfo(id);
7373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #endif
7383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #endif
7393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (pInstanceInfo==NULL) return SML_ERR_MGR_INVALID_INSTANCE_INFO;
7413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* --- Initialize Encoder for evaluation mode --- */
7443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  rc = xltStartEvaluation((XltEncoderPtr_t)(pInstanceInfo->encoderState));
7463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return rc;
7483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
7493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
7523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smlEndEvaluation
7533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
7543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Stops an evaluation run which prevents further API-Calls to write tags -
7553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * the remaining free buffer size after all Tags are written is returned
7563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
7573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:              InstanceID_t
7583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  ID of the used instance
7593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
7603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN/OUT:          MemSize_t
7613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *					Size of free buffer for data after all tags are written
7623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
7633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:          Ret_t
7643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  Return Code
7653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
7663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySML_API Ret_t smlEndEvaluation(InstanceID_t id, MemSize_t *freemem)
7673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
7683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  InstanceInfoPtr_t   pInstanceInfo;               // pointer the the instance info structure for this id
7693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  Ret_t               rc;
7703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #ifdef NOWSM
7723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pInstanceInfo = (InstanceInfoPtr_t)id; // ID is the instance info pointer
7733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #else
7743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    /* --- Retrieve the corresponding instanceInfo structure --- */
7753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #ifdef __SML_LITE__  /* Only ONE instance is supported in the Toolkit lite version */
7763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      pInstanceInfo = mgrGetInstanceListAnchor();
7773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #else
7783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      pInstanceInfo = (InstanceInfoPtr_t) findInfo(id);
7793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #endif
7803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #endif
7813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (pInstanceInfo==NULL) return SML_ERR_MGR_INVALID_INSTANCE_INFO;
7833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  // %%% luz 2002-09-03: encoder can be null here if fatal error occurred before
7853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (pInstanceInfo->encoderState==NULL)
7863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SML_ERR_WRONG_USAGE;
7873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  rc = xltEndEvaluation(id, (XltEncoderPtr_t)(pInstanceInfo->encoderState), freemem);
7893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return SML_ERR_OK;
7903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
7913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
7933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************
7963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *  Private Functions
7973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *************************************************************************/
7983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
8013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION:
8023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Calls the encoding routines of the Encoder Module for a given Command Type
8033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * and Command Content
8043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
8053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
8063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:        InstanceID_t
8073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *            ID of the Instance
8083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
8093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:        ProtoElement_t
8103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *            Type of the command (defined by the Proto Element Enumeration)
8113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
8123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:        VoidPtr_t
8133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *            Content of the command to encode
8143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
8153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:    Return value,
8163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *            SML_ERR_OK if command has been encoded successfully
8173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
8183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambystatic Ret_t mgrCreateNextCommand(InstanceID_t id, SmlProtoElement_t cmdType, VoidPtr_t pContent)
8193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
8203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* --- Definitions --- */
8213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  InstanceInfoPtr_t   pInstanceInfo;               // pointer the the instance info structure for this id
8223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  Ret_t               rc;
8233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  MemPtr_t            pCurrentWritePosition;       // current Position from to which to write
8243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  MemPtr_t            pBeginPosition;              // saves the first position which has been written
8253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  MemSize_t           freeSize;                    // size of free memory for writing
8263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #ifdef NOWSM
8293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pInstanceInfo = (InstanceInfoPtr_t)id; // ID is the instance info pointer
8303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #else
8313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    /* --- Retrieve the corresponding instanceInfo structure --- */
8323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #ifdef __SML_LITE__  /* Only ONE instance is supported in the Toolkit lite version */
8333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      pInstanceInfo = mgrGetInstanceListAnchor();
8343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #else
8353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      pInstanceInfo = (InstanceInfoPtr_t) findInfo(id);
8363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    #endif
8373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  #endif
8383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (pInstanceInfo==NULL) return SML_ERR_MGR_INVALID_INSTANCE_INFO;
8403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  // %%% luz 2002-11-27: added NULL check as previously failed encoding will delete encoder
8413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (pInstanceInfo->encoderState==NULL) return SML_ERR_MGR_INVALID_INSTANCE_INFO;
8423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* --- Get Write Access to the workspace --- */
8443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  rc = smlLockWriteBuffer(id, &pCurrentWritePosition, &freeSize);
8453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (rc!=SML_ERR_OK)  {
8473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // abort, unlock the buffer again without changing it's current position
8483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    smlUnlockWriteBuffer(id, (MemSize_t)0);
8493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return rc;
8503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
8513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  // Remember the position we have started writing
8543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  pBeginPosition=pCurrentWritePosition;
8553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* --- Call the encoder module --- */
8583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  rc = xltEncAppend(pInstanceInfo->encoderState, cmdType, pCurrentWritePosition+freeSize, pContent, &pCurrentWritePosition);
8593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (rc!=SML_ERR_OK) {
8613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	  /* check for full buffer and call TransmitChunk */
8623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	  if (rc == SML_ERR_XLT_BUF_ERR) {
8633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		  // first check wether callback is defined
8643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      if (pInstanceInfo->callbacks->transmitChunkFunc!= NULL) {
8653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  // abort, unlock the buffer again without changing it's current position
8663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        smlUnlockWriteBuffer(id, (MemSize_t)0);
8673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		    // call the callback
8683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  pInstanceInfo->callbacks->transmitChunkFunc(id,NULL);
8693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		    // lock -> returns the amount of free buffer space
8703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  smlLockWriteBuffer(id, &pCurrentWritePosition, &freeSize);
8713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        pBeginPosition = pCurrentWritePosition;
8723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		    // now try again to encode and see wether we now have enough mem available
8733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  rc = xltEncAppend(pInstanceInfo->encoderState, cmdType, pCurrentWritePosition+freeSize, pContent, &pCurrentWritePosition);
8743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		    // if rc == SML_ERR_OK continue else
8753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          // return the errorcode
8763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  if( rc !=	SML_ERR_OK)
8773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  {
8783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          smlUnlockWriteBuffer(id, (MemSize_t)0);
8793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	        // Reset the encoder module (free the encoding object)
8803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	        xltEncReset(pInstanceInfo->encoderState);
8813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          // this encoding job is over! reset instanceInfo pointer
8823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          pInstanceInfo->encoderState=NULL;
8833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          return rc;
8843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  }
8853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		  }
8863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	  } else {
8873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      // abort, unlock the buffer again without changing it's current position
8883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      smlUnlockWriteBuffer(id, (MemSize_t)0);
8893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	    // Reset the encoder module (free the encoding object)
8903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	    xltEncReset(pInstanceInfo->encoderState);
8913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      // this encoding job is over! reset instanceInfo pointer
8923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      pInstanceInfo->encoderState=NULL;
8933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      return rc;
8943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	  }
8953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
8963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  /* --- End Write Access to the workspace --- */
8973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  rc = smlUnlockWriteBuffer(id, (MemSize_t)pCurrentWritePosition-(MemSize_t)pBeginPosition);
8983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return rc;
8993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
9003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* eof */
902