|
|
1.1 root 1: -- VTPM: encode ASQ PDU
2:
3: -- $Header: /f/osi/vt/RCS/send_asq.py,v 7.0 89/11/23 22:31:42 mrose Rel $
4: --
5: --
6: -- $Log: send_asq.py,v $
7: -- Revision 7.0 89/11/23 22:31:42 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: ASQPDU 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,n;
34:
35: #ifdef PEPYTEST
36:
37: char *myname;
38: ASQ_MSG ud;
39: static char my_version = 0x01;
40: static char my_fu = 0x1c;
41: static char a_char = 0x01;
42:
43: main(argc,argv)
44: int argc;
45: char **argv;
46: {
47:
48: PE pe;
49: int i,j;
50:
51: myname = argv[0];
52:
53: ud.class = 1;
54: ud.valid_prof = 1;
55: ud.valid_imp = 0;
56: ud.valid_coll = 0;
57: ud.version.bitstring = my_version;
58: ud.version.bitcount = 1;
59: ud.func_units.bitstring = my_fu;
60: ud.func_units.bitcount = 5;
61: ud.asq_profile.oid_true = 1;
62: ud.asq_profile.prof_oid = ode2oid("telnet");
63: ud.asq_profile.num_sp_param = 1;
64: ud.asq_profile.num_cds_objects = 2;
65: ud.asq_profile.num_css_objects = 0;
66: ud.asq_profile.num_dev_objects = 0;
67: ud.asq_profile.sp_offer_list[0].param_num = 1;
68: ud.asq_profile.sp_offer_list[0].param_type = 1;
69: ud.asq_profile.sp_offer_list[0].args.int_arg.type = 0;
70: ud.asq_profile.sp_offer_list[0].args.int_arg.value = 80;
71:
72: ud.asq_profile.cds_offer_list[0].obj_name = "KB";
73: ud.asq_profile.cds_offer_list[1].obj_name = "DI";
74: for(i=0; i<ud.asq_profile.num_cds_objects; i++)
75: {
76: ud.asq_profile.cds_offer_list[i].valid_x_dim = 0;
77: ud.asq_profile.cds_offer_list[i].valid_y_dim = 0;
78: ud.asq_profile.cds_offer_list[i].valid_z_dim = 0;
79: ud.asq_profile.cds_offer_list[i].erasure.bitcount = 0;
80: ud.asq_profile.cds_offer_list[i].valid_rep_list = 1;
81: ud.asq_profile.cds_offer_list[i].valid_emp_list = 0;
82: ud.asq_profile.cds_offer_list[i].valid_fore_color = 0;
83: ud.asq_profile.cds_offer_list[i].valid_back_color = 0;
84: ud.asq_profile.cds_offer_list[i].access_right.bitcount = 0;
85: ud.asq_profile.cds_offer_list[i].rep_offer.valid_cap = 1;
86: ud.asq_profile.cds_offer_list[i].rep_offer.capability.type = 0;
87: ud.asq_profile.cds_offer_list[i].rep_offer.capability.value = 1;
88: ud.asq_profile.cds_offer_list[i].rep_offer.num_reps = 1;
89: ud.asq_profile.cds_offer_list[i].rep_offer.repertoire[0].rep_type = 2;
90: ud.asq_profile.cds_offer_list[i].rep_offer.repertoire[0].rep_assign = "ABC";
91: ud.asq_profile.cds_offer_list[i].rep_offer.repertoire[0].valid_font_cap = 0;
92: }
93:
94: build_ASQPDU_ASQpdu(&pe,1,NULL,NULLCP,&ud);
95:
96: print_ASQPDU_ASQpdu(pe,1,NULLIP,NULLVP,&ud);
97:
98: rcv_asq(pe);
99:
100: exit(0);
101: }
102:
103: #endif
104:
105: %}
106:
107: BEGIN
108:
109: SECTIONS build none none
110:
111: ASQpdu ::= CHOICE <<1>>
112:
113: {
114: asqpdu [0] IMPLICIT ASQcontent [[p (PEPYPARM)parm]]
115: }
116:
117: ASQcontent
118: %{
119: ASQ_MSG *arg = (ASQ_MSG *)parm;
120: %}
121: ::= SEQUENCE
122: {
123: [0] IMPLICIT INTEGER [[i arg->class]],
124:
125: [1] IMPLICIT ImplemIdent [[p (PEPYPARM)&(arg->imp_id)]]
126: OPTIONAL <<arg->valid_imp>>,
127:
128: [2] IMPLICIT BITSTRING
129: [[x int2strb (arg->func_units.bitstring, arg->func_units.bitcount)
130: $ arg->func_units.bitcount]],
131:
132: [3] IMPLICIT Profile [[p (PEPYPARM)&(arg->asq_profile)]]
133: OPTIONAL <<arg->valid_prof>>,
134:
135: [4] IMPLICIT BITSTRING
136: [[x int2strb (arg->version.bitstring, arg->version.bitcount)
137: $ arg->version.bitcount]],
138:
139: [5] IMPLICIT INTEGER [[i arg->coll_winner]]
140: OPTIONAL <<arg->valid_coll>>
141: }
142:
143: ImplemIdent
144: %{
145: IMPLEM_ID *arg = (IMPLEM_ID *)parm;
146: %}
147: ::= SEQUENCE
148: {
149: impIdent [0] IMPLICIT OBJECT IDENTIFIER
150: [[O arg->imp_oid]]
151: OPTIONAL <<arg->oid_true>>,
152:
153: impName [1] IMPLICIT PrintableString
154: [[s arg->name]]
155: OPTIONAL <<arg->name_true>>,
156:
157: impVersion [2] IMPLICIT PrintableString
158: [[s arg->version]]
159: OPTIONAL <<arg->version_true>>
160: }
161:
162: Profile
163: %{
164: ARG_OFFER_LIST *arg = (ARG_OFFER_LIST *)parm;
165: %}
166: ::= SEQUENCE
167: {
168: name OBJECT IDENTIFIER [[O arg->prof_oid]]
169: OPTIONAL <<arg->oid_true>>,
170:
171: ProfileArgList [[p parm]]
172: OPTIONAL <<arg->num_sp_param +
173: arg->num_cds_objects +
174: arg->num_css_objects +
175: arg->num_dev_objects>>
176:
177: }
178:
179: ProfileArgList
180: %{
181: int j,k;
182: ARG_OFFER_LIST *arg = (ARG_OFFER_LIST *)parm;
183: %}
184: ::=
185:
186: SEQUENCE OF <<n=0; n<(arg->num_sp_param
187: + (arg->num_cds_objects?1:0)); n++>>
188:
189: CHOICE <<(n<arg->num_sp_param) ? 1 : 2>>
190: {
191: specialArgs [0] IMPLICIT SEQUENCE
192: %{k=1;%}
193: {
194: identifier INTEGER
195: [[i arg->sp_offer_list[n].param_num]],
196:
197: offeredValues CHOICE
198: <<arg->sp_offer_list[n].param_type + 1>>
199: {
200: boolean [0] IMPLICIT BITSTRING
201: [[x arg->sp_offer_list[n].args.bool_arg $ k]],
202:
203: integer [1] IMPLICIT IntOffer [[p (PEPYPARM)&(arg->sp_offer_list[n].args.int_arg)]],
204:
205: string [2] IMPLICIT SET OF <<j=0; j<1; j++>>
206: PrintableString
207: [[s arg->sp_offer_list[n].args.string_arg]]
208: }
209: },
210:
211: vteParams [1] IMPLICIT ParamOfferList [[p parm]]
212: }
213:
214: ParamOfferList
215: %{
216: ARG_OFFER_LIST *arg = (ARG_OFFER_LIST *)parm;
217: %}
218: ::= SEQUENCE
219: {
220: displayObjects [0] IMPLICIT CDSOffer [[p parm]]
221: OPTIONAL <<arg->num_cds_objects>>,
222:
223: -- controlObjects [1] IMPLICIT CSSOffer [[p parm]]
224: -- OPTIONAL <<arg->num_css_objects>>,
225:
226: -- deviceObjects [2] IMPLICIT DEVOffer [[p parm]]
227: -- OPTIONAL <<arg->num_dev_objects>>,
228:
229: deliveryControl [3] IMPLICIT BITSTRING
230: [[x int2strb (arg->del_ctrl.bitstring, arg->del_ctrl.bitcount)
231: $ arg->del_ctrl.bitcount]]
232: OPTIONAL <<arg->del_ctrl.bitcount>>
233: }
234:
235: --Note Problem with IMPLICIT SEQUENCE Definition below. PEPY does not accept
236: --it as defined in 9041 and in fact that definition is ridiculous. At the
237: --moment it is not clear if even hand coding available in ISODE 3.0 can
238: --produce the requirement of 9041.
239:
240: CDSOffer
241: %{
242: ARG_OFFER_LIST *arg = (ARG_OFFER_LIST *)parm;
243: %}
244: ::= SET OF <<l=0; l<arg->num_cds_objects; l++>> SEQUENCE
245: {
246: objectName PrintableString
247: [[s arg->cds_offer_list[l].obj_name]],
248:
249: ObjectOffer [[p (PEPYPARM)&(arg->cds_offer_list[l])]]
250: }
251:
252: CSSOffer ::= NULL --Unused for now--
253:
254: DEVOffer ::= NULL --Unused for now--
255:
256: ObjectOffer
257: %{
258: CDS_OFFER *arg = (CDS_OFFER *)parm;
259: %}
260: ::= SEQUENCE
261: {
262: dimensionOffer [0] IMPLICIT BITSTRING
263: [[x int2strb (arg->dimensions.bitstring,
264: arg->dimensions.bitcount) $ arg->dimensions.bitcount]]
265: OPTIONAL <<arg->dimensions.bitcount>>,
266:
267: xParamOffer [1] IMPLICIT DimOffer [[p (PEPYPARM)&(arg->x_dim)]]
268: OPTIONAL <<arg->valid_x_dim>>,
269:
270: yParamOffer [2] IMPLICIT DimOffer [[p (PEPYPARM)&(arg->y_dim)]]
271: OPTIONAL <<arg->valid_y_dim>>,
272:
273: zParamOffer [3] IMPLICIT DimOffer [[p (PEPYPARM)&(arg->y_dim)]]
274: OPTIONAL <<arg->valid_z_dim>>,
275:
276: -- erasuroffer [4] IMPLICIT BITSTRING
277: -- [[x int2strb (arg->erasure.bitstring,
278: -- arg->erasure.bitcount)
279: -- $ arg->erasure.bitcount]]
280: -- OPTIONAL <<arg->erasure.bitcount>>,
281:
282: repOfferList [5] IMPLICIT CompRepOffer [[p (PEPYPARM)&(arg->rep_offer)]]
283: OPTIONAL <<arg->valid_rep_list>>,
284:
285: -- empOfferList [6] IMPLICIT CompEmpOffer [[p (PEPYPARM)&(arg->emp_offer)]]
286: -- OPTIONAL <<arg->valid_emp_list>>,
287:
288: -- foreColorList [7] IMPLICIT ColorOffer [[p (PEPYPARM)&(arg->fore_color_list)]]
289: -- OPTIONAL <<arg->valid_fore_color>>,
290:
291: -- backColorList [8] IMPLICIT ColorOffer [[p (PEPYPARM)&(arg->back_color_list)]]
292: -- OPTIONAL <<arg->valid_back_color>>,
293:
294: objectAccRight [9] IMPLICIT BITSTRING
295: [[x int2strb (arg->access_right.bitstring,
296: arg->access_right.bitcount)
297: $ arg->access_right.bitcount]]
298: OPTIONAL <<arg->access_right.bitcount>>
299: }
300:
301: DimOffer
302: %{
303: DIMEN_PARAM *arg = (DIMEN_PARAM *)parm;
304: %}
305: ::= SEQUENCE
306: {
307: bound [0] IMPLICIT SEQUENCE
308: {
309: unbounded NULL
310: OPTIONAL <<arg->bound_type == 1>>,
311:
312: limit IntOffer [[p (PEPYPARM)&(arg->bound)]]
313: OPTIONAL <<arg->bound_type == 2>>
314: }
315: OPTIONAL <<arg->bound_type>>,
316:
317: addressing [1] IMPLICIT BITSTRING
318: [[x int2strb (arg->addressing.bitstring,
319: arg->addressing.bitcount)
320: $ arg->addressing.bitcount]]
321: OPTIONAL <<arg->addressing.bitcount>>,
322:
323: absolute [2] IMPLICIT BITSTRING
324: [[x int2strb (arg->absolute.bitstring,
325: arg->absolute.bitcount)
326: $ arg->absolute.bitcount]]
327: OPTIONAL <<arg->absolute.bitcount>>,
328:
329: window [3] IMPLICIT SEQUENCE
330: {
331: unbounded NULL
332: OPTIONAL <<arg->window_type == 1>>,
333:
334: limit IntOffer [[p (PEPYPARM)&(arg->window)]]
335: OPTIONAL <<arg->window_type == 2>>
336: }
337: OPTIONAL <<arg->window_type>>
338: }
339:
340: CompRepOffer
341: %{
342: REP_LIST *arg = (REP_LIST *)parm;
343: %}
344: ::= SEQUENCE
345: {
346: repCapability [0] IMPLICIT IntOffer [[p (PEPYPARM)&(arg->capability)]]
347: OPTIONAL <<arg->valid_cap>>,
348:
349: [1] IMPLICIT SEQUENCE OF <<m=0; m<arg->num_reps; m++>>
350: RepFontOffer [[p (PEPYPARM)&(arg->repertoire[m])]]
351: OPTIONAL <<arg->num_reps>>
352: }
353:
354: RepFontOffer
355: %{
356: int i;
357: REP_FONT *arg = (REP_FONT *)parm;
358: %} ::=
359: CHOICE <<arg->rep_type>>
360: {
361: NULL,
362:
363: SEQUENCE
364: {
365: repertoire [0] IMPLICIT PrintableString
366: [[s arg->rep_assign]]
367: OPTIONAL <<arg->rep_assign>>,
368:
369: fontCapability [1] IMPLICIT IntOffer [[p (PEPYPARM)&(arg->capability)]]
370: OPTIONAL <<arg->valid_font_cap>>,
371:
372: [2] IMPLICIT SEQUENCE OF
373: <<i=0; i<arg->num_fonts; i++>>
374: PrintableString
375: [[s arg->font_names[i] ]]
376: OPTIONAL <<arg->num_fonts>>
377: }
378: }
379:
380: --CompEmpOffer
381: --%{
382: -- int i;
383: -- EMP_LIST *arg = (EMP_LIST *)parm;
384: --%} ::= SEQUENCE
385: --{
386: -- empCap [0] IMPLICIT IntOffer [[p (PEPYPARM)&(arg->capability)]]
387: -- OPTIONAL <<arg->valid_cap>>,
388:
389: -- SEQUENCE OF <<i=0; i<arg->num_emps; i++>>
390: -- PrintableString
391: -- [[s arg->emp_string[i] ]]
392: -- OPTIONAL <<arg->num_emps>>
393: --}
394:
395: --ColorOffer
396: --%{
397: -- int i;
398: -- COLOR_LIST *arg = (COLOR_LIST *)parm;
399: --%} ::= SEQUENCE
400: --{
401: -- colorCap [0] IMPLICIT IntOffer [[p (PEPYPARM)&(arg->capability)]]
402: -- OPTIONAL <<arg->valid_cap>>,
403:
404: -- colorNames SEQUENCE OF <<i=0; i<arg->num_colors; i++>>
405: -- PrintableString
406: -- [[s arg->color_string[i] ]]
407: -- OPTIONAL <<arg->num_colors>>
408: --}
409:
410: IntOffer
411: %{
412: int i;
413: INT_OFFER *arg = (INT_OFFER *)parm;
414: %} ::= SEQUENCE OF <<i=0; i<1; i++>>
415:
416: CHOICE <<arg->type + 1>>
417: {
418: indivValue [0] IMPLICIT INTEGER
419: [[i arg->value]],
420:
421: range [1] IMPLICIT SEQUENCE
422: {
423: INTEGER [[i arg->min_val]],
424: INTEGER [[i arg->max_val]]
425: }
426: }
427:
428: END
429:
430: %{
431:
432: #ifdef PEPYTEST
433:
434: void advise(what,fmt,a,b,c,d,e,f,g,h,i,j)
435: char *what, *fmt, *a, *b, *c, *d, *e, *f, *g, *h, *i, *j;
436: {
437:
438: (void) fflush(stdout);
439:
440: fprintf(stderr,"%s: ",myname);
441: fprintf(stderr,fmt,a,b,c,d,e,f,g,h,i,j);
442: if(what)
443: (void) fputc(' ',stderr),perror(what);
444: else
445: (void) fputc('\n',stderr);
446: (void)fflush(stderr);
447: }
448:
449:
450: testdebug(pe,words)
451: PE pe; /*Not Really, but pretend*/
452: char *words;
453: {
454:
455: printf("%s \n",words);
456: }
457:
458: #endif
459: %}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.