|
|
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.