This source file includes following definitions.
- ft_to_sngss7_iam
- ft_to_sngss7_acm
- ft_to_sngss7_anm
- ft_to_sngss7_rel
- ft_to_sngss7_rlc
- ft_to_sngss7_rsc
- ft_to_sngss7_rsca
- ft_to_sngss7_blo
- ft_to_sngss7_bla
- ft_to_sngss7_ubl
- ft_to_sngss7_uba
- ft_to_sngss7_lpa
- ft_to_sngss7_gra
- ft_to_sngss7_grs
- ft_to_sngss7_cgba
- ft_to_sngss7_cgua
- ft_to_sngss7_cgb
- ft_to_sngss7_cgu
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 #include "ftmod_sangoma_ss7_main.h"
36
37
38
39
40
41
42
43
44
45 void ft_to_sngss7_iam(ftdm_channel_t * ftdmchan);
46 void ft_to_sngss7_acm(ftdm_channel_t * ftdmchan);
47 void ft_to_sngss7_anm(ftdm_channel_t * ftdmchan);
48 void ft_to_sngss7_rel(ftdm_channel_t * ftdmchan);
49 void ft_to_sngss7_rlc(ftdm_channel_t * ftdmchan);
50
51 void ft_to_sngss7_rsc(ftdm_channel_t * ftdmchan);
52 void ft_to_sngss7_rsca(ftdm_channel_t * ftdmchan);
53
54 void ft_to_sngss7_blo(ftdm_channel_t * ftdmchan);
55 void ft_to_sngss7_bla(ftdm_channel_t * ftdmchan);
56 void ft_to_sngss7_ubl(ftdm_channel_t * ftdmchan);
57 void ft_to_sngss7_uba(ftdm_channel_t * ftdmchan);
58
59 void ft_to_sngss7_lpa(ftdm_channel_t * ftdmchan);
60
61 void ft_to_sngss7_gra(ftdm_channel_t * ftdmchan);
62 void ft_to_sngss7_grs(ftdm_channel_t * ftdmchan);
63
64 void ft_to_sngss7_cgb(ftdm_channel_t * ftdmchan);
65 void ft_to_sngss7_cgu(ftdm_channel_t * ftdmchan);
66
67 void ft_to_sngss7_cgba(ftdm_channel_t * ftdmchan);
68 void ft_to_sngss7_cgua(ftdm_channel_t * ftdmchan);
69
70
71
72 void ft_to_sngss7_iam (ftdm_channel_t * ftdmchan)
73 {
74 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
75
76 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;;
77 const char *nadi = NULL;
78 SiConEvnt iam;
79
80 sngss7_info->suInstId = get_unique_id ();
81 sngss7_info->spInstId = 0;
82 sngss7_info->spId = 1;
83
84 memset (&iam, 0x0, sizeof (iam));
85
86
87 iam.natConInd.eh.pres = PRSNT_NODEF;
88 iam.natConInd.satInd.pres = PRSNT_NODEF;
89 iam.natConInd.satInd.val = 0;
90 iam.natConInd.contChkInd.pres = PRSNT_NODEF;
91 iam.natConInd.contChkInd.val = CONTCHK_NOTREQ;
92 iam.natConInd.echoCntrlDevInd.pres = PRSNT_NODEF;
93 iam.natConInd.echoCntrlDevInd.val = ECHOCDEV_INCL;
94
95
96 iam.fwdCallInd.eh.pres = PRSNT_NODEF;
97 iam.fwdCallInd.natIntCallInd.pres = PRSNT_NODEF;
98 iam.fwdCallInd.natIntCallInd.val = 0x00;
99 iam.fwdCallInd.end2EndMethInd.pres = PRSNT_NODEF;
100 iam.fwdCallInd.end2EndMethInd.val = E2EMTH_NOMETH;
101 iam.fwdCallInd.intInd.pres = PRSNT_NODEF;
102 iam.fwdCallInd.intInd.val = INTIND_NOINTW;
103 iam.fwdCallInd.end2EndInfoInd.pres = PRSNT_NODEF;
104 iam.fwdCallInd.end2EndInfoInd.val = E2EINF_NOINFO;
105 iam.fwdCallInd.isdnUsrPrtInd.pres = PRSNT_NODEF;
106 iam.fwdCallInd.isdnUsrPrtInd.val = ISUP_USED;
107 iam.fwdCallInd.isdnUsrPrtPrfInd.pres = PRSNT_NODEF;
108 iam.fwdCallInd.isdnUsrPrtPrfInd.val = PREF_PREFAW;
109 iam.fwdCallInd.isdnAccInd.pres = PRSNT_NODEF;
110 iam.fwdCallInd.isdnAccInd.val = ISDNACC_ISDN;
111 iam.fwdCallInd.sccpMethInd.pres = PRSNT_NODEF;
112 iam.fwdCallInd.sccpMethInd.val = SCCPMTH_NOIND;
113
114
115 iam.cgPtyCat.eh.pres = PRSNT_NODEF;
116 iam.cgPtyCat.cgPtyCat.pres = PRSNT_NODEF;
117 iam.cgPtyCat.cgPtyCat.val = CAT_ORD;
118
119
120 iam.txMedReq.eh.pres = PRSNT_NODEF;
121 iam.txMedReq.trMedReq.pres = PRSNT_NODEF;
122 iam.txMedReq.trMedReq.val = ftdmchan->caller_data.bearer_capability;
123
124 if ((g_ftdm_sngss7_data.cfg.isupIntf[sngss7_info->circuit->infId].switchType == LSI_SW_ANS88) ||
125 (g_ftdm_sngss7_data.cfg.isupIntf[sngss7_info->circuit->infId].switchType == LSI_SW_ANS92) ||
126 (g_ftdm_sngss7_data.cfg.isupIntf[sngss7_info->circuit->infId].switchType == LSI_SW_ANS95)) {
127
128
129 iam.fwdCallInd.transCallNInd.pres = PRSNT_NODEF;
130 iam.fwdCallInd.transCallNInd.val = 0x0;
131
132 iam.usrServInfoA.eh.pres = PRSNT_NODEF;
133
134 iam.usrServInfoA.infoTranCap.pres = PRSNT_NODEF;
135 switch (ftdmchan->caller_data.bearer_capability) {
136
137 case (FTDM_BEARER_CAP_SPEECH):
138 iam.usrServInfoA.infoTranCap.val = 0x0;
139 break;
140
141 case (FTDM_BEARER_CAP_64K_UNRESTRICTED):
142 iam.usrServInfoA.infoTranCap.val = 0x8;
143 break;
144
145 case (FTDM_BEARER_CAP_3_1KHZ_AUDIO):
146 iam.usrServInfoA.infoTranCap.val = 0x10;
147 break;
148
149 default:
150 SS7_ERROR_CHAN(ftdmchan, "Unknown Bearer capability falling back to speech%s\n", " ");
151 iam.usrServInfoA.infoTranCap.val = 0x0;
152 break;
153
154 }
155
156 iam.usrServInfoA.cdeStand.pres = PRSNT_NODEF;
157 iam.usrServInfoA.cdeStand.val = 0x0;
158 iam.usrServInfoA.tranMode.pres = PRSNT_NODEF;
159 iam.usrServInfoA.tranMode.val = 0x0;
160 iam.usrServInfoA.infoTranRate0.pres = PRSNT_NODEF;
161 iam.usrServInfoA.infoTranRate0.val = 0x10;
162 iam.usrServInfoA.infoTranRate1.pres = PRSNT_NODEF;
163 iam.usrServInfoA.infoTranRate1.val = 0x10;
164 iam.usrServInfoA.chanStruct.pres = PRSNT_NODEF;
165 iam.usrServInfoA.chanStruct.val = 0x1;
166 iam.usrServInfoA.config.pres = PRSNT_NODEF;
167 iam.usrServInfoA.config.val = 0x0;
168 iam.usrServInfoA.establish.pres = PRSNT_NODEF;
169 iam.usrServInfoA.establish.val = 0x0;
170 iam.usrServInfoA.symmetry.pres = PRSNT_NODEF;
171 iam.usrServInfoA.symmetry.val = 0x0;
172 iam.usrServInfoA.usrInfLyr1Prot.pres = PRSNT_NODEF;
173 iam.usrServInfoA.usrInfLyr1Prot.val = 0x2;
174 iam.usrServInfoA.rateMultiplier.pres = PRSNT_NODEF;
175 iam.usrServInfoA.rateMultiplier.val = 0x1;
176 }
177
178
179 copy_cdPtyNum_to_sngss7 (&ftdmchan->caller_data, &iam.cdPtyNum);
180
181
182
183 copy_cgPtyNum_to_sngss7 (&ftdmchan->caller_data, &iam.cgPtyNum);
184
185
186 nadi = ftdm_channel_get_var(ftdmchan, "ss7_nadi");
187 if ((nadi != NULL) && (*nadi)) {
188 SS7_DEBUG_CHAN(ftdmchan,"Found user supplied NADI value \"%s\"\n", nadi);
189 iam.cgPtyNum.natAddrInd.val = atoi(nadi);
190 } else {
191 SS7_DEBUG_CHAN(ftdmchan,"No user supplied NADI value found, using \"3\" %s\n", " ");
192 iam.cgPtyNum.natAddrInd.val = 0x03;
193 }
194
195 sng_cc_con_request (sngss7_info->spId,
196 sngss7_info->suInstId,
197 sngss7_info->spInstId,
198 sngss7_info->circuit->id,
199 &iam,
200 0);
201
202 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx IAM clg = \"%s\", cld = \"%s\"\n",
203 sngss7_info->circuit->cic,
204 ftdmchan->caller_data.cid_num.digits,
205 ftdmchan->caller_data.dnis.digits);
206
207 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
208 return;
209 }
210
211
212 void ft_to_sngss7_acm (ftdm_channel_t * ftdmchan)
213 {
214 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
215
216 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
217 SiCnStEvnt acm;
218
219 memset (&acm, 0x0, sizeof (acm));
220
221
222 acm.bckCallInd.eh.pres = PRSNT_NODEF;
223 acm.bckCallInd.chrgInd.pres = PRSNT_NODEF;
224 acm.bckCallInd.chrgInd.val = CHRG_CHRG;
225 acm.bckCallInd.cadPtyStatInd.pres = PRSNT_NODEF;
226 acm.bckCallInd.cadPtyStatInd.val = 0x01;
227 acm.bckCallInd.cadPtyCatInd.pres = PRSNT_NODEF;
228 acm.bckCallInd.cadPtyCatInd.val = CADCAT_ORDSUBS;
229 acm.bckCallInd.end2EndMethInd.pres = PRSNT_NODEF;
230 acm.bckCallInd.end2EndMethInd.val = E2EMTH_NOMETH;
231 acm.bckCallInd.intInd.pres = PRSNT_NODEF;
232 acm.bckCallInd.intInd.val = INTIND_NOINTW;
233 acm.bckCallInd.end2EndInfoInd.pres = PRSNT_NODEF;
234 acm.bckCallInd.end2EndInfoInd.val = E2EINF_NOINFO;
235 acm.bckCallInd.isdnUsrPrtInd.pres = PRSNT_NODEF;
236 acm.bckCallInd.isdnUsrPrtInd.val = ISUP_USED;
237 acm.bckCallInd.holdInd.pres = PRSNT_NODEF;
238 acm.bckCallInd.holdInd.val = HOLD_NOTREQD;
239 acm.bckCallInd.isdnAccInd.pres = PRSNT_NODEF;
240 acm.bckCallInd.isdnAccInd.val = ISDNACC_NONISDN;
241 acm.bckCallInd.echoCtrlDevInd.pres = PRSNT_NODEF;
242 acm.bckCallInd.echoCtrlDevInd.val = 0x1;
243 acm.bckCallInd.sccpMethInd.pres = PRSNT_NODEF;
244 acm.bckCallInd.sccpMethInd.val = SCCPMTH_NOIND;
245
246
247 sng_cc_con_status (1,
248 sngss7_info->suInstId,
249 sngss7_info->spInstId,
250 sngss7_info->circuit->id,
251 &acm,
252 ADDRCMPLT);
253
254 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx ACM\n", sngss7_info->circuit->cic);
255
256 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
257 return;
258 }
259
260
261 void ft_to_sngss7_anm (ftdm_channel_t * ftdmchan)
262 {
263 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
264
265 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
266 SiConEvnt anm;
267
268 memset (&anm, 0x0, sizeof (anm));
269
270
271 sng_cc_con_response(1,
272 sngss7_info->suInstId,
273 sngss7_info->spInstId,
274 sngss7_info->circuit->id,
275 &anm,
276 5);
277
278 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx ANM\n", sngss7_info->circuit->cic);
279
280 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
281 return;
282 }
283
284
285 void ft_to_sngss7_rel (ftdm_channel_t * ftdmchan)
286 {
287 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
288
289 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
290 SiRelEvnt rel;
291
292 memset (&rel, 0x0, sizeof (rel));
293
294 rel.causeDgn.eh.pres = PRSNT_NODEF;
295 rel.causeDgn.location.pres = PRSNT_NODEF;
296 rel.causeDgn.location.val = 0x01;
297 rel.causeDgn.cdeStand.pres = PRSNT_NODEF;
298 rel.causeDgn.cdeStand.val = 0x00;
299 rel.causeDgn.recommend.pres = NOTPRSNT;
300 rel.causeDgn.causeVal.pres = PRSNT_NODEF;
301 rel.causeDgn.causeVal.val = (uint8_t) ftdmchan->caller_data.hangup_cause;
302 rel.causeDgn.dgnVal.pres = NOTPRSNT;
303
304
305 sng_cc_rel_request (1,
306 sngss7_info->suInstId,
307 sngss7_info->spInstId,
308 sngss7_info->circuit->id,
309 &rel);
310
311 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx REL cause=%d \n",
312 sngss7_info->circuit->cic,
313 ftdmchan->caller_data.hangup_cause );
314
315 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
316 return;
317 }
318
319
320 void ft_to_sngss7_rlc (ftdm_channel_t * ftdmchan)
321 {
322 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
323
324 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
325 SiRelEvnt rlc;
326
327 memset (&rlc, 0x0, sizeof (rlc));
328
329
330 sng_cc_rel_response (1,
331 sngss7_info->suInstId,
332 sngss7_info->spInstId,
333 sngss7_info->circuit->id,
334 &rlc);
335
336 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx RLC\n", sngss7_info->circuit->cic);
337
338 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
339 return;
340 }
341
342
343 void ft_to_sngss7_rsc (ftdm_channel_t * ftdmchan)
344 {
345 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
346
347 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
348
349 sng_cc_sta_request (1,
350 sngss7_info->suInstId,
351 sngss7_info->spInstId,
352 sngss7_info->circuit->id,
353 sngss7_info->globalFlg,
354 SIT_STA_CIRRESREQ,
355 NULL);
356
357 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx RSC\n", sngss7_info->circuit->cic);
358
359 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
360 return;
361 }
362
363
364 void ft_to_sngss7_rsca (ftdm_channel_t * ftdmchan)
365 {
366 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
367
368 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
369
370 sng_cc_sta_request (1,
371 sngss7_info->suInstId,
372 sngss7_info->spInstId,
373 sngss7_info->circuit->id,
374 sngss7_info->globalFlg,
375 SIT_STA_CIRRESRSP,
376 NULL);
377
378 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx RSC-RLC\n", sngss7_info->circuit->cic);
379
380 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
381 return;
382 }
383
384
385 void ft_to_sngss7_blo (ftdm_channel_t * ftdmchan)
386 {
387 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
388
389 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
390
391 sng_cc_sta_request (1,
392 0,
393 0,
394 sngss7_info->circuit->id,
395 sngss7_info->globalFlg,
396 SIT_STA_CIRBLOREQ,
397 NULL);
398
399 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx BLO\n", sngss7_info->circuit->cic);
400
401 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
402 return;
403 }
404
405
406 void ft_to_sngss7_bla (ftdm_channel_t * ftdmchan)
407 {
408 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
409
410 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
411
412 sng_cc_sta_request (1,
413 0,
414 0,
415 sngss7_info->circuit->id,
416 sngss7_info->globalFlg,
417 SIT_STA_CIRBLORSP,
418 NULL);
419
420 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx BLA\n", sngss7_info->circuit->cic);
421
422 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
423 return;
424 }
425
426
427 void
428 ft_to_sngss7_ubl (ftdm_channel_t * ftdmchan)
429 {
430 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
431
432 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
433
434 sng_cc_sta_request (1,
435 0,
436 0,
437 sngss7_info->circuit->id,
438 sngss7_info->globalFlg,
439 SIT_STA_CIRUBLREQ,
440 NULL);
441
442 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx UBL\n", sngss7_info->circuit->cic);
443
444 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
445 return;
446 }
447
448
449 void ft_to_sngss7_uba (ftdm_channel_t * ftdmchan)
450 {
451 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
452
453 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
454
455 sng_cc_sta_request (1,
456 0,
457 0,
458 sngss7_info->circuit->id,
459 sngss7_info->globalFlg,
460 SIT_STA_CIRUBLRSP,
461 NULL);
462
463 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx UBA\n", sngss7_info->circuit->cic);
464
465 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
466 return;
467 }
468
469
470 void ft_to_sngss7_lpa (ftdm_channel_t * ftdmchan)
471 {
472 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
473
474 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
475
476 sng_cc_sta_request (1,
477 sngss7_info->suInstId,
478 sngss7_info->spInstId,
479 sngss7_info->circuit->id,
480 sngss7_info->globalFlg,
481 SIT_STA_LOOPBACKACK,
482 NULL);
483
484 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx LPA\n", sngss7_info->circuit->cic);
485
486 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
487 return;
488 }
489
490
491 void ft_to_sngss7_gra (ftdm_channel_t * ftdmchan)
492 {
493 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
494
495 sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
496 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
497 SiStaEvnt gra;
498
499
500 memset (&gra, 0x0, sizeof (gra));
501
502 gra.rangStat.eh.pres = PRSNT_NODEF;
503
504
505 gra.rangStat.range.pres = PRSNT_NODEF;
506 gra.rangStat.range.val = sngss7_span->rx_grs.range;
507
508
509 gra.rangStat.status.pres = PRSNT_NODEF;
510 gra.rangStat.status.len = ((sngss7_span->rx_grs.range + 1) >> 3) + (((sngss7_span->rx_grs.range + 1) & 0x07) ? 1 : 0);
511
512
513
514
515
516
517 sng_cc_sta_request (1,
518 0,
519 0,
520 sngss7_span->rx_grs.circuit,
521 0,
522 SIT_STA_GRSRSP,
523 &gra);
524
525 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx GRA (%d:%d)\n",
526 sngss7_info->circuit->cic,
527 sngss7_info->circuit->cic,
528 (sngss7_info->circuit->cic + sngss7_span->rx_grs.range));
529
530 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
531 return;
532 }
533
534
535 void ft_to_sngss7_grs (ftdm_channel_t * ftdmchan)
536 {
537 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
538
539 sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
540 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
541
542 SiStaEvnt grs;
543
544 memset (&grs, 0x0, sizeof(grs));
545
546 grs.rangStat.eh.pres = PRSNT_NODEF;
547 grs.rangStat.range.pres = PRSNT_NODEF;
548 grs.rangStat.range.val = sngss7_span->tx_grs.range;
549
550 sng_cc_sta_request (1,
551 0,
552 0,
553 sngss7_span->tx_grs.circuit,
554 0,
555 SIT_STA_GRSREQ,
556 &grs);
557
558 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx GRS (%d:%d)\n",
559 sngss7_info->circuit->cic,
560 sngss7_info->circuit->cic,
561 (sngss7_info->circuit->cic + sngss7_span->tx_grs.range));
562
563 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
564 return;
565 }
566
567
568 void ft_to_sngss7_cgba(ftdm_channel_t * ftdmchan)
569 {
570 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
571
572 sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
573 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
574 int x = 0;
575
576 SiStaEvnt cgba;
577
578 memset (&cgba, 0x0, sizeof(cgba));
579
580
581 cgba.cgsmti.eh.pres = PRSNT_NODEF;
582 cgba.cgsmti.typeInd.pres = PRSNT_NODEF;
583 cgba.cgsmti.typeInd.val = sngss7_span->rx_cgb.type;
584
585 cgba.rangStat.eh.pres = PRSNT_NODEF;
586
587 cgba.rangStat.range.pres = PRSNT_NODEF;
588 cgba.rangStat.range.val = sngss7_span->rx_cgb.range;
589
590 cgba.rangStat.status.pres = PRSNT_NODEF;
591 cgba.rangStat.status.len = ((sngss7_span->rx_cgb.range + 1) >> 3) + (((sngss7_span->rx_cgb.range + 1) & 0x07) ? 1 : 0);
592 for(x = 0; x < cgba.rangStat.status.len; x++){
593 cgba.rangStat.status.val[x] = sngss7_span->rx_cgb.status[x];
594 }
595
596 sng_cc_sta_request (1,
597 0,
598 0,
599 sngss7_span->rx_cgb.circuit,
600 0,
601 SIT_STA_CGBRSP,
602 &cgba);
603
604 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx CGBA (%d:%d)\n",
605 sngss7_info->circuit->cic,
606 sngss7_info->circuit->cic,
607 (sngss7_info->circuit->cic + sngss7_span->rx_cgb.range));
608
609
610 memset(&sngss7_span->rx_cgb, 0x0, sizeof(sngss7_group_data_t));
611
612 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
613 return;
614 }
615
616
617 void ft_to_sngss7_cgua(ftdm_channel_t * ftdmchan)
618 {
619 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
620
621 sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
622 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
623 int x = 0;
624
625 SiStaEvnt cgua;
626
627 memset (&cgua, 0x0, sizeof(cgua));
628
629
630 cgua.cgsmti.eh.pres = PRSNT_NODEF;
631 cgua.cgsmti.typeInd.pres = PRSNT_NODEF;
632 cgua.cgsmti.typeInd.val = sngss7_span->rx_cgu.type;
633
634 cgua.rangStat.eh.pres = PRSNT_NODEF;
635
636 cgua.rangStat.range.pres = PRSNT_NODEF;
637 cgua.rangStat.range.val = sngss7_span->rx_cgu.range;
638
639 cgua.rangStat.status.pres = PRSNT_NODEF;
640 cgua.rangStat.status.len = ((sngss7_span->rx_cgu.range + 1) >> 3) + (((sngss7_span->rx_cgu.range + 1) & 0x07) ? 1 : 0);
641 for(x = 0; x < cgua.rangStat.status.len; x++){
642 cgua.rangStat.status.val[x] = sngss7_span->rx_cgu.status[x];
643 }
644
645 sng_cc_sta_request (1,
646 0,
647 0,
648 sngss7_span->rx_cgu.circuit,
649 0,
650 SIT_STA_CGURSP,
651 &cgua);
652
653 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx CGUA (%d:%d)\n",
654 sngss7_info->circuit->cic,
655 sngss7_info->circuit->cic,
656 (sngss7_info->circuit->cic + sngss7_span->rx_cgu.range));
657
658
659 memset(&sngss7_span->rx_cgu, 0x0, sizeof(sngss7_group_data_t));
660
661 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
662 return;
663 }
664
665
666 void ft_to_sngss7_cgb(ftdm_channel_t * ftdmchan)
667 {
668 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
669
670 sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
671 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
672 SiStaEvnt cgb;
673 int x = 0;
674
675
676 memset (&cgb, 0x0, sizeof(cgb));
677
678
679 cgb.cgsmti.eh.pres = PRSNT_NODEF;
680 cgb.cgsmti.typeInd.pres = PRSNT_NODEF;
681 cgb.cgsmti.typeInd.val = sngss7_span->tx_cgb.type;
682
683
684 cgb.rangStat.eh.pres = PRSNT_NODEF;
685 cgb.rangStat.range.pres = PRSNT_NODEF;
686 cgb.rangStat.range.val = sngss7_span->tx_cgb.range;
687
688
689 cgb.rangStat.status.pres = PRSNT_NODEF;
690 cgb.rangStat.status.len = ((sngss7_span->tx_cgb.range + 1) >> 3) + (((sngss7_span->tx_cgb.range + 1) & 0x07) ? 1 : 0);
691 for(x = 0; x < cgb.rangStat.status.len; x++){
692 cgb.rangStat.status.val[x] = sngss7_span->tx_cgb.status[x];
693 }
694
695 sng_cc_sta_request (1,
696 0,
697 0,
698 sngss7_span->tx_cgb.circuit,
699 0,
700 SIT_STA_CGBREQ,
701 &cgb);
702
703 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx CGB (%d:%d)\n",
704 sngss7_info->circuit->cic,
705 sngss7_info->circuit->cic,
706 (sngss7_info->circuit->cic + sngss7_span->tx_cgb.range));
707
708
709 memset(&sngss7_span->tx_cgb, 0x0, sizeof(sngss7_group_data_t));
710
711 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
712 return;
713 }
714
715
716 void ft_to_sngss7_cgu(ftdm_channel_t * ftdmchan)
717 {
718 SS7_FUNC_TRACE_ENTER (__FUNCTION__);
719
720 sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
721 sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
722 SiStaEvnt cgu;
723 int x = 0;
724
725
726 memset (&cgu, 0x0, sizeof(cgu));
727
728
729 cgu.cgsmti.eh.pres = PRSNT_NODEF;
730 cgu.cgsmti.typeInd.pres = PRSNT_NODEF;
731 cgu.cgsmti.typeInd.val = sngss7_span->tx_cgu.type;
732
733
734 cgu.rangStat.eh.pres = PRSNT_NODEF;
735 cgu.rangStat.range.pres = PRSNT_NODEF;
736 cgu.rangStat.range.val = sngss7_span->tx_cgu.range;
737
738
739 cgu.rangStat.status.pres = PRSNT_NODEF;
740 cgu.rangStat.status.len = ((sngss7_span->tx_cgu.range + 1) >> 3) + (((sngss7_span->tx_cgu.range + 1) & 0x07) ? 1 : 0);
741 for(x = 0; x < cgu.rangStat.status.len; x++){
742 cgu.rangStat.status.val[x] = sngss7_span->tx_cgu.status[x];
743 }
744
745 sng_cc_sta_request (1,
746 0,
747 0,
748 sngss7_span->tx_cgu.circuit,
749 0,
750 SIT_STA_CGUREQ,
751 &cgu);
752
753 SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx CGU (%d:%d)\n",
754 sngss7_info->circuit->cic,
755 sngss7_info->circuit->cic,
756 (sngss7_info->circuit->cic + sngss7_span->tx_cgu.range));
757
758
759 memset(&sngss7_span->tx_cgu, 0x0, sizeof(sngss7_group_data_t));
760
761 SS7_FUNC_TRACE_EXIT (__FUNCTION__);
762 return;
763 }
764
765
766
767
768
769
770
771
772
773
774
775
776
777