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