udamgr.pp 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. {$MACRO ON}
  2. (***********************************************************************
  3. *
  4. * Copyright (c) 1999-2000 Palm, Inc. or its subsidiaries.
  5. * All rights reserved.
  6. *
  7. * File: UDAMgr.h
  8. *
  9. * Release: Palm OS SDK 4.0 (63220)
  10. *
  11. * Description:
  12. * Unified Data Manager header file
  13. * Define type and generic macro to access data
  14. *
  15. * History:
  16. * Jun 08, 2000 Created by Alain BASTY
  17. *
  18. ************************************************************************)
  19. unit udamgr;
  20. interface
  21. uses palmos, coretraps, errorbase, exgmgr;
  22. (***********************************************************************
  23. * Generic options flags
  24. ************************************************************************)
  25. const
  26. kUDAEndOfReader = 1;
  27. kUDAMoreData = 2;
  28. (***********************************************************************
  29. * Generic control
  30. ************************************************************************)
  31. const
  32. kUDAReinitialize = 1;
  33. (***********************************************************************
  34. * Generic error codes
  35. ************************************************************************)
  36. const
  37. udaErrControl = udaErrorClass or 1;
  38. (***********************************************************************
  39. * General types
  40. ************************************************************************)
  41. type
  42. UDABufferSize = UInt16;
  43. const
  44. kUDAZeroTerminatedBuffer = $FFFF;
  45. (***********************************************************************
  46. * Types of callback functions
  47. ************************************************************************)
  48. type
  49. UDAObjectPtr = ^UDAObjectType;
  50. UDAReaderPtr = ^UDAReaderType;
  51. UDAWriterPtr = ^UDAWriterType;
  52. UDADeleteFunction = procedure (var ioObject: UDAObjectPtr);
  53. //!!! UDAControlFunction = function (ioObject: UDAObjectPtr; parameter: UInt16; args: va_list): Err;
  54. UDAReadFunction = function (ioReader: UDAReaderPtr; var buffer: UInt8; bufferSize: UDABufferSize; var error: Err): UDABufferSize;
  55. UDAWriteFunction = function (ioWriter: UDAWriterPtr): Err;
  56. UDAFlushFunction = function (ioWriter: UDAWriterPtr): Err;
  57. UDAObjectType = record
  58. optionFlags: UInt16;
  59. deleteF: UDADeleteFunction;
  60. controlF: Pointer; //!!!UDAControlFunction;
  61. end;
  62. UDAObjectTag = UDAObjectType;
  63. UDAReaderType = record
  64. // The Reader is a base object
  65. optionFlags: UInt16 ;
  66. deleteF: UDADeleteFunction;
  67. controlF: Pointer; //!!!UDAControlFunction;
  68. // Specific Reader fields
  69. readF: UDAReadFunction;
  70. end;
  71. UDAReaderTag = UDAReaderType;
  72. UDAFilterType = record
  73. // The Filter is a base Object
  74. optionFlags: UInt16;
  75. deleteF: UDADeleteFunction;
  76. controlF: Pointer; //!!!UDAControlFunction;
  77. // The Filter is a Reader
  78. readF: UDAReadFunction;
  79. // Specific Filter fields
  80. upperReader: ^UDAReaderType;
  81. end;
  82. UDAFilterTag = UDAFilterType;
  83. UDAWriterType = record
  84. // The Writer is a base Object
  85. optionFlags: UInt16;
  86. deleteF: UDADeleteFunction;
  87. controlF: Pointer; //!!!UDAControlFunction;
  88. // Specific Writer fields
  89. initiateWriteF: UDAWriteFunction;
  90. flushF: UDAFlushFunction;
  91. upperReader: ^UDAReaderType;
  92. end;
  93. UDAWriterTag = UDAWriterType;
  94. (***********************************************************************
  95. * Generic macro to access generic functions
  96. ************************************************************************)
  97. (*
  98. #define UDADelete(ioObject) (( *(ioObject->deleteF))((UDAObjectType** )(&(ioObject))))
  99. #define UDARead(ioReader, bufferToFillP, bufferSizeInBytes, error) (( *(ioReader->readF))((UDAReaderType* )(ioReader), (bufferToFillP), (bufferSizeInBytes), (error)))
  100. #define UDAEndOfReader(ioReader) (((ioReader)->optionFlags & kUDAEndOfReader) != 0)
  101. #define UDAMoreData(ioReader) (((ioReader)->optionFlags & kUDAMoreData) != 0)
  102. #define UDAFilterJoin(ioFilter, ioReader) (((UDAFilterType* )(ioFilter))->upperReader = ioReader)
  103. #define UDAWriterJoin(ioWriter, ioReader) (ioWriter->upperReader = ioReader)
  104. #define UDAInitiateWrite(ioWriter) (( *(ioWriter)->initiateWriteF))(ioWriter)
  105. #define UDAWriterFlush(ioWriter) (( *(ioWriter)->flushF))(ioWriter)
  106. *)
  107. (*****************************************************************
  108. * UDA API
  109. ****************************************************************)
  110. // Public UDAMgr function selectors
  111. const
  112. sysUdaControl = 0;
  113. sysUdaMemoryReaderNew = 1;
  114. sysUdaExchangeReaderNew = 11;
  115. sysUdaExchangeWriterNew = 12;
  116. // UDAMgr function prototypes
  117. //!!! function UDAControl(var ioObject: UDAObjectType; parameter: UInt16, ...): Err; syscall sysTrapUdaMgrDispatch, sysUdaControl;
  118. function UDAExchangeReaderNew(var socket: ExgSocketType): UDAReaderPtr;
  119. function UDAExchangeWriterNew(var socket: ExgSocketType; bufferSize: UDABufferSize): UDAWriterPtr;
  120. (***********************************************************************
  121. * Memory reader
  122. ************************************************************************)
  123. function UDAMemoryReaderNew(var bufferP: UInt8; bufferSizeInBytes: UDABufferSize): UDAReaderPtr;
  124. implementation
  125. function __UDAExchangeReaderNew(var socket: ExgSocketType): UDAReaderPtr; syscall sysTrapUdaMgrDispatch;
  126. function __UDAExchangeWriterNew(var socket: ExgSocketType; bufferSize: UDABufferSize): UDAWriterPtr; syscall sysTrapUdaMgrDispatch;
  127. function __UDAMemoryReaderNew(var bufferP: UInt8; bufferSizeInBytes: UDABufferSize): UDAReaderPtr; syscall sysTrapUdaMgrDispatch;
  128. function UDAExchangeReaderNew(var socket: ExgSocketType): UDAReaderPtr;
  129. begin
  130. asm
  131. move.l #$sysUdaExchangeReaderNew, D2;
  132. end;
  133. UDAExchangeReaderNew := __UDAExchangeReaderNew(socket);
  134. end;
  135. function UDAExchangeWriterNew(var socket: ExgSocketType; bufferSize: UDABufferSize): UDAWriterPtr;
  136. begin
  137. asm
  138. move.l #$sysUdaExchangeWriterNew, D2;
  139. end;
  140. UDAExchangeWriterNew := __UDAExchangeWriterNew(socket, bufferSize);
  141. end;
  142. function UDAMemoryReaderNew(var bufferP: UInt8; bufferSizeInBytes: UDABufferSize): UDAReaderPtr;
  143. begin
  144. asm
  145. move.l #$sysUdaMemoryReaderNew, D2;
  146. end;
  147. UDAMemoryReaderNew := __UDAMemoryReaderNew(bufferP, bufferSizeInBytes);
  148. end;
  149. end.