This source file includes following definitions.
- Q931_STR2ENUM_P
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 #ifndef _Q931_NL
108 #define _Q931_NL
109
110
111
112
113 #include "stdio.h"
114
115 #ifdef _MSC_VER
116 #pragma warning(disable:4100)
117 #ifndef strcasecmp
118 #define strcasecmp(s1, s2) _stricmp(s1, s2)
119 #endif
120 #endif
121 #include <string.h>
122
123
124
125
126
127
128
129 #define Q931_ENUM_NAMES(_NAME, _STRINGS) static const char * _NAME [] = { _STRINGS , NULL };
130 #define Q931_STR2ENUM_P(_FUNC1, _FUNC2, _TYPE) _TYPE _FUNC1 (const char *name); const char * _FUNC2 (_TYPE type);
131 #define Q931_STR2ENUM(_FUNC1, _FUNC2, _TYPE, _STRINGS, _MAX) \
132 _TYPE _FUNC1 (const char *name) \
133 { \
134 int i; \
135 _TYPE t = _MAX ; \
136 \
137 for (i = 0; i < _MAX ; i++) { \
138 if (!strcasecmp(name, _STRINGS[i])) { \
139 t = (_TYPE) i; \
140 break; \
141 } \
142 } \
143 \
144 return t; \
145 } \
146 const char * _FUNC2 (_TYPE type) \
147 { \
148 if (type > _MAX) { \
149 type = _MAX; \
150 } \
151 return _STRINGS[(int)type]; \
152 } \
153
154
155
156
157
158
159 typedef enum {
160 Q931E_NO_ERROR = 0,
161
162 Q931E_UNKNOWN_MESSAGE = -3001,
163 Q931E_ILLEGAL_IE = -3002,
164 Q931E_UNKNOWN_IE = -3003,
165 Q931E_BEARERCAP = -3004,
166 Q931E_HLCOMP = -3005,
167 Q931E_LLCOMP = -3006,
168 Q931E_INTERNAL = -3007,
169 Q931E_MISSING_CB = -3008,
170 Q931E_UNEXPECTED_MESSAGE = -3009,
171 Q931E_ILLEGAL_MESSAGE = -3010,
172 Q931E_TOMANYCALLS = -3011,
173 Q931E_INVALID_CRV = -3012,
174 Q931E_CALLID = -3013,
175 Q931E_CALLSTATE = -3014,
176 Q931E_CALLEDSUB = -3015,
177 Q931E_CALLEDNUM = -3016,
178 Q931E_CALLINGNUM = -3017,
179 Q931E_CALLINGSUB = -3018,
180 Q931E_CAUSE = -3019,
181 Q931E_CHANID = -3020,
182 Q931E_DATETIME = -3021,
183 Q931E_DISPLAY = -3022,
184 Q931E_KEYPADFAC = -3023,
185 Q931E_NETFAC = -3024,
186 Q931E_NOTIFIND = -3025,
187 Q931E_PROGIND = -3026,
188 Q931E_RESTARTIND = -3027,
189 Q931E_SEGMENT = -3028,
190 Q931E_SIGNAL = -3029,
191 Q931E_GENERIC_DIGITS = -3030
192 } q931_error_t;
193
194
195
196 const char *q931_error_to_name(q931_error_t error);
197
198
199
200
201
202
203
204
205
206
207
208
209
210 #define L3UCHAR unsigned char
211 #define L3USHORT unsigned short
212 #define L3UINT unsigned int
213 #define L3INT int
214 #define L3ULONG unsigned long
215 #define L3BOOL char
216
217 #define L3TRUE 1
218 #define L3FALSE 0
219
220
221
222
223
224
225
226 typedef L3USHORT ie;
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245 #define Q931_LOGBUFSIZE 1024
246
247 #define Q931L4BUF 1000
248
249 #define Q931L2BUF 300
250
251 #define Q931MAXTRUNKS 4
252
253
254
255 #define Q931MAXCHPERTRUNK 32
256
257
258
259
260 #define Q931MAXCALLPERTRUNK (Q931MAXCHPERTRUNK * 2)
261
262
263
264
265
266 #define Q931_IS_BRI(x) ((x)->TrunkType == Q931_TrType_BRI || (x)->TrunkType == Q931_TrType_BRI_PTMP)
267 #define Q931_IS_PRI(x) (!Q931_IS_BRI(x))
268
269 #define Q931_IS_PTP(x) ((x)->TrunkType != Q931_TrType_BRI_PTMP)
270 #define Q931_IS_PTMP(X) ((x)->TrunkType == Q931_TrType_BRI_PTMP)
271
272 #define Q931_BRI_MAX_CRV 127
273 #define Q931_PRI_MAX_CRV 32767
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296 #define Q931MAXDLCT 8
297
298
299
300 #define Q931MAXMES 128
301 #define Q931MAXIE 255
302 #define Q931MAXUSEDIE 50
303 #define Q931MAXCODESETS 7
304 #define Q931MAXSTATE 100
305 #define Q931MAXTIMER 25
306
307
308
309
310
311
312
313 #define Q931_U0 0
314 #define Q931_U1 1
315 #define Q931_U2 2
316 #define Q931_U3 3
317 #define Q931_U4 4
318 #define Q931_U6 6
319 #define Q931_U7 7
320 #define Q931_U8 8
321 #define Q931_U9 9
322 #define Q931_U10 10
323 #define Q931_U11 11
324 #define Q931_U12 12
325 #define Q931_U15 15
326 #define Q931_U17 17
327 #define Q931_U19 19
328 #define Q931_U25 25
329
330
331
332
333
334
335 #define Q931_N0 (0x0100 | 0)
336 #define Q931_N1 (0x0100 | 1)
337 #define Q931_N2 (0x0100 | 2)
338 #define Q931_N3 (0x0100 | 3)
339 #define Q931_N4 (0x0100 | 4)
340 #define Q931_N6 (0x0100 | 6)
341 #define Q931_N7 (0x0100 | 7)
342 #define Q931_N8 (0x0100 | 8)
343 #define Q931_N9 (0x0100 | 9)
344 #define Q931_N10 (0x0100 | 11)
345 #define Q931_N11 (0x0100 | 11)
346 #define Q931_N12 (0x0100 | 12)
347 #define Q931_N15 (0x0100 | 15)
348 #define Q931_N17 (0x0100 | 17)
349 #define Q931_N19 (0x0100 | 19)
350 #define Q931_N22 (0x0100 | 22)
351 #define Q931_N25 (0x0100 | 25)
352
353
354
355
356
357
358
359 #define Q931mes_ALERTING 0x01
360 #define Q931mes_CALL_PROCEEDING 0x02
361 #define Q931mes_CONNECT 0x07
362 #define Q931mes_CONNECT_ACKNOWLEDGE 0x0f
363 #define Q931mes_PROGRESS 0x03
364 #define Q931mes_SETUP 0x05
365 #define Q931mes_SETUP_ACKNOWLEDGE 0x0d
366 #define Q931mes_RESUME 0x26
367 #define Q931mes_RESUME_ACKNOWLEDGE 0x2e
368 #define Q931mes_RESUME_REJECT 0x22
369 #define Q931mes_SUSPEND 0x25
370 #define Q931mes_SUSPEND_ACKNOWLEDGE 0x2d
371 #define Q931mes_SUSPEND_REJECT 0x21
372 #define Q931mes_USER_INFORMATION 0x20
373 #define Q931mes_DISCONNECT 0x45
374 #define Q931mes_RELEASE 0x4d
375 #define Q931mes_RELEASE_COMPLETE 0x5a
376 #define Q931mes_RESTART 0x46
377 #define Q931mes_RESTART_ACKNOWLEDGE 0x4e
378 #define Q931mes_CONGESTION_CONTROL 0x79
379 #define Q931mes_INFORMATION 0x7b
380 #define Q931mes_NOTIFY 0x6e
381 #define Q931mes_STATUS 0x7d
382 #define Q931mes_STATUS_ENQUIRY 0x75
383 #define Q931mes_SEGMENT 0x60
384
385 #define Q931mes_SERVICE 0x0f
386 #define Q931mes_SERVICE_ACKNOWLEDGE 0x07
387
388
389
390
391
392 enum {
393 Q931_TIMER_T300 = 1,
394 Q931_TIMER_T301,
395 Q931_TIMER_T302,
396 Q931_TIMER_T303,
397 Q931_TIMER_T304,
398 Q931_TIMER_T305,
399 Q931_TIMER_T306,
400 Q931_TIMER_T307,
401 Q931_TIMER_T308,
402 Q931_TIMER_T309,
403 Q931_TIMER_T310,
404 Q931_TIMER_T311,
405 Q931_TIMER_T312,
406 Q931_TIMER_T313,
407 Q931_TIMER_T314,
408 Q931_TIMER_T315,
409 Q931_TIMER_T316,
410 Q931_TIMER_T317,
411 Q931_TIMER_T318,
412 Q931_TIMER_T319,
413 Q931_TIMER_T320,
414 Q931_TIMER_T321,
415 Q931_TIMER_T322,
416 };
417
418
419
420
421 enum {
422 Q931_TON_UNKNOWN = 0x00,
423 Q931_TON_INTERNATIONAL = 0x01,
424 Q931_TON_NATIONAL = 0x02,
425 Q931_TON_NETWORK_SPECIFIC = 0x03,
426 Q931_TON_SUBSCRIBER_NUMBER = 0x04,
427 Q931_TON_ABBREVIATED_NUMBER = 0x06,
428 Q931_TON_RESERVED = 0x07
429 };
430
431
432
433
434 enum {
435 Q931_NUMPLAN_UNKNOWN = 0x00,
436 Q931_NUMPLAN_E164 = 0x01,
437 Q931_NUMPLAN_X121 = 0x03,
438 Q931_NUMPLAN_F69 = 0x04,
439 Q931_NUMPLAN_NATIONAL = 0x08,
440 Q931_NUMPLAN_PRIVATE = 0x09,
441 Q931_NUMPLAN_RESERVED = 0x0e
442 };
443
444
445
446
447 enum {
448 Q931_PRES_ALLOWED = 0x00,
449 Q931_PRES_RESTRICTED = 0x01,
450 Q931_PRES_NOT_AVAILABLE = 0x02,
451 Q931_PRES_RESERVED = 0x03
452 };
453
454
455
456
457 enum {
458 Q931_SCREEN_USER_NOT_SCREENED = 0x00,
459 Q931_SCREEN_USER_VERIFIED_PASSED = 0x01,
460 Q931_SCREEN_USER_VERIFIED_FAILED = 0x02,
461 Q931_SCREEN_NETWORK = 0x03
462 };
463
464
465
466
467 enum {
468 Q931_CODING_ITU = 0x00,
469 Q931_CODING_ISO = 0x01,
470 Q931_CODING_NATIONAL = 0x02,
471 Q931_CODING_NETWORK = 0x03
472 };
473
474
475
476
477 enum {
478 Q931_HLCHAR_TELEPHONY = 0x01,
479 Q931_HLCHAR_FAX_G23 = 0x04,
480 Q931_HLCHAR_FAX_G4 = 0x21,
481 Q931_HLCHAR_FAX_G4II = 0x24,
482 Q931_HLCHAR_T102 = 0x32,
483 Q931_HLCHAR_T101 = 0x33,
484 Q931_HLCHAR_F60 = 0x35,
485 Q931_HLCHAR_X400 = 0x38,
486 Q931_HLCHAR_X200 = 0x41
487 };
488
489
490
491
492 enum {
493 Q931_UIL1P_V110 = 0x01,
494 Q931_UIL1P_I460 = 0x01,
495 Q931_UIL1P_X30 = 0x01,
496
497 Q931_UIL1P_G711U = 0x02,
498 Q931_UIL1P_G711A = 0x03,
499 Q931_UIL1P_G721 = 0x04,
500
501 Q931_UIL1P_H221 = 0x05,
502 Q931_UIL1P_H242 = 0x05,
503
504 Q931_UIL1P_H223 = 0x06,
505 Q931_UIL1P_H245 = 0x06,
506
507 Q931_UIL1P_RATE_ADAP = 0x07,
508
509 Q931_UIL1P_V120 = 0x08,
510 Q931_UIL1P_X31 = 0x09
511 };
512
513
514
515
516 enum {
517 Q931_ITC_SPEECH = 0x00,
518 Q931_ITC_UNRESTRICTED = 0x08,
519 Q931_ITC_RESTRICTED = 0x09,
520 Q931_ITC_3K1_AUDIO = 0x10,
521 Q931_ITC_UNRESTRICTED_TONES = 0x11,
522 Q931_ITC_VIDEO = 0x18
523 };
524
525
526
527
528 enum {
529 Q931_ITR_PACKET = 0x00,
530 Q931_ITR_64K = 0x10,
531 Q931_ITR_128K = 0x11,
532 Q931_ITR_384K = 0x13,
533 Q931_ITR_1536K = 0x15,
534 Q931_ITR_1920K = 0x17,
535 Q931_ITR_MULTI = 0x18
536 };
537
538
539
540
541
542
543
544
545 typedef struct {
546 L3UINT Size;
547 L3UCHAR ProtDisc;
548 L3UCHAR MesType;
549 L3UCHAR CRVFlag;
550 L3INT CRV;
551
552 } Q931mes_Header;
553
554
555
556
557
558
559
560
561
562 typedef struct {
563 L3UINT Size;
564 L3UCHAR ProtDisc;
565 L3UCHAR MesType;
566 L3UCHAR CRVFlag;
567 L3INT CRV;
568
569
570
571 L3UCHAR Tei;
572
573 ie Shift;
574 ie MoreData;
575 ie SendComplete;
576 ie CongestionLevel;
577 ie RepeatInd;
578
579 ie Segment;
580 ie BearerCap;
581 ie Cause;
582 ie CallState;
583 ie CallID;
584 ie ChanID;
585 ie ChangeStatus;
586 ie ProgInd;
587 ie NetFac;
588 ie NotifInd;
589 ie Display;
590 ie DateTime;
591 ie KeypadFac;
592 ie Signal;
593 ie InfoRate;
594 ie EndEndTxDelay;
595 ie TransDelSelInd;
596 ie PackParam;
597 ie PackWinSize;
598 ie PackSize;
599 ie ClosedUserGrp;
600 ie RevChargeInd;
601 ie CalledNum;
602 ie CalledSub;
603 ie CallingNum;
604 ie CallingSub;
605 ie RedirNum;
606 ie TransNetSel;
607 ie LLRepeatInd;
608 ie RestartWin;
609 ie RestartInd;
610 ie LLComp;
611 ie HLComp;
612 ie UserUser;
613 ie Escape;
614 ie Switchhook;
615 ie FeatAct;
616 ie FeatInd;
617 ie GenericDigits;
618
619 L3UCHAR buf[1];
620
621 } Q931mes_Generic;
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637 typedef struct Q931_TrunkInfo Q931_TrunkInfo_t;
638
639 typedef enum {
640 Q931_LOG_NONE = -1,
641 Q931_LOG_EMERG,
642 Q931_LOG_ALERT,
643 Q931_LOG_CRIT,
644 Q931_LOG_ERROR,
645 Q931_LOG_WARNING,
646 Q931_LOG_NOTICE,
647 Q931_LOG_INFO,
648 Q931_LOG_DEBUG
649 } Q931LogLevel_t;
650
651 typedef L3INT (*Q931Tx34CB_t) (void *,L3UCHAR *, L3INT);
652 typedef L3INT (*Q931Tx32CB_t) (void *, L3INT, L3UCHAR, L3UCHAR *, L3INT);
653 typedef L3INT (*Q931ErrorCB_t) (void *,L3INT,L3INT,L3INT);
654 typedef L3INT (*Q931LogCB_t) (void *, Q931LogLevel_t, char *, L3INT);
655
656 typedef enum {
657 Q931_TE=0,
658 Q931_NT=1
659 } Q931NetUser_t;
660
661 typedef enum {
662 Q931_Dialect_Q931 = 0,
663 Q931_Dialect_National = 2,
664 Q931_Dialect_DMS = 4,
665 Q931_Dialect_5ESS = 6,
666
667 Q931_Dialect_Count
668 } Q931Dialect_t;
669 #define DIALECT_STRINGS "q931", "", "national", "", "dms", "", "5ess", ""
670 Q931_STR2ENUM_P(q931_str2Q931Dialect_type, q931_Q931Dialect_type2str, Q931Dialect_t)
671
672 typedef enum {
673 Q931_TrType_E1 = 0,
674 Q931_TrType_T1 = 1,
675 Q931_TrType_J1 = 2,
676 Q931_TrType_BRI = 3,
677 Q931_TrType_BRI_PTMP = 4
678 } Q931_TrunkType_t;
679
680 typedef enum {
681 Q931_TrState_NoAlignment=0,
682 Q931_TrState_Aligning=1,
683 Q931_TrState_Aligned=2
684 } Q931_TrunkState_t;
685
686 typedef enum {
687 Q931_ChType_NotUsed=0,
688 Q931_ChType_B=1,
689 Q931_ChType_D=2,
690 Q931_ChType_Sync=3
691 } Q931_ChanType_t;
692
693 struct Q931_Call
694 {
695 L3UCHAR InUse;
696
697
698
699 L3UCHAR Tei;
700
701 L3UCHAR BChan;
702
703
704
705 L3INT CRV;
706
707 L3UINT State;
708
709
710
711
712
713 L3ULONG Timer;
714
715
716
717 L3USHORT TimerID;
718
719
720
721 };
722
723 struct Q931_TrunkInfo
724 {
725 Q931NetUser_t NetUser;
726 Q931_TrunkType_t TrunkType;
727 Q931Dialect_t Dialect;
728
729 Q931Tx34CB_t Q931Tx34CBProc;
730 Q931Tx32CB_t Q931Tx32CBProc;
731 Q931ErrorCB_t Q931ErrorCBProc;
732 Q931LogCB_t Q931LogCBProc;
733 void *PrivateData32;
734 void *PrivateData34;
735 void *PrivateDataLog;
736
737 Q931LogLevel_t loglevel;
738
739 L3UCHAR Enabled;
740
741
742
743 Q931_TrunkState_t TrunkState;
744
745 L3INT LastCRV;
746
747 L3UCHAR L3Buf[Q931L4BUF];
748
749
750 L3UCHAR L2Buf[Q931L2BUF];
751
752
753
754
755
756
757 L3BOOL autoSetupAck;
758
759
760 L3BOOL autoConnectAck;
761
762
763 L3BOOL autoRestartAck;
764
765
766 L3BOOL autoServiceAck;
767
768
769
770
771 struct _charray
772 {
773 Q931_ChanType_t ChanType;
774
775 L3UCHAR Available;
776
777
778
779 L3INT CRV;
780
781 } ch[Q931MAXCHPERTRUNK];
782
783
784
785 struct Q931_Call call[Q931MAXCALLPERTRUNK];
786 };
787
788
789
790
791
792
793
794
795
796
797
798
799 typedef struct
800 {
801 L3INT State;
802 L3INT Message;
803 L3UCHAR Direction;
804 } Q931State;
805
806
807
808
809
810
811
812
813 typedef L3INT (q931proc_func_t) (Q931_TrunkInfo_t *pTrunk, L3UCHAR *, L3INT);
814
815 typedef L3INT (q931umes_func_t) (Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT IOff, L3INT Size);
816 typedef L3INT (q931pmes_func_t) (Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
817
818 typedef L3INT (q931uie_func_t) (Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
819 typedef L3INT (q931pie_func_t) (Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
820
821 typedef L3INT (q931timeout_func_t) (Q931_TrunkInfo_t *pTrunk, L3INT callIndex);
822 typedef L3ULONG q931timer_t;
823
824 extern q931proc_func_t *Q931Proc[Q931MAXDLCT][Q931MAXMES];
825
826 extern q931umes_func_t *Q931Umes[Q931MAXDLCT][Q931MAXMES];
827 extern q931pmes_func_t *Q931Pmes[Q931MAXDLCT][Q931MAXMES];
828
829 extern q931uie_func_t *Q931Uie[Q931MAXDLCT][Q931MAXIE];
830 extern q931pie_func_t *Q931Pie[Q931MAXDLCT][Q931MAXIE];
831
832 extern q931timeout_func_t *Q931Timeout[Q931MAXDLCT][Q931MAXTIMER];
833 extern q931timer_t Q931Timer[Q931MAXDLCT][Q931MAXTIMER];
834
835
836
837
838
839
840
841
842
843
844
845
846 #define Q931GetIETotSize(ie) (((ie.InfoID & 0x80) != 0) ? 1 : ie.LenIE) + 2)
847
848
849
850
851
852
853
854
855
856
857 #define Q931IsIEPresent(x) ((x & 0x8000) != 0)
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873 #define Q931GetIEOffset(x) (x & 0x7fff)
874 #define Q931GetIEValue(x) (x & 0x7fff)
875
876
877
878
879
880
881
882
883
884
885 #define Q931GetIEPtr(ie,buf) ((void *)&buf[Q931GetIEOffset(ie)])
886
887
888
889
890
891
892
893
894
895
896 #define Q931SetIE(x,o) { x = (ie)(o) | 0x8000; }
897
898
899
900
901
902
903
904
905
906
907
908 #define IsQ931Ext(x) ((x & 0x80) == 0)
909
910
911
912
913
914
915
916
917
918
919
920 #define ieGetOctet(x) ((L3UCHAR)(x))
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935 #define NoWarning(x) (x = x)
936
937
938
939
940
941
942
943 #include "Q931ie.h"
944
945 #include "Q932.h"
946
947
948
949
950
951
952 L3INT Q931Pmes_Alerting(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
953 L3INT Q931Pmes_CallProceeding(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
954 L3INT Q931Pmes_Connect(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
955 L3INT Q931Pmes_ConnectAck(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
956 L3INT Q931Pmes_Progress(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
957 L3INT Q931Pmes_Setup(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
958 L3INT Q931Pmes_SetupAck(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
959 L3INT Q931Pmes_Resume(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
960 L3INT Q931Pmes_ResumeAck(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
961 L3INT Q931Pmes_ResumeReject(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
962 L3INT Q931Pmes_Suspend(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
963 L3INT Q931Pmes_SuspendAck(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
964 L3INT Q931Pmes_SuspendReject(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
965 L3INT Q931Pmes_UserInformation(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
966 L3INT Q931Pmes_Disconnect(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
967 L3INT Q931Pmes_Release(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
968 L3INT Q931Pmes_ReleaseComplete(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
969 L3INT Q931Pmes_Restart(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
970 L3INT Q931Pmes_RestartAck(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
971 L3INT Q931Pmes_CongestionControl(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
972 L3INT Q931Pmes_Information(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
973 L3INT Q931Pmes_Notify(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
974 L3INT Q931Pmes_Segment(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
975 L3INT Q931Pmes_Status(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
976 L3INT Q931Pmes_StatusEnquiry(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
977 L3INT Q931Pmes_Service(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
978 L3INT Q931Pmes_ServiceAck(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
979
980
981 L3INT Q931Umes_Alerting(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
982 L3INT Q931Umes_CallProceeding(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
983 L3INT Q931Umes_Connect(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
984 L3INT Q931Umes_ConnectAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
985 L3INT Q931Umes_Progress(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
986 L3INT Q931Umes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
987 L3INT Q931Umes_SetupAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
988 L3INT Q931Umes_Resume(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
989 L3INT Q931Umes_ResumeAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
990 L3INT Q931Umes_ResumeReject(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
991 L3INT Q931Umes_Suspend(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
992 L3INT Q931Umes_SuspendAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
993 L3INT Q931Umes_SuspendReject(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
994 L3INT Q931Umes_UserInformation(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
995 L3INT Q931Umes_Disconnect(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
996 L3INT Q931Umes_Release(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
997 L3INT Q931Umes_ReleaseComplete(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
998 L3INT Q931Umes_Restart(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
999 L3INT Q931Umes_RestartAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
1000 L3INT Q931Umes_CongestionControl(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
1001 L3INT Q931Umes_Information(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
1002 L3INT Q931Umes_Notify(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
1003 L3INT Q931Umes_Segment(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
1004 L3INT Q931Umes_Status(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
1005 L3INT Q931Umes_StatusEnquiry(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT I, L3INT O);
1006 L3INT Q931Umes_Service(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size);
1007 L3INT Q931Umes_ServiceAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size);
1008
1009
1010
1011
1012
1013
1014
1015 L3INT Q931ProcAlertingTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1016 L3INT Q931ProcCallProceedingTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1017 L3INT Q931ProcConnectTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1018 L3INT Q931ProcConnectAckTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1019 L3INT Q931ProcProgressTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1020 L3INT Q931ProcSetupTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1021 L3INT Q931ProcSetupAckTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1022 L3INT Q931ProcResumeTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1023 L3INT Q931ProcResumeAckTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1024 L3INT Q931ProcResumeRejectTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1025 L3INT Q931ProcSuspendTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1026 L3INT Q931ProcSuspendAckTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1027 L3INT Q931ProcSuspendRejectTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1028 L3INT Q931ProcUserInformationTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1029 L3INT Q931ProcDisconnectTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1030 L3INT Q931ProcReleaseTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1031 L3INT Q931ProcReleaseCompleteTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1032 L3INT Q931ProcRestartTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1033 L3INT Q931ProcRestartAckTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1034 L3INT Q931ProcCongestionControlTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1035 L3INT Q931ProcInformationTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1036 L3INT Q931ProcNotifyTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1037 L3INT Q931ProcStatusTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1038 L3INT Q931ProcStatusEnquiryTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1039 L3INT Q931ProcSegmentTE(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1040
1041 L3INT Q931ProcAlertingNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1042 L3INT Q931ProcCallProceedingNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1043 L3INT Q931ProcConnectNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1044 L3INT Q931ProcConnectAckNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1045 L3INT Q931ProcProgressNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1046 L3INT Q931ProcSetupNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1047 L3INT Q931ProcSetupAckNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1048 L3INT Q931ProcResumeNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1049 L3INT Q931ProcResumeAckNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1050 L3INT Q931ProcResumeRejectNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1051 L3INT Q931ProcSuspendNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1052 L3INT Q931ProcSuspendAckNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1053 L3INT Q931ProcSuspendRejectNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1054 L3INT Q931ProcUserInformationNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1055 L3INT Q931ProcDisconnectNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1056 L3INT Q931ProcReleaseNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1057 L3INT Q931ProcReleaseCompleteNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1058 L3INT Q931ProcRestartNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1059 L3INT Q931ProcRestartAckNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1060 L3INT Q931ProcCongestionControlNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1061 L3INT Q931ProcInformationNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1062 L3INT Q931ProcNotifyNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1063 L3INT Q931ProcStatusNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1064 L3INT Q931ProcStatusEnquiryNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1065 L3INT Q931ProcSegmentNT(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1066
1067 L3INT Q931ProcUnknownMessage(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1068 L3INT Q931ProcUnexpectedMessage(Q931_TrunkInfo_t *pTrunk,L3UCHAR * b, L3INT iFrom);
1069
1070
1071
1072
1073
1074
1075 void Q931TimerTick(Q931_TrunkInfo_t *pTrunk);
1076 L3INT Q931Rx23(Q931_TrunkInfo_t *pTrunk, L3INT ind, L3UCHAR tei, L3UCHAR * Mes, L3INT Size);
1077 L3INT Q931Tx32Data(Q931_TrunkInfo_t *pTrunk, L3UCHAR bcast, L3UCHAR * Mes, L3INT Size);
1078 L3INT Q931Rx43(Q931_TrunkInfo_t *pTrunk, L3UCHAR * Mes, L3INT Size);
1079 L3INT Q931Tx34(Q931_TrunkInfo_t *pTrunk, L3UCHAR * Mes, L3INT Size);
1080 void Q931SetError(Q931_TrunkInfo_t *pTrunk,L3INT ErrID, L3INT ErrPar1, L3INT ErrPar2);
1081
1082 void Q931SetDefaultErrorCB(Q931ErrorCB_t Q931ErrorPar);
1083
1084 void Q931CreateTE(L3UCHAR i);
1085 void Q931CreateNT(L3UCHAR i);
1086 void Q931SetMesCreateCB(L3INT (*callback)(void));
1087 void Q931SetDialectCreateCB(L3INT (*callback)(L3INT));
1088 void Q931SetHeaderSpace(L3INT space);
1089
1090 void Q931SetMesProc(L3UCHAR mes, L3UCHAR dialect, q931proc_func_t *Q931ProcFunc, q931umes_func_t *Q931UmesFunc, q931pmes_func_t *Q931PmesFunc);
1091 void Q931SetIEProc(L3UCHAR iec, L3UCHAR dialect, q931pie_func_t *Q931PieProc, q931uie_func_t *Q931UieProc);
1092 void Q931SetTimeoutProc(L3UCHAR dialect, L3UCHAR timer, q931timeout_func_t *Q931TimeoutProc);
1093 void Q931SetTimerDefault(L3UCHAR dialect, L3UCHAR timer, q931timer_t timeout);
1094
1095 void Q931Initialize(void);
1096 void Q931AddDialect(L3UCHAR iDialect, void (*Q931CreateDialectCB)(L3UCHAR iDialect));
1097 L3INT Q931InitMesSetup(Q931mes_Generic *p);
1098 L3INT Q931InitMesRestartAck(Q931mes_Generic * pMes);
1099 L3INT Q931InitMesGeneric(Q931mes_Generic *pMes);
1100
1101 L3INT Q931CreateCRV(Q931_TrunkInfo_t *pTrunk, L3INT * callIndex);
1102 L3INT Q931ReleaseCRV(Q931_TrunkInfo_t *pTrunk, L3INT CRV);
1103 L3INT Q931AllocateCRV(Q931_TrunkInfo_t *pTrunk, L3INT iCRV, L3INT * callIndex);
1104 L3INT Q931FindCRV(Q931_TrunkInfo_t *pTrunk, L3INT crv, L3INT *callindex);
1105 L3INT Q931GetCallState(Q931_TrunkInfo_t *pTrunk, L3INT iCRV);
1106 L3INT Q931StartTimer(Q931_TrunkInfo_t *pTrunk, L3INT callIndex, L3USHORT iTimer);
1107 L3INT Q931StopTimer(Q931_TrunkInfo_t *pTrunk, L3INT callindex, L3USHORT iTimer);
1108 L3INT Q931SetState(Q931_TrunkInfo_t *pTrunk, L3INT callIndex, L3INT iState);
1109 L3ULONG Q931GetTime(void);
1110 void Q931SetGetTimeCB(L3ULONG (*callback)(void));
1111 void Q931AddStateEntry(L3UCHAR iD, L3INT iState, L3INT iMes, L3UCHAR cDir);
1112 L3BOOL Q931IsEventLegal(L3UCHAR iD, L3INT iState, L3INT iMes, L3UCHAR cDir);
1113
1114
1115
1116
1117
1118
1119 ie Q931AppendIE(L3UCHAR *pm, L3UCHAR *pi);
1120 L3INT Q931GetUniqueCRV(Q931_TrunkInfo_t *pTrunk);
1121
1122 L3INT Q931InitIEBearerCap(Q931ie_BearerCap *p);
1123 L3INT Q931InitIEChanID(Q931ie_ChanID *p);
1124 L3INT Q931InitIEProgInd(Q931ie_ProgInd *p);
1125 L3INT Q931InitIENetFac(Q931ie_NetFac * pIE);
1126 L3INT Q931InitIEDisplay(Q931ie_Display * pIE);
1127 L3INT Q931InitIEDateTime(Q931ie_DateTime * pIE);
1128 L3INT Q931InitIEKeypadFac(Q931ie_KeypadFac * pIE);
1129 L3INT Q931InitIESignal(Q931ie_Signal * pIE);
1130 L3INT Q931InitIECallingNum(Q931ie_CallingNum * pIE);
1131 L3INT Q931InitIECallingSub(Q931ie_CallingSub * pIE);
1132 L3INT Q931InitIECalledNum(Q931ie_CalledNum * pIE);
1133 L3INT Q931InitIECalledSub(Q931ie_CalledSub * pIE);
1134 L3INT Q931InitIETransNetSel(Q931ie_TransNetSel * pIE);
1135 L3INT Q931InitIELLComp(Q931ie_LLComp * pIE);
1136 L3INT Q931InitIEHLComp(Q931ie_HLComp * pIE);
1137
1138 L3INT Q931Disconnect(Q931_TrunkInfo_t *pTrunk, L3INT iTo, L3INT iCRV, L3INT iCause);
1139 L3INT Q931ReleaseComplete(Q931_TrunkInfo_t *pTrunk, L3UCHAR *buf);
1140 L3INT Q931AckRestart(Q931_TrunkInfo_t *pTrunk, L3UCHAR *buf);
1141 L3INT Q931AckConnect(Q931_TrunkInfo_t *pTrunk, L3UCHAR *buf);
1142 L3INT Q931AckSetup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *buf);
1143 L3INT Q931AckService(Q931_TrunkInfo_t *pTrunk, L3UCHAR *buf);
1144
1145 L3INT Q931Api_InitTrunk(Q931_TrunkInfo_t *pTrunk,
1146 Q931Dialect_t Dialect,
1147 Q931NetUser_t NetUser,
1148 Q931_TrunkType_t TrunkType,
1149 Q931Tx34CB_t Q931Tx34CBProc,
1150 Q931Tx32CB_t Q931Tx32CBProc,
1151 Q931ErrorCB_t Q931ErrorCBProc,
1152 void *PrivateData32,
1153 void *PrivateData34);
1154
1155 L3INT Q931GetMesSize(Q931mes_Generic *pMes);
1156 L3INT Q931InitMesResume(Q931mes_Generic * pMes);
1157
1158 L3INT Q931Log(Q931_TrunkInfo_t *trunk, Q931LogLevel_t level, const char *fmt, ...);
1159 void Q931SetLogCB(Q931_TrunkInfo_t *trunk, Q931LogCB_t func, void *priv);
1160 void Q931SetLogLevel(Q931_TrunkInfo_t *trunk, Q931LogLevel_t level);
1161
1162 void Q931SetL4HeaderSpace(L3INT space);
1163 void Q931SetL2HeaderSpace(L3INT space);
1164 L3INT Q931ProcDummy(Q931_TrunkInfo_t *pTrunk, L3UCHAR * b,L3INT c);
1165 L3INT Q931UmesDummy(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT IOff, L3INT Size);
1166 L3INT Q931UieDummy(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
1167 L3INT Q931PmesDummy(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
1168 L3INT Q931PieDummy(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
1169 L3INT Q931TxDummy(Q931_TrunkInfo_t *pTrunk, L3UCHAR * b, L3INT n);
1170 L3INT Q931ErrorDummy(void *priv, L3INT a, L3INT b, L3INT c);
1171 L3INT Q931TimeoutDummy(Q931_TrunkInfo_t *pTrunk, L3INT callIndex);
1172
1173 L3INT Q931MesgHeader(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *mes, L3UCHAR *OBuf, L3INT Size, L3INT *IOff);
1174
1175 #endif