aboutsummaryrefslogtreecommitdiff
path: root/SrcShared/Palm/Platform/Incs/Core/System/DLCommon.h
diff options
context:
space:
mode:
Diffstat (limited to 'SrcShared/Palm/Platform/Incs/Core/System/DLCommon.h')
-rw-r--r--SrcShared/Palm/Platform/Incs/Core/System/DLCommon.h2433
1 files changed, 2433 insertions, 0 deletions
diff --git a/SrcShared/Palm/Platform/Incs/Core/System/DLCommon.h b/SrcShared/Palm/Platform/Incs/Core/System/DLCommon.h
new file mode 100644
index 0000000..af8a449
--- /dev/null
+++ b/SrcShared/Palm/Platform/Incs/Core/System/DLCommon.h
@@ -0,0 +1,2433 @@
+/******************************************************************************
+ *
+ * Copyright (c) 1995-1999 Palm Computing, Inc. or its subsidiaries.
+ * All rights reserved.
+ *
+ * File: DLCommon.h
+ *
+ * Description:
+ * Desktop Link Protocol(DLP) function id's, parameters, and frame
+ * structures.
+ *
+ * History:
+ * 6/7/95 vmk Created by Vitaly Marty Kruglikov
+ * 6/15/95 vmk Changed dlp/Read/Write/UserID to dlp/Read/Write/UserInfo and
+ * added the last sync PC id field to their arguments at Laura's request.
+ * 6/15/95 vmk Added option to dlpDeleteRecord to delete all records in DB.
+ *
+ *****************************************************************************/
+
+#ifndef __DLCOMMON_H__
+#define __DLCOMMON_H__
+
+#include <PalmTypes.h>
+
+/************************************************************
+ * DesktopLink function codes
+ *************************************************************/
+
+// DlpFuncID -- function id's used in request blocks sent to
+// the DesktopLink application on Pilot. The width of the function
+// id base is 7 bits. The high order bit(the 8th bit) is used to
+// distinguish requests from their responses -- it is cleared in request
+// blocks and is set in response blocks (i.e., the response to a particular
+// command will have the same function code base as the command and the
+// high order bit set). See dlpFuncRespFlag defined below.
+//
+typedef enum DlpFuncID {
+
+ dlpReservedFunc = 0x0F, // range reserved for internal use
+
+ // DLP 1.0 FUNCTIONS START HERE (PalmOS v1.0)
+ dlpReadUserInfo,
+
+ dlpWriteUserInfo,
+
+ dlpReadSysInfo,
+
+ dlpGetSysDateTime,
+
+ dlpSetSysDateTime,
+
+ dlpReadStorageInfo,
+
+ dlpReadDBList,
+
+ dlpOpenDB,
+
+ dlpCreateDB,
+
+ dlpCloseDB,
+
+ dlpDeleteDB,
+
+ dlpReadAppBlock,
+
+ dlpWriteAppBlock,
+
+ dlpReadSortBlock,
+
+ dlpWriteSortBlock,
+
+ dlpReadNextModifiedRec,
+
+ dlpReadRecord,
+
+ dlpWriteRecord,
+
+ dlpDeleteRecord,
+
+ dlpReadResource,
+
+ dlpWriteResource,
+
+ dlpDeleteResource,
+
+ dlpCleanUpDatabase,
+
+ dlpResetSyncFlags,
+
+ dlpCallApplication,
+
+ dlpResetSystem,
+
+ dlpAddSyncLogEntry,
+
+ dlpReadOpenDBInfo,
+
+ dlpMoveCategory,
+
+ dlpProcessRPC, // remote procedure calls interface
+
+ dlpOpenConduit, // this command is sent before each conduit is opened
+
+ dlpEndOfSync, // ends the sync session
+
+ dlpResetRecordIndex, // resets "modified record" index
+
+ dlpReadRecordIDList, // LAST 1.0 FUNCTION
+
+
+ // DLP 1.1 FUNCTIONS ADDED HERE (PalmOS v2.0 Personal, and Professional)
+ dlpReadNextRecInCategory, // iterate through all records in category
+
+ dlpReadNextModifiedRecInCategory, // iterate through modified records in category
+
+ dlpReadAppPreference, // read application preference
+
+ dlpWriteAppPreference, // write application preference
+
+ dlpReadNetSyncInfo, // read Network HotSync settings
+
+ dlpWriteNetSyncInfo, // write Network HotSync settings
+
+ dlpReadFeature, // read a feature from Feature Manager
+
+
+ // DLP 1.2 FUNCTIONS ADDED HERE (PalmOS v3.0)
+ dlpFindDB, // find a database given creator and type, or name, or
+ // get info on currently-open db
+ dlpSetDBInfo, // change database information (name, attributes, version,
+ // creation, modification, backup dates, type and creator
+
+
+
+
+ dlpLastFunc // ***ALWAYS KEEP LAST***
+
+ } DlpFuncID;
+
+#define dlpLastPilotV10FuncID dlpReadRecordIDList
+
+
+// Desktop Link function error codes returned in the response errorCode
+// field.
+typedef enum DlpRespErrorCode {
+ dlpRespErrNone = 0, // reserve 0 for no error
+ dlpRespErrSystem, // general Pilot system error
+ dlpRespErrIllegalReq, // unknown function ID
+ dlpRespErrMemory, // insufficient dynamic heap memory
+ dlpRespErrParam, // invalid parameter
+ dlpRespErrNotFound, // database, record, or resource not found
+ dlpRespErrNoneOpen, // there are no open databases
+ dlpRespErrDatabaseOpen, // database is open by someone else
+ dlpRespErrTooManyOpenDatabases, // there are too many open databases
+ dlpRespErrAlreadyExists, // DB already exists
+ dlpRespErrCantOpen, // couldn't open DB
+ dlpRespErrRecordDeleted, // record is deleted
+ dlpRespErrRecordBusy, // record is in use by someone else
+ dlpRespErrNotSupported, // the requested operation is not supported
+ // on the given database type(record or resource)
+ dlpRespErrUnused1, // was dlpRespErrROMBased
+ dlpRespErrReadOnly, // caller does not have write access(or DB is in ROM)
+ dlpRespErrNotEnoughSpace, // not enough space in data store for record/resource/etc.
+ dlpRespErrLimitExceeded, // size limit exceeded
+ dlpRespErrCancelSync, // cancel the sync
+
+ dlpRespErrBadWrapper, // bad arg wrapper(for debugging)
+ dlpRespErrArgMissing, // required arg not found(for debugging)
+ dlpRespErrArgSize, // invalid argument size
+
+ dlpRespErrLastReserved = 127 // last error code reserved for Palm
+ // *KEEP THIS ENTRY LAST*
+ } DlpRespErrorCode;
+
+
+// Database flags
+// NOTE: THESE *MUST* MATCH THE TOUCHDOWN DB ATTRIBUTES(AT LEAST IN THE FIRST VERSION).
+// ANY CHANGES MUST BE REFLECTED IN "READ DB LIST" AND
+#define dlpDBFlagResDB 0x0001 // resource DB if set; record DB if cleared
+
+#define dlpDBFlagReadOnly 0x0002 // DB is read only if set; read/write if cleared
+
+#define dlpDBFlagAppInfoDirty 0x0004 // Set if Application Info block is dirty
+ // Optionally supported by an App's conduit
+
+#define dlpDBFlagBackup 0x0008 // Set if database should be backed up to PC if
+ // no app-specific synchronization conduit has
+ // been supplied.
+
+#define dlpDBFlagOKToInstallNewer 0x0010 // This tells the backup conduit that it's OK
+ // for it to install a newer version of this database
+ // with a different name if the current database is
+ // open. This mechanism is used to update the
+ // Graffiti Shortcuts database, for example.
+
+#define dlpDBFlagResetAfterInstall 0x0020 // Device requires a reset after this database is
+ // installed.
+
+#define dlpDBFlagCopyPrevention 0x0040 // This database should not be copied to
+ // another deviced.
+
+#define dlpDBFlagOpen 0x8000 // DB is open
+
+
+
+
+// Database record attributes
+#define dlpRecAttrDeleted 0x80 // delete this record next sync
+#define dlpRecAttrDirty 0x40 // archive this record next sync
+#define dlpRecAttrBusy 0x20 // record currently in use
+#define dlpRecAttrSecret 0x10 // "secret" record - password protected
+#define dlpRecAttrArchived 0x08 // archived record
+
+
+// Date/time will be described in the following format
+// yr(2 bytes), mo(1 byte, 1-12), dy(1 byte, 1-31),
+// hr(1 byte, 0-23), min(1 byte, 0-59), sec(1 byte, 0-59),
+// unused(1 byte).
+
+typedef struct DlpDateTimeType { // OFFSET
+ UInt16 year; // 0; year (high, low)
+ UInt8 month; // 2; month: 1-12
+ UInt8 day; // 3; day: 1-31
+ UInt8 hour; // 4; hour: 0-23
+ UInt8 minute; // 5; minute: 0-59
+ UInt8 second; // 6; second: 0-59
+ UInt8 unused; // 7; unused -- set to null!
+ } DlpDateTimeType; // TOTAL: 8 bytes
+
+
+// Version structure
+typedef struct DlpVersionType {
+ // OFFSET
+ UInt16 wMajor; // 0; major version number (0 = ignore)
+ UInt16 wMinor; // 2; minor version number
+ // TOTAL: 4 bytes
+ } DlpVersionType;
+
+
+/************************************************************
+ * Request and Response headers.
+ *
+ * Each DLP request and response data block begins with the
+ * corresponding header structure which identifies the function
+ * id, argument count, and error code(responses only).
+ *************************************************************/
+
+// Request header:
+//
+typedef struct DlpReqHeaderType {
+ // OFFSET
+ UInt8 id; // 0; request function ID
+ UInt8 argc; // 2; count of args that follow this header
+ // TOTAL: 2 bytes
+ } DlpReqHeaderType;
+
+typedef DlpReqHeaderType* DlpReqHeaderPtr;
+
+typedef struct DlpReqType {
+ // OFFSET
+ DlpReqHeaderType header; // 0; request header
+ // FIXED SIZE: 2 bytes
+ UInt8 args[2]; // 2; request arguments -- var size
+ } DlpReqType;
+
+typedef DlpReqType* DlpReqPtr;
+
+// Response header:
+//
+typedef struct DlpRespHeaderType {
+ // OFFSET
+ UInt8 id; // 0; response function ID
+ UInt8 argc; // 1; count of arguments that follow this header
+ UInt16 errorCode; // 2; error code
+ // TOTAL: 4 bytes
+ } DlpRespHeaderType;
+
+typedef DlpRespHeaderType* DlpRespHeaderPtr;
+
+typedef struct DlpRespType {
+ // OFFSET
+ DlpRespHeaderType header; // 0; response header
+ // FIXED SIZE: 4 bytes
+ UInt8 args[2]; // 4; response arguments -- var size
+ } DlpRespType;
+
+typedef DlpRespType* DlpRespPtr;
+
+
+// Generic request/response body type(for utility routines)
+//
+typedef union DlpGenericBodyType {
+ UInt8 id; // request/response id
+ DlpReqType req; // request body
+ DlpRespType resp; // response body
+ } DlpGenericBodyType;
+
+typedef DlpGenericBodyType* DlpGenericBodyPtr;
+
+
+// dlpFuncRespFlag is used to form a function response ID from a
+// function ID by or'ing it with the function ID. For example: if
+// dlpFuncDeleteResource is the request ID, the correct response ID
+// must be (dlpFuncDeleteResource | dlpFuncRespFlag).
+//
+#define dlpFuncRespFlag 0x80
+
+// dlpFuncIDMask is used to mask out the function ID value
+#define dlpFuncIDMask 0x7f
+
+// dlpFirstArgID is the value of the first argument ID to be defined for
+// functions. Values below it are reserved.
+//
+#define dlpFirstArgID 0x20
+
+
+/************************************************************
+ *
+ * Argument headers used to "wrap" request and response arguments
+ *
+ * IMPORTANT: ARGUMENT WRAPPERS IN REQUESTS AND RESPONSES MUST
+ * ALWAYS START ON AN EVEN-BYTE BOUNDARY. The server
+ * implementation expects this to be the case.
+ *
+ *************************************************************/
+
+// dlpSmallArgFlag is used to identify "small" argument wrappers by
+// or'ing it with the argument id in argument header.
+//
+#define dlpSmallArgFlag 0x080
+
+// dlpShortArgIDMask is used to mask out the argument id value
+//
+#define dlpShortArgIDMask 0x7F
+
+
+// dlpLongArgFlag is used to identify "long" argument wrappers by
+// or'ing it with the argument id in argument header.
+//
+#define dlpLongArgFlag 0xC000
+
+// dlpLongArgIDMask is used to mask out the argument id value
+//
+#define dlpLongArgIDMask 0x3FFF
+
+
+//-------------------------------------------------------------------------
+// Int16 argument wrappers (v1.0-compatible)
+//-------------------------------------------------------------------------
+
+// Maximum Int16 argument size which can be "wrapped"
+#define dlpMaxTinyArgSize 0x000000FFL
+#define dlpMaxSmallArgSize 0x0000FFFFL
+#define dlpMaxShortArgSize dlpMaxSmallArgSize
+
+
+
+// Tiny argument header for data sizes up to 255 bytes(optimization)
+//
+typedef struct DlpTinyArgWrapperType {
+ // OFFSET
+ UInt8 bID; // 0; argument ID
+ UInt8 bSize; // 1; argument size (does NOT include this arg header)
+ // TOTAL: 2 bytes
+ } DlpTinyArgWrapperType;
+
+typedef struct DlpTinyArgType {
+ DlpTinyArgWrapperType wrapper; // 0; argument header
+ UInt8 data[2]; // 2; argument data -- var size
+ } DlpTinyArgType;
+
+
+// Small argument header for data sizes above 255 bytes(*may also be used for
+// smaller arguments when convenient*)
+//
+typedef struct DlpSmallArgWrapperType {
+ // OFFSET
+ UInt8 bID; // 0; argument ID
+ UInt8 unused; // 1; unused(for alignment) -- set to null!
+ UInt16 wSize; // 2; argument size (does NOT include this arg header)
+ // TOTAL: 4 bytes
+ } DlpSmallArgWrapperType;
+
+typedef struct DlpSmallArgType {
+ DlpSmallArgWrapperType wrapper; // 0; argument header
+ UInt8 data[2]; // 4; argument data -- var size
+ } DlpSmallArgType;
+
+// Unions of Int16 argument types
+typedef union DlpShortArgWrapperType {
+ UInt8 bID; // arg id
+ DlpTinyArgWrapperType tiny; // "tiny" arg wrapper
+ DlpSmallArgWrapperType small; // "tiny" arg wrapper
+ } DlpShortArgWrapperType;
+typedef DlpShortArgWrapperType* DlpShortArgWrapperPtr;
+
+typedef union DlpShortArgType {
+ UInt8 bID; // arg id
+ DlpTinyArgType tiny; // "tiny" arg
+ DlpSmallArgType small; // "small" arg
+ } DlpShortArgType;
+
+typedef DlpShortArgType* DlpShortArgPtr;
+
+
+
+//-------------------------------------------------------------------------
+// Int32 argument wrapper (v2.0 extension)
+//-------------------------------------------------------------------------
+// NOTE: Pilot v2.0 will implement the capability to parse long arguments
+// but will not originate them. This will assure backwards compatibility with
+// the 1.0 desktop as well as compatibility with the future version of the
+// desktop software which may originate the "long" argument wrappers.
+//
+// Int32 argument wrappers are identified by the dlpLongArgFlag bits set
+// in the argument id field.
+
+// Maximum long argument size which can be "wrapped"
+#define dlpMaxLongArgSize 0xFFFFFFFFL
+
+typedef struct DlpLongArgWrapperType {
+ // OFFSET
+ UInt16 wID; // 0; argument ID
+ UInt32 dwSize; // 2; argument size (does NOT include this arg header)
+ // TOTAL: 6 bytes
+ } DlpLongArgWrapperType;
+typedef DlpLongArgWrapperType* DlpLongArgWrapperPtr;
+
+typedef struct DlpLongArgType {
+ // OFFSET
+ DlpLongArgWrapperType wrapper; // 0; argument header
+ UInt8 data[2]; // 6; argument data -- var size
+ } DlpLongArgType;
+typedef DlpLongArgType* DlpLongArgPtr;
+
+
+//-------------------------------------------------------------------------
+// Unions of all argument and wrapper types
+//-------------------------------------------------------------------------
+
+// Union of all argument wrapper types
+typedef union DlpGenericArgWrapperType {
+ DlpShortArgWrapperType shortWrap; // "Int16" arg wrapper(tiny and small)
+ DlpLongArgWrapperType longWrap; // "long" arg wrapper
+ } DlpGenericArgWrapperType;
+typedef DlpGenericArgWrapperType* DlpGenericArgWrapperPtr;
+
+
+// Union of all argument types
+typedef union DlpGenericArgType {
+ DlpShortArgType shortArg; // "Int16" arg(tiny and small)
+ DlpLongArgType longArg; // "long" arg
+ } DlpGenericArgType;
+typedef DlpGenericArgType* DlpGenericArgPtr;
+
+
+/********************************************************************
+ * Desktop Link Protocol Parameters
+ ********************************************************************/
+
+// dlpCmdTimeoutSec -- this is the number of seconds to wait for a command
+// to begin coming in before timing out
+//
+#define dlpCmdTimeoutSec 30
+
+
+
+/************************************************************
+ * DLP function argument structures
+ *************************************************************/
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadUserInfo
+//////////////////////////////////////////////////////////////////////////
+// Request arguments: none
+//
+// Response arguments:
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrMemory
+
+// Request argument structure:
+//
+// none.
+
+// Response argument structure:
+//
+#define dlpReadUserInfoRespArgID dlpFirstArgID
+
+typedef struct DlpReadUserInfoRespHdrType {
+ // OFFSET
+ UInt32 userID; // 0; user ID number (0 if none)
+ UInt32 viewerID; // 4; id assigned to viewer by the desktop
+ UInt32 lastSyncPC; // 8; last sync PC id (0 if none)
+ DlpDateTimeType succSyncDate; // 12; last successful sync (year = 0 if none)
+ DlpDateTimeType lastSyncDate; // 20; last sync date(year = 0 if none)
+ UInt8 userNameLen; // 28; length of user name field,
+ // including null (0 = no user name)
+ UInt8 passwordLen; // 29; length of encrypted password
+ // (0 = no password set)
+ // TOTAL: 30 bytes
+ } DlpReadUserInfoRespHdrType;
+
+typedef struct DlpReadUserInfoRespType {
+ // OFFSET
+ DlpReadUserInfoRespHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 30 bytes
+ UInt8 nameAndPassword[2]; // 30; user name -- var size
+ // User name begins at the nameAndPassword field and is null-terminated.
+ // The encrypted password follows the user name and is NOT null-terminated.
+ // The encrypted password may contain any byte values(0-255).
+ } DlpReadUserInfoRespType;
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpWriteUserInfo
+//////////////////////////////////////////////////////////////////////////
+// Request arguments:
+// user id (4 bytes)
+// last sync PC id(4 bytes)
+// user name
+//
+// Response arguments: none
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrNotEnoughSpace,
+// dlpRespErrParam
+
+// Request argument structure:
+//
+#define dlpWriteUserInfoReqArgID dlpFirstArgID
+
+#define dlpMaxUserNameSize 41 // max user name size, including null byte
+
+typedef struct DlpWriteUserInfoReqHdrType {
+ // OFFSET
+ UInt32 userID; // 0; user ID number
+ UInt32 viewerID; // 4; id assigned to viewer by the desktop
+ UInt32 lastSyncPC; // 8; last sync PC id
+ DlpDateTimeType lastSyncDate; // 12; last sync date(year = 0 if none)
+ UInt8 modFlags; // 20; flags indicating which values are being
+ // modified; see the dlpUserInfoMod...
+ // flags defined below
+ UInt8 userNameLen; // 21; user name length, including null
+ // TOTAL: 22 bytes
+ } DlpWriteUserInfoReqHdrType;
+
+// Flags indicating which values are being changed by the dlpWriteUserInfo
+// request. These flags are used in the modFlags field of DlpWriteUserInfoReqHdrType.
+// These flags are additive.
+//
+#define dlpUserInfoModUserID 0x80 // changing the user id
+#define dlpUserInfoModSyncPC 0x40 // changing the last sync PC id
+#define dlpUserInfoModSyncDate 0x20 // changing sync date
+#define dlpUserInfoModName 0x10 // changing user name
+#define dlpUserInfoModViewerID 0x08 // changing the viewer id
+
+typedef struct DlpWriteUserInfoReqType {
+ // OFFSET
+ DlpWriteUserInfoReqHdrType
+ header; // 0; fixed-size header
+ // FIXED SIZE: 22 bytes
+ UInt8 userName[2]; // 22; user name -- var size
+ // User name begins at the userName field and is null-terminated.
+ } DlpWriteUserInfoReqType;
+
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadSysInfo
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem
+//
+
+// Request argument structure:
+//
+// none. DLP v1.0 and v1.1
+
+enum {
+ // NEW FOR DLP v1.2:
+ dlpReadSysInfoReqArgID = dlpFirstArgID
+ };
+
+
+// dlpReadSysInfoReqArgID request arg structure
+//
+typedef struct DlpReadSysInfoReqType {
+ // OFFSET
+ DlpVersionType dlpVer; // 0; DLP version of the caller
+ // TOTAL: 4 bytes
+ } DlpReadSysInfoReqType;
+
+
+// Response argument structure:
+//
+// Both response arguments are returned in one reply
+enum {
+ dlpReadSysInfoRespArgID = dlpFirstArgID,
+
+ // NEW FOR DLP v1.2:
+ dlpReadSysInfoVerRespArgID
+ };
+
+// dlpReadSysInfoRespArgID response arg structure:
+//
+typedef struct DlpReadSysInfoRespType {
+ // OFFSET
+ UInt32 romSWVersion; // 0; ROM-based sys software version
+ UInt32 localizationID;// 4; localization ID
+ UInt8 unused; // 8; unused(for alignment) -- set to null!
+ UInt8 prodIDSize; // 9; size of productID/model field
+ UInt32 prodID; // 10; product id (was variable size)
+ // TOTAL: 14 bytes
+ } DlpReadSysInfoRespType;
+
+
+// dlpReadSysInfoVerRespArgID response arg structure:
+//
+typedef struct DlpReadSysInfoVerRespType {
+ // OFFSET
+ DlpVersionType dlpVer; // 0; DLP version of the device
+ DlpVersionType compVer; // 4; product compatibility version of the device
+ UInt32 dwMaxRecSize; // 8; maximum record/resource size that may be allocated on
+ // the device given that sufficient free memory exists
+ // (0xFFFFFFFF = up to available memory)
+ // TOTAL: 12 bytes
+ } DlpReadSysInfoVerRespType;
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpGetSysDateTime
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes: none
+
+// Request argument structure:
+//
+// none.
+
+// Response argument structure:
+//
+#define dlpGetSysDateTimeRespArgID dlpFirstArgID
+
+typedef struct DlpGetSysDateTimeRespType {
+ // OFFSET
+ DlpDateTimeType dateTime; // 0; system date/time
+ // TOTAL: 8 bytes
+ } DlpGetSysDateTimeRespType;
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpSetSysDateTime
+//////////////////////////////////////////////////////////////////////////
+// Request arguments:
+// new system date/time
+//
+// Response arguments: none
+//
+// Possible error codes
+// dlpRespErrParam
+
+// Request argument structure:
+//
+#define dlpSetSysDateTimeReqArgID dlpFirstArgID
+
+typedef struct DlpSetSysDateTimeReqType {
+ // OFFSET
+ DlpDateTimeType dateTime; // 0; new system date/time
+ // TOTAL: 8 bytes
+ } DlpSetSysDateTimeReqType;
+
+typedef DlpSetSysDateTimeReqType* DlpSetSysDateTimeReqPtr;
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadStorageInfo
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrMemory,
+// dlpRespErrNotFound
+
+// Request argument structure:
+//
+enum {
+ dlpReadStorageInfoReqArgID = dlpFirstArgID
+ };
+
+typedef struct DlpReadStorInfoReqType {
+ // OFFSET
+ UInt8 startCardNo; // 0; card number to start at
+ // (0 = first)
+ UInt8 unused; // 1; unused -- set to null!
+ // TOTAL: 2 bytes
+ } DlpReadStorInfoReqType;
+
+
+// Response argument structure:
+//
+enum {
+ dlpReadStorageInfoRespArgID = dlpFirstArgID,
+ dlpReadStorageInfoExRespArgID // v1.1 extension
+ };
+
+//
+// dlpReadStorageInfoRespArgID:
+//
+
+// Card info structure of variable size
+typedef struct DlpCardInfoHdrType {
+ // OFFSET
+ UInt8 totalSize; // 0; total size of this card info
+ // *ROUNDED UP TO EVEN SIZE*
+ UInt8 cardNo; // 1; card number
+ UInt16 cardVersion; // 2; card version
+ DlpDateTimeType crDate; // 4; creation date/time
+ UInt32 romSize; // 12; ROM size
+ UInt32 ramSize; // 16; RAM size
+ UInt32 freeRam; // 20; total free data store RAM - Fixed in DLP v1.2 to exclude
+ // dynamic heap RAM
+ UInt8 cardNameSize; // 24; size of card name string
+ UInt8 manufNameSize; // 25; size of manuf. name string
+ // TOTAL: 26 bytes;
+ } DlpCardInfoHdrType;
+
+typedef struct DlpCardInfoType {
+ // OFFSET
+ DlpCardInfoHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 26 bytes;
+ UInt8 cardNameAndManuf[2];
+ // 26; card name and manuf. text -- var size
+ // Card name is the cardNameSize bytes of text at cardNameAndManuf,
+ // followed immediately by manufNameSize bytes of manufacturer name.
+ } DlpCardInfoType;
+
+
+typedef struct DlpReadStorInfoRespHdrType {
+ // OFFSET
+ UInt8 lastCardNo; // 0; card number of last card retrieved
+ UInt8 more; // 1; non-zero if there are more cards
+ UInt8 unused; // 2; unused -- set to null!
+ UInt8 actCount; // 3; actual count of structures returned
+ // TOTAL: 4 bytes
+ } DlpReadStorInfoRespHdrType;
+
+typedef struct DlpReadStorInfoRespType {
+ // OFFSET
+ DlpReadStorInfoRespHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 4 bytes
+ DlpCardInfoType cardInfo[1]; // 4; actCount of card info structures -- var size
+ } DlpReadStorInfoRespType;
+
+
+//
+// EXTENDED ARGUMENTS(DL v1.1): dlpReadStorageInfoExRespArgID
+//
+typedef struct DlpReadStorInfoExRespType {
+ // OFFSET
+ UInt16 romDBCount; // 0; ROM database count
+ UInt16 ramDBCount; // 2; RAM database count
+ UInt32 dwReserved1; // 4; RESERVED -- SET TO NULL!
+ UInt32 dwReserved2; // 8; RESERVED -- SET TO NULL!
+ UInt32 dwReserved3; // 12; RESERVED -- SET TO NULL!
+ UInt32 dwReserved4; // 16; RESERVED -- SET TO NULL!
+ // TOTAL: 20 bytes
+ } DlpReadStorInfoExRespType;
+
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadDBList
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrMemory,
+// dlpRespErrNotFound
+
+// Request argument structure:
+//
+#define dlpReadDBListReqArgID dlpFirstArgID
+
+typedef struct DlpReadDBListReqType {
+ // OFFSET
+ UInt8 srchFlags; // 0; search flags
+ UInt8 cardNo; // 1; card number -- 0-based
+ UInt16 startIndex; // 2; DB index to start at
+ // (0 = from beginning)
+ // TOTAL: 4 bytes
+ } DlpReadDBListReqType;
+
+#define dlpReadDBListFlagRAM 0x80 // Search for RAM-based
+#define dlpReadDBListFlagROM 0x40 // Search for ROM-based
+#define dlpReadDBListFlagMultiple 0x20 // OK to return multiple entries (DEFINED FOR DLP v1.2)
+
+
+// Response argument structure:
+//
+#define dlpReadDBListRespArgID dlpFirstArgID
+
+// Database info structure of variable size
+typedef struct DlpDBInfoHdrType {
+ // OFFSET
+ UInt8 totalSize; // 0; total size of the DB info (DlpDBInfoHdrType + name)
+ // *ROUNDED UP TO EVEN SIZE*
+ UInt8 miscFlags; // 1; dlpDbInfoMiscFlag... flags(v1.1) -- set all unused bits to null!
+ UInt16 dbFlags; // 2; DB flags: dlpDBFlagReadOnly,
+ // dlpDBFlagResDB, dlpDBFlagAppInfoDirty, dlpDBFlagOpen,
+ // dlpDBFlagBackup, etc;
+ UInt32 type; // 4; database type
+ UInt32 creator; // 8; database creator
+ UInt16 version; // 12; database version
+ UInt32 modNum; // 14; modification number
+ DlpDateTimeType crDate; // 18; creation date
+ DlpDateTimeType modDate; // 26; latest modification date
+ DlpDateTimeType backupDate; // 34; latest backup date
+ UInt16 dbIndex; // 42; DB index (or dlpDbInfoUnknownDbIndex for dlpFindDB)
+ // TOTAL: 44 bytes;
+ } DlpDBInfoHdrType;
+
+// Flags for the miscFlags field of DlpDBInfoHdrType
+#define dlpDbInfoMiscFlagExcludeFromSync 0x80 // DEFINED FOR DLP v1.1
+#define dlpDbInfoMiscFlagRamBased 0x40 // DEFINED FOR DLP v1.2
+
+// Unknown index value for the dbIndex field of DlpDBInfoHdrType
+#define dlpDbInfoUnknownDbIndex 0xFFFF
+
+
+typedef struct DlpDBInfoType {
+ // OFFSET
+ DlpDBInfoHdrType header; // 0; fixed-size header
+ // FIXED SIZE: 44 bytes;
+ UInt8 name[2]; // 44; databse name text -- var size and
+ // null-terminated
+ } DlpDBInfoType;
+
+
+typedef struct DlpReadDBListRespHdrType {
+ // OFFSET
+ UInt16 lastIndex; // 0; DB index of last entry retrieved
+ UInt8 flags; // 2; flags: dlpReadDBListRespFlagMore
+ UInt8 actCount; // 3; actual count of structures returned
+ // TOTAL: 4 bytes
+ } DlpReadDBListRespHdrType;
+
+// dlpReadDBListRespFlagMore flag: if set, indicates that there are more
+// databases to list -- this enables the server to send the listing
+// incrementally, reducing server memory requirements if necessary
+#define dlpReadDBListRespFlagMore 0x80
+
+typedef struct DlpReadDBListRespType {
+ // OFFSET
+ DlpReadDBListRespHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 4 bytes
+ DlpDBInfoType dbInfo[1]; // 4; actCount of DB info structures -- var size
+ } DlpReadDBListRespType;
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpOpenDB
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrMemory,
+// dlpRespErrParam,
+// dlpRespErrNotFound
+// dlpRespErrTooManyOpenDatabases
+// dlpRespErrCantOpen
+
+// Request argument structure:
+//
+#define dlpOpenDBReqArgID dlpFirstArgID
+
+typedef struct DlpOpenDBReqHdrType {
+ // OFFSET
+ UInt8 cardNo; // 0; memory module number
+ UInt8 mode; // 1; open mode
+ // TOTAL: 2 bytes;
+ } DlpOpenDBReqHdrType;
+
+#define dlpOpenDBModeRead 0x80
+#define dlpOpenDBModeWrite 0x40
+#define dlpOpenDBModeExclusive 0x20
+#define dlpOpenDBModeShowSecret 0x10
+
+
+typedef struct DlpOpenDBReqType {
+ // OFFSET
+ DlpOpenDBReqHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 2 bytes;
+ UInt8 name[2]; // 2; databse name text -- var size
+ // zero-terminated
+ } DlpOpenDBReqType;
+
+typedef DlpOpenDBReqType* DlpOpenDBReqPtr;
+
+
+// Response argument structure:
+//
+#define dlpOpenDBRespArgID dlpFirstArgID
+//
+// The response argument is the 1-byte database ID to be passed in
+// subsequent read/write requests.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpCreateDB
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrMemory,
+// dlpRespErrParam,
+// dlpRespErrAlreadyExists,
+// dlpRespErrCantOpen,
+// dlpRespErrNotEnoughSpace,
+// dlpRespErrTooManyOpenDatabases
+
+// Request argument structure:
+//
+#define dlpCreateDBReqArgID dlpFirstArgID
+
+typedef struct DlpCreateDBReqHdrType {
+ // OFFSET
+ UInt32 creator; // 0; DB creator
+ UInt32 type; // 4; DB type
+ UInt8 cardNo; // 8; memory module number
+ UInt8 unused; // 9; unused -- set to null
+ UInt16 dbFlags; // 10; allowed flags: dlpDBFlagResDB,
+ // dlpDBFlagBackup, dlpDBFlagOKToInstallNewer,
+ // dlpDBFlagResetAfterInstall
+ UInt16 version; // 12; DB version #
+ // TOTAL: 14 bytes;
+ } DlpCreateDBReqHdrType;
+
+typedef struct DlpCreateDBReqType {
+ // OFFSET
+ DlpCreateDBReqHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 12 bytes;
+ UInt8 name[2]; // 14; DB name text -- var size
+ // zero-terminated
+ } DlpCreateDBReqType;
+
+typedef DlpCreateDBReqType* DlpCreateDBReqPtr;
+
+
+// Response argument structure:
+//
+#define dlpCreateDBRespArgID dlpFirstArgID
+
+// The response argument is the 1-byte database ID to be passed in
+// subsequent read/write requests.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpCloseDB
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrParam,
+// dlpRespErrSystem,
+// dlpRespErrMemory,
+// dlpRespErrNoneOpen
+
+// Request argument structure:
+//
+typedef enum {
+ dlpCloseDBReqArgID = dlpFirstArgID, // close a specific database
+ dlpCloseDBAllReqArgID, // close all databases
+ dlpCloseDBExReqArgID // close a specific db and update backup
+ // and/or modification dates (PalmOS v3.0)
+ } DlpCloseDBReqArgID;
+
+// Argument structure to close a specific database(dlpCloseDBDBIDReqArgID):
+//
+// The request argument is the 1-byte database ID returned in open/create
+// DB responses.
+typedef UInt8 DlpCloseDBReqType;
+
+// Argument structure to close all databases(dlpCloseDBReqAllArgID):
+//
+// This request argument contains no data
+
+
+// Request type for dlpCloseDBExReqArgID (PalmOS v3.0):
+typedef struct DlpCloseDBExReqType {
+ // OFFSET
+ UInt8 dbID; // 0; database id to close
+ UInt8 bOptFlags; // 1; bitfield of dlpCloseDBExOptFlag... flags
+ // TOTAL: 2 bytes
+ } DlpCloseDBExReqType;
+
+// Option flags
+#define dlpCloseDBExOptFlagUpdateBackupDate 0x80 // Update the backup date after closing
+#define dlpCloseDBExOptFlagUpdateModDate 0x40 // Update the modification date after closing
+
+
+#define dlpCloseDBExOptAllFlags (dlpCloseDBExOptFlagUpdateBackupDate | dlpCloseDBExOptFlagUpdateModDate)
+
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpDeleteDB
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrParam,
+// dlpRespErrNotFound,
+// dlpRespErrCantOpen,
+// dlpRespErrDatabaseOpen
+
+// Request argument structure:
+//
+#define dlpDeleteDBReqArgID dlpFirstArgID
+
+typedef struct DlpDeleteDBReqHdrType {
+ // OFFSET
+ UInt8 cardNo; // 0; memory module number
+ UInt8 unused; // 1; unused -- set to null!
+ // TOTAL: 2 bytes;
+ } DlpDeleteDBReqHdrType;
+
+
+typedef struct DlpDeleteDBReqType {
+ // OFFSET
+ DlpDeleteDBReqHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 2 bytes;
+ UInt8 name[2]; // 2; databse name text -- var size
+ // zero-terminated
+ } DlpDeleteDBReqType;
+
+typedef DlpDeleteDBReqType* DlpDeleteDBReqPtr;
+
+
+// Response argument structure:
+//
+// none.
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadOpenDBInfo
+//////////////////////////////////////////////////////////////////////////
+// Get information on an open database
+//
+// Possible error codes
+// dlpRespErrNoneOpen
+// dlpRespErrParam
+
+// Request argument structure:
+//
+#define dlpReadOpenDBInfoArgID dlpFirstArgID
+
+// The request argument is the 1-byte database ID returned in open/create
+// DB responses.
+
+
+// Response argument structure:
+//
+#define dlpReadOpenDBInfoRespArgID dlpFirstArgID
+
+
+typedef struct DlpReadOpenDBInfoRespType {
+ // OFFSET
+ UInt16 numRec; // 0; number of records or resources
+ // TOTAL: 2 bytes
+ } DlpReadOpenDBInfoRespType;
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpMoveCategory
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrNoneOpen
+// dlpRespErrParam
+// dlpRespErrNotSupported
+// dlpRespErrReadOnly
+
+// Request argument structure:
+//
+#define dlpMoveCategoryReqArgID dlpFirstArgID
+
+typedef struct DlpMoveCategoryReqType {
+ // OFFSET
+ UInt8 dbID; // 0; database id
+ UInt8 fromCategory; // 1; id of the "from" category
+ UInt8 toCategory; // 2; id of the "to" category
+ UInt8 unused; // 3; unused -- set to null!
+ // TOTAL: 4 bytes;
+ } DlpMoveCategoryReqType;
+
+
+// Response argument structure:
+//
+// none.
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadAppBlock
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrMemory,
+// dlpRespErrNotFound
+// dlpRespErrNoneOpen
+// dlpRespErrParam
+
+// Request argument structure:
+//
+#define dlpReadBlockReqArgID dlpFirstArgID
+
+typedef struct DlpReadBlockReqType {
+ // OFFSET
+ UInt8 dbID; // 0; database id
+ UInt8 unused; // 1; unused -- set to null!
+ UInt16 offset; // 2; offset into the block
+ UInt16 numBytes; // 4; number of bytes to read starting
+ // at offset(-1 = to the end)
+ // TOTAL: 6 bytes;
+ } DlpReadBlockReqType;
+
+
+// Response argument structure:
+//
+#define dlpReadBlockRespArgID dlpFirstArgID
+
+typedef struct DlpReadBlockRespHdrType {
+ // OFFSET
+ UInt16 blockSize; // 0; actual block size -- may be greater
+ // than the amount of data returned
+ // TOTAL: 2 bytes
+ } DlpReadBlockRespHdrType;
+
+typedef struct DlpReadBlockRespType {
+ // OFFSET
+ DlpReadBlockRespHdrType //
+ header; // 0; fixed size header
+ // FIXED SIZE: 2 bytes
+ UInt8 data[2]; // 2; block data -- var size
+ } DlpReadBlockRespType;
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpWriteAppBlock
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrParam,
+// dlpRespErrReadOnly
+// dlpRespErrNotEnoughSpace
+// dlpRespErrNoneOpen
+
+// Request argument structure:
+//
+#define dlpWriteBlockReqArgID dlpFirstArgID
+
+typedef struct DlpWriteBlockReqHdrType {
+ // OFFSET
+ UInt8 dbID; // 0; database id
+ UInt8 unused; // 1; unused -- set to null!
+ UInt16 blockSize; // 2; total block size(0 = free existing block)
+ // TOTAL: 4 bytes;
+ } DlpWriteBlockReqHdrType;
+
+
+typedef struct DlpWriteBlockReqType {
+ // OFFSET
+ DlpWriteBlockReqHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 4 bytes;
+ UInt8 data[2]; // 4; block data -- var size
+ } DlpWriteBlockReqType;
+
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadSortBlock
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrMemory
+// dlpRespErrNotFound
+// dlpRespErrNoneOpen
+
+// Request argument structure:
+//
+// see dlpReadAppBlock
+
+
+// Response argument structure:
+//
+// see dlpReadAppBlock
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpWriteSortBlock
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrMemory,
+// dlpRespErrParam,
+// dlpRespErrNoneOpen
+
+// Request argument structure:
+//
+// see dlpWriteAppBlock
+
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadNextModifiedRec
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// see dlpReadRecord
+//
+
+// Request argument structure:
+//
+#define dlpReadNextModRecReqArgID dlpFirstArgID
+// The request argument is the 1-byte database ID returned in open/create
+// DB responses.
+
+
+// Response argument structure:
+//
+// Response argument id = dlpReadRecordRespArgID
+
+// Response argument structure = DlpReadRecordRespType
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpResetRecordIndex
+//////////////////////////////////////////////////////////////////////////
+// Resets the "next modified record" index to the beginning
+//
+// Possible error codes
+// dlpRespErrParam
+// dlpRespErrNoneOpen
+
+// Request argument structure:
+//
+#define dlpResetRecordIndexReqArgID dlpFirstArgID
+
+// The request argument is the 1-byte database ID returned in open/create
+// DB responses.
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadRecord
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrNotSupported,
+// dlpRespErrSystem,
+// dlpRespErrMemory,
+// dlpRespErrParam,
+// dlpRespErrNotFound,
+// dlpRespErrRecordBusy,
+// dlpRespErrNoneOpen
+
+typedef enum {
+ dlpReadRecordIdArgID = dlpFirstArgID,
+ dlpReadRecordIndexArgID
+ } DlpReadRecordReqArgID;
+
+// dlpReadRecordIdArgID request argument structure:
+//
+typedef struct DlpReadRecordByIDReqType {
+ // OFFSET
+ UInt8 dbID; // 0; database id
+ UInt8 unused; // 1; unused -- set to null!
+ UInt32 recordID; // 2; unique record id
+ UInt16 offset; // 6; offset into the record
+ UInt16 numBytes; // 8; number of bytes to read starting
+ // at the offset(-1 = "to the end")
+ // TOTAL: 10 bytes;
+ } DlpReadRecordByIDReqType;
+
+// dlpReadRecordIndexArgID request argument structure:
+//
+typedef struct DlpReadRecordByIndexReqType {
+ // OFFSET
+ UInt8 dbID; // 0; database id
+ UInt8 unused; // 1; unused -- set to null!
+ UInt16 index; // 2; record index
+ UInt16 offset; // 4; offset into the record
+ UInt16 numBytes; // 6; number of bytes to read starting
+ // at the offset(-1 = "to the end")
+ // TOTAL: 8 bytes;
+ } DlpReadRecordByIndexReqType;
+
+
+// Response argument structure:
+//
+#define dlpReadRecordRespArgID dlpFirstArgID
+
+typedef struct DlpReadRecordRespHdrType {
+ // OFFSET
+ UInt32 recordID; // 0; unique record id
+ UInt16 index; // 4; record index
+ UInt16 recSize; // 6; total record size in bytes
+ UInt8 attributes; // 8; record attributes
+ UInt8 category; // 9; record category index
+ // TOTAL: 10 bytes;
+ } DlpReadRecordRespHdrType;
+
+typedef struct DlpReadRecordRespType {
+ // OFFSET
+ DlpReadRecordRespHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 8 bytes;
+ UInt8 data[2]; // 8; record data -- var size
+ } DlpReadRecordRespType;
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadRecordIDList
+//////////////////////////////////////////////////////////////////////////
+// Returns a list of unique record id's. May need to call more than once
+// to get the entire list. dlpRespErrNotFound is returned when "start"
+// is out of bounds
+//
+// Possible error codes
+// dlpRespErrNotSupported,
+// dlpRespErrParam,
+// dlpRespErrNotFound,
+// dlpRespErrNoneOpen
+
+#define dlpReadRecordIDListReqArgID dlpFirstArgID
+
+// dlpReadRecordIDListReqArgID request argument structure:
+//
+typedef struct DlpReadRecordIDListReqType {
+ // OFFSET
+ UInt8 dbID; // 0; database id
+ UInt8 flags; // 1; request flags
+ UInt16 start; // 2; starting record index (0-based)
+ UInt16 maxEntries; // 4; maximum number of entries, or
+ // 0xFFFF to return as many as possible
+ // TOTAL: 6 bytes;
+ } DlpReadRecordIDListReqType;
+
+// dlpReadRecordIDListFlagSortDB: if set, DL Server will call the creator
+// application to resort the database before returning the list.
+#define dlpReadRecordIDListFlagSortDB 0x80
+
+
+// Response argument structure:
+//
+#define dlpReadRecordIDListRespArgID dlpFirstArgID
+
+typedef struct DlpReadRecordIDListRespHdrType {
+ // OFFSET
+ UInt16 numEntries; // 0; number of entries returned
+ // TOTAL: 2 bytes;
+ } DlpReadRecordIDListRespHdrType;
+
+typedef struct DlpReadRecordIDListRespType {
+ // OFFSET
+ DlpReadRecordIDListRespHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 2 bytes;
+ UInt32 recID[1]; // 8; list of record id's -- var size
+ } DlpReadRecordIDListRespType;
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpWriteRecord
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrParam,
+// dlpRespErrNotFound
+// dlpRespErrNotEnoughSpace
+// dlpRespErrNotSupported
+// dlpRespErrReadOnly
+// dlpRespErrNoneOpen
+
+// Request argument structure:
+//
+#define dlpWriteRecordReqArgID dlpFirstArgID
+
+// dlpWriteRecordReqArgID -- required
+typedef struct DlpWriteRecordReqHdrType {
+ // OFFSET
+ UInt8 dbID; // 0; database id
+ UInt8 flags; // 1; set unused bits to null!
+ UInt32 recordID; // 2; unique record id or null
+ UInt8 attributes; // 6; record attributes -- only
+ // dlpRecAttrSecret is allowed here
+ // v1.1 extension:
+ // dlpRecAttrDeleted, dlpRecAttrArchived and
+ // dlpRecAttrDirty are also allowed.
+ UInt8 category; // 7; record category
+ // TOTAL: 8 bytes;
+ } DlpWriteRecordReqHdrType;
+
+#define dlpWriteRecordReqFlagDataIncluded 0x80 // original implementer of destop software always
+ // set this bit. Define it here for compatibility
+
+typedef struct DlpWriteRecordReqType {
+ // OFFSET
+ DlpWriteRecordReqHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 8 bytes;
+ UInt8 data[2]; // 8; record data -- var size
+ } DlpWriteRecordReqType;
+
+
+// Response argument structure:
+//
+#define dlpWriteRecordRespArgID dlpFirstArgID
+
+typedef struct DlpWriteRecordRespType {
+ // OFFSET
+ UInt32 recordID; // 0; record ID
+ // TOTAL: 4 bytes
+ } DlpWriteRecordRespType;
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpDeleteRecord
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrParam,
+// dlpRespErrNotFound
+// dlpRespErrNotSupported
+// dlpRespErrReadOnly
+// dlpRespErrNoneOpen
+//
+
+// Request argument structure:
+//
+#define dlpDeleteRecordReqArgID dlpFirstArgID
+
+// Argument structure to delete by record ID(dlpDeleteRecordReqIDArgID):
+typedef struct DlpDeleteRecordReqType {
+ // OFFSET
+ UInt8 dbID; // 0; database id
+ UInt8 flags; // 1; flags (dlpDeleteRecFlagDeleteAll)
+ UInt32 recordID; // 2; unique record id (see flags)
+ // TOTAL: 6 bytes;
+ } DlpDeleteRecordReqType;
+
+// dlpDeleteRecFlagDeleteAll: if this flag is set, the reocordID field
+// is ignored and all database records will be deleted
+#define dlpDeleteRecFlagDeleteAll 0x80
+
+// dlpDeleteRecFlagByCategory: if this flag is set, the least significant byte
+// of the reocordID field contains the category id of records to be deleted (PalmOS 2.0)
+#define dlpDeleteRecFlagByCategory 0x40
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadResource
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrParam,
+// dlpRespErrNotFound
+// dlpRespErrNoneOpen
+
+typedef enum {
+ dlpReadResourceIndexArgID = dlpFirstArgID,
+ dlpReadResourceTypeArgID
+ } DlpReadResourceReqArgID;
+
+// dlpReadResourceIndexArgID request argument structure:
+//
+typedef struct DlpReadResourceByIndexReqType {
+ // OFFSET
+ UInt8 dbID; // 0; database id
+ UInt8 unused; // 1; unused -- set to null!
+ UInt16 index; // 2; resource index
+ UInt16 offset; // 4; offset into the resource
+ UInt16 numBytes; // 6; number of bytes to read starting
+ // at the offset(-1 = "to the end")
+ // TOTAL: 8 bytes;
+ } DlpReadResourceByIndexReqType;
+
+// dlpReadResourceTypeArgID request argument structure:
+//
+typedef struct DlpReadResourceByTypeReqType {
+ // OFFSET
+ UInt8 dbID; // 0; database id
+ UInt8 unused; // 1; unused -- set to null!
+ UInt32 type; // 2; resource type
+ UInt16 id; // 6; resource id
+ UInt16 offset; // 8; offset into the resource
+ UInt16 numBytes; // 10; number of bytes to read starting
+ // at the offset(-1 = "to the end")
+ // TOTAL: 12 bytes;
+ } DlpReadResourceByTypeReqType;
+
+
+// Response argument structure:
+//
+#define dlpReadResourceRespArgID dlpFirstArgID
+
+typedef struct DlpReadResourceRespHdrType {
+ // OFFSET
+ UInt32 type; // 0; resource type
+ UInt16 id; // 4; resource id
+ UInt16 index; // 6; resource index
+ UInt16 resSize; // 8; total resource size in bytes
+ // TOTAL: 10 bytes;
+ } DlpReadResourceRespHdrType;
+
+typedef struct DlpReadResourceRespType {
+ // OFFSET
+ DlpReadResourceRespHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 6 bytes;
+ UInt8 resData[2]; // 6; resource data -- var size
+ } DlpReadResourceRespType;
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpWriteResource
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrNotEnoughSpace,
+// dlpRespErrParam,
+// dlpRespErrNoneOpen
+
+// Request argument structure:
+//
+#define dlpWriteResourceReqArgID dlpFirstArgID
+
+typedef struct DlpWriteResourceReqHdrType {
+ // OFFSET
+ UInt8 dbID; // 0; database id
+ UInt8 unused; // 1; inused -- set to null!
+ UInt32 type; // 2; resource type
+ UInt16 id; // 6; resource id
+ UInt16 resSize; // 8; total resource size
+ // TOTAL: 10 bytes;
+ } DlpWriteResourceReqHdrType;
+
+typedef struct DlpWriteResourceReqType {
+ // OFFSET
+ DlpWriteResourceReqHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 10 bytes;
+ UInt8 data[2]; // 10; resource data -- var size
+ } DlpWriteResourceReqType;
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpDeleteResource
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrParam,
+// dlpRespErrNotFound
+// dlpRespErrNotSupported
+// dlpRespErrReadOnly
+// dlpRespErrNoneOpen
+
+// Request argument structure:
+//
+#define dlpDeleteResourceReqArgID dlpFirstArgID
+
+typedef struct DlpDeleteResourceReqType {
+ // OFFSET
+ UInt8 dbID; // 0; database id
+ UInt8 flags; // 1; flags (dlpDeleteResFlagDeleteAll)
+ UInt32 type; // 2; resource type
+ UInt16 id; // 6; resource id
+ // TOTAL: 8 bytes;
+ } DlpDeleteResourceReqType;
+
+// dlpDeleteResFlagDeleteAll: if set, all resources in the db will be deleted
+#define dlpDeleteResFlagDeleteAll 0x80
+
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpCleanUpDatabase
+//////////////////////////////////////////////////////////////////////////
+// Deletes all records which are marked as archived or deleted in the
+// record database
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrParam,
+// dlpRespErrReadOnly,
+// dlpRespErrNotSupported
+// dlpRespErrNoneOpen
+
+// Request argument structure:
+//
+#define dlpCleanUpDatabaseReqArgID dlpFirstArgID
+
+// The request argument is the 1-byte database ID returned in open/create
+// DB responses.
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpResetSyncFlags
+//////////////////////////////////////////////////////////////////////////
+// For record databases, reset all dirty flags.
+// For both record and resource databases, set the last sync time to NOW
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrParam
+// dlpRespErrReadOnly,
+// dlpRespErrNoneOpen
+
+// Request argument structure:
+//
+#define dlpResetSyncFlagsReqArgID dlpFirstArgID
+
+// The request argument is the 1-byte database ID returned in open/create
+// DB responses.
+
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpCallApplication
+//////////////////////////////////////////////////////////////////////////
+// Call an application entry point via an action code
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrMemory,
+// dlpRespErrParam,
+// dlpRespErrNotFound
+
+// Request argument structure:
+//
+enum {
+ dlpCallApplicationReqArgIDV10 = dlpFirstArgID, // req id for Pilot v1.0
+ dlpCallAppReqArgID // req id for Pilot v2.0 and later
+ };
+
+// dlpCallApplicationReqArgIDV10:
+typedef struct DlpCallApplicationReqHdrTypeV10 {
+ // OFFSET
+ UInt32 creator; // 0; app DB creator id
+ UInt16 action; // 4; action code
+ UInt16 paramSize; // 6; custom param size
+ // TOTAL: 8 bytes
+ } DlpCallApplicationReqHdrTypeV10;
+
+typedef struct DlpCallApplicationReqTypeV10 {
+ // OFFSET
+ DlpCallApplicationReqHdrTypeV10 //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 8 bytes
+ UInt8 paramData[2]; // 8; custom param data -- var size
+ } DlpCallApplicationReqTypeV10;
+
+
+// dlpCallAppReqArgID (Pilot v2.0):
+typedef struct DlpCallAppReqHdrType {
+ // OFFSET
+ UInt32 creator; // 0; DB creator id of target executable
+ UInt32 type; // 4; DB type id of target executable
+ UInt16 action; // 8; action code
+ UInt32 dwParamSize; // 10; custom param size in number of bytes
+ UInt32 dwReserved1; // 14; RESERVED -- set to NULL!!!
+ UInt32 dwReserved2; // 18; RESERVED -- set to NULL!!!
+ // TOTAL: 22 bytes
+ } DlpCallAppReqHdrType;
+
+typedef struct DlpCallAppReqType {
+ // OFFSET
+ DlpCallAppReqHdrType //
+ hdr; // 0; fixed-size header
+ // FIXED SIZE: 22 bytes
+ UInt8 paramData[2]; // 22; custom param data -- var size
+ } DlpCallAppReqType;
+
+
+
+// Response argument structure:
+//
+enum {
+ dlpCallApplicationRespArgIDV10 = dlpFirstArgID, // resp id for Pilot v1.0
+ dlpCallAppRespArgID // resp id for Pilot v2.0 and later
+ };
+
+// dlpCallApplicationRespArgIDV10:
+typedef struct DlpCallApplicationRespHdrTypeV10 {
+ // OFFSET
+ UInt16 action; // 0; action code which was called
+ UInt16 resultCode; // 2; result error code returned by action
+ UInt16 resultSize; // 4; custom result data size
+ // TOTAL: 6 bytes
+ } DlpCallApplicationRespHdrTypeV10;
+
+typedef struct DlpCallApplicationRespTypeV10 {
+ // OFFSET
+ DlpCallApplicationRespHdrTypeV10 //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 6 bytes
+ UInt8 resultData[2]; // 6; custom result data -- var size
+ } DlpCallApplicationRespTypeV10;
+
+// dlpCallAppRespArgID:
+typedef struct DlpCallAppRespHdrType {
+ // OFFSET
+ UInt32 dwResultCode; // 0; result error code returned by handler
+ UInt32 dwResultSize; // 4; custom result data size
+ UInt32 dwReserved1; // 8; RESERVED -- SET TO NULL!!!
+ UInt32 dwReserved2; // 12; RESERVED -- SET TO NULL!!!
+ // TOTAL: 16 bytes
+ } DlpCallAppRespHdrType;
+
+typedef struct DlpCallAppRespType {
+ // OFFSET
+ DlpCallAppRespHdrType //
+ hdr; // 0; fixed-size header
+ // FIXED SIZE: 16 bytes
+ UInt8 resultData[2]; // 16; custom result data -- var size
+ } DlpCallAppRespType;
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpResetSystem
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem
+
+// Request argument structure:
+//
+// none.
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpAddSyncLogEntry
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrNotEnoughSpace,
+// dlpRespErrLimitExceeded,
+// dlpRespErrParam
+
+// Request argument structure:
+//
+#define dlpAddSyncLogEntryReqArgID dlpFirstArgID
+
+typedef struct DlpAddSyncLogEntryReqType {
+ // OFFSET
+ UInt8 text[2]; // 0; entry text -- var size and
+ // null-terminated
+ } DlpAddSyncLogEntryReqType;
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpProcessRPC
+//////////////////////////////////////////////////////////////////////////
+// Remote Procedure Call interface
+//
+// Request arguments:
+// RPC command block
+//
+// Response arguments:
+// RPC reply block
+//
+// Possible error codes
+// 0 on success; otherwise error code from the TouchDown
+// RPC executor
+//
+// NOTE: this is a low-level system command which does not use arg wrappers.
+
+// Request argument structure:
+//
+// Block of RPC command data (no arg wrapper)
+
+// Response argument structure:
+//
+// Block of RPC reply data of same length as command block(no arg wrapper)
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpOpenConduit
+//////////////////////////////////////////////////////////////////////////
+// This command is sent before each conduit is opened by the desktop.
+// If the viewer has a cancel pending, it will return dlpRespErrCancelSync
+// in the response header's errorCode field.
+//
+// Request arguments: none.
+//
+// Response arguments: none.
+//
+// Possible error codes
+// dlpRespErrCancelSync
+
+// Request argument structure:
+//
+// none.
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpEndOfSync
+//////////////////////////////////////////////////////////////////////////
+// This command is sent by the desktop to end the sync.
+//
+// Request arguments: termination code: 0 = normal termination;
+// otherwise the client is aborting the sync
+//
+// Possible error codes
+// 0
+
+// Request argument structure:
+//
+#define dlpEndOfSyncReqArgID dlpFirstArgID
+
+typedef enum DlpSyncTermCode {
+ dlpTermCodeNormal = 0, // normal termination
+ dlpTermCodeOutOfMemory, // termination due to low memory on TD
+ dlpTermCodeUserCan, // user cancelled from desktop
+ dlpTermCodeOther, // catch-all abnormal termination code
+ dlpTermCodeIncompatibleProducts // incompatibility between desktop and handheld hotsync products
+ } DlpSyncTermCode;
+
+
+typedef struct DlpEndOfSyncReqType {
+ // OFFSET
+ UInt16 termCode; // 0; termination code
+ // TOTAL: 2 bytes
+ } DlpEndOfSyncReqType;
+
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadNextRecInCategory
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// see dlpReadRecord
+
+#define dlpReadNextRecInCategoryReqArgID dlpFirstArgID
+
+// dlpReadNextRecInCategoryReqArgID request argument structure:
+//
+typedef struct DlpReadNextRecInCategoryReqType {
+ // OFFSET
+ UInt8 dbID; // 0; database id
+ UInt8 category; // 1; category id
+ // TOTAL: 2 bytes;
+ } DlpReadNextRecInCategoryReqType;
+
+
+// Response argument structure:
+//
+// Response argument id = dlpReadRecordRespArgID
+
+// Response argument structure = DlpReadRecordRespType
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadNextModifiedRecInCategory
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// see dlpReadNextRecInCategory
+
+// Request argument structure:
+//
+// same as dlpReadNextRecInCategory
+
+// Response argument structure:
+//
+// same as dlpReadNextRecInCategory
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadAppPreference
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrMemory,
+// dlpRespErrParam,
+// dlpRespErrNotFound,
+
+#define dlpReadAppPreferenceReqArgID dlpFirstArgID
+
+// dlpReadAppPreferenceReqArgID request argument structure:
+//
+typedef struct DlpReadAppPreferenceReqType {
+ // OFFSET
+ UInt32 creator; // 0; application creator type
+ UInt16 id; // 4; preference id
+ UInt16 reqBytes; // 6; max. number of preference bytes requested;
+ // pass 0xFFFF for actual size
+ UInt8 flags; // 8; command flags: dlpAppPrefReqFlagBackedUp - if set, use backed-up pref db
+ UInt8 unused; // 9; reserved/padding -- set to NUL!
+ // TOTAL: 10 bytes;
+ } DlpReadAppPreferenceReqType;
+
+#define dlpReadAppPrefActualSize 0xFFFF
+#define dlpAppPrefReqFlagBackedUp 0x80
+
+// Response argument structure:
+//
+#define dlpReadAppPreferenceRespArgID dlpFirstArgID
+
+typedef struct DlpReadAppPreferenceRespHdrType {
+ // OFFSET
+ UInt16 version; // 0; version number of the application
+ UInt16 actualSize; // 2; actual preference data size
+ UInt16 retBytes; // 4; number of preference bytes returned
+ // TOTAL: 6 bytes
+ } DlpReadAppPreferenceRespHdrType;
+
+typedef struct DlpReadAppPreferenceRespType {
+ // OFFSET
+ DlpReadAppPreferenceRespHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 6 bytes
+ UInt8 data[2]; // 6; custom result data -- var size
+ } DlpReadAppPreferenceRespType;
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpWriteAppPreference
+//////////////////////////////////////////////////////////////////////////
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrParam,
+// dlpRespErrNotEnoughSpace
+
+// Request argument structure:
+//
+#define dlpWriteAppPreferenceReqArgID dlpFirstArgID
+
+typedef struct DlpWriteAppPreferenceReqHdrType {
+ // OFFSET
+ UInt32 creator; // 0; application creator type
+ UInt16 id; // 4; preference id
+ UInt16 version; // 6; version number of the application
+ UInt16 prefSize; // 8; preference size(in number of bytes)
+ UInt8 flags; // 10; command flags: dlpAppPrefReqFlagBackedUp - if set, use backed-up pref db
+ UInt8 unused; // 11; reserved/padding -- set to NUL!
+ // TOTAL: 12 bytes;
+ } DlpWriteAppPreferenceReqHdrType;
+
+typedef struct DlpWriteAppPreferenceReqType {
+ // OFFSET
+ DlpWriteAppPreferenceReqHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 12 bytes;
+ UInt8 data[2]; // 12; record data -- var size
+ } DlpWriteAppPreferenceReqType;
+
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadNetSyncInfo
+//////////////////////////////////////////////////////////////////////////
+// Request arguments: none
+//
+// Response arguments:
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrMemory
+
+// Request argument structure:
+//
+// none.
+
+// Response argument structure:
+//
+#define dlpReadNetSyncInfoRespArgID dlpFirstArgID
+
+typedef struct DlpReadNetSyncInfoRespHdrType {
+ // OFFSET
+ UInt8 lanSyncOn; // 0; non-zero if Lan Sync is enabled
+ UInt8 bReserved1; // 1; reserved -- SET TO NULL!
+ UInt32 dwReserved1; // 2; reserved -- SET TO NULL!
+ UInt32 dwReserved2; // 6; reserved -- SET TO NULL!
+ UInt32 dwReserved3; // 10; reserved -- SET TO NULL!
+ UInt32 dwReserved4; // 14; reserved -- SET TO NULL!
+ UInt16 syncPCNameSize;// 18; length of sync PC host name,
+ // including null (0 = no host name)
+ UInt16 syncPCAddrSize;// 20; length of sync PC address,
+ // including null (0 = no address)
+ UInt16 syncPCMaskSize;// 22; length of sync PC subnet mask,
+ // including null (0 = no mask)
+ // TOTAL: 24 bytes
+ } DlpReadNetSyncInfoRespHdrType;
+
+typedef struct DlpReadNetSyncInfoRespType {
+ // OFFSET
+ DlpReadNetSyncInfoRespHdrType //
+ hdr; // 0; fixed-size header
+ // FIXED SIZE: 24 bytes
+ UInt8 syncAddr[2]; // 24; sync IP address/host name -- var size,
+ // null-terminated
+ } DlpReadNetSyncInfoRespType;
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpWriteNetSyncInfo
+//////////////////////////////////////////////////////////////////////////
+// Request arguments:
+//
+// Response arguments: none
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrNotEnoughSpace,
+// dlpRespErrParam
+
+// Request argument structure:
+//
+#define dlpWriteNetSyncInfoReqArgID dlpFirstArgID
+
+#define dlpMaxHostAddrLength 255 // maximum PC host name length, not including NULL
+
+typedef struct DlpWriteNetSyncInfoReqHdrType {
+ // OFFSET
+ UInt8 modFlags; // 0; flags indicating which values are being
+ // modified; see the dlpNetSyncInfoMod...
+ // flags defined below
+ UInt8 lanSyncOn; // 1; non-zero if Lan Sync is enabled
+ UInt32 dwReserved1; // 2; reserved -- SET TO NULL!
+ UInt32 dwReserved2; // 6; reserved -- SET TO NULL!
+ UInt32 dwReserved3; // 10; reserved -- SET TO NULL!
+ UInt32 dwReserved4; // 14; reserved -- SET TO NULL!
+ UInt16 syncPCNameSize;// 18; length of sync PC host name,
+ // including null (0 = no address/host name)
+ UInt16 syncPCAddrSize;// 20; length of sync PC address,
+ // including null (0 = no address)
+ UInt16 syncPCMaskSize;// 22; length of sync PC subnet mask,
+ // including null (0 = no mask)
+ // TOTAL: 24 bytes
+ } DlpWriteNetSyncInfoReqHdrType;
+
+// Flags indicating which values are being changed by the dlpWriteNetSyncInfo
+// request. These flags are used in the modFlags field of DlpWriteNetSyncInfoReqHdrType.
+// These flags are additive.
+//
+#define dlpNetSyncInfoModLanSyncOn 0x80 // changing the "lan sync on" setting
+#define dlpNetSyncInfoModSyncPCName 0x40 // changing the sync PC host name
+#define dlpNetSyncInfoModSyncPCAddr 0x20 // changing the sync PC address
+#define dlpNetSyncInfoModSyncPCMask 0x10 // changing the sync PC subnet mask
+
+typedef struct DlpWriteNetSyncInfoReqType {
+ // OFFSET
+ DlpWriteNetSyncInfoReqHdrType
+ hdr; // 0; fixed-size header
+ // FIXED SIZE: 24 bytes
+ UInt8 syncAddr[2]; // 24; sync IP address/host name -- var size,
+ // null-terminated
+ } DlpWriteNetSyncInfoReqType;
+
+
+// Response argument structure:
+//
+// none.
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpReadFeature
+//////////////////////////////////////////////////////////////////////////
+// Request arguments:
+//
+// Response arguments:
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrNotFound,
+// dlpRespErrParam
+
+// Request argument structure:
+//
+#define dlpReadFeatureReqArgID dlpFirstArgID
+
+typedef struct DlpReadFeatureReqType {
+ // OFFSET
+ UInt32 dwFtrCreator; // 0; feature creator
+ UInt16 wFtrNum; // 4; feature number
+ // TOTAL: 6 bytes
+ } DlpReadFeatureReqType;
+
+
+// Response argument structure:
+//
+#define dlpReadFeatureRespArgID dlpFirstArgID
+
+typedef struct DlpReadFeatureRespType {
+ // OFFSET
+ UInt32 dwFeature; // 0; feature value
+ // TOTAL: 4 bytes
+ } DlpReadFeatureRespType;
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpFindDB
+//////////////////////////////////////////////////////////////////////////
+// Request arguments:
+//
+// Response arguments:
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrNotFound,
+// dlpRespErrParam
+
+// Request argument structure:
+//
+
+// dlpFindDBByNameReqArgID, dlpFindDBByTypeCreatorReqArgID and dlpFindDBByOpenHandleReqArgID
+// are mutually exclusive
+enum {
+ dlpFindDBByNameReqArgID = dlpFirstArgID, // req id for card + name based search
+ dlpFindDBByOpenHandleReqArgID, // req id for search given an open db handle
+ dlpFindDBByTypeCreatorReqArgID // req id for type + creator based iterative search
+ };
+
+// Option flags
+#define dlpFindDBOptFlagGetAttributes 0x80 // get database attributes -- this is
+ // an option to allow find operations to skip
+ // returning this data as a performance optimization
+
+#define dlpFindDBOptFlagGetSize 0x40 // get record count and data size also -- this is
+ // an option because the operation can take a long
+ // time, which we would rather avoid if it is not needed
+
+#define dlpFindDBOptFlagGetMaxRecSize 0x20 // get max rec/resource size -- this is
+ // an option because the operation can take a long
+ // time, which we would rather avoid if it is not needed
+ // (dlpFindDBOptFlagGetMaxRecSize is only supported for
+ // dlpFindDBByOpenHandleReqArgID)
+
+// Request type for dlpdlpFindDBByNameReqArgID:
+typedef struct DlpFindDBByNameReqHdrType {
+ // OFFSET
+ UInt8 bOptFlags; // 0; bitfield of dlpFindDBOptFlag... flags
+ UInt8 bCardNo; // 2; card number to search
+ // TOTAL: 4 bytes
+ } DlpFindDBByNameReqHdrType;
+
+typedef struct DlpFindDBByNameReqType {
+ // OFFSET
+ DlpFindDBByNameReqHdrType //
+ header; // 0; fixed size header
+ // FIXED SIZE: 4 bytes
+ UInt8 name[2]; // variable size -- zero-terminated database name string
+ } DlpFindDBByNameReqType;
+
+
+// Request type for dlpFindDBByOpenHandleReqArgID:
+typedef struct DlpFindDBByOpenHandleReqType {
+ // OFFSET
+ UInt8 bOptFlags; // 0; bitfield of dlpFindDBOptFlag... flags
+ UInt8 bDbID; // 1; database id returned by dlpOpenDB or dlpCreateDB
+ // TOTAL: 2 bytes
+ } DlpFindDBByOpenHandleReqType;
+
+
+// Request type for dlpFindDBByTypeCreatorReqArgID:
+typedef struct DlpFindDBByTypeCreatorReqType {
+ // OFFSET
+ UInt8 bOptFlags; // 0; bitfield of dlpFindDBOptFlag... flags
+ UInt8 bSrchFlags; // 1; bitfield of dlpFindDBSrchFlag... flags
+ UInt32 dwType; // 2; db type id (zero = wildcard)
+ UInt32 dwCreator; // 6; db creator id (zero = wildcard)
+ // TOTAL: 10 bytes
+ } DlpFindDBByTypeCreatorReqType;
+
+#define dlpFindDBSrchFlagNewSearch 0x80 // set to beging a new search
+#define dlpFindDBSrchFlagOnlyLatest 0x40 // set to search for the latest version
+
+
+
+// Response argument structures for dlpFindDBByNameReqArgID, dlpFindDBByOpenHandleReqArgID and
+// dlpFindDBByTypeCreatorReqArgID (if found):
+//
+enum {
+ dlpFindDBBasicRespArgID = dlpFirstArgID, // resp arg id for basic info
+ // (if dlpFindDBOptFlagGetAttributes is set)
+ dlpFindDBSizeRespArgID // resp arg id for size info
+ // (if dlpFindDBOptFlagGetSize or dlpFindDBOptFlagGetMaxRecSize
+ // are set)
+ };
+
+
+// dlpFindDBBasicRespArgID (returned only if dlpFindDBOptFlagGetAttributes is set):
+
+typedef struct DlpFindDBBasicRespHdrType {
+ // OFFSET
+ UInt8 bCardNo; // 0; card number of database
+ UInt8 bReserved; // 1; RESERVED -- SET TO NULL
+ UInt32 dwLocalID; // 2; local id of the database (for internal use)
+ UInt32 dwOpenRef; // 6; db open ref of the database if it is currently opened
+ // by the caller; zero otherwise (for internal use) can
+ // change after read record list
+ DlpDBInfoHdrType info; //10; database info (creator, type, flags, etc.) MUST BE LAST FIELD
+ // TOTAL: 54 bytes
+ } DlpFindDBBasicRespHdrType;
+
+typedef struct DlpFindDBBasicRespType {
+ // OFFSET
+ DlpFindDBBasicRespHdrType //
+ header; // 0; fixed-size header
+ // FIXED SIZE: 54 bytes
+ UInt8 name[2]; // variable size -- zero-terminated database name string
+ } DlpFindDBBasicRespType;
+
+
+
+// dlpFindDBSizeRespArgID (returned only if dlpFindDBOptFlagGetSize or dlpFindDBOptFlagGetMaxRecSize is set):
+
+typedef struct DlpFindDBSizeRespType {
+ // OFFSET
+
+ // Returned if dlpFindDBOptFlagGetSize is set for all queries:
+ // (otherwise, fields are set to zero)
+ UInt32 dwNumRecords; // 0; record/resource count
+ UInt32 dwTotalBytes; // 4; total bytes used by db
+ UInt32 dwDataBytes; // 8; bytes used for data
+
+ // Returned if dlpFindDBOptFlagGetSize is set for dlpFindDBByOpenHandleReqArgID only:
+ // (otherwise, fields are set to zero)
+ UInt32 dwAppBlkSize; //12; size of app info block size (for
+ // dlpFindDBByOpenHandleReqArgID only)
+ UInt32 dwSortBlkSize; //16; size of sort info block size(for
+ // dlpFindDBByOpenHandleReqArgID only)
+ //
+ // Returned if dlpFindDBOptFlagGetMaxRecSize is set for dlpFindDBByOpenHandleReqArgID only:
+ // (otherwise, field is set to zero)
+ UInt32 dwMaxRecSize; //20; size of largest record or resource in the database (for
+ // dlpFindDBByOpenHandleReqArgID + dlpFindDBOptFlagGetMaxRecSize only)
+ // TOTAL: 24 bytes
+ } DlpFindDBSizeRespType;
+
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// dlpSetDBInfo
+//////////////////////////////////////////////////////////////////////////
+// Request arguments:
+//
+// Response arguments:
+//
+// Possible error codes
+// dlpRespErrSystem,
+// dlpRespErrParam,
+// dlpRespErrNotFound
+// dlpRespErrNotEnoughSpace
+// dlpRespErrNotSupported
+// dlpRespErrReadOnly
+// dlpRespErrNoneOpen
+
+// Request argument structure:
+//
+
+enum {
+ dlpSetDBInfoReqArgID = dlpFirstArgID
+ };
+
+
+typedef struct DlpSetDBInfoReqHdrType {
+ // OFFSET
+ UInt8 dbID; // 0; database id returned by dlpOpenDB or dlpCreateDB
+ UInt8 bReserved; // 1; RESERVED -- SET TO NULL
+ UInt16 wClrDbFlags; // 2; flags to clear; allowed DB flags: dlpDBFlagAppInfoDirty,
+ // dlpDBFlagBackup, dlpDBFlagOKToInstallNewer,
+ // dlpDBFlagResetAfterInstall, dlpDBFlagCopyPrevention;
+ // 0 = don't change
+ UInt16 wSetDbFlags; // 4; flags to set; allowed DB flags: dlpDBFlagAppInfoDirty,
+ // dlpDBFlagBackup, dlpDBFlagOKToInstallNewer,
+ // dlpDBFlagResetAfterInstall, dlpDBFlagCopyPrevention;
+ // 0 = don't change
+ UInt16 wDbVersion; // 6; database version; dlpSetDBInfoNoVerChange = don't change
+ DlpDateTimeType crDate; // 8; creation date; zero year = don't change
+ DlpDateTimeType modDate; //16; modification date; zero year = don't change
+ DlpDateTimeType bckUpDate; //24; backup date; zero year = don't change
+ UInt32 dwType; //32; database type id; zero = don't change
+ UInt32 dwCreator; //36; database creator id; zero = don't change
+ // TOTAL: 40 bytes
+ } DlpSetDBInfoReqHdrType;
+
+#define dlpSetDBInfoNoVerChange 0xFFFF
+
+typedef struct DlpSetDBInfoReqType {
+ // OFFSET
+ DlpSetDBInfoReqHdrType //
+ header; // 0; fixed size header
+ // FIXED SIZE: 40 bytes
+ UInt8 name[2]; // variable size -- zero-terminated database name string
+ } DlpSetDBInfoReqType;
+
+
+// Response argument structure:
+//
+// none.
+
+
+
+/************************************************************
+ * Macros
+ *************************************************************/
+
+
+#endif // __DLCOMMON_H__