1*3398c5b8SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*3398c5b8SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*3398c5b8SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*3398c5b8SAndrew Rist * distributed with this work for additional information 6*3398c5b8SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*3398c5b8SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*3398c5b8SAndrew Rist * "License"); you may not use this file except in compliance 9*3398c5b8SAndrew Rist * with the License. You may obtain a copy of the License at 10*3398c5b8SAndrew Rist * 11*3398c5b8SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*3398c5b8SAndrew Rist * 13*3398c5b8SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*3398c5b8SAndrew Rist * software distributed under the License is distributed on an 15*3398c5b8SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*3398c5b8SAndrew Rist * KIND, either express or implied. See the License for the 17*3398c5b8SAndrew Rist * specific language governing permissions and limitations 18*3398c5b8SAndrew Rist * under the License. 19*3398c5b8SAndrew Rist * 20*3398c5b8SAndrew Rist *************************************************************/ 21*3398c5b8SAndrew Rist 22*3398c5b8SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir /************************************************************************* 25cdf0e10cSrcweir * 26cdf0e10cSrcweir * ATTENTION 27cdf0e10cSrcweir * This file is intended to work inside and outside the StarOffice environment. 28cdf0e10cSrcweir * Only adaption of file commtypes.hxx should be necessary. Else it is a bug! 29cdf0e10cSrcweir * 30cdf0e10cSrcweir ************************************************************************/ 31cdf0e10cSrcweir 32cdf0e10cSrcweir #include <automation/commtypes.hxx> 33cdf0e10cSrcweir #include <osl/endian.h> 34cdf0e10cSrcweir 35cdf0e10cSrcweir #ifndef MAKEDWORD 36cdf0e10cSrcweir #define MAKEDWORD(wl, wh) ((comm_DWORD)((wl) & 0xFFFF) | (((comm_DWORD)(wh) & 0xFFFF) << 16)) 37cdf0e10cSrcweir #endif 38cdf0e10cSrcweir #ifndef LOWORD 39cdf0e10cSrcweir #define LOWORD(d) ((comm_WORD)((comm_DWORD)(d) & 0xFFFF)) 40cdf0e10cSrcweir #endif 41cdf0e10cSrcweir #ifndef HIWORD 42cdf0e10cSrcweir #define HIWORD(d) ((comm_WORD)(((comm_DWORD)(d) >> 16) & 0xFFFF)) 43cdf0e10cSrcweir #endif 44cdf0e10cSrcweir #ifndef MAKEWORD 45cdf0e10cSrcweir #define MAKEWORD(bl, bh) ((comm_WORD)((bl) & 0xFF) | (((comm_WORD)(bh) & 0xFF) << 8)) 46cdf0e10cSrcweir #endif 47cdf0e10cSrcweir #ifndef LOBYTE 48cdf0e10cSrcweir #define LOBYTE(w) ((comm_BYTE)((comm_WORD)(w) & 0xFF)) 49cdf0e10cSrcweir #endif 50cdf0e10cSrcweir #ifndef HIBYTE 51cdf0e10cSrcweir #define HIBYTE(w) ((comm_BYTE)(((comm_WORD)(w) >> 8) & 0xFF)) 52cdf0e10cSrcweir #endif 53cdf0e10cSrcweir #ifndef MAKEBYTE 54cdf0e10cSrcweir #define MAKEBYTE(nl, nh) ((comm_BYTE)(((nl) & 0x0F) | (((nh) & 0x0F) << 4))) 55cdf0e10cSrcweir #endif 56cdf0e10cSrcweir #ifndef LONIBBLE 57cdf0e10cSrcweir #define LONIBBLE(b) ((comm_BYTE)((b) & 0x0F)) 58cdf0e10cSrcweir #endif 59cdf0e10cSrcweir #ifndef HINIBBLE 60cdf0e10cSrcweir #define HINIBBLE(b) ((comm_BYTE)(((b) >> 4) & 0x0F)) 61cdf0e10cSrcweir #endif 62cdf0e10cSrcweir 63cdf0e10cSrcweir #ifndef SWAPWORD 64cdf0e10cSrcweir #define SWAPWORD(w) MAKEWORD(HIBYTE(w),LOBYTE(w)) 65cdf0e10cSrcweir #endif 66cdf0e10cSrcweir #ifndef SWAPDWORD 67cdf0e10cSrcweir #define SWAPDWORD(d) MAKEDWORD(SWAPWORD(HIWORD(d)),SWAPWORD(LOWORD(d))) 68cdf0e10cSrcweir #endif 69cdf0e10cSrcweir 70cdf0e10cSrcweir #ifdef OSL_BIGENDIAN 71cdf0e10cSrcweir #ifndef NETWORD 72cdf0e10cSrcweir #define NETWORD(w) (comm_WORD)(w) 73cdf0e10cSrcweir #endif 74cdf0e10cSrcweir #ifndef NETDWORD 75cdf0e10cSrcweir #define NETDWORD(d) (comm_DWORD)(d) 76cdf0e10cSrcweir #endif 77cdf0e10cSrcweir #endif // OSL_BIGENDIAN 78cdf0e10cSrcweir 79cdf0e10cSrcweir #ifdef OSL_LITENDIAN 80cdf0e10cSrcweir #ifndef NETWORD 81cdf0e10cSrcweir #define NETWORD(w) MAKEWORD(HIBYTE(w),LOBYTE(w)) 82cdf0e10cSrcweir #endif 83cdf0e10cSrcweir #ifndef NETDWORD 84cdf0e10cSrcweir #define NETDWORD(d) MAKEDWORD(NETWORD(HIWORD(d)),NETWORD(LOWORD(d))) 85cdf0e10cSrcweir #endif 86cdf0e10cSrcweir #endif // OSL_LITENDIAN 87cdf0e10cSrcweir 88cdf0e10cSrcweir /** 89cdf0e10cSrcweir Es gibt zwei arten von Datenpaketen 90cdf0e10cSrcweir die erste enth�lt in den ersten 4 Byte die L�ngenangabe und in den Darauffolgenden die Daten 91cdf0e10cSrcweir Die L�ngenangabe bezieht sich nur auf die Daten ohne die L�ngenangabe selbst. 92cdf0e10cSrcweir 93cdf0e10cSrcweir Die Zweite Art von Datenpaketen enth�lt Header mit weitere Informationen 94cdf0e10cSrcweir wie unten beschrieben. 95cdf0e10cSrcweir 96cdf0e10cSrcweir Umgeschaltet wird mit dem Boolean bUseMultiChannel im Konstruktor des Managers. 97cdf0e10cSrcweir **/ 98cdf0e10cSrcweir /** 99cdf0e10cSrcweir Defines f�r Header Typen: 100cdf0e10cSrcweir 101cdf0e10cSrcweir Allgemeiner Header: 102cdf0e10cSrcweir Byte L�nge Inhalt 103cdf0e10cSrcweir 0..3 4 L�nge des Paketes ohne diese 4 Byte 104cdf0e10cSrcweir 4 1 Pr�fsumme �ber die L�nge. Stimmt sie nicht wird die Verbindung geschlossen 105cdf0e10cSrcweir 5..6 2 L�nge des Headers ohne diese 2 Byte 106cdf0e10cSrcweir 7..8 2 Typ des Headers 107cdf0e10cSrcweir 108cdf0e10cSrcweir CH_SimpleMultiChannel: 109cdf0e10cSrcweir 9..10 2 Channel 110cdf0e10cSrcweir CH_Handshake Internal Use ONLY 111cdf0e10cSrcweir Keine Weiteren Daten! 112cdf0e10cSrcweir 113cdf0e10cSrcweir **/ 114cdf0e10cSrcweir typedef comm_UINT16 CMProtocol; 115cdf0e10cSrcweir 116cdf0e10cSrcweir #define CM_PROTOCOL_OLDSTYLE (CMProtocol)0x0001 117cdf0e10cSrcweir #define CM_PROTOCOL_MARS (CMProtocol)0x0001 118cdf0e10cSrcweir #define CM_PROTOCOL_BROADCASTER (CMProtocol)0x0002 119cdf0e10cSrcweir #define CM_PROTOCOL_USER_START (CMProtocol)0x0100 120cdf0e10cSrcweir 121cdf0e10cSrcweir typedef comm_USHORT HandshakeType; 122cdf0e10cSrcweir typedef comm_USHORT CommunicationOption; 123cdf0e10cSrcweir 124cdf0e10cSrcweir #define CH_NoHeader 0x0000 125cdf0e10cSrcweir #define CH_SimpleMultiChannel 0x0001 126cdf0e10cSrcweir #define CH_Handshake 0x0002 127cdf0e10cSrcweir 128cdf0e10cSrcweir #define CH_REQUEST_HandshakeAlive ((HandshakeType)0x0101) /// Fordert eine Alive Antwort an 129cdf0e10cSrcweir #define CH_RESPONSE_HandshakeAlive ((HandshakeType)0x0102) /// Alive Antwort 130cdf0e10cSrcweir 131cdf0e10cSrcweir /** 132cdf0e10cSrcweir Announce supported options: 133cdf0e10cSrcweir Client announces available options 134cdf0e10cSrcweir Server returns subset of these options (note that the sbset can be the entire set also) 135cdf0e10cSrcweir **/ 136cdf0e10cSrcweir #define CH_SUPPORT_OPTIONS ((HandshakeType)0x0103) 137cdf0e10cSrcweir #define OPT_USE_SHUTDOWN_PROTOCOL ((CommunicationOption)0x0001) 138cdf0e10cSrcweir 139cdf0e10cSrcweir /// these are for making sure all Data is read prior to shutting sown the link 140cdf0e10cSrcweir #define CH_REQUEST_ShutdownLink ((HandshakeType)0x0104) /// Request to Shutdown this link 141cdf0e10cSrcweir #define CH_ShutdownLink ((HandshakeType)0x0105) /// Shutdown this link 142cdf0e10cSrcweir 143cdf0e10cSrcweir #define CH_SetApplication ((HandshakeType)0x0106) /// Set Description of Client 144cdf0e10cSrcweir 145