|
|
1.1 root 1: -- VTPM: encode ASR PDU
2:
3: -- $Header: /f/osi/vt/RCS/send_asr.py,v 7.0 89/11/23 22:31:43 mrose Rel $
4: --
5: --
6: -- $Log: send_asr.py,v $
7: -- Revision 7.0 89/11/23 22:31:43 mrose
8: -- Release 6.0
9: --
10:
11: --
12: -- NOTICE
13: --
14: -- Acquisition, use, and distribution of this module and related
15: -- materials are subject to the restrictions of a license agreement.
16: -- Consult the Preface in the User's Manual for the full terms of
17: -- this agreement.
18: --
19: --
20:
21:
22: ASRPDU DEFINITIONS ::=
23:
24: %{
25: #include <stdio.h>
26: #include "sector1.h"
27:
28: #undef PEPYPARM
29: #define PEPYPARM int *
30:
31: #undef PEPYTEST
32:
33: static int l,m;
34:
35: #ifdef PEPYTEST
36:
37: char *myname;
38: ASR_MSG ud;
39: static char my_version = 0x01;
40: static char my_fu = 0x1c;
41:
42: main(argc,argv)
43: int argc;
44: char **argv;
45: {
46:
47: PE pe;
48: int i;
49:
50: myname = argv[0];
51:
52: ud.valid_reason = 0;
53: ud.result = 1;
54: ud.valid_imp = 0;
55: ud.valid_arg_list = 1;
56: ud.version.bitstring = my_version;
57: ud.version.bitcount = 1;
58: ud.arg_list.num_sp_param = 1;
59: ud.arg_list.num_cds_objects = 2;
60: ud.arg_list.num_css_objects = 0;
61: ud.arg_list.num_dev_objects = 0;
62: ud.arg_list.sp_val[0].param_num = 1;
63: ud.arg_list.sp_val[0].param_type = 1;
64: ud.arg_list.sp_val[0].args.int_arg = 80;
65: ud.arg_list.cds_val[0].obj_name = "KB";
66: ud.arg_list.cds_val[1].obj_name = "DI";
67: for(i=0; i<ud.arg_list.num_cds_objects; i++)
68: {
69: ud.arg_list.cds_val[i].dimensions = 0;
70: ud.arg_list.cds_val[i].valid_x_dim = 0;
71: ud.arg_list.cds_val[i].valid_y_dim = 0;
72: ud.arg_list.cds_val[i].valid_z_dim = 0;
73: ud.arg_list.cds_val[i].valid_erasure = 0;
74: ud.arg_list.cds_val[i].valid_rep_list = 1;
75: ud.arg_list.cds_val[i].valid_emp_list = 0;
76: ud.arg_list.cds_val[i].valid_fore_color = 0;
77: ud.arg_list.cds_val[i].valid_back_color = 0;
78: ud.arg_list.cds_val[i].valid_access_right = 0;
79: ud.arg_list.cds_val[i].rep_value.valid_cap = 1;
80: ud.arg_list.cds_val[i].rep_value.capability = 1;
81: ud.arg_list.cds_val[i].rep_value.num_reps = 1;
82: ud.arg_list.cds_val[i].rep_value.repertoire[0].rep_type = 2;
83: ud.arg_list.cds_val[i].rep_value.repertoire[0].rep_assign =
84: "ABC";
85: ud.arg_list.cds_val[i].rep_value.repertoire[0].valid_font_cap =
86: 0;
87: }
88: ud.func_units.bitstring = my_fu;
89: ud.func_units.bitcount = 5;
90:
91: build_ASRPDU_ASRpdu(&pe,1,NULL,NULLCP,&ud);
92:
93: print_ASRPDU_ASRpdu(pe,1,NULLIP,NULLVP,&ud);
94:
95: rcv_asr(pe);
96:
97: exit(0);
98: }
99:
100: #endif
101:
102: %}
103:
104: BEGIN
105:
106: SECTIONS build none none
107:
108: ASRpdu ::= CHOICE <<1>>
109:
110: {
111: asrpdu [1] IMPLICIT ASRcontent [[p (PEPYPARM)parm]]
112: }
113:
114: ASRcontent
115: %{
116: ASR_MSG *arg = (ASR_MSG *)parm;
117: %}
118: ::= SEQUENCE
119: {
120: userReason [0] IMPLICIT PrintableString [[s arg->reason.usr_reason]]
121: OPTIONAL <<(arg->valid_reason && (arg->reason.type == 0))>>,
122:
123: provReason [1] IMPLICIT INTEGER [[i arg->reason.provider_reason]]
124: OPTIONAL <<(arg->valid_reason && (arg->reason.type == 1))>>,
125:
126: [2] IMPLICIT INTEGER [[i arg->result]],
127:
128: [3] IMPLICIT ImplemIdent [[p (PEPYPARM)&(arg->imp_id)]]
129: OPTIONAL <<arg->valid_imp>>,
130:
131: [4] IMPLICIT BITSTRING
132: [[x int2strb (arg->version.bitstring, arg->version.bitcount)
133: $ arg->version.bitcount]],
134:
135: [5] IMPLICIT ArgumValueList [[p (PEPYPARM)&(arg->arg_list)]]
136: OPTIONAL <<arg->valid_arg_list>>,
137:
138: [6] IMPLICIT BITSTRING
139: [[x int2strb (arg->func_units.bitstring, arg->func_units.bitcount)
140: $ arg->func_units.bitcount]],
141:
142: [7] IMPLICIT INTEGER [[i arg->coll_winner]]
143: OPTIONAL <<arg->valid_coll>>
144: }
145:
146: ImplemIdent
147: %{
148: IMPLEM_ID *arg = (IMPLEM_ID *)parm;
149: %}
150: ::= SEQUENCE
151: {
152: impIdent [0] IMPLICIT OBJECT IDENTIFIER
153: [[O arg->imp_oid]]
154: OPTIONAL <<arg->oid_true>>,
155:
156: impName [1] IMPLICIT PrintableString
157: [[s arg->name]]
158: OPTIONAL <<arg->name_true>>,
159:
160: impVersion [2] IMPLICIT PrintableString
161: [[s arg->version]]
162: OPTIONAL <<arg->version_true>>
163: }
164:
165: ArgumValueList
166: %{
167: ARG_VAL_LIST *arg = (ARG_VAL_LIST *)parm;
168: %}
169: ::= SET OF <<l=0; l<(arg->num_sp_param
170: + (arg->num_cds_objects?1:0)); l++>> Goobers [[p parm]]
171:
172: Goobers
173: %{
174: ARG_VAL_LIST *arg = (ARG_VAL_LIST *)parm;
175: %}
176: ::= CHOICE <<(l < arg->num_sp_param) ? 1 : 2>>
177: {
178: [0] IMPLICIT SpecialArgs [[p (PEPYPARM)&(arg->sp_val[l])]],
179: vteParams [1] IMPLICIT ParamValueList [[p parm]]
180: }
181:
182: SpecialArgs
183: %{
184: SPECIAL_VALUE *arg = (SPECIAL_VALUE *)parm;
185: %}
186: ::= SEQUENCE
187: {
188: identifier INTEGER [[i arg->param_num]],
189: value CHOICE <<arg->param_type + 1>>
190: {
191: BOOLEAN [[b arg->args.bool_arg]],
192: INTEGER [[i arg->args.int_arg]],
193: PrintableString[[s arg->args.string_arg]]
194: }
195: }
196:
197: ParamValueList
198: %{
199: ARG_VAL_LIST *arg = (ARG_VAL_LIST *)parm;
200: %}
201: ::= SEQUENCE
202: {
203: displayObjects [0] IMPLICIT CDSValues [[p parm]]
204: OPTIONAL <<arg->num_cds_objects>>,
205:
206: -- controlObjects [1] IMPLICIT CSSValues [[p parm]]
207: -- OPTIONAL <<arg->num_css_objects>>,
208:
209: -- deviceObjects [2] IMPLICIT DEVValues [[p parm]]
210: -- OPTIONAL <<arg->num_dev_objects>>,
211:
212: deliveryControl [3] IMPLICIT INTEGER
213: [[i arg->del_ctrl]]
214: OPTIONAL <<arg->del_ctrl>>
215: }
216:
217: --Note Problem with IMPLICIT SEQUENCE Definition below. PEPY does not accept
218: --it as defined in 9041 and in fact that definition is ridiculous. At the
219: --moment it is not clear if even hand coding available in ISODE 3.0 can
220: --produce the requirement of 9041.
221:
222: CDSValues
223: %{
224: ARG_VAL_LIST *arg = (ARG_VAL_LIST *)parm;
225: %}
226: ::= SET OF <<l=0; l<arg->num_cds_objects; l++>> SEQUENCE
227: {
228: objectName PrintableString
229: [[s arg->cds_val[l].obj_name]],
230:
231: ObjectOffer [[p (PEPYPARM)&(arg->cds_val[l])]]
232: }
233:
234: CSSValues ::= NULL --Unused for now--
235:
236: DEVValues ::= NULL --Unused for now--
237:
238: ObjectOffer
239: %{
240: CDS_VALUE *arg = (CDS_VALUE *)parm;
241: %}
242: ::= SEQUENCE
243: {
244: dimensionValue [0] IMPLICIT INTEGER
245: [[i arg->dimensions]]
246: OPTIONAL <<arg->dimensions>>,
247:
248: xParamValue [1] IMPLICIT DimValue [[p
249: (PEPYPARM)&(arg->x_dim)]]
250: OPTIONAL <<arg->valid_x_dim>>,
251:
252: yParamValue [2] IMPLICIT DimValue [[p (PEPYPARM)&(arg->y_dim)]]
253: OPTIONAL <<arg->valid_y_dim>>,
254:
255: zParamValue [3] IMPLICIT DimValue [[p (PEPYPARM)&(arg->z_dim)]]
256: OPTIONAL <<arg->valid_z_dim>>,
257:
258: -- erasurevalue [4] IMPLICIT BOOLEAN
259: -- [[b arg->erasure]]
260: -- OPTIONAL <<arg->valid_erasure>>,
261:
262: repValueList [5] IMPLICIT CompRepValue [[p (PEPYPARM)&(arg->rep_value)]]
263: OPTIONAL <<arg->valid_rep_list>>,
264:
265: -- empValueList [6] IMPLICIT CompEmpValue [[p (PEPYPARM)&(arg->emp_value)]]
266: -- OPTIONAL <<arg->valid_emp_list>>,
267:
268: -- foreColorVal [7] IMPLICIT ColorValue [[p (PEPYPARM)&(arg->fore_color_list)]]
269: -- OPTIONAL <<arg->valid_fore_color>>,
270:
271: -- backColorVal [8] IMPLICIT ColorValue [[p (PEPYPARM)&(arg->back_color_list)]]
272: -- OPTIONAL <<arg->valid_back_color>>,
273:
274: objectAccRight [9] IMPLICIT INTEGER
275: [[i arg->access_right]]
276: OPTIONAL <<arg->valid_access_right>>
277: }
278:
279: DimValue
280: %{
281: DIMEN_VALUE *arg = (DIMEN_VALUE *)parm;
282: %}
283: ::= SEQUENCE
284: {
285: bound [0] CHOICE
286: <<arg->bound_type>>
287: {
288: unbounded NULL,
289:
290: limit INTEGER
291: [[i arg->bound]]
292: }
293: OPTIONAL <<arg->bound_type>>,
294:
295: addressing [1] IMPLICIT INTEGER
296: [[i arg->addressing]]
297: OPTIONAL <<arg->valid_addr>>,
298:
299: absolute [2] IMPLICIT INTEGER
300: [[i arg->absolute]]
301: OPTIONAL <<arg->valid_abs>>,
302:
303: window [3] CHOICE
304: <<arg->window_type>>
305: {
306: unbounded NULL,
307:
308: limit INTEGER
309: [[i arg->window]]
310: }
311: OPTIONAL <<arg->window_type>>
312: }
313:
314: CompRepValue
315: %{
316: REP_VALUE *arg = (REP_VALUE *)parm;
317: %}
318: ::= SEQUENCE
319: {
320: repCapability [0] IMPLICIT INTEGER
321: [[i arg->capability]]
322: OPTIONAL <<arg->valid_cap>>,
323:
324: [1] IMPLICIT SEQUENCE OF <<m=0; m<arg->num_reps; m++>>
325: RepFontValue [[p (PEPYPARM)&(arg->repertoire[m])]]
326: OPTIONAL <<arg->num_reps>>
327: }
328:
329: RepFontValue
330: %{
331: int i;
332: FONT_VALUE *arg = (FONT_VALUE *)parm;
333: %} ::=
334: CHOICE <<arg->rep_type>>
335: {
336: NULL,
337:
338: SEQUENCE
339: {
340: repertoire [0] IMPLICIT PrintableString
341: [[s arg->rep_assign]]
342: OPTIONAL <<arg->rep_assign>>,
343:
344: fontCapability [1] IMPLICIT INTEGER
345: [[i arg->capability]]
346: OPTIONAL <<arg->valid_font_cap>>,
347:
348: [2] IMPLICIT SEQUENCE OF
349: <<i=0; i<arg->num_fonts; i++>>
350: PrintableString
351: [[s arg->font_names[i] ]]
352: OPTIONAL <<arg->num_fonts>>
353: }
354: }
355:
356: --CompEmpValue
357: --%{
358: -- int i;
359: -- EMP_VALUE *arg = (EMP_VALUE *)parm;
360: --%} ::= SEQUENCE
361: --{
362: -- empCap [0] IMPLICIT INTEGER
363: -- [[i arg->capability]]
364: -- OPTIONAL <<arg->valid_cap>>,
365:
366: -- SEQUENCE OF <<i=0; i<arg->num_emps; i++>>
367: -- PrintableString
368: -- [[s arg->emp_string[i] ]]
369: -- OPTIONAL <<arg->num_emps>>
370: --}
371:
372: --ColorValue
373: --%{
374: -- int i;
375: -- COLOR_VALUE *arg = (COLOR_VALUE *)parm;
376: --%} ::= SEQUENCE
377: --{
378: -- colorCap [0] IMPLICIT INTEGER
379: -- [[i arg->capability]]
380: -- OPTIONAL <<arg->valid_cap>>,
381:
382: -- colorNames SEQUENCE OF <<i=0; i<arg->num_colors; i++>>
383: -- PrintableString
384: -- [[s arg->color_string[i] ]]
385: -- OPTIONAL <<arg->num_colors>>
386: --}
387:
388: END
389:
390: %{
391:
392: #ifdef PEPYTEST
393:
394: void advise(what,fmt,a,b,c,d,e,f,g,h,i,j)
395: char *what, *fmt, *a, *b, *c, *d, *e, *f, *g, *h, *i, *j;
396: {
397:
398: (void) fflush(stdout);
399:
400: fprintf(stderr,"%s: ",myname);
401: fprintf(stderr,fmt,a,b,c,d,e,f,g,h,i,j);
402: if(what)
403: (void) fputc(' ',stderr),perror(what);
404: else
405: (void) fputc('\n',stderr);
406: (void)fflush(stderr);
407: }
408:
409: testdebug(pe,words)
410: PE pe; /*Not Really, but pretend*/
411: char *words;
412: {
413:
414: printf("%s \n",words);
415: }
416:
417: #endif
418:
419: %}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.