Hello, 

I'm not sure if this is technically an ASN.1 macro because I don't see the 
keyword MACRO used.  But it seems from my research the term "Rose Macro" may 
apply here and it seems there is more than data definitions going on and I need 
to learn how this works :-)

This definition below says that it imports OPERATIONS from {joint-iso-ccitt 
remote-operations(4) notation(0)}, which lead the implementor to a set of three 
modules that seem to be co-dependent and one eventually has OPERATIONS (albeit 
in a switch statement):


switch{OPERATION-PACKAGE:package, OBJECT IDENTIFIER:id} OPERATION-PACKAGE ::= 
{
  OPERATIONS        {package.&Both}
  CONSUMER INVOKES  {package.&Consumer}
  SUPPLIER INVOKES  {package.&Supplier}
  ID                id
}

I'm somewhat new to ASN.1, can someone help me understand the .& syntax and the 
way these definitions lock themselves together?

It also has that it EXPORTS mLPPLFBquery, mLPPCallrequest, etc.  So I assume 
that it is adding these individual OPERATION definitions to the greater 
OPERATIONS set that it imports, but the syntax is a little difficult to follow. 
 

Is there a good online source for these "advanced" notations?  Ultimately, I'd 
like to compile this into c constructs, but that's another story, the compiler 
I have doesn't understand OPERATION but I'm trying to understand it from a 
fundamental level first so I can discern what the compiler might be missing.


thanks,

Keith






( from Q.955 ) 

--  Begin MLPP-operations definitions
MLPP-operations{ccitt recommendation q 955 mlpp (3) operations-and-errors(1)}
DEFINITIONS     ::=
BEGIN
EXPORTS         mLPPLFBquery, mLPPCallrequest, mLPPCallpreemption, 
unauthorizedPrecedenceLevel;
IMPORTS         OPERATIONS, ERRORS
        FROM Remote-Operation-Notation
        {joint-iso-ccitt remote-operations(4) notation(0)}
        userNotSubscribed, rejectedByNetwork
        FROM General-Error-List
        {ccitt recommendation q 950 general-error-list(1)}
        Q931InformationElement
        FROM Embedded-Q931-Types
        {ccitt recommandation q 932 embedded-q931-types(5)};


--  Begin mLPPLFBquery operation
MLPPLFBquery    OPERATION
    ARGUMENT    MLPP_LFB_arg
    RESULT      MLPP_LFB_resp
    ERRORS      {userNotSubscribed,rejectedByNetwork} 

MLPP_LFB-arg    ::=     SEQUENCE {MLPP_params, IE_arg}

MLPP_params     ::=     SEQUENCE
        {Prec_level, LFB_Indictn, MLPP_Svc_Domn}

Prec_level      ::=     ENUMERATED
        {
        flashOverride(0), flash(1), immediate(2), priority(3), routine(4)
        }

        --  Prec_level identifies the precedence level of the MLPP call.
LFB_Indictn     ::=     ENUMERATED
        {
        lfbAllowed(0), lfbNotAllowed(1), pathReserved(2)
    }
        --  LFB_Indictn is coded for values, as indicated.
MLLP_Svc_Domn   ::=     OCTET STRING (size(5))
        --  Initial two octets provide the International ID, while the
        --  following three octets provide the MLPP Domain
        --  identification.
IE_arg  ::=     Q931InformationElement
    --  Bearer capability, Calling party number, Called party 
    --  number, and Channel identification information elements in 
    --  the IE_arg shall be as defined in Q.931. 
MLPP_LFB_resp   ::=     SEQUENCE {StatusQuery, Location}
        --  The MLPP DSS1 LFB query response contains two
        --  parameters, StatusQuery and Location.
StatusQuery     ::=     ENUMERATED
        {
        success(1),
    --  Many cases as described in the optional MLPP LFB
        failure(2),
    --  Many cases as described in the MLPP procedure with LFB
    --  option.
    bearerCapabilityNotAuthorized(3),
    --  bearer capability check failure, not authorized
    bearerCapabilityNotImplemented(4),
    --  bearer capability check failure, not implemented
    bearerCapabilityNotAvailable(5),
    --  bearer capability check failure, not available
    pathReservationDenied(6)
    --  circuit cannot be reserved at the far end
        }
Location        ::=     Q931InformationElement
        --  a bit string which conforms to Octect 3 of the Cause
        --  information element as defined in Q.931, except that bit 8 is
        --  marked as a spare.
--  End of mLPPLFBquery operation.
--  Begin mLPPCallrequest operation
MLPPCallrequest OPERATION       MLPP_params
    ARGUMENT    StatusRequest
    RESULT      {userNotSubscribed, rejectedByNetwork,
    ERRORS      unauthorizedPrecedenceLevel}
StatusRequest   ::=     ENUMERATED
        {
        successCalledUserMLPPSubscriber(1),
        --  Called user is an MLPP subscriber.
        successCalledUserNotMLPPSubscriber(2),
        --  Called user is not an MLPP subscriber.
        failureCaseA(3),
        --  MLPP call from the calling user is a precedence call and
        --  cannot be completed.
        failureCaseB(4)
        --  MLPP call from the calling user or MLPP call between two
        --  MLPP subscribers experiences preemption.
        }
--  End mLPPCallrequest operation.
--  Begin mLPPCallpreemption operation
MLPPCallpreemption      OPERATION
        ARGUMENT        Preempt_params
        RESULT
        ERRORS
Preempt_params  ::=     ENUMERATED
        {
        circuitReservedForReuse(1),
        --  Circuit of the to be preempted call is reserved for reuse
        circuitNotReservedForReuse(2),
        --  Circuit of the to be preempted call is not reserved for
        --  reuse
        }
--  End mLPPCallpreemption operation
UnauthorizedPrecedenceLevel     ::=     ERROR
--  An indication that the calling user has exceeded the authorized, maximum
--  precedence level.
mLPPLFBquery MLPPLFBquery       ::=     24
mLPPCallrequest MLPPCallrequest ::=     25
mLPPCallpreemption MLPPCallpreemption   ::=     26
unauthorizedPrecedenceLevel UnauthorizedPrecedenceLevel ::=     44
END
--  End MLPP-operations.

-- 
    |       |
. | | | . | | | .
    '       ' 
    C I S C O
    GGSG VoIP   
_______________________________________________
Asn1 mailing list
Asn1@asn1.org
http://lists.asn1.org/mailman/listinfo/asn1

Reply via email to