Annotation of 43BSDReno/contrib/isode-beta/vt/send_asr.py, revision 1.1.1.1

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: %}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.