comparison src/gpf2/inc/header.h @ 1:864b8cc0cf63

src/gpf2: preened GPF goo from TCS211
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 25 Sep 2016 23:38:58 +0000
parents
children
comparison
equal deleted inserted replaced
0:945cf7f506b2 1:864b8cc0cf63
1 /*
2 +------------------------------------------------------------------------------
3 | File: header.h
4 +------------------------------------------------------------------------------
5 | Copyright 2002 Texas Instruments Berlin, AG
6 | All rights reserved.
7 |
8 | This file is confidential and a trade secret of Texas
9 | Instruments Berlin, AG
10 | The receipt of or possession of this file does not convey
11 | any rights to reproduce or disclose its contents or to
12 | manufacture, use, or sell anything it may describe, in
13 | whole, or in part, without the specific written consent of
14 | Texas Instruments Berlin, AG.
15 +-----------------------------------------------------------------------------
16 | Purpose : Common header types.
17 +-----------------------------------------------------------------------------
18 */
19
20 #include "glob_defs.h"
21
22 #ifndef __HEADER_H__
23 #define __HEADER_H__
24
25
26 /*
27 * T_PRIM_HEADER
28 *
29 * Description : This type definition defines the custom specific
30 * part of a primitive. All primitives have the
31 * general format: header followed by data. The
32 * header of a primitive is changeable according to
33 * the requirements of the target system.
34 * Hints: Only the operation code opc as a USHORT value must
35 * be present. For multi-instance protocol stacks
36 * the routing information must be include in the
37 * header (T_ROUTE route).
38 */
39
40 #if !defined (T_SDU_DEFINED)
41
42 #define T_SDU_DEFINED
43
44 typedef struct
45 {
46 USHORT l_buf;
47 USHORT o_buf;
48 UBYTE buf[1];
49 } T_sdu;
50
51 #endif /* T_SDU_DEFINED */
52
53 /*
54 * list of generic data descriptors
55 */
56
57 #ifndef __T_desc_list__
58 #define __T_desc_list__
59
60 typedef struct
61 {
62 U16 list_len; /*< 0: 2> length in octets of whole data */
63 U8 _align0; /*< 2: 1> alignment */
64 U8 _align1; /*< 3: 1> alignment */
65 U32 first; /*< 4: 4> pointer to first generic data descriptor */
66 } T_desc_list;
67 #endif
68
69 #ifndef __T_desc_list2__
70 #define __T_desc_list2__
71
72 typedef struct
73 {
74 U16 list_len; /*< 0: 2> length in octets of whole data */
75 U8 _align0; /*< 2: 1> alignment */
76 U8 _align1; /*< 3: 1> alignment */
77 U32 first; /*< 4: 4> pointer to first generic data descriptor */
78 } T_desc_list2;
79 #endif
80
81 #ifndef __T_desc_list3__
82 #define __T_desc_list3__
83
84 typedef struct
85 {
86 U16 list_len; /*< 0: 2> length in octets of whole data */
87 U8 _align0; /*< 2: 1> alignment */
88 U8 _align1; /*< 3: 1> alignment */
89 U32 first; /*< 4: 4> pointer to first generic data descriptor */
90 } T_desc_list3;
91 #endif
92
93 /*
94 * generic data descriptor
95 */
96 #ifndef __T_desc__
97 #define __T_desc__ /* to prevent double include in generated files */
98
99 typedef struct
100 {
101 ULONG next; /* next generic data descriptor */
102 USHORT len; /* length of content in octets */
103 UBYTE buffer[1]; /* buffer content */
104 } T_desc;
105 #endif /* __T_desc__ */
106
107 #ifndef __T_desc2__
108 #define __T_desc2__ /* to prevent double include in generated files */
109
110 typedef struct
111 {
112 U32 next; /*< 0: 4> next generic data descriptor */
113 U16 offset; /*< 4: 2> offset in octets */
114 U16 len; /*< 6: 2> length of content in octets */
115 U16 size; /*< 8: 2> size of buffer in octets */
116 U8 buffer[1]; /*< 10: 1> buffer content */
117 } T_desc2;
118 #endif /* __T_desc2__ */
119
120 #ifndef __T_desc3__
121 #define __T_desc3__
122
123 typedef struct
124 {
125 U32 next; /*< 0: 4> next generic data descriptor */
126 U16 offset; /*< 4: 2> offset in octets */
127 U16 len; /*< 6: 2> length of content in octets */
128 U32 buffer; /*< 8: 4> pointer to buffer */
129 } T_desc3;
130 #endif
131
132 #if !defined (T_FRAME_DESC_DEFINED)
133
134 #define T_FRAME_DESC_DEFINED
135
136 typedef struct
137 {
138 UBYTE *Adr[2];
139 USHORT Len[2];
140 } T_FRAME_DESC;
141
142 #endif /* T_FRAME_DESC_DEFINED */
143
144 #ifdef OPTION_MULTI_INSTANCES
145 typedef struct
146 {
147 USHORT inst_no;
148 USHORT chan_no;
149 UBYTE ts_no;
150 } T_ROUTE;
151 #endif
152
153 typedef struct
154 {
155 char entity;
156 char dir;
157 char type;
158 char align1;
159 } T_SDU_TRACE;
160
161 #if !defined (T_PRIM_HEADER_DEFINED)
162 #define T_PRIM_HEADER_DEFINED
163
164 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
165 In the current implementation it is essential that the
166 T_PRIM_HEADER type has the same size as the T_DP_HEADER
167 type and that the element use_cnt is at the same position
168 in both header types!
169 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
170 typedef struct
171 {
172 ULONG opc; /* equal to int SignalCode */
173 ULONG len; /* primitive length */
174 LONG use_cnt; /* counter indicates cuurent number of users */
175 T_sdu *sdu; /* pointer to sdu struct if available */
176 ULONG sh_offset; /* offset of system header */
177 ULONG dph_offset; /* offset of dynamic prim header */
178 } T_PRIM_HEADER;
179
180 #endif /* T_PRIM_HEADER_DEFINED */
181
182 typedef struct _T_DP_HEADER
183 {
184 ULONG magic_nr; /* magic number is checked at each access */
185 ULONG size; /* available bytes in dynamic primitive partition */
186 ULONG use_cnt; /* counter indicates current number of users */
187 ULONG offset; /* offset from partition begin to next free byte */
188 T_VOID_STRUCT**
189 drp_bound_list; /* pointer to the list of dynamic partitions bound to this partition */
190 struct _T_DP_HEADER *next;
191 } T_DP_HEADER;
192
193 typedef struct
194 {
195 SHORT ref_cnt; /* ref_cnt for MALLOC partitions */
196 SHORT desc_type; /* descriptor type */
197 } T_M_HEADER;
198
199 /*
200 * flags in the opc
201 */
202 #define EXTENDED_OPC 0x80000000
203 #define VIRTUAL_OPC 0x40000000
204 #define DOWNLINK_OPC 0x00004000
205 #define UPLINK_OPC 0x00000000
206 #define MEMHANDLE_OPC 0x20000000
207
208 #define SAP32_MASK 0x00007fff /* UL/DL Bit Part of SAP Nr.*/
209 #define SAP16_MASK 0x7f00
210 #define PRIM32_MASK 0x00ff0000
211 #define PRIM16_MASK 0x00ff
212 #define OPC32BIT(opc) (opc&EXTENDED_OPC)
213 /*
214 * for 16bit opcs SAP_NR() returns the same result as (opc & SAP_MASK) in the old style.
215 * No shift right is done, e.g. 0x4d00 is returned instead of 0x4d.
216 * Also the UL/DL bit is part of the SAP to be downwards compatible with the
217 * existing code in the xxx_pei.c modules.
218 */
219 #define SAP_NR(opc) (USHORT)((opc&0x80000000)?(opc&SAP32_MASK):(opc&SAP16_MASK))
220 #define PRIM_NR(opc) (USHORT)((opc&0x80000000)?((opc&PRIM32_MASK)>>16):(opc&PRIM16_MASK))
221
222 #define HANDLE_BIT ((UBYTE)0x80)
223 #define HANDLE_MASK ((UBYTE)0x7F)
224
225 typedef struct
226 {
227 ULONG magic_nr;
228 ULONG time;
229 char snd [RESOURCE_NAMELEN];
230 char rcv [RESOURCE_NAMELEN];
231 char org_rcv [RESOURCE_NAMELEN];
232 } T_S_HEADER;
233
234 typedef struct
235 {
236 T_PRIM_HEADER p_hdr;
237 T_PRIM_HEADER *prim_ptr;
238 } T_PRIM_X;
239
240 #endif /* HEADER_H */
241