~ubuntu-branches/debian/lenny/fpc/lenny

« back to all changes in this revision

Viewing changes to fpcsrc/packages/extra/palmunits/seriallinkmgr.pp

  • Committer: Bazaar Package Importer
  • Author(s): Mazen Neifer, Torsten Werner, Mazen Neifer
  • Date: 2008-05-17 17:12:11 UTC
  • mfrom: (3.1.9 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080517171211-9qi33xhd9evfa0kg
Tags: 2.2.0-dfsg1-9
[ Torsten Werner ]
* Add Mazen Neifer to Uploaders field.

[ Mazen Neifer ]
* Moved FPC sources into a version dependent directory from /usr/share/fpcsrc
  to /usr/share/fpcsrc/${FPCVERSION}. This allow installing more than on FPC
  release.
* Fixed far call issue in compiler preventing building huge binearies.
  (closes: #477743)
* Updated building dependencies, recomennded and suggested packages.
* Moved fppkg to fp-utils as it is just a helper tool and is not required by
  compiler.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
{$MACRO ON}
 
2
 
 
3
(******************************************************************************
 
4
 *
 
5
 * Copyright (c) 1994-2000 Palm, Inc. or its subsidiaries.
 
6
 * All rights reserved.
 
7
 *
 
8
 * File: SerialLinkMgr.h
 
9
 *
 
10
 * Release: Palm OS SDK 4.0 (63220)
 
11
 *
 
12
 * Description:
 
13
 *    Source for Serial Link Routines on Pilot
 
14
 *
 
15
 * History:
 
16
 *    2/6/95 replaces DSerial.h from Debugger
 
17
 *
 
18
 *****************************************************************************)
 
19
 
 
20
unit seriallinkmgr;
 
21
 
 
22
interface
 
23
 
 
24
uses palmos, coretraps, errorbase;
 
25
 
 
26
//*************************************************************************
 
27
//   Pre-defined, fixxed  Socket ID's
 
28
//*************************************************************************
 
29
 
 
30
const
 
31
  slkSocketDebugger     = 0; // Debugger Socket
 
32
  slkSocketConsole      = 1; // Console Socket
 
33
  slkSocketRemoteUI     = 2; // Remote UI Socket
 
34
  slkSocketDLP          = 3; // Desktop Link Socket
 
35
  slkSocketFirstDynamic = 4; // first dynamic socket ID
 
36
 
 
37
//*************************************************************************
 
38
//  Packet Types
 
39
//*************************************************************************
 
40
 
 
41
const
 
42
  slkPktTypeSystem       = 0; // System packets
 
43
  slkPktTypeUnused1      = 1; // used to be: Connection Manager packets
 
44
  slkPktTypePAD          = 2; // PAD Protocol packets
 
45
  slkPktTypeLoopBackTest = 3; // Loop-back test packets
 
46
 
 
47
//*************************************************************************
 
48
//
 
49
// Packet structure:
 
50
//      header
 
51
//      body (0-dbgMaxPacketBodyLength bytes of data)
 
52
//      footer
 
53
//
 
54
//*************************************************************************
 
55
 
 
56
//----------------------------------------------------------------------
 
57
// packet header
 
58
// Fields marked with -> must be filled in by caller
 
59
// Fields marked with X  will be filled in by SlkSendPacket.
 
60
//----------------------------------------------------------------------
 
61
 
 
62
type
 
63
  SlkPktHeaderChecksum = UInt8;
 
64
 
 
65
  SlkPktHeaderType = record
 
66
    signature1: UInt16;             // X  first 2 bytes of signature
 
67
    signature2: UInt8;              // X  3 and final byte of signature
 
68
    dest: UInt8;                    // -> destination socket Id
 
69
    src: UInt8;                     // -> src socket Id
 
70
    type_: UInt8;                   // -> packet type
 
71
    bodySize: UInt16;               // X  size of body
 
72
    transId: UInt8;                 // -> transaction Id
 
73
                                    //    if 0 specified, it will be replaced
 
74
    checksum: SlkPktHeaderChecksum; // X  check sum of header
 
75
  end;
 
76
 
 
77
  SlkPktHeaderPtr = ^SlkPktHeaderType;
 
78
 
 
79
const
 
80
  slkPktHeaderSignature1 = $BEEF;
 
81
  slkPktHeaderSignature2 = $ED;
 
82
 
 
83
  slkPktHeaderSigFirst   = $BE; // First byte
 
84
  slkPktHeaderSigSecond  = $EF; // second byte
 
85
  slkPktHeaderSigThird   = $ED; // third byte
 
86
 
 
87
//----------------------------------------------------------------------
 
88
// packet footer
 
89
//----------------------------------------------------------------------
 
90
 
 
91
type
 
92
  SlkPktFooterType = record
 
93
    crc16: UInt16; // header and body crc
 
94
  end;
 
95
 
 
96
  SlkPktFooterPtr = ^SlkPktFooterType;
 
97
 
 
98
//*************************************************************************
 
99
//
 
100
// Write Data Structure passed to SlkSendPacket. This structure
 
101
//  Tells SlkSendPacket where each of the chunks that comprise the body are
 
102
//  and the size of each. SlkSendPacket accepts a pointer to an array
 
103
//  of SlkWriteDataTypes, the last one has a size field of 0.
 
104
//
 
105
//*************************************************************************
 
106
 
 
107
  SlkWriteDataType = record
 
108
    size: UInt16;   // last one has size of 0
 
109
    dataP: Pointer; // pointer to data
 
110
  end;
 
111
 
 
112
  SlkWriteDataPtr = ^SlkWriteDataType;
 
113
 
 
114
(*******************************************************************
 
115
 * Serial Link Manager Errors
 
116
 * the constant slkErrorClass is defined in SystemMgr.h
 
117
 *******************************************************************)
 
118
 
 
119
const
 
120
  slkErrChecksum        = slkErrorClass or 1;
 
121
  slkErrFormat          = slkErrorClass or 2;
 
122
  slkErrBuffer          = slkErrorClass or 3;
 
123
  slkErrTimeOut         = slkErrorClass or 4;
 
124
  slkErrHandle          = slkErrorClass or 5;
 
125
  slkErrBodyLimit       = slkErrorClass or 6;
 
126
  slkErrTransId         = slkErrorClass or 7;
 
127
  slkErrResponse        = slkErrorClass or 8;
 
128
  slkErrNoDefaultProc   = slkErrorClass or 9;
 
129
  slkErrWrongPacketType = slkErrorClass or 10;
 
130
  slkErrBadParam        = slkErrorClass or 11;
 
131
  slkErrAlreadyOpen     = slkErrorClass or 12;
 
132
  slkErrOutOfSockets    = slkErrorClass or 13;
 
133
  slkErrSocketNotOpen   = slkErrorClass or 14;
 
134
  slkErrWrongDestSocket = slkErrorClass or 15;
 
135
  slkErrWrongPktType    = slkErrorClass or 16;
 
136
  slkErrBusy            = slkErrorClass or 17; // called while sending a packet
 
137
                                               // only returned on single-threaded
 
138
                                               // emulation implementations
 
139
  slkErrNotOpen         = slkErrorClass or 18;
 
140
 
 
141
(*******************************************************************
 
142
 * Type definition for a Serial Link Socket Listener
 
143
 *
 
144
 *******************************************************************)
 
145
 
 
146
type
 
147
  SlkSocketListenerProcPtr = procedure(headerP: SlkPktHeaderPtr; bodyP: Pointer);
 
148
 
 
149
  SlkSocketListenType = record
 
150
    listenerP: SlkSocketListenerProcPtr;
 
151
    headerBufferP: SlkPktHeaderPtr;      // App allocated buffer for header
 
152
    bodyBufferP: Pointer;                // App allocated buffer for body
 
153
    bodyBufferSize: UInt32;
 
154
  end;
 
155
 
 
156
  SlkSocketListenPtr = ^SlkSocketListenType;
 
157
 
 
158
(*******************************************************************
 
159
 * Prototypes
 
160
 *******************************************************************)
 
161
 
 
162
//-------------------------------------------------------------------
 
163
// Initializes the Serial Link Manager
 
164
//-------------------------------------------------------------------
 
165
 
 
166
function SlkOpen: Err; syscall sysTrapSlkOpen;
 
167
 
 
168
//-------------------------------------------------------------------
 
169
// Close down the Serial Link Manager
 
170
//-------------------------------------------------------------------
 
171
 
 
172
function SlkClose: Err; syscall sysTrapSlkClose;
 
173
 
 
174
//-------------------------------------------------------------------
 
175
// Open up another Serial Link socket. The caller must have already
 
176
//  opened the comm library and set it to the right settings.
 
177
//-------------------------------------------------------------------
 
178
 
 
179
function SlkOpenSocket(portID: UInt16; var socketP: UInt16; staticSocket: Boolean): Err; syscall sysTrapSlkOpenSocket;
 
180
 
 
181
//-------------------------------------------------------------------
 
182
// Close up a Serial Link socket.
 
183
//  Warning: This routine is assymetrical with SlkOpenSocket because it
 
184
//   WILL CLOSE the library for the caller (unless the refNum is the
 
185
//   refNum of the debugger comm library).
 
186
//-------------------------------------------------------------------
 
187
 
 
188
function SlkCloseSocket(socket: UInt16): Err; syscall sysTrapSlkCloseSocket;
 
189
 
 
190
//-------------------------------------------------------------------
 
191
// Get the library refNum for a particular Socket
 
192
//-------------------------------------------------------------------
 
193
 
 
194
function SlkSocketPortID(socket: UInt16; var portIDP: UInt16): Err; syscall sysTrapSlkSocketRefNum;
 
195
 
 
196
//-------------------------------------------------------------------
 
197
// Set the in-packet timeout for a socket
 
198
//-------------------------------------------------------------------
 
199
 
 
200
function SlkSocketSetTimeout(socket: UInt16; timeout: Int32): Err; syscall sysTrapSlkSocketSetTimeout;
 
201
 
 
202
//-------------------------------------------------------------------
 
203
// Flush a Socket
 
204
//-------------------------------------------------------------------
 
205
 
 
206
function SlkFlushSocket(socket: UInt16; timeout: Int32): Err; syscall sysTrapSlkFlushSocket;
 
207
 
 
208
//-------------------------------------------------------------------
 
209
// Set up a Socket Listener
 
210
//-------------------------------------------------------------------
 
211
 
 
212
function SlkSetSocketListener(socket: UInt16; socketP: SlkSocketListenPtr): Err; syscall sysTrapSlkSetSocketListener;
 
213
 
 
214
//-------------------------------------------------------------------
 
215
// Sends a packet's header, body, footer.  Stuffs the header's
 
216
// magic number and checksum fields.  Expects all other
 
217
// header fields to be filled in by caller.
 
218
// errors returned: dseHandle, dseLine, dseIO, dseParam, dseBodyLimit,
 
219
//                  dseOther
 
220
//-------------------------------------------------------------------
 
221
 
 
222
function SlkSendPacket(headerP: SlkPktHeaderPtr; writeList: SlkWriteDataPtr): Err; syscall sysTrapSlkSendPacket;
 
223
 
 
224
//-------------------------------------------------------------------
 
225
// Receives and validates an entire packet.
 
226
// errors returned: dseHandle, dseParam, dseLine, dseIO, dseFormat,
 
227
//                  dseChecksum, dseBuffer, dseBodyLimit, dseTimeOut,
 
228
//                  dseOther
 
229
//-------------------------------------------------------------------
 
230
 
 
231
function SlkReceivePacket(socket: UInt16; andOtherSockets: Boolean;
 
232
                          headerP: SlkPktHeaderPtr; bodyP: Pointer; bodySize: UInt16;
 
233
                          timeout: Int32): Err; syscall sysTrapSlkReceivePacket;
 
234
 
 
235
//-------------------------------------------------------------------
 
236
// Do Default processing of a System packet
 
237
//-------------------------------------------------------------------
 
238
 
 
239
function SlkSysPktDefaultResponse(headerP: SlkPktHeaderPtr; bodyP: Pointer): Err; syscall sysTrapSlkSysPktDefaultResponse;
 
240
 
 
241
//-------------------------------------------------------------------
 
242
// Do RPC call
 
243
//-------------------------------------------------------------------
 
244
 
 
245
function SlkProcessRPC(headerP: SlkPktHeaderPtr; bodyP: Pointer): Err; syscall sysTrapSlkProcessRPC;
 
246
 
 
247
implementation
 
248
 
 
249
end.