123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- {$MACRO ON}
- (******************************************************************************
- *
- * Copyright (c) 1994-2000 Palm, Inc. or its subsidiaries.
- * All rights reserved.
- *
- * File: SerialLinkMgr.h
- *
- * Release: Palm OS SDK 4.0 (63220)
- *
- * Description:
- * Source for Serial Link Routines on Pilot
- *
- * History:
- * 2/6/95 replaces DSerial.h from Debugger
- *
- *****************************************************************************)
- unit seriallinkmgr;
- interface
- uses palmos, coretraps, errorbase;
- //*************************************************************************
- // Pre-defined, fixxed Socket ID's
- //*************************************************************************
- const
- slkSocketDebugger = 0; // Debugger Socket
- slkSocketConsole = 1; // Console Socket
- slkSocketRemoteUI = 2; // Remote UI Socket
- slkSocketDLP = 3; // Desktop Link Socket
- slkSocketFirstDynamic = 4; // first dynamic socket ID
- //*************************************************************************
- // Packet Types
- //*************************************************************************
- const
- slkPktTypeSystem = 0; // System packets
- slkPktTypeUnused1 = 1; // used to be: Connection Manager packets
- slkPktTypePAD = 2; // PAD Protocol packets
- slkPktTypeLoopBackTest = 3; // Loop-back test packets
- //*************************************************************************
- //
- // Packet structure:
- // header
- // body (0-dbgMaxPacketBodyLength bytes of data)
- // footer
- //
- //*************************************************************************
- //----------------------------------------------------------------------
- // packet header
- // Fields marked with -> must be filled in by caller
- // Fields marked with X will be filled in by SlkSendPacket.
- //----------------------------------------------------------------------
- type
- SlkPktHeaderChecksum = UInt8;
- SlkPktHeaderType = record
- signature1: UInt16; // X first 2 bytes of signature
- signature2: UInt8; // X 3 and final byte of signature
- dest: UInt8; // -> destination socket Id
- src: UInt8; // -> src socket Id
- type_: UInt8; // -> packet type
- bodySize: UInt16; // X size of body
- transId: UInt8; // -> transaction Id
- // if 0 specified, it will be replaced
- checksum: SlkPktHeaderChecksum; // X check sum of header
- end;
- SlkPktHeaderPtr = ^SlkPktHeaderType;
- const
- slkPktHeaderSignature1 = $BEEF;
- slkPktHeaderSignature2 = $ED;
- slkPktHeaderSigFirst = $BE; // First byte
- slkPktHeaderSigSecond = $EF; // second byte
- slkPktHeaderSigThird = $ED; // third byte
- //----------------------------------------------------------------------
- // packet footer
- //----------------------------------------------------------------------
- type
- SlkPktFooterType = record
- crc16: UInt16; // header and body crc
- end;
- SlkPktFooterPtr = ^SlkPktFooterType;
- //*************************************************************************
- //
- // Write Data Structure passed to SlkSendPacket. This structure
- // Tells SlkSendPacket where each of the chunks that comprise the body are
- // and the size of each. SlkSendPacket accepts a pointer to an array
- // of SlkWriteDataTypes, the last one has a size field of 0.
- //
- //*************************************************************************
- SlkWriteDataType = record
- size: UInt16; // last one has size of 0
- dataP: Pointer; // pointer to data
- end;
- SlkWriteDataPtr = ^SlkWriteDataType;
- (*******************************************************************
- * Serial Link Manager Errors
- * the constant slkErrorClass is defined in SystemMgr.h
- *******************************************************************)
- const
- slkErrChecksum = slkErrorClass or 1;
- slkErrFormat = slkErrorClass or 2;
- slkErrBuffer = slkErrorClass or 3;
- slkErrTimeOut = slkErrorClass or 4;
- slkErrHandle = slkErrorClass or 5;
- slkErrBodyLimit = slkErrorClass or 6;
- slkErrTransId = slkErrorClass or 7;
- slkErrResponse = slkErrorClass or 8;
- slkErrNoDefaultProc = slkErrorClass or 9;
- slkErrWrongPacketType = slkErrorClass or 10;
- slkErrBadParam = slkErrorClass or 11;
- slkErrAlreadyOpen = slkErrorClass or 12;
- slkErrOutOfSockets = slkErrorClass or 13;
- slkErrSocketNotOpen = slkErrorClass or 14;
- slkErrWrongDestSocket = slkErrorClass or 15;
- slkErrWrongPktType = slkErrorClass or 16;
- slkErrBusy = slkErrorClass or 17; // called while sending a packet
- // only returned on single-threaded
- // emulation implementations
- slkErrNotOpen = slkErrorClass or 18;
- (*******************************************************************
- * Type definition for a Serial Link Socket Listener
- *
- *******************************************************************)
- type
- SlkSocketListenerProcPtr = procedure(headerP: SlkPktHeaderPtr; bodyP: Pointer);
- SlkSocketListenType = record
- listenerP: SlkSocketListenerProcPtr;
- headerBufferP: SlkPktHeaderPtr; // App allocated buffer for header
- bodyBufferP: Pointer; // App allocated buffer for body
- bodyBufferSize: UInt32;
- end;
- SlkSocketListenPtr = ^SlkSocketListenType;
- (*******************************************************************
- * Prototypes
- *******************************************************************)
- //-------------------------------------------------------------------
- // Initializes the Serial Link Manager
- //-------------------------------------------------------------------
- function SlkOpen: Err; syscall sysTrapSlkOpen;
- //-------------------------------------------------------------------
- // Close down the Serial Link Manager
- //-------------------------------------------------------------------
- function SlkClose: Err; syscall sysTrapSlkClose;
- //-------------------------------------------------------------------
- // Open up another Serial Link socket. The caller must have already
- // opened the comm library and set it to the right settings.
- //-------------------------------------------------------------------
- function SlkOpenSocket(portID: UInt16; var socketP: UInt16; staticSocket: Boolean): Err; syscall sysTrapSlkOpenSocket;
- //-------------------------------------------------------------------
- // Close up a Serial Link socket.
- // Warning: This routine is assymetrical with SlkOpenSocket because it
- // WILL CLOSE the library for the caller (unless the refNum is the
- // refNum of the debugger comm library).
- //-------------------------------------------------------------------
- function SlkCloseSocket(socket: UInt16): Err; syscall sysTrapSlkCloseSocket;
- //-------------------------------------------------------------------
- // Get the library refNum for a particular Socket
- //-------------------------------------------------------------------
- function SlkSocketPortID(socket: UInt16; var portIDP: UInt16): Err; syscall sysTrapSlkSocketRefNum;
- //-------------------------------------------------------------------
- // Set the in-packet timeout for a socket
- //-------------------------------------------------------------------
- function SlkSocketSetTimeout(socket: UInt16; timeout: Int32): Err; syscall sysTrapSlkSocketSetTimeout;
- //-------------------------------------------------------------------
- // Flush a Socket
- //-------------------------------------------------------------------
- function SlkFlushSocket(socket: UInt16; timeout: Int32): Err; syscall sysTrapSlkFlushSocket;
- //-------------------------------------------------------------------
- // Set up a Socket Listener
- //-------------------------------------------------------------------
- function SlkSetSocketListener(socket: UInt16; socketP: SlkSocketListenPtr): Err; syscall sysTrapSlkSetSocketListener;
- //-------------------------------------------------------------------
- // Sends a packet's header, body, footer. Stuffs the header's
- // magic number and checksum fields. Expects all other
- // header fields to be filled in by caller.
- // errors returned: dseHandle, dseLine, dseIO, dseParam, dseBodyLimit,
- // dseOther
- //-------------------------------------------------------------------
- function SlkSendPacket(headerP: SlkPktHeaderPtr; writeList: SlkWriteDataPtr): Err; syscall sysTrapSlkSendPacket;
- //-------------------------------------------------------------------
- // Receives and validates an entire packet.
- // errors returned: dseHandle, dseParam, dseLine, dseIO, dseFormat,
- // dseChecksum, dseBuffer, dseBodyLimit, dseTimeOut,
- // dseOther
- //-------------------------------------------------------------------
- function SlkReceivePacket(socket: UInt16; andOtherSockets: Boolean;
- headerP: SlkPktHeaderPtr; bodyP: Pointer; bodySize: UInt16;
- timeout: Int32): Err; syscall sysTrapSlkReceivePacket;
- //-------------------------------------------------------------------
- // Do Default processing of a System packet
- //-------------------------------------------------------------------
- function SlkSysPktDefaultResponse(headerP: SlkPktHeaderPtr; bodyP: Pointer): Err; syscall sysTrapSlkSysPktDefaultResponse;
- //-------------------------------------------------------------------
- // Do RPC call
- //-------------------------------------------------------------------
- function SlkProcessRPC(headerP: SlkPktHeaderPtr; bodyP: Pointer): Err; syscall sysTrapSlkProcessRPC;
- implementation
- end.
|