File Coverage

blib/lib/Net/CSTA/ASN.pm
Criterion Covered Total %
statement 12 13 92.3
branch 1 2 50.0
condition 0 3 0.0
subroutine 3 4 75.0
pod 0 1 0.0
total 16 23 69.5


line stmt bran cond sub pod time code
1              
2             package Net::CSTA::ASN;
3 1     1   931 use Convert::ASN1;
  1         46308  
  1         78  
4 1     1   13 use vars qw($asn);
  1         3  
  1         890  
5              
6             my $asn = Convert::ASN1->new;
7              
8             sub import {
9 2     2   4 my $pkg = shift;
10 2         6 my $caller = caller;
11              
12 2         6 foreach my $macro (@_) {
13 2 50 0     7 my $obj = $asn->find($macro)
14             or require Carp and Carp::croak("Unknown macro '$macro'");
15              
16 2         37 *{"$caller\::$macro"} = \$obj;
  2         126  
17             }
18             }
19              
20             sub asn
21             {
22 0     0 0   $asn;
23             }
24              
25             $asn->prepare(<error;
26              
27             -- Dedalus Engenharia S/C Ltda Convenio GMK/FDTE
28             -- -------------------------------------------------------------------------
29             -- Arquivo : csta.asn
30             -- Descricao : Especificacao das PDUS do protocolo CSTA para ser compilada
31             -- pelo programa snacc v1.1
32             --
33             -- -------------------------------------------------------------------------
34             -- Historico :
35             -- 02/08/95...PMS...Versao Inicial
36             -- 05/02/97...PMS...Revisao para Application Link 2.0
37             -- 25/02/97...FES...Introducao de Snapshot e SystemStatus.
38             -- 01/10/97...PMS...EventCause completado
39             -- 03/11/98...PMS...Inclusao de dados privados em eventos
40             -- *************************************************************************
41              
42             -- =====================================================
43             -- PDUs do ROSE, que sao utilizadas pelo protocolo CSTA
44             -- =====================================================
45             CSTAapdu ::= CHOICE {
46             svcRequest ROIVapdu,
47             svcResult RORSapdu,
48             svcError ROERapdu,
49             svcReject RORJapdu
50             }
51              
52             -- =====================================================
53             -- Invoke PDU
54             -- =====================================================
55              
56             ROIVapdu ::= [1] IMPLICIT SEQUENCE {
57             invokeID INTEGER, -- no. de sequencia
58             serviceID INTEGER, -- no. da operacao a ser realizada
59             serviceArgs ANY DEFINED BY serviceID -- Uma das estruturas abaixo
60             }
61              
62              
63             -- Codigos dos servicos CSTA. Isto deve gerar um enum no C para ser utilizado
64             -- como o valor do campo serviceID em ROIVapdu
65             CSTAServices ::= ENUMERATED {
66             alternateCallSID (1),
67             answerCallSID (2),
68             callCompletionSID (3), -- Novo
69             --clearCallSID (4), Nao suportado
70             clearConnectionSID (5),
71             conferenceCallSID (6),
72             consultationCallSID (7),
73             divertCallSID (8),
74             holdCallSID (9), -- Novo
75             makeCallSID (10),
76             makePredictiveCallSID (11), -- Novo
77             queryDeviceSID (12),
78             reconnectCallSID (13), -- Novo
79             retrieveCallSID (14),
80             setFeatureSID (15),
81             transferCallSID (16),
82             eventReportSID (21),
83             systemStatusSID (52), -- Novo
84             monitorStartSID (71),
85             changeMonitorFilterSID (72), -- Novo
86             monitorStopSID (73),
87             snapshotDeviceSID (74) -- Novo
88             }
89              
90             -- Estruturas que podem ocorrer no ANY do ROIVapdu. O codigo gerado
91             -- deve decodificar o tipo sem maiores problemas
92              
93             -- Alternate Call
94             AlternateCallArgs ::= ConnectionDetails
95              
96              
97             -- Answer Call
98             AnswerCallArgs ::= ConnectionID
99              
100             -- Call Completion
101             CallCompletionArgs ::= FeatureInfo
102              
103             -- Clear Connection
104             ClearConnectionArgs ::= ConnectionID
105              
106             -- Conference Call
107             ConferenceCallArgs ::= ConnectionDetails
108              
109             -- Consultation Call
110             ConsultationCallArgs ::= SEQUENCE {
111             existingCall ConnectionID,
112             calledDirectoryNumber CalledDeviceID
113             }
114              
115             -- Divert Call
116             DivertCallArgs ::= DivertInfo
117              
118             -- Hold Call
119             HoldCallArgs ::= SEQUENCE {
120             callToBeHeld ConnectionID,
121             connectionReservation ReserveConnection
122             }
123              
124             -- Make Call
125             MakeCallArgs ::= SEQUENCE {
126             callingDevice DeviceID,
127             calledDirectoryNumber CalledDeviceID
128             }
129              
130             -- Query device
131             QueryDeviceArgs ::= SEQUENCE {
132             device DeviceID,
133             feature QueryDeviceFeature
134             }
135              
136             -- Reconnect Call
137             ReconnectCallArgs ::= ConnectionDetails
138              
139             -- Retrieve Call
140             RetrieveCallArgs ::= ConnectionID
141              
142             -- Set feature
143             SetFeatureArgs ::= SEQUENCE {
144             device DeviceID,
145             feature SetDeviceFeature
146             }
147              
148             -- Transfer call
149             TransferCallArgs ::= ConnectionDetails
150              
151             -- Monitor Start
152             MonitorStartArgs ::= SEQUENCE {
153             monitorObject MonitorObject,
154             monitorFilter MonitorFilter OPTIONAL,
155             monitorType MonitorType OPTIONAL
156             }
157              
158             -- Monitor Stop
159             MonitorStopArgs ::= MonitorCrossRefID
160              
161             -- Change Monitor Filter
162             ChangeMonitorFilterArgs ::= SEQUENCE {
163             monitorCrossRefID MonitorCrossRefID,
164             filterlist MonitorFilter
165             }
166              
167             -- SnapshotDevice
168             SnapshotDeviceArgs ::= DeviceID
169            
170             -- System Status (pode ser enviada ou recebida)
171             SystemStatusArgs ::= SystemStatus
172              
173              
174             -- =============================================================
175             -- Result PDU generica
176             -- =============================================================
177              
178             RORSapdu ::= [2] IMPLICIT SEQUENCE {
179             invokeID INTEGER, -- no. de sequencia
180             result SEQUENCE {
181             serviceID INTEGER,
182             serviceResult ANY DEFINED BY serviceID OPTIONAL
183             }
184             }
185              
186             -- PMS 22/04/97 : O Any acima era DEFINED pelo invokeID. No caso
187             -- do Application Link, os resultados aparecem cercados por
188             -- uma SEQUENCE, impedindo o seu uso. A solucao foi usar o
189             -- DEFINED BY serviceID. De resto, vale o comentario abaixo...
190              
191             -- Alterar o codigo resultante !!! O invokeID nao identifica
192             -- diretamente qual o tipo de dados em serviceResult, o qual
193             -- deve ser comparado com a PDU de invoke com o mesmo ID
194              
195              
196             -- Estruturas que retornam em serviceResult
197              
198             ConferenceCallRS ::= SEQUENCE {
199             conferenceCall ConnectionID,
200             connection ConnectionList OPTIONAL
201             }
202              
203              
204             ConsultationCallRS ::= ConnectionID
205              
206             MakeCallRS ::= ConsultationCallRS
207            
208             QueryDeviceRS ::= QueryDeviceInformation
209              
210              
211              
212             TransferCallRS ::= SEQUENCE {
213             transferredCall ConnectionID OPTIONAL,
214             connections ConnectionList OPTIONAL
215             }
216              
217              
218             MonitorStartRS ::= SEQUENCE {
219             crossRefIdentifier MonitorCrossRefID,
220             monitorFilter MonitorFilter OPTIONAL
221             }
222              
223             MonitorStopRS ::= NULL
224              
225             ChangeMonitorFilterRS ::= [0] IMPLICIT MonitorFilter
226              
227             SnapshotDeviceRS ::= SnapshotDeviceData
228              
229             DivertCallRS ::= CHOICE { noData NULL }
230              
231             -- =====================================================================
232             -- Outras PDUs do ROSE que podem ocorrer em um dialogo CSTA
233             -- =====================================================================
234              
235             -- Error PDU (Erro detectado pelo executor da operacao)
236             ROERapdu ::= [3] IMPLICIT SEQUENCE {
237             invokeID INTEGER, -- no. de sequencia
238             unknown INTEGER, -- @@@ descobrir o que e'
239             typeOfError UniversalCauseItem -- Tipo do erro
240             }
241              
242             -- Causas de erro
243              
244             UniversalCauseItem ::= CHOICE {
245             operationErrors [1] IMPLICIT Operations,
246             stateErrors [2] IMPLICIT StateIncompatibility,
247             systemResourceErrors [3] IMPLICIT SystemResourceAvailability,
248             subscribedResourceErrors [4] IMPLICIT SubscribedResourceAvailability,
249             performanceErrors [5] IMPLICIT PerformanceManagement,
250             unspecifiedErrors [6] IMPLICIT NULL
251             }
252              
253             Operations ::= ENUMERATED {
254             generic (1),
255             requestIncompatibleWithObject (2),
256             valueOutOfRange (3),
257             objectNotKnown (4),
258             invalidCallingDevice (5),
259             invalidCalledDevice (6),
260             invalidForwardingDevice (7),
261             privilegeViolationOnSpecifiedDevice (8),
262             privilegeViolationOnCalledDevice (9),
263             privilegeViolationOnCallingDevice (10),
264             invalidCallIdentifier (11),
265             invalidDeviceIdentifier (12),
266             invalidConnectionIdentifier (13),
267             invalidDestination (14),
268             invalidFeature (15),
269             invalidAllocationState (16),
270             invalidCrossReferenceID (17),
271             invalidObjectType (18),
272             securityViolation (19)
273             }
274              
275             StateIncompatibility ::= ENUMERATED {
276             generic (1),
277             incorrectObjectState (2),
278             invalidConnectionID (3),
279             noActiveCall (4),
280             noHeldCall (5),
281             noCallToClear (6),
282             noConnectionToClear (7),
283             noCallToAnswer (8),
284             noCallToComplete (9)
285             }
286              
287             SystemResourceAvailability ::= ENUMERATED {
288             generic (1),
289             serviceBusy (2),
290             resourceBusy (3),
291             resourceOutOfService (4),
292             networkBusy (5),
293             networkOutOfService (6),
294             overallMonitorLimitExceeded (7),
295             conferenceMemberLimitExceeded (8)
296             }
297              
298             SubscribedResourceAvailability ::= ENUMERATED {
299             generic (1),
300             objectMonitorLimitExceeded (2),
301             externalTrunkLimitExceeded (3),
302             outstandingRequestLimitExceeded (4)
303             }
304              
305             PerformanceManagement ::= ENUMERATED {
306             generic (1),
307             performanceLimitExceeded (2)
308             }
309              
310             ProblemType ::= CHOICE {
311             general [0] IMPLICIT GeneralProblem,
312             invoke [1] IMPLICIT InvokeProblem,
313             result [2] IMPLICIT ReturnResultProblem,
314             error [3] IMPLICIT ReturnErrorProblem
315             }
316              
317             -- Reject PDU (Erro detectado pelo ROSE)
318             RORJapdu ::= [4] IMPLICIT SEQUENCE {
319             invokeID INTEGER,
320             typeOfProblem ProblemType
321             }
322              
323             -- Causas de rejeicao
324              
325             GeneralProblem ::= ENUMERATED {
326             unrecognizedAPDU (0),
327             mistypedAPDU (1),
328             badlyStructuredAPDU (2)
329             }
330              
331             InvokeProblem ::= ENUMERATED {
332             duplicateInvocation (0),
333             unrecognizedOperation (1),
334             mistypedArgument (2),
335             resourceLimitation (3),
336             initiatorReleasing (4),
337             unrecognizedLinkedID (5), -- Nao ocorre no CSTA
338             linkedResponseUnexpected (6), -- " " " "
339             unexepectedChildOperation (7) -- " " " "
340             }
341              
342             ReturnResultProblem ::= ENUMERATED {
343             unrecognizedInvocation (0),
344             resultResponseUnexpected (1),
345             mistypedResult (2)
346             }
347              
348             ReturnErrorProblem ::= ENUMERATED {
349             unrecognizedInvocation (0),
350             errorResponseUnexpected (1),
351             unrecognizedError (2),
352             unexpectedError (3),
353             mistypedParameter (4)
354             }
355              
356              
357             -- ============================================
358             -- Argumentos das primitivas CSTA
359             -- ============================================
360              
361              
362              
363              
364             -- ======================================================
365             -- Eventos do CSTA
366             -- ======================================================
367              
368              
369             -- Evento generico
370             EventReport ::= SEQUENCE {
371             crossRefIdentifier MonitorCrossRefID,
372             eventType [0] IMPLICIT INTEGER,
373             eventInfo ANY DEFINED BY eventType
374             }
375              
376              
377             -- Codigo dos eventos
378             --CSTAEvents ::= ENUMERATED {
379             -- callCleared (1), - Nao suportado
380             -- conferenced (2),
381             -- connectionCleared (3),
382             -- delivered (4),
383             -- diverted (5), - Suportado apenas em filas
384             -- established (6),
385             -- failed (7),
386             -- held (8),
387             -- networkReached (9),
388             -- originated (10),
389             -- queued (11), - Suportado em filas
390             -- retrieved (12),
391             -- serviceInitiated (13),
392             -- transferred (14),
393             -- doNotDisturb (102),
394             -- forwarding (103),
395             -- loggedOn (201),
396             -- loggedOff (202),
397             -- notReady (203),
398             -- ready (204),
399             -- backInService (301),
400             -- outOfService (302)
401             --}
402              
403              
404             -- Dados dos eventos que vem no eventInfo de EventReport
405              
406             Conferenced ::= SEQUENCE {
407             primaryOldCall ConnectionID,
408             secondaryOldCall ConnectionID OPTIONAL,
409             confController SubjectDeviceID,
410             addedParty SubjectDeviceID,
411             conferenceConnections ConnectionList OPTIONAL,
412             localConnectionInfo LocalConnectionState,
413             cause EventCause OPTIONAL,
414             private PrivateData OPTIONAL
415             }
416              
417             ConnectionCleared ::= SEQUENCE {
418             droppedConnection ConnectionID,
419             releasingDevice SubjectDeviceID,
420             localConnectionInfo LocalConnectionState,
421             cause EventCause OPTIONAL,
422             private PrivateData OPTIONAL
423             }
424              
425             Delivered ::= SEQUENCE {
426             connectionID ConnectionID,
427             alertingDevice SubjectDeviceID,
428             callingDevice CallingDeviceID,
429             calledDevice CalledDeviceID,
430             lastRedirectionDevice RedirectionDeviceID,
431             localConnectionInfo LocalConnectionState OPTIONAL,
432             cause EventCause OPTIONAL,
433             private PrivateData OPTIONAL
434             }
435              
436             Diverted ::= SEQUENCE {
437             connection ConnectionID OPTIONAL,
438             divertingDevice SubjectDeviceID,
439             newDestination CalledDeviceID,
440             localConnectionInfo LocalConnectionState OPTIONAL,
441             cause EventCause OPTIONAL,
442             private PrivateData OPTIONAL
443             }
444              
445             Established ::= SEQUENCE {
446             establishedConn ConnectionID,
447             answeringDevice SubjectDeviceID,
448             callingDevice CallingDeviceID,
449             calledDevice CalledDeviceID,
450             lastRedirectionDevice RedirectionDeviceID,
451             localConnectionInfo LocalConnectionState OPTIONAL,
452             cause EventCause OPTIONAL,
453             private PrivateData OPTIONAL
454             }
455              
456              
457              
458             Failed ::= SEQUENCE {
459             failedConnection ConnectionID,
460             failedDevice SubjectDeviceID,
461             calledNumber CalledDeviceID,
462             localConnectionInfo LocalConnectionState OPTIONAL,
463             cause EventCause OPTIONAL,
464             private PrivateData OPTIONAL
465             }
466              
467              
468             Held ::= SEQUENCE {
469             heldConnection ConnectionID,
470             holdingDevice SubjectDeviceID,
471             localConnectionInfo LocalConnectionState OPTIONAL,
472             cause EventCause OPTIONAL,
473             private PrivateData OPTIONAL
474            
475             }
476              
477              
478              
479             NetworkReached ::= SEQUENCE {
480             connection ConnectionID,
481             trunkUsed SubjectDeviceID,
482             calledDevice CalledDeviceID,
483             localConnectionInfo LocalConnectionState OPTIONAL,
484             cause EventCause OPTIONAL,
485             private PrivateData OPTIONAL
486             }
487              
488             Originated ::= SEQUENCE {
489             originatedConnection ConnectionID,
490             callingDevice SubjectDeviceID,
491             calledDevice CalledDeviceID,
492             localConnectionInfo LocalConnectionState OPTIONAL,
493             cause EventCause OPTIONAL,
494             private PrivateData OPTIONAL
495             }
496              
497             Queued ::= SEQUENCE {
498             queuedConnection ConnectionID,
499             queue SubjectDeviceID,
500             callingDevice CallingDeviceID,
501             calledDevice CalledDeviceID,
502             lastRedirectionDevice RedirectionDeviceID,
503             numberedQueued NoOfCallsInQueue OPTIONAL,
504             localConnectionInfo LocalConnectionState OPTIONAL,
505             cause EventCause OPTIONAL,
506             private PrivateData OPTIONAL
507             }
508            
509              
510              
511             Retrieved ::= SEQUENCE {
512             retrievedConnection ConnectionID,
513             retrievingDevice SubjectDeviceID,
514             localConnectionInfo LocalConnectionState,
515             cause EventCause OPTIONAL,
516             private PrivateData OPTIONAL
517             }
518              
519              
520             ServiceInitiated ::= SEQUENCE {
521             initiatedConnection ConnectionID,
522             localConnectionInfo LocalConnectionState,
523             cause EventCause OPTIONAL,
524             private PrivateData OPTIONAL
525             }
526              
527              
528              
529             Transferred ::= SEQUENCE {
530             primaryOldCall ConnectionID,
531             secondaryOldCall ConnectionID OPTIONAL,
532             transferringDevice SubjectDeviceID,
533             transferredDevice SubjectDeviceID,
534             transferredConnections ConnectionList OPTIONAL,
535             localConnectionInfo LocalConnectionState,
536             cause EventCause OPTIONAL,
537             private PrivateData OPTIONAL
538             }
539            
540              
541             DoNotDisturb ::= SEQUENCE {
542             device SubjectDeviceID,
543             doNotDisturbOn BOOLEAN
544             }
545              
546             Forwarding ::= SEQUENCE {
547             device SubjectDeviceID,
548             forwardingInformation ForwardParameter
549             }
550              
551             LoggedOn ::= SEQUENCE {
552             agentDevice SubjectDeviceID,
553             agentID [10] IMPLICIT AgentID OPTIONAL,
554             agentGroup AgentGroup OPTIONAL,
555             password [11] IMPLICIT AgentPassword OPTIONAL
556             }
557              
558             LoggedOff ::= SEQUENCE {
559             agentDevice SubjectDeviceID,
560             agentID [10] IMPLICIT AgentID OPTIONAL,
561             agentGroup AgentGroup OPTIONAL
562             }
563              
564             NotReady ::= SEQUENCE {
565             agentDevice SubjectDeviceID,
566             agentID [10] IMPLICIT AgentID OPTIONAL
567             }
568              
569             Ready ::= SEQUENCE {
570             agentDevice SubjectDeviceID,
571             agentID [10] IMPLICIT AgentID OPTIONAL
572             }
573              
574             BackInService ::= SEQUENCE {
575             device DeviceID,
576             cause EventCause OPTIONAL
577             }
578              
579             OutOfService ::= SEQUENCE {
580             device DeviceID,
581             cause EventCause OPTIONAL
582             }
583              
584             --======================================================
585             -- Definicao um tanto generica para dados privados
586             --======================================================
587             PrivateData ::= [APPLICATION 29] IMPLICIT SEQUENCE {
588             manufacturer OBJECT IDENTIFIER,
589             data ANY
590             }
591              
592              
593             -- ======================================================
594             -- Tipos de dados do CSTA
595             -- ======================================================
596              
597             -- Objetos do CSTA genericos
598              
599             CSTAObject ::= DeviceID
600              
601              
602             -- Dispositivos CSTA (O telefone...)
603              
604             DeviceInfo ::= SEQUENCE {
605             deviceId DeviceID OPTIONAL,
606             deviceType DeviceType OPTIONAL,
607             deviceClass DeviceClass OPTIONAL
608             }
609              
610             DeviceID ::= CHOICE {
611             dialingNumber [0] IMPLICIT NumberDigits,
612             deviceNumber [1] IMPLICIT DeviceNumber
613             }
614              
615              
616             DeviceNumber ::= INTEGER
617              
618             NumberDigits ::= IA5String
619              
620             -- "importado" de useful.asn1
621             IA5String ::= [UNIVERSAL 22] IMPLICIT OCTET STRING
622              
623             DeviceType ::= ENUMERATED {
624             station (0)
625             }
626              
627             DeviceClass ::= BIT STRING
628              
629             OtherPlan ::= OCTET STRING
630              
631             ExtendedDeviceID ::= CHOICE {
632             deviceID DeviceID,
633             implicitPublic [2] IMPLICIT NumberDigits,
634             explicitPublic [3] PublicTON,
635             implicitPrivate [4] IMPLICIT NumberDigits,
636             explicitPrivate [5] PrivateTON,
637             other [6] IMPLICIT OtherPlan }
638            
639              
640             CallingDeviceID ::= [APPLICATION 1] CHOICE {
641             deviceID ExtendedDeviceID,
642             notKnown [7] IMPLICIT NULL,
643             notRequired [8] IMPLICIT NULL
644             }
645              
646              
647             CalledDeviceID ::= [APPLICATION 2] CHOICE {
648             deviceID ExtendedDeviceID,
649             notKnown [7] IMPLICIT NULL,
650             notRequired [8] IMPLICIT NULL
651             }
652            
653              
654             SubjectDeviceID ::= [APPLICATION 3] CHOICE {
655             deviceID ExtendedDeviceID,
656             notKnown [7] IMPLICIT NULL,
657             notRequired [8] IMPLICIT NULL
658             }
659              
660             RedirectionDeviceID ::= [APPLICATION 4] CHOICE {
661             deviceID ExtendedDeviceID,
662             notKnown [7] IMPLICIT NULL,
663             notRequired [8] IMPLICIT NULL
664             }
665              
666             PublicTON ::= CHOICE {
667             unknown [0] IMPLICIT IA5String,
668             international [1] IMPLICIT IA5String,
669             national [2] IMPLICIT IA5String,
670             networkspecific [3] IMPLICIT IA5String,
671             subscriber [4] IMPLICIT IA5String,
672             abreviated [5] IMPLICIT IA5String
673             }
674              
675             PrivateTON ::= CHOICE {
676             unknown [0] IMPLICIT IA5String,
677             level3RegionalNumber [1] IMPLICIT IA5String,
678             level2RegionalNumber [2] IMPLICIT IA5String,
679             level1RegionalNumber [3] IMPLICIT IA5String,
680             pTNSpecificNumber [4] IMPLICIT IA5String,
681             localNumber [5] IMPLICIT IA5String,
682             abbreviated [6] IMPLICIT IA5String
683             }
684              
685             -- Conexoes do DAC
686              
687             ConnectionID ::= [APPLICATION 11] IMPLICIT SEQUENCE {
688             call [2] IMPLICIT OCTET STRING OPTIONAL,
689             device [0] IMPLICIT NumberDigits OPTIONAL
690             }
691              
692             ConnectionList ::= [APPLICATION 12] IMPLICIT SEQUENCE OF ConnectionID
693              
694             LocalConnectionState ::= [APPLICATION 14] IMPLICIT ENUMERATED {
695             nullConnection (0),
696             initiate (1),
697             alerting (2),
698             connect (3),
699             hold (4),
700             fail (6)
701             }
702              
703             -- Estruturas auxiliares usadas na definicao
704             -- de argumentos
705              
706             ConnectionDetails ::= CHOICE {
707             heldCall [0] IMPLICIT ConnectionID,
708             activeCall [1] IMPLICIT ConnectionID,
709             bothCalls [2] IMPLICIT SEQUENCE {
710             heldCall ConnectionID,
711             activeCall ConnectionID
712             }
713             }
714              
715             DivertInfo ::= [0] IMPLICIT SEQUENCE {
716             callToBeDiverted ConnectionID,
717             newDestination CalledDeviceID
718             }
719              
720             -- Info retorna
721             -- Estruturas para a SetFeature
722             SetDeviceFeature ::= CHOICE {
723             msgWaitingOn [0] IMPLICIT BOOLEAN,
724             doNotDisturb [1] IMPLICIT BOOLEAN,
725             forward [2] IMPLICIT ForwardParameter,
726             requestedAgentState [3] AgentParameter
727             }
728              
729             QueryDeviceFeature ::= ENUMERATED {
730             msgWaintingOn (0),
731             doNotDisturb (1),
732             forward (2),
733             deviceInfo (4),
734             agentState (5)
735             }
736              
737             QueryDeviceInformation ::= CHOICE {
738             msgWaitingOn [0] IMPLICIT BOOLEAN,
739             doNotDisturb [1] IMPLICIT BOOLEAN,
740             forward [2] IMPLICIT ListForwardParameter,
741             deviceInfo [4] IMPLICIT DeviceInfo,
742             agentState [5] IMPLICIT AgentState
743             }
744              
745             FeatureInfo ::= CHOICE {
746             campon [0] IMPLICIT ConnectionID,
747             callback [1] IMPLICIT ConnectionID,
748             intrude [2] IMPLICIT ConnectionID
749             }
750              
751             ReserveConnection ::= BOOLEAN
752              
753             NoOfCallsInQueue ::= INTEGER
754              
755             ForwardParameter ::= SEQUENCE {
756             forwardingType ForwardingType,
757             forwardDN NumberDigits OPTIONAL
758             }
759              
760             ListForwardParameter ::= SEQUENCE {
761             forwardingType ForwardingType,
762             forwardDN NumberDigits
763             }
764              
765             ForwardingType ::= ENUMERATED {
766             forwardAlwaysOn (0),
767             forwardAlwaysOff (1),
768             forwardBusyOn (2),
769             forwardBusyOff (3),
770             forwardNoAnsOn (4),
771             forwardNoAnsOff (5)
772             }
773              
774             AgentID ::= OCTET STRING
775              
776             AgentGroup ::= DeviceID
777              
778             AgentPassword ::= OCTET STRING
779              
780             LoggedOnInfo ::= SEQUENCE {
781             agentGroup AgentGroup OPTIONAL
782             }
783              
784             LoggedOffInfo ::= SEQUENCE {
785             agentGroup AgentGroup OPTIONAL
786             }
787              
788             AgentParameter ::= CHOICE {
789             logOn [0] IMPLICIT LoggedOnInfo,
790             logOff [1] IMPLICIT LoggedOffInfo,
791             notReady [2] IMPLICIT NULL,
792             readyInfo [3] IMPLICIT NULL,
793             workNotReady [4] IMPLICIT NULL,
794             workReady [5] IMPLICIT NULL
795             }
796              
797             AgentState ::= ENUMERATED {
798             logOut (0),
799             notReady (1),
800             ready (2),
801             workNotReady (3),
802             workReady (4)
803             }
804              
805              
806             -- Tipos utilizados nos eventos de monitoracao
807              
808             MonitorObject ::= CSTAObject
809              
810             MonitorCrossRefID ::= [APPLICATION 21] IMPLICIT OCTET STRING
811              
812             MonitorFilter ::= SEQUENCE {
813             call [0] IMPLICIT CallFilter,
814             feature [1] IMPLICIT FeatureFilter,
815             agent [2] IMPLICIT AgentFilter,
816             maintenance [3] IMPLICIT MaintenanceFilter,
817             private [4] IMPLICIT BOOLEAN
818             }
819              
820              
821             CallFilter ::= BIT STRING
822              
823             FeatureFilter ::= BIT STRING
824              
825             AgentFilter ::= BIT STRING
826              
827             MaintenanceFilter ::= BIT STRING
828              
829             MonitorType ::= ENUMERATED {
830             call (0),
831             device (1)
832             }
833              
834             -- Tipos para o Snapshot
835              
836             SnapshotDeviceData ::= [APPLICATION 22] IMPLICIT SEQUENCE OF
837             SnapshotDeviceResponseInfo
838            
839             SnapshotDeviceResponseInfo ::= SEQUENCE {
840             deviceOnCall SubjectDeviceID,
841             callIdentifier ConnectionID,
842             localConnectionState LocalConnectionState OPTIONAL
843             }
844              
845              
846             EventCause ::= ENUMERATED {
847             activeMonitor (1),
848             alternate (2),
849             busy (3),
850             callback (4),
851             callCancelled (5),
852             callForwardAlways (6),
853             callForwardBusy (7),
854             callForwardNoAnswer (8),
855             callForward (9),
856             callNotAnswered (10),
857             callPickup (11),
858             campOn (12),
859             destNotObtainable (13),
860             doNotDisturb (14),
861             incompatibleDestination (15),
862             invalidAccountCode (16),
863             lockout (18),
864             maintanance (19),
865             networkCongestion (20),
866             networkNotObtainable (21),
867             newCall (22),
868             noAvailableAgents (23),
869             override (24),
870             park (25),
871             cstaOverflow (26), -- Mudado de overflow para nao colidir
872             -- com no fonte gerado
873             recall (27),
874             redirected (28),
875             reorderTone (29),
876             resourcesNotAvailable (30),
877             silentMonitor (31),
878             transfer (32),
879             trunkBusy (33),
880             voiceUnitInitiator (34)
881             }
882              
883             -- Tipos para a transacao de status operacional
884              
885             SystemStatus ::= ENUMERATED {
886             initializing (0),
887             enabled (1),
888             normal (2),
889             messagesLost (3),
890             disabled (4),
891             overloadImminent (5),
892             overloadReached (6),
893             overloadRelieved (7)
894             }
895              
896              
897             EOASN
898              
899             my %serviceArgs = (
900             #1 => 'alternateCall',
901             #2 => 'answerCall',
902             #3 => 'callCompletion'
903             #4 => clearCall,
904             #5 => 'clearConnection',
905             6 => 'ConferenceCallArgs',
906             7 => 'ConsultationCallArgs',
907             8 => 'DivertCallArgs',
908             #9 => 'holdCall',
909             10 => 'MakeCallArgs',
910             #11 => 'makePredictiveCall',
911             12 => 'QueryDeviceArgs',
912             13 => 'ReconnectCallArgs',
913             14 => 'RetrieveCallArgs',
914             15 => 'SetFeatureArgs',
915             16 => 'TransferCallArgs',
916             21 => 'EventReport',
917             52 => 'SystemStatusArgs',
918             71 => 'MonitorStartArgs',
919             72 => 'ChangeMonitorFilterArgs',
920             73 => 'MonitorStopArgs',
921             74 => 'SnapshotDeviceArgs'
922             );
923              
924             foreach (keys %serviceArgs) {
925             $asn->registertype('serviceArgs',$_,$asn->find($serviceArgs{$_}));
926             }
927              
928             my %serviceResults = (
929             #1 => 'alternateCall',
930             #2 => 'answerCall',
931             #3 => 'callCompletion'
932             #4 => clearCall,
933             #5 => 'clearConnection',
934             6 => 'ConferenceCallRS',
935             7 => 'ConsultationCallRS',
936             8 => 'DivertCallRS',
937             #9 => 'holdCall',
938             10 => 'MakeCallRS',
939             #11 => 'makePredictiveCall',
940             12 => 'QueryDeviceRS',
941             13 => 'ReconnectCallRS',
942             14 => 'RetrieveCallRS',
943             15 => 'SetFeatureRS',
944             16 => 'TransferCallRS',
945             21 => 'EventReport',
946             52 => 'SystemStatusArgs',
947             71 => 'MonitorStartRS',
948             72 => 'ChangeMonitorFilterRS',
949             73 => 'MonitorStopRS',
950             74 => 'SnapshotDeviceRS'
951             );
952              
953             foreach (keys %serviceResults) {
954             $asn->registertype('serviceResult',$_,$asn->find($serviceResults{$_}));
955             }
956              
957             my %eventInfos = (
958             3 => 'ConnectionCleared',
959             4 => 'Delivered',
960             5 => 'Diverted',
961             6 => 'Established',
962             7 => 'Failed',
963             8 => 'Held',
964             9 => 'NetworkReached',
965             10 => 'Originated',
966             11 => 'Queued',
967             12 => 'Retrieved',
968             13 => 'ServiceInitiated',
969             14 => 'Transferred',
970             102 => 'DoNotDisturb',
971             103 => 'Forwarding',
972             201 => 'LoggedOn',
973             202 => 'LoggedOff',
974             203 => 'NotReady',
975             204 => 'Ready',
976             301 => 'BackInService',
977             302 => 'OutOfService'
978             );
979              
980             foreach (keys %eventInfos) {
981             $asn->registertype('eventInfo',$_,$asn->find($eventInfos{$_}));
982             }
983              
984             1;