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