|
|
/*
|
|
|
* $Id: pi-dlp.h,v 1.76 2006/10/17 13:24:06 desrod Exp $
|
|
|
*
|
|
|
* pi-dlp.h: Desktop Link Protocol implementation (ala SLP)
|
|
|
*
|
|
|
* This library is free software; you can redistribute it and/or modify it
|
|
|
* under the terms of the GNU Library General Public License as published by
|
|
|
* the Free Software Foundation; either version 2 of the License, or (at
|
|
|
* your option) any later version.
|
|
|
*
|
|
|
* This library is distributed in the hope that it will be useful, but
|
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
|
|
|
* General Public License for more details.
|
|
|
*
|
|
|
* You should have received a copy of the GNU Library General Public License
|
|
|
* along with this library; if not, write to the Free Software Foundation,
|
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
*/
|
|
|
|
|
|
/** @file pi-dlp.h
|
|
|
* @brief Direct protocol interface to the device using the HotSync protocol.
|
|
|
*
|
|
|
* The DLP layer is the lowest interface layer applications can use to
|
|
|
* access a handheld. It provides equivalents to Palm Conduit Development
|
|
|
* Kit (CDK)'s SyncXXX functions, as well as a number of convenience
|
|
|
* functions that are not found in the CDK.
|
|
|
*
|
|
|
* Once you have a socket number and a device is connected, you can start
|
|
|
* using DLP calls to talk with the device. All DLP calls are @b
|
|
|
* synchronous: they are immediately sent to the device and the current
|
|
|
* thread is blocked until either a response is received, or an error
|
|
|
* occurs.
|
|
|
*
|
|
|
* It is a good pratice to always check errors returned by DLP calls.
|
|
|
* Usually, if the value is nagative, it is an error code. If the error is
|
|
|
* #PI_ERR_DLP_PALMOS, an error code was returned by the device itself: you
|
|
|
* can get this error code by calling pi_palmos_error() on the current
|
|
|
* socket. Besides all the Palm OS error code defined in Palm's
|
|
|
* documentation, there are a few values between #dlpErrNoError and
|
|
|
* #dlpErrUnknown which are error returned by the DLP layer itself on the
|
|
|
* device.
|
|
|
*
|
|
|
* The DLP protocol is the low level protocol that HotSync uses. Over the
|
|
|
* years, there have been several iterations of DLP. Pre-Palm OS 5 devices
|
|
|
* have DLP 1.2 or lower. Palm OS 5 devices have DLP 1.3 or 1.4 (Palm OS 5.2
|
|
|
* and up). Cobalt (Palm OS 6) uses DLP 2.1.
|
|
|
*
|
|
|
* Devices with DLP 1.4 and later are known to support transfers of large
|
|
|
* records and resources (of size bigger than 64k). This is the case of the
|
|
|
* Tapwave Zodiac, for example.
|
|
|
*
|
|
|
* Note that some devices report an incorrect version of DLP. Some Palm OS 5
|
|
|
* devices report using DLP 1.2 whereas they really support DLP 1.3.
|
|
|
*
|
|
|
* Depending on which devices you plan on being compatible with, you should adjust
|
|
|
* #PI_DLP_VERSION_MAJOR and #PI_DLP_VERSION_MINOR. If you want to support
|
|
|
* devices up to and including Palm OS 5, setting your DLP version to 1.4 is
|
|
|
* a good idea. If you want to be able to connect to Palm OS 6, you need to
|
|
|
* set your DLP version to 2.1.
|
|
|
*/
|
|
|
|
|
|
#ifndef _PILOT_DLP_H_
|
|
|
#define _PILOT_DLP_H_
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
extern "C" {
|
|
|
#endif
|
|
|
|
|
|
#include <unistd.h>
|
|
|
|
|
|
#include "pi-macros.h" /* For recordid_t */
|
|
|
#include "pi-buffer.h" /* For pi_buffer_t */
|
|
|
#include "pi-error.h" /* For PI_ERR */
|
|
|
|
|
|
/* version of the DLP protocol supported in this version */
|
|
|
/* Hint for existing versions:
|
|
|
* 1.2: Palm OS 4 / Palm OS 5 (OS 5 should be 1.3 but incorrectly reports 1.2)
|
|
|
* 1.4: TapWave Palm OS 5
|
|
|
* 2.1: Palm OS 6
|
|
|
*/
|
|
|
#define PI_DLP_VERSION_MAJOR 1 /**< Major DLP protocol version we report to the device. */
|
|
|
#define PI_DLP_VERSION_MINOR 4 /**< Minor DLP protocol version we report to the device. */
|
|
|
|
|
|
#ifndef SWIG
|
|
|
#define DLP_BUF_SIZE 0xffff /**< Kept for compatibility, applications should avoid using this value. */
|
|
|
#endif /* !SWIG */
|
|
|
|
|
|
/** @name Internal definitions used to assemble DLP calls */
|
|
|
/*@{*/
|
|
|
#ifndef SWIG
|
|
|
#define PI_DLP_OFFSET_CMD 0
|
|
|
#define PI_DLP_OFFSET_ARGC 1
|
|
|
#define PI_DLP_OFFSET_ARGV 2
|
|
|
|
|
|
#define PI_DLP_ARG_TINY_LEN 0x000000FFL
|
|
|
#define PI_DLP_ARG_SHORT_LEN 0x0000FFFFL
|
|
|
#define PI_DLP_ARG_LONG_LEN 0xFFFFFFFFL
|
|
|
|
|
|
#define PI_DLP_ARG_FLAG_TINY 0x00
|
|
|
#define PI_DLP_ARG_FLAG_SHORT 0x80
|
|
|
#define PI_DLP_ARG_FLAG_LONG 0x40
|
|
|
#define PI_DLP_ARG_FLAG_MASK 0xC0
|
|
|
|
|
|
#define PI_DLP_ARG_FIRST_ID 0x20
|
|
|
#endif /* !SWIG */
|
|
|
/*@}*/
|
|
|
|
|
|
/** @name VFS definitions */
|
|
|
/*@{*/
|
|
|
#define vfsMountFlagsUseThisFileSystem 0x01 /**< Mount/Format the volume with the filesystem specified */
|
|
|
#define vfsMAXFILENAME 256 /**< The maximum size of a filename in a VFS volume */
|
|
|
#define vfsInvalidVolRef 0 /**< constant for an invalid volume reference, guaranteed not to represent a valid one. Use it like you would use NULL for a FILE*. */
|
|
|
#define vfsInvalidFileRef 0L /**< constant for an invalid file reference, guaranteed not to represent a valid one. Use it like you would use NULL for a FILE*. */
|
|
|
/*@}*/
|
|
|
|
|
|
typedef unsigned long FileRef; /**< Type for file references when working with VFS files and directories. */
|
|
|
|
|
|
/** @brief Information retrieved by dlp_VFSDirEntryEnumerate() */
|
|
|
struct VFSDirInfo {
|
|
|
unsigned long attr; /**< File or directory attributes (see VSF File attribute definitions) */
|
|
|
char name[vfsMAXFILENAME]; /**< File or directory name */
|
|
|
};
|
|
|
|
|
|
/** @brief Information used to format a volume with dlp_VFSVolumeFormat() */
|
|
|
struct VFSAnyMountParam {
|
|
|
unsigned short volRefNum;
|
|
|
unsigned short reserved;
|
|
|
unsigned long mountClass;
|
|
|
};
|
|
|
|
|
|
/** @brief Information used to format a volume with dlp_VFSVolumeFormat() */
|
|
|
struct VFSSlotMountParam {
|
|
|
struct VFSAnyMountParam vfsMountParam;
|
|
|
unsigned short slotLibRefNum;
|
|
|
unsigned short slotRefNum;
|
|
|
};
|
|
|
|
|
|
/** @brief Information about a VFS volume, returned by dlp_VFSVolumeInfo() */
|
|
|
struct VFSInfo {
|
|
|
/* 0: read-only etc. */
|
|
|
unsigned long attributes; /**< Volume attributes (see #dlpVFSVolumeAttributes enum) */
|
|
|
|
|
|
/* 4: Filesystem type for this volume (defined below).
|
|
|
These you can expect to see in devices:
|
|
|
'vfat' (FAT12/FAT16 with long name support)
|
|
|
|
|
|
Other values observed:
|
|
|
'twmf' (Tapwave Zodiac internal VFS)
|
|
|
|
|
|
PalmSource defines these, but don't bet on device support:
|
|
|
'afsu' (Andrew network filesystem)
|
|
|
'ext2' (Linux ext2 filesystem)
|
|
|
'fats' (FAT12/FAT16 with 8.3 names)
|
|
|
'ffsb' (BSD block-based filesystem)
|
|
|
'hfse' (Macintosh HFS+)
|
|
|
'hfss' (Macintosh HFS, pre-8.x)
|
|
|
'hpfs' (OS/2 High Performance Filesystem)
|
|
|
'mfso' (Original Macintosh filesystem)
|
|
|
'nfsu' (NFS mount)
|
|
|
'novl' (Novell filesystem)
|
|
|
'ntfs' (Windows NT filesystem)
|
|
|
*/
|
|
|
unsigned long fsType; /**< File system time (four-char code, see above) */
|
|
|
|
|
|
/* 8: Creator code of filesystem driver for this volume. */
|
|
|
unsigned long fsCreator; /**< File system creator (four-char code) */
|
|
|
|
|
|
/* For slot based filesystems: (mountClass = VFSMountClass_SlotDriver)
|
|
|
12: mount class that mounted this volume */
|
|
|
unsigned long mountClass; /**< Mount class */
|
|
|
|
|
|
/* 16: Library on which the volume is mounted */
|
|
|
int slotLibRefNum; /**< Slot library reference number */
|
|
|
|
|
|
/* 18: ExpMgr slot number of card containing volume */
|
|
|
int slotRefNum; /**< Expansion manager slot number */
|
|
|
|
|
|
/* 20: Type of card media (mediaMemoryStick, mediaCompactFlash, etc.)
|
|
|
These you can expect to see in devices:
|
|
|
'cfsh' (CompactFlash)
|
|
|
'mmcd' (MultiMedia Card)
|
|
|
'mstk' (Memory Stick)
|
|
|
'sdig' (SD card)
|
|
|
|
|
|
Other values observed:
|
|
|
'TFFS' (palmOne Tungsten T5 internal VFS)
|
|
|
'twMF' (Tapwave Zodiac internal VFS)
|
|
|
|
|
|
PalmSource also defines these:
|
|
|
'pose' (Host filesystem emulated by POSE)
|
|
|
'PSim' (Host filesystem emulated by Mac Simulator)
|
|
|
'ramd' (RAM disk)
|
|
|
'smed' (SmartMedia)
|
|
|
*/
|
|
|
unsigned long mediaType; /**< Media type (see above) */
|
|
|
|
|
|
/* 24: reserved for future use (other mountclasses may need more space) */
|
|
|
unsigned long reserved; /**< Reserved, set to 0 */
|
|
|
};
|
|
|
|
|
|
/** @brief Information about the handheld user
|
|
|
*
|
|
|
* This structure is used in dlp_ReadUserInfo() and dlp_WriteUserInfo()
|
|
|
*/
|
|
|
struct PilotUser {
|
|
|
size_t passwordLength;
|
|
|
char username[128];
|
|
|
char password[128];
|
|
|
unsigned long userID;
|
|
|
unsigned long viewerID;
|
|
|
unsigned long lastSyncPC;
|
|
|
time_t successfulSyncDate;
|
|
|
time_t lastSyncDate;
|
|
|
};
|
|
|
|
|
|
/** @brief Device information.
|
|
|
*
|
|
|
* This structure is filled by dlp_ReadSysInfo()
|
|
|
*/
|
|
|
struct SysInfo {
|
|
|
unsigned long romVersion; /**< Version of the device ROM, of the form 0xMMmmffssbb where MM=Major, mm=minor, ff=fix, ss=stage, bb=build */
|
|
|
unsigned long locale; /**< Locale for this device */
|
|
|
unsigned char prodIDLength; /**< Length of the prodID string */
|
|
|
char prodID[128]; /**< Product ID */
|
|
|
unsigned short dlpMajorVersion; /**< Major version of the DLP protocol on this device */
|
|
|
unsigned short dlpMinorVersion; /**< Minor version of the DLP protocol on this device */
|
|
|
unsigned short compatMajorVersion; /**< Minimum major version of DLP this device is compatible with */
|
|
|
unsigned short compatMinorVersion; /**< Minimum minor version of DLP this device is compatible with */
|
|
|
unsigned long maxRecSize; /**< Maximum record size. Usually <=0xFFFF or ==0 for older devices (means records are limited to 64k), can be much larger for devices with DLP >= 1.4 (i.e. 0x00FFFFFE) */
|
|
|
};
|
|
|
|
|
|
/** @brief Database information.
|
|
|
*
|
|
|
* A database information block is returned by dlp_ReadDBList(), dlp_FindDBInfo(), dlp_FindDBByName(), dlp_FindDBByOpenHandle()
|
|
|
* and dlp_FindDBByTypeCreator().
|
|
|
*/
|
|
|
struct DBInfo {
|
|
|
int more; /**< When reading database list using dlp_ReadDBList(), this flag is set if there are more databases to come */
|
|
|
char name[34]; /**< Database name, 32 characters max. */
|
|
|
unsigned int flags; /**< Database flags (@see dlpDBFlags enum) */
|
|
|
unsigned int miscFlags; /**< Additional database flags filled by pilot-link (@see dlpDBMiscFlags enum) */
|
|
|
unsigned int version; /**< Database version number */
|
|
|
unsigned long type; /**< Database type (four-char code, i.e. 'appl') */
|
|
|
unsigned long creator; /**< Database creator (four-char code, i.e. 'DATA') */
|
|
|
unsigned long modnum; /**< Modification count */
|
|
|
unsigned int index; /**< Database index in database list */
|
|
|
time_t createDate; /**< Database creation date (using the machine's local time zone) */
|
|
|
time_t modifyDate; /**< Last time this database was modified (using the machine's local time zone). If the database was never modified, this field is set to 0x83DAC000 (Fri Jan 1 00:00:00 1904 GMT) */
|
|
|
time_t backupDate; /**< Last time this database was backed up using HotSync. If the database was never backed up, this field is set to 0x83DAC000 (Fri Jan 1 00:00:00 1904 GMT) */
|
|
|
};
|
|
|
|
|
|
/** @brief Size information for a database.
|
|
|
*
|
|
|
* Returned by dlp_FindDBByName(), dlp_FindDBByOpenHandle() and dlp_FindDBByTypeCreator().
|
|
|
*/
|
|
|
struct DBSizeInfo {
|
|
|
unsigned long numRecords; /**< Number of records or resources */
|
|
|
unsigned long totalBytes; /**< Total number of bytes occupied by the database, including header and records list */
|
|
|
unsigned long dataBytes; /**< Total number of data bytes contained in the database's records or resources */
|
|
|
unsigned long appBlockSize; /**< Size of the appInfo block */
|
|
|
unsigned long sortBlockSize; /**< Size of the sortInfo block */
|
|
|
unsigned long maxRecSize; /**< note: this field is always set to 0 on return from dlp_FindDBxxx */
|
|
|
};
|
|
|
|
|
|
/** @brief Information about a memory card.
|
|
|
*
|
|
|
* This structure describes a device's internal storage only, not removable media.
|
|
|
* It is returned by dlp_ReadStorageInfo().
|
|
|
*/
|
|
|
struct CardInfo {
|
|
|
int card; /**< Memory card index (most devices only have one). */
|
|
|
int version; /**< Version of the card */
|
|
|
int more; /**< Set if there is another card after this one */
|
|
|
time_t creation; /**< Creation date (using the computer's local time zone) */
|
|
|
unsigned long romSize; /**< Size of the ROM block on this card (in bytes) */
|
|
|
unsigned long ramSize; /**< Size of the RAM block on this card (in bytes) */
|
|
|
unsigned long ramFree; /**< Total free RAM bytes */
|
|
|
char name[128]; /**< Card name */
|
|
|
char manufacturer[128]; /**< Card manufacturer name */
|
|
|
};
|
|
|
|
|
|
/** @brief Network HotSync information.
|
|
|
*
|
|
|
* Returned by dlp_ReadNetSyncInfo(). Gives the network location of a remote handheld.
|
|
|
*/
|
|
|
struct NetSyncInfo {
|
|
|
int lanSync; /**< Non-zero if LanSync is turned on on the device */
|
|
|
char hostName[256]; /**< Device hostname if any. Null terminated string. */
|
|
|
char hostAddress[40]; /**< Device host address. Null terminated string. */
|
|
|
char hostSubnetMask[40]; /**< Device subnet mask. Null terminated string */
|
|
|
};
|
|
|
|
|
|
#ifndef SWIG /* no need to clutter the bindings with this */
|
|
|
enum dlpFunctions {
|
|
|
/* range reserved for internal use */
|
|
|
dlpReservedFunc = 0x0F,
|
|
|
|
|
|
/* DLP 1.0 FUNCTIONS START HERE (PalmOS v1.0) */
|
|
|
dlpFuncReadUserInfo, /* 0x10 */
|
|
|
dlpFuncWriteUserInfo, /* 0x11 */
|
|
|
dlpFuncReadSysInfo, /* 0x12 */
|
|
|
dlpFuncGetSysDateTime, /* 0x13 */
|
|
|
dlpFuncSetSysDateTime, /* 0x14 */
|
|
|
dlpFuncReadStorageInfo, /* 0x15 */
|
|
|
dlpFuncReadDBList, /* 0x16 */
|
|
|
dlpFuncOpenDB, /* 0x17 */
|
|
|
dlpFuncCreateDB, /* 0x18 */
|
|
|
dlpFuncCloseDB, /* 0x19 */
|
|
|
dlpFuncDeleteDB, /* 0x1a */
|
|
|
dlpFuncReadAppBlock, /* 0x1b */
|
|
|
dlpFuncWriteAppBlock, /* 0x1c */
|
|
|
dlpFuncReadSortBlock, /* 0x1d */
|
|
|
dlpFuncWriteSortBlock, /* 0x1e */
|
|
|
dlpFuncReadNextModifiedRec, /* 0x1f */
|
|
|
dlpFuncReadRecord, /* 0x20 */
|
|
|
dlpFuncWriteRecord, /* 0x21 */
|
|
|
dlpFuncDeleteRecord, /* 0x22 */
|
|
|
dlpFuncReadResource, /* 0x23 */
|
|
|
dlpFuncWriteResource, /* 0x24 */
|
|
|
dlpFuncDeleteResource, /* 0x25 */
|
|
|
dlpFuncCleanUpDatabase, /* 0x26 */
|
|
|
dlpFuncResetSyncFlags, /* 0x27 */
|
|
|
dlpFuncCallApplication, /* 0x28 */
|
|
|
dlpFuncResetSystem, /* 0x29 */
|
|
|
dlpFuncAddSyncLogEntry, /* 0x2a */
|
|
|
dlpFuncReadOpenDBInfo, /* 0x2b */
|
|
|
dlpFuncMoveCategory, /* 0x2c */
|
|
|
dlpProcessRPC, /* 0x2d */
|
|
|
dlpFuncOpenConduit, /* 0x2e */
|
|
|
dlpFuncEndOfSync, /* 0x2f */
|
|
|
dlpFuncResetRecordIndex, /* 0x30 */
|
|
|
dlpFuncReadRecordIDList, /* 0x31 */
|
|
|
|
|
|
/* DLP 1.1 FUNCTIONS ADDED HERE (PalmOS v2.0 Personal, and Professional) */
|
|
|
dlpFuncReadNextRecInCategory, /* 0x32 */
|
|
|
dlpFuncReadNextModifiedRecInCategory, /* 0x33 */
|
|
|
dlpFuncReadAppPreference, /* 0x34 */
|
|
|
dlpFuncWriteAppPreference, /* 0x35 */
|
|
|
dlpFuncReadNetSyncInfo, /* 0x36 */
|
|
|
dlpFuncWriteNetSyncInfo, /* 0x37 */
|
|
|
dlpFuncReadFeature, /* 0x38 */
|
|
|
|
|
|
/* DLP 1.2 FUNCTIONS ADDED HERE (PalmOS v3.0) */
|
|
|
dlpFuncFindDB, /* 0x39 */
|
|
|
dlpFuncSetDBInfo, /* 0x3a */
|
|
|
|
|
|
/* DLP 1.3 FUNCTIONS ADDED HERE (PalmOS v4.0) */
|
|
|
dlpLoopBackTest, /* 0x3b */
|
|
|
dlpFuncExpSlotEnumerate, /* 0x3c */
|
|
|
dlpFuncExpCardPresent, /* 0x3d */
|
|
|
dlpFuncExpCardInfo, /* 0x3e */
|
|
|
dlpFuncVFSCustomControl, /* 0x3f */
|
|
|
dlpFuncVFSGetDefaultDir, /* 0x40 */
|
|
|
dlpFuncVFSImportDatabaseFromFile, /* 0x41 */
|
|
|
dlpFuncVFSExportDatabaseToFile, /* 0x42 */
|
|
|
dlpFuncVFSFileCreate, /* 0x43 */
|
|
|
dlpFuncVFSFileOpen, /* 0x44 */
|
|
|
dlpFuncVFSFileClose, /* 0x45 */
|
|
|
dlpFuncVFSFileWrite, /* 0x46 */
|
|
|
dlpFuncVFSFileRead, /* 0x47 */
|
|
|
dlpFuncVFSFileDelete, /* 0x48 */
|
|
|
dlpFuncVFSFileRename, /* 0x49 */
|
|
|
dlpFuncVFSFileEOF, /* 0x4a */
|
|
|
dlpFuncVFSFileTell, /* 0x4b */
|
|
|
dlpFuncVFSFileGetAttributes, /* 0x4c */
|
|
|
dlpFuncVFSFileSetAttributes, /* 0x4d */
|
|
|
dlpFuncVFSFileGetDate, /* 0x4e */
|
|
|
dlpFuncVFSFileSetDate, /* 0x4f */
|
|
|
dlpFuncVFSDirCreate, /* 0x50 */
|
|
|
dlpFuncVFSDirEntryEnumerate, /* 0x51 */
|
|
|
dlpFuncVFSGetFile, /* 0x52 */
|
|
|
dlpFuncVFSPutFile, /* 0x53 */
|
|
|
dlpFuncVFSVolumeFormat, /* 0x54 */
|
|
|
dlpFuncVFSVolumeEnumerate, /* 0x55 */
|
|
|
dlpFuncVFSVolumeInfo, /* 0x56 */
|
|
|
dlpFuncVFSVolumeGetLabel, /* 0x57 */
|
|
|
dlpFuncVFSVolumeSetLabel, /* 0x58 */
|
|
|
dlpFuncVFSVolumeSize, /* 0x59 */
|
|
|
dlpFuncVFSFileSeek, /* 0x5a */
|
|
|
dlpFuncVFSFileResize, /* 0x5b */
|
|
|
dlpFuncVFSFileSize, /* 0x5c */
|
|
|
|
|
|
/* DLP 1.4 functions added here (Palm OS 5.2+, ie Tapwave Zodiac) */
|
|
|
dlpFuncExpSlotMediaType, /* 0x5d */
|
|
|
dlpFuncWriteRecordEx, /* 0x5e - function to write >64k records in Tapwave */
|
|
|
dlpFuncWriteResourceEx, /* 0x5f - function to write >64k resources in Tapwave */
|
|
|
dlpFuncReadRecordEx, /* 0x60 - function to read >64k records by index in Tapwave */
|
|
|
dlpFuncUnknown1, /* 0x61 (may be bogus definition in tapwave headers, is listed as dlpFuncReadRecordStream)*/
|
|
|
dlpFuncUnknown3, /* 0x62 */
|
|
|
dlpFuncUnknown4, /* 0x63 */
|
|
|
dlpFuncReadResourceEx, /* 0x64 - function to read resources >64k by index in Tapwave */
|
|
|
dlpLastFunc
|
|
|
};
|
|
|
|
|
|
#endif /* !SWIG */
|
|
|
|
|
|
/** @name Database and record attributes */
|
|
|
/*@{*/
|
|
|
/** @brief Database flags in DBInfo structure and also for dlp_CreateDB() */
|
|
|
enum dlpDBFlags {
|
|
|
dlpDBFlagResource = 0x0001, /**< Resource database */
|
|
|
dlpDBFlagReadOnly = 0x0002, /**< Database is read only */
|
|
|
dlpDBFlagAppInfoDirty = 0x0004, /**< AppInfo data has been modified */
|
|
|
dlpDBFlagBackup = 0x0008, /**< Database should be backed up during HotSync */
|
|
|
dlpDBFlagHidden = 0x0100, /**< Database is hidden */
|
|
|
dlpDBFlagLaunchable = 0x0200, /**< Database is launchable data (show in Launcher, launch app by Creator) */
|
|
|
dlpDBFlagRecyclable = 0x0400, /**< Database will be deleted shortly */
|
|
|
dlpDBFlagBundle = 0x0800, /**< Database is bundled with others having same creator (i.e. for Beam) */
|
|
|
dlpDBFlagOpen = 0x8000, /**< Database is currently open */
|
|
|
|
|
|
/* v2.0 specific */
|
|
|
dlpDBFlagNewer = 0x0010, /**< Newer version may be installed over open DB (Palm OS 2.0 and later) */
|
|
|
dlpDBFlagReset = 0x0020, /**< Reset after installation (Palm OS 2.0 and later) */
|
|
|
|
|
|
/* v3.0 specific */
|
|
|
dlpDBFlagCopyPrevention = 0x0040, /**< Database should not be beamed or sent (Palm OS 3.0 and later) */
|
|
|
dlpDBFlagStream = 0x0080, /**< Database is a file stream (Palm OS 3.0 and later) */
|
|
|
|
|
|
/* OS 6+ */
|
|
|
dlpDBFlagSchema = 0x1000, /**< Schema database (Palm OS 6.0 and later) */
|
|
|
dlpDBFlagSecure = 0x2000, /**< Secure database (Palm OS 6.0 and later) */
|
|
|
dlpDBFlagExtended = dlpDBFlagSecure, /**< Set if Schema not set and DB is Extended (Palm OS 6.0 and later) */
|
|
|
dlpDBFlagFixedUp = 0x4000 /**< Temp flag used to clear DB on write (Palm OS 6.0 and later) */
|
|
|
};
|
|
|
|
|
|
/** @brief Misc. flags in DBInfo structure */
|
|
|
enum dlpDBMiscFlags {
|
|
|
dlpDBMiscFlagExcludeFromSync = 0x80, /**< DLP 1.1 and later: exclude this database from sync */
|
|
|
dlpDBMiscFlagRamBased = 0x40 /**< DLP 1.2 and later: this database is in RAM */
|
|
|
};
|
|
|
|
|
|
/** @brief Database record attributes */
|
|
|
enum dlpRecAttributes {
|
|
|
dlpRecAttrDeleted = 0x80, /**< Tagged for deletion during next sync */
|
|
|
dlpRecAttrDirty = 0x40, /**< Record modified */
|
|
|
dlpRecAttrBusy = 0x20, /**< Record locked (in use) */
|
|
|
dlpRecAttrSecret = 0x10, /**< Record is secret */
|
|
|
dlpRecAttrArchived = 0x08 /**< Tagged for archival during next sync */
|
|
|
};
|
|
|
|
|
|
/** @brief Mode flags used in dlp_OpenDB() */
|
|
|
enum dlpOpenFlags {
|
|
|
dlpOpenRead = 0x80, /**< Open database for reading */
|
|
|
dlpOpenWrite = 0x40, /**< Open database for writing */
|
|
|
dlpOpenExclusive = 0x20, /**< Open database with exclusive access */
|
|
|
dlpOpenSecret = 0x10, /**< Show secret records */
|
|
|
dlpOpenReadWrite = 0xC0 /**< Open database for reading and writing (equivalent to (#dlpOpenRead | #dlpOpenWrite)) */
|
|
|
};
|
|
|
|
|
|
/** @brief Flags passed to dlp_ReadDBList() */
|
|
|
enum dlpDBList {
|
|
|
dlpDBListRAM = 0x80, /**< List RAM databases */
|
|
|
dlpDBListROM = 0x40, /**< List ROM databases */
|
|
|
dlpDBListMultiple = 0x20 /**< DLP 1.2 and above: list as many databases as possible at once */
|
|
|
};
|
|
|
|
|
|
enum dlpFindDBOptFlags {
|
|
|
dlpFindDBOptFlagGetAttributes = 0x80,
|
|
|
dlpFindDBOptFlagGetSize = 0x40,
|
|
|
dlpFindDBOptFlagMaxRecSize = 0x20
|
|
|
};
|
|
|
|
|
|
enum dlpFindDBSrchFlags {
|
|
|
dlpFindDBSrchFlagNewSearch = 0x80,
|
|
|
dlpFindDBSrchFlagOnlyLatest = 0x40
|
|
|
};
|
|
|
|
|
|
/*@}*/
|
|
|
|
|
|
/** @brief End status values for dlp_EndOfSync() */
|
|
|
enum dlpEndStatus {
|
|
|
dlpEndCodeNormal = 0, /**< Normal termination */
|
|
|
dlpEndCodeOutOfMemory, /**< End due to low memory on device */
|
|
|
dlpEndCodeUserCan, /**< Cancelled by user */
|
|
|
dlpEndCodeOther /**< dlpEndCodeOther and higher == "Anything else" */
|
|
|
};
|
|
|
|
|
|
/** @name Expansion manager and VFS manager constants */
|
|
|
/*@{*/
|
|
|
/** @brief Expansion card capabilities, as returned by dlp_ExpCardInfo() */
|
|
|
enum dlpExpCardCapabilities {
|
|
|
dlpExpCapabilityHasStorage = 0x00000001, /**< Card supports reading (and maybe writing) */
|
|
|
dlpExpCapabilityReadOnly = 0x00000002, /**< Card is read-only */
|
|
|
dlpExpCapabilitySerial = 0x00000004 /**< Card supports dumb serial interface */
|
|
|
};
|
|
|
|
|
|
/** @brief VFS volume attributes as found in the @a attributes member of a VFSInfo structure */
|
|
|
enum dlpVFSVolumeAttributes {
|
|
|
vfsVolAttrSlotBased = 0x00000001, /**< Volume is inserted is an expansion slot */
|
|
|
vfsVolAttrReadOnly = 0x00000002, /**< Volume is read-only */
|
|
|
vfsVolAttrHidden = 0x00000004 /**< Volume is hidden */
|
|
|
};
|
|
|
|
|
|
/** @brief Constants for dlp_VFSFileSeek() */
|
|
|
enum dlpVFSSeekConstants {
|
|
|
vfsOriginBeginning = 0, /**< From the beginning (first data byte of file) */
|
|
|
vfsOriginCurrent = 1, /**< from the current position */
|
|
|
vfsOriginEnd = 2 /**< From the end of file (one position beyond last data byte, only negative offsets are legally allowed) */
|
|
|
};
|
|
|
|
|
|
/** @brief Flags for dlp_VFSFileOpen() */
|
|
|
enum dlpVFSOpenFlags {
|
|
|
dlpVFSOpenExclusive = 0x01, /**< For dlp_VFSFileOpen(). Exclusive access */
|
|
|
dlpVFSOpenRead = 0x02, /**< For dlp_VFSFileOpen(). Read only */
|
|
|
dlpVFSOpenWrite = 0x05, /**< For dlp_VFSFileOpen(). Write only. Implies exclusive */
|
|
|
dlpVFSOpenReadWrite = 0x07, /**< For dlp_VFSFileOpen(). Read | write */
|
|
|
|
|
|
/* Remainder are aliases and special cases not for VFSFileOpen */
|
|
|
vfsModeExclusive = dlpVFSOpenExclusive, /**< Alias to #dlpVFSOpenExclusive */
|
|
|
vfsModeRead = dlpVFSOpenRead, /**< Alias to #dlpVFSOpenRead */
|
|
|
vfsModeWrite = dlpVFSOpenWrite, /**< Alias to #dlpVFSOpenWrite */
|
|
|
vfsModeReadWrite = vfsModeRead | vfsModeWrite, /**< Alias to #dlpVFSOpenReadWrite */
|
|
|
vfsModeCreate = 0x08 /**< Not for dlp_VFSFileOpen(). Create file if it doesn't exist. */,
|
|
|
vfsModeTruncate = 0x10 /**< Not for dlp_VFSFileOpen(). Truncate to 0 bytes on open. */,
|
|
|
vfsModeLeaveOpen = 0x20 /**< Not for dlp_VFSFileOpen(). Leave file open even if foreground task closes. */
|
|
|
} ;
|
|
|
|
|
|
/** @brief VFS file attribute constants */
|
|
|
enum dlpVFSFileAttributeConstants {
|
|
|
vfsFileAttrReadOnly = 0x00000001, /**< File is read only */
|
|
|
vfsFileAttrHidden = 0x00000002, /**< File is hidden */
|
|
|
vfsFileAttrSystem = 0x00000004, /**< File is a system file */
|
|
|
vfsFileAttrVolumeLabel = 0x00000008, /**< File is the volume label */
|
|
|
vfsFileAttrDirectory = 0x00000010, /**< File is a directory */
|
|
|
vfsFileAttrArchive = 0x00000020, /**< File is archived */
|
|
|
vfsFileAttrLink = 0x00000040 /**< File is a link to another file */
|
|
|
};
|
|
|
|
|
|
/** @brief Constants for dlp_VFSFileGetDate() and dlp_VFSFileSetDate() */
|
|
|
enum dlpVFSDateConstants {
|
|
|
vfsFileDateCreated = 1, /**< The date the file was created. */
|
|
|
vfsFileDateModified = 2, /**< The date the file was last modified. */
|
|
|
vfsFileDateAccessed = 3 /**< The date the file was last accessed. */
|
|
|
};
|
|
|
|
|
|
/** @brief VFS file iterator constants */
|
|
|
enum dlpVFSFileIteratorConstants {
|
|
|
vfsIteratorStart = 0, /** < Indicates that iterator is beginning */
|
|
|
vfsIteratorStop = -1 /**< Indicate that iterator has gone through all items */
|
|
|
};
|
|
|
/*@}*/
|
|
|
|
|
|
|
|
|
/** @brief Error codes returned by DLP transactions
|
|
|
*
|
|
|
* After a DLP transaction, there may be a DLP or Palm OS error
|
|
|
* if the result code is #PI_ERR_DLP_PALMOS. In this case, use
|
|
|
* pi_palmos_error() to obtain the error code. It can be in the
|
|
|
* DLP error range (0 > error < #dlpErrLastError), or otherwise
|
|
|
* in the Palm OS error range (see Palm OS header files for
|
|
|
* definitions, in relation with each DLP call)
|
|
|
*/
|
|
|
enum dlpErrors {
|
|
|
dlpErrNoError = 0, /**< No error */
|
|
|
dlpErrSystem, /**< System error (0x0001) */
|
|
|
dlpErrIllegalReq, /**< Illegal request, not supported by this version of DLP (0x0002) */
|
|
|
dlpErrMemory, /**< Not enough memory (0x0003) */
|
|
|
dlpErrParam, /**< Invalid parameter (0x0004) */
|
|
|
dlpErrNotFound, /**< File, database or record not found (0x0005) */
|
|
|
dlpErrNoneOpen, /**< No file opened (0x0006) */
|
|
|
dlpErrAlreadyOpen, /**< File already open (0x0007) */
|
|
|
dlpErrTooManyOpen, /**< Too many open files (0x0008) */
|
|
|
dlpErrExists, /**< File already exists (0x0009) */
|
|
|
dlpErrOpen, /**< Can't open file (0x000a) */
|
|
|
dlpErrDeleted, /**< File deleted (0x000b) */
|
|
|
dlpErrBusy, /**< Record busy (0x000c) */
|
|
|
dlpErrNotSupp, /**< Call not supported (0x000d) */
|
|
|
dlpErrUnused1, /**< @e Unused (0x000e) */
|
|
|
dlpErrReadOnly, /**< File is read-only (0x000f) */
|
|
|
dlpErrSpace, /**< Not enough space left on device (0x0010) */
|
|
|
dlpErrLimit, /**< Limit reached (0x0011) */
|
|
|
dlpErrSync, /**< Sync error (0x0012) */
|
|
|
dlpErrWrapper, /**< Wrapper error (0x0013) */
|
|
|
dlpErrArgument, /**< Invalid argument (0x0014) */
|
|
|
dlpErrSize, /**< Invalid size (0x0015) */
|
|
|
|
|
|
dlpErrUnknown = 127 /**< Unknown error (0x007F) */
|
|
|
};
|
|
|
|
|
|
|
|
|
#ifndef SWIG /* no need to clutter the bindings with this */
|
|
|
|
|
|
/** @brief Internal DLP argument structure */
|
|
|
struct dlpArg {
|
|
|
int id_; /**< Argument ID (start at #PI_DLP_ARG_FIRST_ID) */
|
|
|
size_t len; /**< Argument length */
|
|
|
char *data; /**< Argument data */
|
|
|
};
|
|
|
|
|
|
/** @brief Internal DLP command request structure */
|
|
|
struct dlpRequest {
|
|
|
enum dlpFunctions cmd; /**< Command ID */
|
|
|
int argc; /**< Number of arguments */
|
|
|
struct dlpArg **argv; /**< Ptr to arguments */
|
|
|
};
|
|
|
|
|
|
/** @brief Internal DLP command response structure */
|
|
|
struct dlpResponse {
|
|
|
enum dlpFunctions cmd; /**< Command ID as returned by device. If not the same than requested command, this is an error */
|
|
|
enum dlpErrors err; /**< DLP error (see #dlpErrors enum) */
|
|
|
int argc; /**< Number of response arguments */
|
|
|
struct dlpArg **argv; /**< Response arguments */
|
|
|
};
|
|
|
|
|
|
#endif /* !SWIG */
|
|
|
|
|
|
/* @name Functions used internally by dlp.c */
|
|
|
/*@{*/
|
|
|
#ifndef SWIG /* don't export these functions to bindings */
|
|
|
extern struct dlpArg * dlp_arg_new PI_ARGS((int id_, size_t len));
|
|
|
extern void dlp_arg_free PI_ARGS((struct dlpArg *arg));
|
|
|
extern int dlp_arg_len PI_ARGS((int argc, struct dlpArg **argv));
|
|
|
|
|
|
extern struct dlpRequest *dlp_request_new
|
|
|
PI_ARGS((enum dlpFunctions cmd, int argc, ...));
|
|
|
extern struct dlpRequest * dlp_request_new_with_argid
|
|
|
PI_ARGS((enum dlpFunctions cmd, int argid, int argc, ...));
|
|
|
extern void dlp_request_free PI_ARGS((struct dlpRequest *req));
|
|
|
|
|
|
extern struct dlpResponse *dlp_response_new
|
|
|
PI_ARGS((enum dlpFunctions cmd, int argc));
|
|
|
extern ssize_t dlp_response_read PI_ARGS((struct dlpResponse **res,
|
|
|
int sd));
|
|
|
extern ssize_t dlp_request_write PI_ARGS((struct dlpRequest *req,
|
|
|
int sd));
|
|
|
extern void dlp_response_free PI_ARGS((struct dlpResponse *req));
|
|
|
|
|
|
extern int dlp_exec PI_ARGS((int sd, struct dlpRequest *req,
|
|
|
struct dlpResponse **res));
|
|
|
|
|
|
extern char *dlp_errorlist[];
|
|
|
extern char *dlp_strerror(int error);
|
|
|
|
|
|
struct RPC_params;
|
|
|
extern int dlp_RPC
|
|
|
PI_ARGS((int sd, struct RPC_params * p,
|
|
|
unsigned long *result));
|
|
|
#endif /* !SWIG */
|
|
|
/*@}*/
|
|
|
|
|
|
/** @name DLP library functions */
|
|
|
/*@{*/
|
|
|
/** @brief Set the version of the DLP protocol we report to the device.
|
|
|
*
|
|
|
* During the handshake phase, the device and the desktop exchange the
|
|
|
* version of the DLP protocol both support. If the device's DLP version
|
|
|
* is higher than the desktop's, the device usually refuses to connect.
|
|
|
*
|
|
|
* @note Call this function prior to accepting or initiating a connection.
|
|
|
*
|
|
|
* @param major Protocol major version
|
|
|
* @param minor Protocol minor version
|
|
|
*/
|
|
|
extern void dlp_set_protocol_version
|
|
|
PI_ARGS((int major, int minor));
|
|
|
|
|
|
/** @brief Convert a Palm OS date to a local date
|
|
|
*
|
|
|
* Local dates are using the local machine's timezone. If the Palm OS date
|
|
|
* is undefined, the local date is set to @c 0x83DAC000 (Fri Jan 1 00:00:00 1904 GMT)
|
|
|
*
|
|
|
* @param timeDateData Ptr to a time/date data block returned by Palm OS
|
|
|
* @return converted date
|
|
|
*/
|
|
|
extern time_t dlp_ptohdate PI_ARGS((PI_CONST unsigned char *timeDateData));
|
|
|
|
|
|
/** @brief Convert a date to Palm OS date
|
|
|
*
|
|
|
* If the local date is @c 0x83DAC000 (Fri Jan 1 00:00:00 1904 GMT) the Palm OS date
|
|
|
* is set to undefined. Otherwise the date is converted from local time to Palm OS
|
|
|
*
|
|
|
* @param palm_time The date to convert
|
|
|
* @param timeDateData Ptr to an 8 byte buffer to hold the Palm OS date
|
|
|
*/
|
|
|
extern void dlp_htopdate PI_ARGS((time_t palm_time, unsigned char *timeDateData));
|
|
|
/*@}*/
|
|
|
|
|
|
/** @name System functions */
|
|
|
/*@{*/
|
|
|
/** @brief Get the time from the device and return it as a local time_t value
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param palm_time Pointer to a time_t to fill
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_GetSysDateTime PI_ARGS((int sd, time_t *palm_time));
|
|
|
|
|
|
/** @brief Set the time on the Palm using a local time_t value.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param palm_time New time to set the device to (expressed using the computer's timezone)
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_SetSysDateTime PI_ARGS((int sd, time_t palm_time));
|
|
|
|
|
|
/** @brief Read the system information block
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param sysinfo Returned system information
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadSysInfo PI_ARGS((int sd, struct SysInfo *sysinfo));
|
|
|
|
|
|
/** @brief Read information about internal handheld memory
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param cardno Card number (zero based)
|
|
|
* @param cardinfo Returned information about the memory card.
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadStorageInfo
|
|
|
PI_ARGS((int sd, int cardno, struct CardInfo *cardinfo));
|
|
|
|
|
|
/** @brief Read the device user information
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param user Returned user info
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadUserInfo
|
|
|
PI_ARGS((int sd, struct PilotUser *user));
|
|
|
|
|
|
/** @brief Change the device user information
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param INPUT New user info
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_WriteUserInfo
|
|
|
PI_ARGS((int sd, PI_CONST struct PilotUser *INPUT));
|
|
|
|
|
|
/** @brief Convenience function to reset lastSyncPC in the UserInfo to 0
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ResetLastSyncPC PI_ARGS((int sd));
|
|
|
|
|
|
/** @brief Read Network HotSync information
|
|
|
*
|
|
|
* Supported on Palm OS 2.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param OUTPUT On return, filled NetSyncInfo structure
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadNetSyncInfo
|
|
|
PI_ARGS((int sd, struct NetSyncInfo *OUTPUT));
|
|
|
|
|
|
/** @brief Set Network HotSync information
|
|
|
*
|
|
|
* Supported on Palm OS 2.0 and later
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param INPUT NetSyncInfo structure to set
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_WriteNetSyncInfo
|
|
|
PI_ARGS((int sd, PI_CONST struct NetSyncInfo *INPUT));
|
|
|
|
|
|
/** @brief State that a conduit has started running on the desktop
|
|
|
*
|
|
|
* Puts up a status message on the device. Calling this method regularly
|
|
|
* is also the only reliable way to know whether the user pressed the Cancel
|
|
|
* button on the device.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_OpenConduit PI_ARGS((int sd));
|
|
|
|
|
|
/** @brief Terminate connection with the device
|
|
|
*
|
|
|
* Required at the end of a session. The pi_socket layer
|
|
|
* will call this for you if you don't. After the device receives this
|
|
|
* command, it will terminate the connection.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param status End of sync status (see #dlpEndStatus enum)
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_EndOfSync PI_ARGS((int sd, int status));
|
|
|
|
|
|
/** @brief Terminate HotSync _without_ notifying Palm.
|
|
|
*
|
|
|
* This will cause the Palm to time out, and should (if I remember right)
|
|
|
* lose any changes to unclosed databases. _Never_ use under ordinary
|
|
|
* circumstances. If the sync needs to be aborted in a reasonable
|
|
|
* manner, use EndOfSync with a non-zero status.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_AbortSync PI_ARGS((int sd));
|
|
|
|
|
|
/** @brief Read a Feature from the device
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param creator Feature creator
|
|
|
* @param num Feature number
|
|
|
* @param feature On return, the feature value
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadFeature
|
|
|
PI_ARGS((int sd, unsigned long creator, int num,
|
|
|
unsigned long *feature));
|
|
|
|
|
|
/** @brief Emulation of the SysGetROMToken function on the device
|
|
|
*
|
|
|
* Supported on Palm OS 2.0 through 4.0. Using this function
|
|
|
* is not recommended.
|
|
|
*
|
|
|
* @warning This function uses 68K RPC calls to perform its duty,
|
|
|
* and is therefore not supported on devices running Palm OS 5.0
|
|
|
* and later. Actually, it may even crash the device.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param token ROM token to read
|
|
|
* @param databuf Buffer to store the token data in
|
|
|
* @param datasize Size of data to read
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_GetROMToken
|
|
|
PI_ARGS((int sd, unsigned long token, void *databuf, size_t *datasize));
|
|
|
|
|
|
/** @brief Add an entry into the HotSync log on the device
|
|
|
*
|
|
|
* Move to the next line with \\n, as usual. You may invoke this
|
|
|
* command once or more before calling dlp_EndOfSync(), but it is
|
|
|
* not required.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param string Nul-terminated string with the text to insert in the log
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_AddSyncLogEntry PI_ARGS((int sd, char *string));
|
|
|
|
|
|
/** @brief Call an application on the device
|
|
|
*
|
|
|
* 32-bit retcode and data over 64k only supported on Palm OS 2.0 and later.
|
|
|
*
|
|
|
* This function allows calling an application (or any PRC that responds
|
|
|
* to launch codes) using a custom launch code and custom data. The
|
|
|
* application can return data too, using DlkControl() and the
|
|
|
* dlkCtlSendCallAppReply selector. See Palm OS documentation for more
|
|
|
* information.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param creator Creator code of the application to call
|
|
|
* @param type Type code of the application to call
|
|
|
* @param action Launch code to send to the application
|
|
|
* @param datasize Length of data block to pass to the application
|
|
|
* @param databuf Data block to pass to the application
|
|
|
* @param retcode On return, result code returned by the application
|
|
|
* @param retbuf Buffer allocated using pi_buffer_new(). On return contains the data returned by the application
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_CallApplication
|
|
|
PI_ARGS((int sd, unsigned long creator, unsigned long type,
|
|
|
int action, size_t datasize, PI_CONST void *databuf,
|
|
|
unsigned long *retcode, pi_buffer_t *retbuf));
|
|
|
|
|
|
/** @brief Convenience function to ead an app preference data block
|
|
|
*
|
|
|
* Supported on Palm OS 2.0 and later, emulated for Palm OS 1.x.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param creator Application creator
|
|
|
* @param prefid Preference ID
|
|
|
* @param backup If set, read from backup prefs (see Palm OS documentation). This flag is ignored on Palm OS 1.x.
|
|
|
* @param maxsize Maximum size of the data to return in buffer
|
|
|
* @param databuf If not NULL, buffer should be of size @p maxsize. On return, contains the preference data
|
|
|
* @param datasize If not NULL, on return contains the size of the preference data block
|
|
|
* @param version If not NULL
|
|
|
* @return A negative value if an error occured (see pi-error.h), otherwise the size of the preference block
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadAppPreference
|
|
|
PI_ARGS((int sd, unsigned long creator, int prefid, int backup,
|
|
|
int maxsize, void *databuf, size_t *datasize, int *version));
|
|
|
|
|
|
/** @brief Write an app preference data block
|
|
|
*
|
|
|
* Supported on Palm OS 2.0 and later. Emulated on Palm OS 1.x.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param creator Application creator
|
|
|
* @param prefid Preference ID
|
|
|
* @param backup If set, write to backup prefs (see Palm OS documentation). This flag is ignored on Palm OS 1.x.
|
|
|
* @param version Version of the pref to write
|
|
|
* @param databuf Ptr to the data to write
|
|
|
* @param datasize Size of the data to write
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_WriteAppPreference
|
|
|
PI_ARGS((int sd, unsigned long creator, int prefid, int backup,
|
|
|
int version, PI_CONST void *databuf, size_t datasize));
|
|
|
|
|
|
/** @brief Require reboot of device after HotSync terminates
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ResetSystem PI_ARGS((int sd));
|
|
|
|
|
|
/*@}*/
|
|
|
|
|
|
/** @name Database access functions */
|
|
|
/*@{*/
|
|
|
/** @brief Read the database list from the device
|
|
|
*
|
|
|
* The database list can be read either one database at a time (slower),
|
|
|
* or passing ::dlpDBListMultiple in the @p flags member. Pass ::dlpDBListRAM
|
|
|
* in @p flags to get the list of databases in RAM, and ::dlpDBListROM to get
|
|
|
* the list of databases in ROM. You can mix flags to obtain the desired
|
|
|
* result. Passing ::dlpDBListMultiple will return several DBInfo
|
|
|
* structures at once (usually 20). Use (info->used / sizeof(DBInfo)) to
|
|
|
* know how many database information blocks were returned.
|
|
|
* For the next call, pass the last DBInfo->index value + 1 to start to
|
|
|
* the next database. @n @n
|
|
|
* When all the database informations have been retrieved, this function returns
|
|
|
* #PI_ERR_DLP_PALMOS and pi_palmos_error() returns #dlpErrNotFound.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param cardno Card number (should be 0)
|
|
|
* @param flags Flags (see #dlpDBList enum)
|
|
|
* @param start Index of first database to list (zero based)
|
|
|
* @param dblist Buffer filled with one or more DBInfo structure
|
|
|
* @return A negative value if an error occured or the DB list is exhausted (see pi-error.h)
|
|
|
*
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadDBList
|
|
|
PI_ARGS((int sd, int cardno, int flags, int start,
|
|
|
pi_buffer_t *dblist));
|
|
|
|
|
|
/** @brief Find a database by name
|
|
|
*
|
|
|
* Supported on Palm OS 3.0 (DLP 1.2) and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param cardno Memory card number (usually 0)
|
|
|
* @param dbname Database name
|
|
|
* @param localid If not NULL, on return contains the LocalID of the database if it was found
|
|
|
* @param dbhandle If not NULL, on return contains the handle of the database if it is currently open
|
|
|
* @param dbInfo If not NULL, on return contains information about the database
|
|
|
* @param dbSize If not NULL, on return contains information about the database size
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_FindDBByName
|
|
|
PI_ARGS((int sd, int cardno, PI_CONST char *dbname, unsigned long *localid, int *dbhandle,
|
|
|
struct DBInfo *dbInfo, struct DBSizeInfo *dbSize));
|
|
|
|
|
|
/** @brief Get information about an open database
|
|
|
*
|
|
|
* Supported on Palm OS 3.0 (DLP 1.2) and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param cardno If not NULL, on return contains the cardno of the memory card the database resides on
|
|
|
* @param localid If not NULL, on return contains the LocalID of the database
|
|
|
* @param dbInfo If not NULL, on return contains information about the database
|
|
|
* @param dbSize If not NULL, on return contains information about the database size
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_FindDBByOpenHandle
|
|
|
PI_ARGS((int sd, int dbhandle, int *cardno, unsigned long *localid,
|
|
|
struct DBInfo *dbInfo, struct DBSizeInfo *dbSize));
|
|
|
|
|
|
/** @brief Find databases by type and/or creator
|
|
|
*
|
|
|
* Supported on Palm OS 3.0 (DLP 1.2) and later. To look for multiple databases,
|
|
|
* make a first call with @p start set to 1, then subsequent calls with @p start set to 0
|
|
|
* until no more database is found.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param type If not 0, type code to look for
|
|
|
* @param creator If not 0, creator code to look for
|
|
|
* @param start If set, start a new search
|
|
|
* @param latest If set, returns the database with the latest version if there are several identical databases
|
|
|
* @param cardno If not NULL, on return contains the memory card number the database resides on
|
|
|
* @param localid If not NULL, on return contains the LocalID of the database
|
|
|
* @param dbhandle If not NULL, on return contains the handle of the database if it is currently open
|
|
|
* @param dbInfo If not NULL, on return contains information about the database
|
|
|
* @param dbSize If not NULL, on return contains information about the database size
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_FindDBByTypeCreator
|
|
|
PI_ARGS((int sd, unsigned long type, unsigned long creator, int start,
|
|
|
int latest, int *cardno, unsigned long *localid, int *dbhandle,
|
|
|
struct DBInfo *dbInfo, struct DBSizeInfo *dbSize));
|
|
|
|
|
|
/** @brief Look for a database on the device
|
|
|
*
|
|
|
* This function does not match any DLP layer function, but is
|
|
|
* intended as a shortcut for programs looking for databases. It
|
|
|
* uses a fairly byzantine mechanism for ordering the RAM databases
|
|
|
* before the ROM ones. You must feed the @a index slot from the
|
|
|
* returned info in @p start the next time round.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param cardno Card number (should be 0)
|
|
|
* @param start Index of first database to list (zero based)
|
|
|
* @param dbname If not NULL, look for a database with this name
|
|
|
* @param type If not 0, matching database must have this type
|
|
|
* @param creator If not 0, matching database must have this creator code
|
|
|
* @param OUTPUT Returned database information on success
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_FindDBInfo
|
|
|
PI_ARGS((int sd, int cardno, int start, PI_CONST char *dbname,
|
|
|
unsigned long type, unsigned long creator,
|
|
|
struct DBInfo *OUTPUT));
|
|
|
|
|
|
/** @brief Open a database on the Palm.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param cardno Card number (should be 0)
|
|
|
* @param mode Open mode (see #dlpOpenFlags enum)
|
|
|
* @param dbname Database name
|
|
|
* @param dbhandle Returned database handle to use if other calls like dlp_CloseDB()
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_OpenDB
|
|
|
PI_ARGS((int sd, int cardno, int mode, PI_CONST char *dbname,
|
|
|
int *dbhandle));
|
|
|
|
|
|
/** @brief Close an opened database
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle The DB handle returned by dlp_OpenDB()
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_CloseDB PI_ARGS((int sd, int dbhandle));
|
|
|
|
|
|
/** @brief Close all opened databases
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_CloseDB_All PI_ARGS((int sd));
|
|
|
|
|
|
/** @brief Delete an existing database from the device
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param cardno Card number (should be 0)
|
|
|
* @param dbname Database name
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_DeleteDB
|
|
|
PI_ARGS((int sd, int cardno, PI_CONST char *dbname));
|
|
|
|
|
|
/** @brief Create database on the device
|
|
|
*
|
|
|
* After creation, the database is open and ready for use. You should
|
|
|
* call dlp_CloseDB() once you're done with the database.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param creator Creator code for the new database (four-char code)
|
|
|
* @param type Type code for the new database (four-char code)
|
|
|
* @param cardno Card number (should be 0)
|
|
|
* @param flags Database flags (see #dlpDBFlags enum)
|
|
|
* @param version Database version number
|
|
|
* @param dbname Database name
|
|
|
* @param dbhandle On return, DB handle to pass to other calls like dlp_CloseDB()
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_CreateDB
|
|
|
PI_ARGS((int sd, unsigned long creator, unsigned long type,
|
|
|
int cardno, int flags, unsigned int version,
|
|
|
PI_CONST char *dbname, int *dbhandle));
|
|
|
|
|
|
/** @brief Return the number of records in an opened database.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param numrecs On return, number of records in the database
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadOpenDBInfo
|
|
|
PI_ARGS((int sd, int dbhandle, int *numrecs));
|
|
|
|
|
|
/** @brief Change information for an open database
|
|
|
*
|
|
|
* Supported on Palm OS 3.0 (DLP 1.2) and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param flags Flags to set for this database (see #dlpDBFlags enum)
|
|
|
* @param clearFlags Flags to clear for this database (see #dlpDBFlags enum)
|
|
|
* @param version Version of this database
|
|
|
* @param createDate Creation date of this database
|
|
|
* @param modifyDate Modification date of this database (use @c 0x83DAC000 to unset)
|
|
|
* @param backupDate Last backup date of this database (use @c 0x83DAC000 to unset)
|
|
|
* @param type Database type code (four-char code)
|
|
|
* @param creator Database creator code (four-char code)
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_SetDBInfo
|
|
|
PI_ARGS((int sd, int dbhandle, int flags, int clearFlags, unsigned int version,
|
|
|
time_t createDate, time_t modifyDate, time_t backupDate,
|
|
|
unsigned long type, unsigned long creator));
|
|
|
|
|
|
/** @brief Delete a category from a database
|
|
|
*
|
|
|
* Any record in that category will be moved to the Unfiled category.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param category Category to delete
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_DeleteCategory
|
|
|
PI_ARGS((int sd, int dbhandle, int category));
|
|
|
|
|
|
/** @brief Move all records from a category to another category
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param fromcat Category to move from (0-15)
|
|
|
* @param tocat Category to move to (0-15)
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_MoveCategory
|
|
|
PI_ARGS((int sd, int dbhandle, int fromcat, int tocat));
|
|
|
|
|
|
/** @brief Read a database's AppInfo block
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param offset Offset to start reading from (0 based)
|
|
|
* @param reqbytes Number of bytes to read (pass -1 to read all data from @p offset to the end of the AppInfo block)
|
|
|
* @param retbuf Buffer allocated using pi_buffer_new(). On return contains the data from the AppInfo block
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadAppBlock
|
|
|
PI_ARGS((int sd, int dbhandle, int offset, int reqbytes,
|
|
|
pi_buffer_t *retbuf));
|
|
|
|
|
|
/** @brief Write a database's AppInfo block
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param databuf Pointer to the new AppInfo data.
|
|
|
* @param datasize Length of the new AppInfo data. If 0, the AppInfo block is removed.
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_WriteAppBlock
|
|
|
PI_ARGS((int sd, int dbhandle, PI_CONST void *databuf, size_t datasize));
|
|
|
|
|
|
/** @brief Read a database's SortInfo block
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param offset Offset to start reading from (0 based)
|
|
|
* @param reqbytes Number of bytes to read (pass -1 to read all data from @p offset to the end of the SortInfo block)
|
|
|
* @param retbuf Buffer allocated using pi_buffer_new(). On return contains the data from the SortInfo block
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadSortBlock
|
|
|
PI_ARGS((int sd, int dbhandle, int offset, int reqbytes,
|
|
|
pi_buffer_t *retbuf));
|
|
|
|
|
|
/** @brief Write a database's SortInfo block
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param databuf Pointer to the new SortInfo data.
|
|
|
* @param datasize Length of the new SortInfo data. If 0, the SortInfo block is removed.
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_WriteSortBlock
|
|
|
PI_ARGS((int sd, int dbhandle, PI_CONST void *databuf,
|
|
|
size_t datasize));
|
|
|
|
|
|
/** @brief Clean up a database by removing deleted/archived records
|
|
|
*
|
|
|
* Delete all records in the opened database which are marked as
|
|
|
* archived or deleted.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_CleanUpDatabase PI_ARGS((int sd, int dbhandle));
|
|
|
|
|
|
/** @brief Reset dirty record flags, update sync time
|
|
|
*
|
|
|
* For record databases, reset all dirty flags. For both record and
|
|
|
* resource databases, set the last sync time to now.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ResetSyncFlags PI_ARGS((int sd, int dbhandle));
|
|
|
|
|
|
/** @brief Reset the nextRecord position used in dlp_ReadNextRecInCategory()
|
|
|
*
|
|
|
* This resets the nextRecord both internally and on the device.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ResetDBIndex PI_ARGS((int sd, int dbhandle));
|
|
|
|
|
|
/** @brief Read the list of record IDs from an open database
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param sort If non-zero, the on-device application with the same DB creator will be called to re-sort the records prior to returning the list
|
|
|
* @param start Index of first record ID to return (zero based)
|
|
|
* @param max Maximum number of record IDs to return
|
|
|
* @param recuids On return, @p count record UIDs
|
|
|
* @param count On return, the number of record IDs found in @p IDs
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
#ifndef SWIG /* bindings provide a native implementation */
|
|
|
extern PI_ERR dlp_ReadRecordIDList
|
|
|
PI_ARGS((int sd, int dbhandle, int sort, int start, int max,
|
|
|
recordid_t *recuids, int *count));
|
|
|
#endif
|
|
|
|
|
|
/** @brief Read a record using its unique ID
|
|
|
*
|
|
|
* Read a record identified by its unique ID. Make sure you only
|
|
|
* request records that effectively exist in the database (use
|
|
|
* dlp_ReadRecordIDList() to retrieve the unique IDs of all records
|
|
|
* in the database).
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param recuid Record unique ID
|
|
|
* @param retbuf If not NULL, a buffer allocated using pi_buffer_new(). On return, contains the record contents
|
|
|
* @param recindex If not NULL, contains the record index on return.
|
|
|
* @param recattrs If not NULL, contains the record attributes on return.
|
|
|
* @param category If not NULL, contains the record category on return.
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadRecordById
|
|
|
PI_ARGS((int sd, int dbhandle, recordid_t recuid, pi_buffer_t *retbuf,
|
|
|
int *recindex, int *recattrs, int *category));
|
|
|
|
|
|
/** @brief Read a record using its index
|
|
|
*
|
|
|
* Read a record by record index (zero-based). Make sure you only
|
|
|
* request records within the bounds of database records
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param recindex Record index (zero based)
|
|
|
* @param retbuf If not NULL, a buffer allocated using pi_buffer_new(). On return, contains the record contents
|
|
|
* @param recuid If not NULL, contains the record UID on return.
|
|
|
* @param recattrs If not NULL, contains the record attributes on return.
|
|
|
* @param category If not NULL, contains the record category on return.
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadRecordByIndex
|
|
|
PI_ARGS((int sd, int dbhandle, int recindex, pi_buffer_t *retbuf,
|
|
|
recordid_t *recuid, int *recattrs, int *category));
|
|
|
|
|
|
/** @brief Iterate through modified records in database
|
|
|
*
|
|
|
* Return subsequent modified records on each call. Use dlp_ResetDBIndex()
|
|
|
* prior to starting iterations. Once all the records have been seen,
|
|
|
* this function returns PI_ERR_DLP_PALMOS and pi_palmos_error() returns
|
|
|
* #dlpErrNotFound.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param retbuf If not NULL, a buffer created using pi_buffer_new(). Buffer is cleared first using pi_buffer_clear(). On return, contains the record data
|
|
|
* @param recuid If not NULL, contains the record unique ID on return
|
|
|
* @param recindex If not NULL, contains the record index on return
|
|
|
* @param recattrs If not NULL, contains the record attributes on return (see #dlpRecAttributes enum)
|
|
|
* @param category If not NULL, contains the record category on return
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadNextModifiedRec
|
|
|
PI_ARGS((int sd, int dbhandle, pi_buffer_t *retbuf, recordid_t *recuid,
|
|
|
int *recindex, int *recattrs, int *category));
|
|
|
|
|
|
/** @brief Iterate through modified records in category
|
|
|
*
|
|
|
* Return subsequent modified records on each call. Use dlp_ResetDBIndex()
|
|
|
* prior to starting iterations. Once all the records have been seen,
|
|
|
* this function returns PI_ERR_DLP_PALMOS and pi_palmos_error() returns
|
|
|
* #dlpErrNotFound.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param category The category to iterate into
|
|
|
* @param retbuf If not NULL, a buffer created using pi_buffer_new(). Buffer is cleared first using pi_buffer_clear(). On return, contains the record data
|
|
|
* @param recuid If not NULL, contains the record unique ID on return
|
|
|
* @param recindex If not NULL, contains the record index on return
|
|
|
* @param recattrs If not NULL, contains the record attributes on return (see #dlpRecAttributes enum)
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadNextModifiedRecInCategory
|
|
|
PI_ARGS((int sd, int dbhandle, int category, pi_buffer_t *retbuf,
|
|
|
recordid_t *recuid, int *recindex, int *recattrs));
|
|
|
|
|
|
/** @brief Iterate through records in category
|
|
|
*
|
|
|
* Return subsequent records on each call. Use dlp_ResetDBIndex()
|
|
|
* prior to starting iterations. Once all the records have been seen,
|
|
|
* this function returns PI_ERR_DLP_PALMOS and pi_palmos_error() returns
|
|
|
* #dlpErrNotFound.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param category The category to iterate into
|
|
|
* @param retbuf If not NULL, a buffer created using pi_buffer_new(). Buffer is cleared first using pi_buffer_clear(). On return, contains the record data
|
|
|
* @param recuid If not NULL, contains the record unique ID on return
|
|
|
* @param recindex If not NULL, contains the record index on return
|
|
|
* @param recattrs If not NULL, contains the record attributes on return (see #dlpRecAttributes enum)
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadNextRecInCategory
|
|
|
PI_ARGS((int sd, int dbhandle, int category, pi_buffer_t *retbuf,
|
|
|
recordid_t *recuid, int *recindex, int *recattrs));
|
|
|
|
|
|
/** @brief Create a new record in a database
|
|
|
*
|
|
|
* Use this call to add records to a database. On DLP 1.4 and later, you can create records
|
|
|
* bigger than 64k. Set the record ID to 0 to have the device generate the record ID itself,
|
|
|
* or assign a record ID of your own. Read Palm's documentation for information about
|
|
|
* record IDs, as there is a way to indicate which records were created by the desktop and
|
|
|
* which ones were created by the device applications.
|
|
|
*
|
|
|
* If you pass -1 as the data length, the function will treat the data as a string and use
|
|
|
* strlen(data)+1 as the data length (that is, the string is written including the
|
|
|
* terminating nul character).
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param flags Record attributes (see #dlpRecAttributes enum)
|
|
|
* @param recuid Record ID of the new record. If 0, device will generate a new record ID for this record.
|
|
|
* @param catid Category of the new record
|
|
|
* @param databuf Ptr to record data
|
|
|
* @param datasize Record data length
|
|
|
* @param newrecuid On return, record ID that was assigned to this record
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_WriteRecord
|
|
|
PI_ARGS((int sd, int dbhandle, int flags, recordid_t recuid,
|
|
|
int catid, PI_CONST void *databuf, size_t datasize,
|
|
|
recordid_t *newrecuid));
|
|
|
|
|
|
/** @brief Delete an existing record from a database
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param all If set, ALL records are deleted from the database.
|
|
|
* @param recuid Record ID of record to delete if @p all == 0.
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_DeleteRecord
|
|
|
PI_ARGS((int sd, int dbhandle, int all, recordid_t recuid));
|
|
|
|
|
|
/** @brief Read a resource identified by its type and ID
|
|
|
*
|
|
|
* @note To read resources larger than 64K, you should use dlp_ReadResourceByIndex().
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param type Type code for the resource (four-char code)
|
|
|
* @param resid Resource ID
|
|
|
* @param retbuf If not NULL, a buffer allocated using pi_buffer_new(). On return, contains the resource contents
|
|
|
* @param resindex If not NULL, on return contains the resource index
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadResourceByType
|
|
|
PI_ARGS((int sd, int dbhandle, unsigned long type, int resid,
|
|
|
pi_buffer_t *retbuf, int *resindex));
|
|
|
|
|
|
/** @brief Read a resource identified by its resource index
|
|
|
*
|
|
|
* This function supports reading resources larger than 64k on
|
|
|
* DLP 1.4 and later (Palm OS 5.2 and later).
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param resindex Resource index
|
|
|
* @param retbuf If not NULL, a buffer allocated using pi_buffer_new(). On return, contains the resource contents
|
|
|
* @param restype If not NULL, on return contains the resource type
|
|
|
* @param resid If not NULL, on return contains the resource ID
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ReadResourceByIndex
|
|
|
PI_ARGS((int sd, int dbhandle, unsigned int resindex, pi_buffer_t *retbuf,
|
|
|
unsigned long *restype, int *resid));
|
|
|
|
|
|
/** @brief Create a new resource of overwrite an existing one
|
|
|
*
|
|
|
* This function supports writing resources larger than 64k on
|
|
|
* DLP 1.4 and later (Palm OS 5.2 and later).
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param restype Resource type (four-char code)
|
|
|
* @param resid Resource ID
|
|
|
* @param databuf Ptr to resource data
|
|
|
* @param datasize Length of resource data to write
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_WriteResource
|
|
|
PI_ARGS((int sd, int dbhandle, unsigned long restype, int resid,
|
|
|
PI_CONST void *databuf, size_t datasize));
|
|
|
|
|
|
/** @brief Delete a resource or all resources from a resource file
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dbhandle Open database handle, obtained from dlp_OpenDB()
|
|
|
* @param all If set, all resources are removed from this database (@p restype and @p resid are ignored)
|
|
|
* @param restype Resource type (four-char code)
|
|
|
* @param resid Resource ID
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_DeleteResource
|
|
|
PI_ARGS((int sd, int dbhandle, int all, unsigned long restype,
|
|
|
int resid));
|
|
|
/*@}*/
|
|
|
|
|
|
/** @name Expansion manager functions */
|
|
|
/*@{*/
|
|
|
/** @brief Enumerate expansion slots
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later. Expansion slots are physical slots
|
|
|
* present on the device. To check whether a card is inserted in a slot,
|
|
|
* use dlp_ExpCardPresent().
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param numslots On input, maximum number of slots that can be returned in the slotRefs array. On return, the actual number of slot references returned in @p slotRefs.
|
|
|
* @param slotrefs On return, @p numSlots slot references
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ExpSlotEnumerate
|
|
|
PI_ARGS((int sd, int *numslots, int *slotrefs));
|
|
|
|
|
|
/** @brief Checks whether a card is inserted in a slot
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later. Returns >=0 if a card
|
|
|
* is inserted in the slot.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param slotref The slot reference as returned by dlp_ExpSlotEnumerate().
|
|
|
* @return A negative value if an error occured (see pi-error.h), >=0 if a card is inserted
|
|
|
*/
|
|
|
extern PI_ERR dlp_ExpCardPresent
|
|
|
PI_ARGS((int sd, int slotref));
|
|
|
|
|
|
/** @brief Get information about a removable card inserted in an expansion slot
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later. The info strings are returned in a
|
|
|
* single malloc()'ed buffer as a suite of nul-terminated string, one
|
|
|
* after the other.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param slotref The slot reference as returned by dlp_ExpSlotEnumerate().
|
|
|
* @param expflags If not NULL, the card flags (see #dlpExpCardCapabilities enum)
|
|
|
* @param numstrings On return, the number of strings found in the @p strings array
|
|
|
* @param strings If not NULL, ptr to a char*. If there are strings to return, this function allocates a buffer to hold the strings. You are responsible for free()'ing the buffer once you're done with it.
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ExpCardInfo
|
|
|
PI_ARGS((int sd, int slotref, unsigned long *expflags,
|
|
|
int *numstrings, char **strings));
|
|
|
|
|
|
/** @brief Return the type of media supported by an expansion slot
|
|
|
*
|
|
|
* Supported on Palm OS 5.2 and later (DLP 1.4 and later).
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param slotref The slot reference as returned by dlp_ExpSlotEnumerate().
|
|
|
* @param mediatype On return, the media type
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_ExpSlotMediaType
|
|
|
PI_ARGS((int sd, int slotref, unsigned long *mediatype));
|
|
|
/*@}*/
|
|
|
|
|
|
/** @name VFS manager functions */
|
|
|
/*@{*/
|
|
|
/** @brief Returns a list of connected VFS volumes
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param numvols On input, the maximum number of volume references that can be returned. On output, the actual number of volume references
|
|
|
* @param volrefs On output, @p numVols volume references
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSVolumeEnumerate
|
|
|
PI_ARGS((int sd, int *numvols, int *volrefs));
|
|
|
|
|
|
/** @brief Returns information about a VFS volume
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param volref Volume reference number (obtained from dlp_VFSVolumeEnumerate())
|
|
|
* @param volinfo On return, volume information
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSVolumeInfo
|
|
|
PI_ARGS((int sd, int volref, struct VFSInfo *volinfo));
|
|
|
|
|
|
/** @brief Return the label (name) of a VFS volume
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param volref Volume reference number (obtained from dlp_VFSVolumeEnumerate())
|
|
|
* @param len On input, the maximum size of the name buffer. On output, the name length (including the ending nul byte)
|
|
|
* @param name On output, the nul-terminated volume name
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSVolumeGetLabel
|
|
|
PI_ARGS((int sd, int volref, int *len, char *name));
|
|
|
|
|
|
/** @brief Change the label (name) of a VFS volume
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param volref Volume reference number (obtained from dlp_VFSVolumeEnumerate())
|
|
|
* @param name New volume name
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSVolumeSetLabel
|
|
|
PI_ARGS((int sd, int volref, PI_CONST char *name));
|
|
|
|
|
|
/** @brief Return the total and used size of a VFS volume
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param volref Volume reference number (obtained from dlp_VFSVolumeEnumerate())
|
|
|
* @param usedbytes On return, number of bytes used on the volume
|
|
|
* @param totalbytes On return, total size of the volume in bytes
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSVolumeSize
|
|
|
PI_ARGS((int sd, int volref, long *usedbytes, long *totalbytes));
|
|
|
|
|
|
/** @brief Format a VFS volume
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param fmtflags Format flags (undocumented for now)
|
|
|
* @param fsLibRef File system lib ref (undocumented for now)
|
|
|
* @param param Slot mount parameters (undocumented for now)
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSVolumeFormat
|
|
|
PI_ARGS((int sd, unsigned char fmtflags, int fsLibRef,
|
|
|
struct VFSSlotMountParam *param));
|
|
|
|
|
|
/** @brief Get the default storage directory for a given file type
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later. Return the default directory
|
|
|
* for a file type. File types as expressed as MIME types, for
|
|
|
* example "image/jpeg", or as a simple file extension (i.e. ".jpg")
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param volref Volume reference number (obtained from dlp_VFSVolumeEnumerate())
|
|
|
* @param name MIME type to get the default directory for
|
|
|
* @param dir A buffer to hold the default path
|
|
|
* @param len On input, the length of the @p dir buffer. On return, contains the length of the path string (including the nul terminator)
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSGetDefaultDir
|
|
|
PI_ARGS((int sd, int volref, PI_CONST char *name,
|
|
|
char *dir, int *len));
|
|
|
|
|
|
/** @brief Iterate through the entries in a directory
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later. At the beginning you set
|
|
|
* @p dirIterator to #vfsIteratorStart, then call this function
|
|
|
* repeatedly until it returns an error code of the iterator becomes
|
|
|
* #vfsIteratorStop.
|
|
|
*
|
|
|
* @bug On some early OS 5 devices like Tungsten T and Sony NX70, NX73 this
|
|
|
* call crashes the device. This has been confirmed to be a bug in HotSync on
|
|
|
* the device, as tests showed that a regular HotSync conduit does crash the
|
|
|
* device with this call too.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param dirref Directory reference obtained from dlp_VFSFileOpen()
|
|
|
* @param diriterator Ptr to an iterator. Start with #vfsIteratorStart
|
|
|
* @param maxitems On input, the max number of VFSDirInfo structures stored in @p dirItems. On output, the actual number of items.
|
|
|
* @param diritems Preallocated array that contains a number of VFSDirInfo structures on return.
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSDirEntryEnumerate
|
|
|
PI_ARGS((int sd, FileRef dirref, unsigned long *diriterator,
|
|
|
int *maxitems, struct VFSDirInfo *diritems));
|
|
|
|
|
|
/** @brief Create a new directory on a VFS volume
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param volref Volume reference number (obtained from dlp_VFSVolumeEnumerate())
|
|
|
* @param path Full path for the directory to create
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSDirCreate
|
|
|
PI_ARGS((int sd, int volref, PI_CONST char *path));
|
|
|
|
|
|
/** @brief Import a VFS file to a database on the handheld
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later. The file is converted to a
|
|
|
* full fledged database and stored in the handheld's RAM.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param volref Volume reference number (obtained from dlp_VFSVolumeEnumerate())
|
|
|
* @param pathname Path of the file to transfer to the handheld
|
|
|
* @param cardno On return, card number the database was created on (usually 0)
|
|
|
* @param localid On return, LocalID of the database that was created
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSImportDatabaseFromFile
|
|
|
PI_ARGS((int sd, int volref, PI_CONST char *pathname,
|
|
|
int *cardno, unsigned long *localid));
|
|
|
|
|
|
/** @brief Export a database to a VFS file
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later. The database is converted to a
|
|
|
* .prc, .pdb or .pqa file on the VFS volume.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param volref Volume reference number (obtained from dlp_VFSVolumeEnumerate())
|
|
|
* @param pathname Path of the file to create on the VFS volume
|
|
|
* @param cardno Card number the database resides on (usually 0)
|
|
|
* @param localid LocalID of the database to export
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSExportDatabaseToFile
|
|
|
PI_ARGS((int sd, int volref, PI_CONST char *pathname,
|
|
|
int cardno, unsigned int localid));
|
|
|
|
|
|
/** @brief Create a new file on a VFS volume
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param volref Volume reference number (obtained from dlp_VFSVolumeEnumerate())
|
|
|
* @param pathname Full path of the file to create
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileCreate
|
|
|
PI_ARGS((int sd, int volref, PI_CONST char *pathname));
|
|
|
|
|
|
/** @brief Open an existing file on a VFS volume
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later. On some devices, it is required to open the
|
|
|
* file using the #dlpOpenReadWrite mode to be able to write to it (using
|
|
|
* #dlpOpenWrite is not enough).
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param volref Volume reference number (obtained from dlp_VFSVolumeEnumerate())
|
|
|
* @param path Full path of the file to open
|
|
|
* @param mode Open mode flags (see #dlpVFSOpenFlags enum)
|
|
|
* @param fileref On return, file reference to the open file
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileOpen
|
|
|
PI_ARGS((int sd, int volref, PI_CONST char *path, int mode,
|
|
|
FileRef *fileref));
|
|
|
|
|
|
/** @brief Close an open VFS file
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param fileref File reference obtained from dlp_VFSFileOpen()
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileClose
|
|
|
PI_ARGS((int sd, FileRef fileref));
|
|
|
|
|
|
/** @brief Write data to an open file
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later. Will return the number of bytes
|
|
|
* written if successful.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param fileref File reference obtained from dlp_VFSFileOpen()
|
|
|
* @param databuf Ptr to the data to write
|
|
|
* @param datasize Length of the data to write
|
|
|
* @return A negative value if an error occured (see pi-error.h), the number of bytes written otherwise.
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileWrite
|
|
|
PI_ARGS((int sd, FileRef fileref, PI_CONST void *databuf, size_t datasize));
|
|
|
|
|
|
/** @brief Read data from an open file
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later. Will return the total number of bytes
|
|
|
* actually read.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param fileref File reference obtained from dlp_VFSFileOpen()
|
|
|
* @param retbuf Buffer allocated using pi_buffer_new(). Buffer is being emptied first with pi_buffer_clear(). On return contains the data read from the file.
|
|
|
* @param reqbytes Number of bytes to read from the file.
|
|
|
* @return A negative value if an error occured (see pi-error.h), or the total number of bytes read
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileRead
|
|
|
PI_ARGS((int sd, FileRef fileref, pi_buffer_t *retbuf, size_t reqbytes));
|
|
|
|
|
|
/** @brief Delete an existing file from a VFS volume
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param volref Volume reference number (obtained from dlp_VFSVolumeEnumerate())
|
|
|
* @param pathname Full access path to the file to delete
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileDelete
|
|
|
PI_ARGS((int sd, int volref, PI_CONST char *pathname));
|
|
|
|
|
|
/** @brief Rename an existing file
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @note This function can NOT be used to move a file from one place
|
|
|
* to another. You can only rename a file that will stay in the same
|
|
|
* directory.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param volref Volume reference number (obtained from dlp_VFSVolumeEnumerate())
|
|
|
* @param pathname Full access path to the file to rename
|
|
|
* @param newname New file name, without the rest of the access path
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileRename
|
|
|
PI_ARGS((int sd, int volref, PI_CONST char *pathname,
|
|
|
PI_CONST char *newname));
|
|
|
|
|
|
/** @brief Checks whether the current position is at the end of file
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param fileref File reference obtained from dlp_VFSFileOpen()
|
|
|
* @return A negative value if an error occured (see pi-error.h). 0 if not at EOF, >0 if at EOF.
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileEOF
|
|
|
PI_ARGS((int sd, FileRef fileref));
|
|
|
|
|
|
/** @brief Return the current seek position in an open file
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param fileref File reference obtained from dlp_VFSFileOpen()
|
|
|
* @param position On return, current absolute position in the file
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileTell
|
|
|
PI_ARGS((int sd, FileRef fileref, int *position));
|
|
|
|
|
|
/** @brief Return the attributes of an open file
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param fileref File reference obtained from dlp_VFSFileOpen()
|
|
|
* @param fileattrs On return, file attributes (see #dlpVFSFileAttributeConstants enum)
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileGetAttributes
|
|
|
PI_ARGS((int sd, FileRef fileref, unsigned long *fileattrs));
|
|
|
|
|
|
/** @brief Change the attributes of an open file
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param fileref File reference obtained from dlp_VFSFileOpen()
|
|
|
* @param fileattrs n-New file attributes (see #dlpVFSFileAttributeConstants enum)
|
|
|
* @return A negative value if an error occured (see pi-error.h).
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileSetAttributes
|
|
|
PI_ARGS((int sd, FileRef fileref, unsigned long fileattrs));
|
|
|
|
|
|
/** @brief Return one of the dates associated with an open file or directory
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param fileref File or directory reference obtained from dlp_VFSFileOpen()
|
|
|
* @param which The date you want (see #dlpVFSDateConstants enum)
|
|
|
* @param date On return, the requested date
|
|
|
* @return A negative value if an error occured (see pi-error.h).
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileGetDate
|
|
|
PI_ARGS((int sd, FileRef fileref, int which, time_t *date));
|
|
|
|
|
|
/** @brief Change one of the dates for an open file or directory
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param fileref File or directory reference obtained from dlp_VFSFileOpen()
|
|
|
* @param which The date you want to change (see #dlpVFSDateConstants enum)
|
|
|
* @param date The new date to set
|
|
|
* @return A negative value if an error occured (see pi-error.h).
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileSetDate
|
|
|
PI_ARGS((int sd, FileRef fileref, int which, time_t date));
|
|
|
|
|
|
/** @brief Change the current seek position in an open file
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param fileref File or directory reference obtained from dlp_VFSFileOpen()
|
|
|
* @param origin Where to seek from (see #dlpVFSSeekConstants enum)
|
|
|
* @param offset Seek offset
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileSeek
|
|
|
PI_ARGS((int sd, FileRef fileref, int origin, int offset));
|
|
|
|
|
|
/** @brief Resize an open file
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param fileref File or directory reference obtained from dlp_VFSFileOpen()
|
|
|
* @param newsize New file size
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileResize
|
|
|
PI_ARGS((int sd, FileRef fileref, int newsize));
|
|
|
|
|
|
/** @brief Return the size of an open file
|
|
|
*
|
|
|
* Supported on Palm OS 4.0 and later.
|
|
|
*
|
|
|
* @param sd Socket number
|
|
|
* @param fileref File or directory reference obtained from dlp_VFSFileOpen()
|
|
|
* @param size On return, the actual size of the file
|
|
|
* @return A negative value if an error occured (see pi-error.h)
|
|
|
*/
|
|
|
extern PI_ERR dlp_VFSFileSize
|
|
|
PI_ARGS((int sd, FileRef fileref, int *size));
|
|
|
/*@}*/
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
}
|
|
|
#endif
|
|
|
#endif /*_PILOT_DLP_H_*/
|