2
(***********************************************************************
4
* Copyright (c) 1999-2000 Palm, Inc. or its subsidiaries.
9
* Release: Palm OS SDK 4.0 (63220)
12
* Unified Data Manager header file
13
* Define type and generic macro to access data
16
* Jun 08, 2000 Created by Alain BASTY
18
************************************************************************)
24
uses palmos, coretraps, errorbase, exgmgr;
26
(***********************************************************************
27
* Generic options flags
28
************************************************************************)
34
(***********************************************************************
36
************************************************************************)
41
(***********************************************************************
43
************************************************************************)
46
udaErrControl = udaErrorClass or 1;
48
(***********************************************************************
50
************************************************************************)
53
UDABufferSize = UInt16;
56
kUDAZeroTerminatedBuffer = $FFFF;
58
(***********************************************************************
59
* Types of callback functions
60
************************************************************************)
63
UDAObjectPtr = ^UDAObjectType;
64
UDAReaderPtr = ^UDAReaderType;
65
UDAWriterPtr = ^UDAWriterType;
67
UDADeleteFunction = procedure (var ioObject: UDAObjectPtr);
68
//!!! UDAControlFunction = function (ioObject: UDAObjectPtr; parameter: UInt16; args: va_list): Err;
70
UDAReadFunction = function (ioReader: UDAReaderPtr; var buffer: UInt8; bufferSize: UDABufferSize; var error: Err): UDABufferSize;
72
UDAWriteFunction = function (ioWriter: UDAWriterPtr): Err;
73
UDAFlushFunction = function (ioWriter: UDAWriterPtr): Err;
75
UDAObjectType = record
77
deleteF: UDADeleteFunction;
78
controlF: Pointer; //!!!UDAControlFunction;
80
UDAObjectTag = UDAObjectType;
82
UDAReaderType = record
83
// The Reader is a base object
85
deleteF: UDADeleteFunction;
86
controlF: Pointer; //!!!UDAControlFunction;
88
// Specific Reader fields
89
readF: UDAReadFunction;
91
UDAReaderTag = UDAReaderType;
93
UDAFilterType = record
94
// The Filter is a base Object
96
deleteF: UDADeleteFunction;
97
controlF: Pointer; //!!!UDAControlFunction;
99
// The Filter is a Reader
100
readF: UDAReadFunction;
102
// Specific Filter fields
103
upperReader: ^UDAReaderType;
105
UDAFilterTag = UDAFilterType;
107
UDAWriterType = record
108
// The Writer is a base Object
110
deleteF: UDADeleteFunction;
111
controlF: Pointer; //!!!UDAControlFunction;
113
// Specific Writer fields
114
initiateWriteF: UDAWriteFunction;
115
flushF: UDAFlushFunction;
116
upperReader: ^UDAReaderType;
118
UDAWriterTag = UDAWriterType;
120
(***********************************************************************
121
* Generic macro to access generic functions
122
************************************************************************)
125
#define UDADelete(ioObject) (( *(ioObject->deleteF))((UDAObjectType** )(&(ioObject))))
127
#define UDARead(ioReader, bufferToFillP, bufferSizeInBytes, error) (( *(ioReader->readF))((UDAReaderType* )(ioReader), (bufferToFillP), (bufferSizeInBytes), (error)))
129
#define UDAEndOfReader(ioReader) (((ioReader)->optionFlags & kUDAEndOfReader) != 0)
131
#define UDAMoreData(ioReader) (((ioReader)->optionFlags & kUDAMoreData) != 0)
133
#define UDAFilterJoin(ioFilter, ioReader) (((UDAFilterType* )(ioFilter))->upperReader = ioReader)
135
#define UDAWriterJoin(ioWriter, ioReader) (ioWriter->upperReader = ioReader)
137
#define UDAInitiateWrite(ioWriter) (( *(ioWriter)->initiateWriteF))(ioWriter)
139
#define UDAWriterFlush(ioWriter) (( *(ioWriter)->flushF))(ioWriter)
142
(*****************************************************************
144
****************************************************************)
146
// Public UDAMgr function selectors
149
sysUdaMemoryReaderNew = 1;
150
sysUdaExchangeReaderNew = 11;
151
sysUdaExchangeWriterNew = 12;
153
// UDAMgr function prototypes
155
//!!! function UDAControl(var ioObject: UDAObjectType; parameter: UInt16, ...): Err; syscall sysTrapUdaMgrDispatch, sysUdaControl;
157
function UDAExchangeReaderNew(var socket: ExgSocketType): UDAReaderPtr;
159
function UDAExchangeWriterNew(var socket: ExgSocketType; bufferSize: UDABufferSize): UDAWriterPtr;
161
(***********************************************************************
163
************************************************************************)
165
function UDAMemoryReaderNew(var bufferP: UInt8; bufferSizeInBytes: UDABufferSize): UDAReaderPtr;
169
function __UDAExchangeReaderNew(var socket: ExgSocketType): UDAReaderPtr; syscall sysTrapUdaMgrDispatch;
170
function __UDAExchangeWriterNew(var socket: ExgSocketType; bufferSize: UDABufferSize): UDAWriterPtr; syscall sysTrapUdaMgrDispatch;
171
function __UDAMemoryReaderNew(var bufferP: UInt8; bufferSizeInBytes: UDABufferSize): UDAReaderPtr; syscall sysTrapUdaMgrDispatch;
173
function UDAExchangeReaderNew(var socket: ExgSocketType): UDAReaderPtr;
176
move.l #$sysUdaExchangeReaderNew, D2;
178
UDAExchangeReaderNew := __UDAExchangeReaderNew(socket);
181
function UDAExchangeWriterNew(var socket: ExgSocketType; bufferSize: UDABufferSize): UDAWriterPtr;
184
move.l #$sysUdaExchangeWriterNew, D2;
186
UDAExchangeWriterNew := __UDAExchangeWriterNew(socket, bufferSize);
189
function UDAMemoryReaderNew(var bufferP: UInt8; bufferSizeInBytes: UDABufferSize): UDAReaderPtr;
192
move.l #$sysUdaMemoryReaderNew, D2;
194
UDAMemoryReaderNew := __UDAMemoryReaderNew(bufferP, bufferSizeInBytes);