comparison sip-in/mncc_sig_out.c @ 153:99fd4ae573ae

sip-in: split mncc_sig_out.c from mncc_handle.c
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 11 Oct 2022 16:23:44 -0800
parents sip-in/mncc_handle.c@e499e8db8b82
children
comparison
equal deleted inserted replaced
152:7176dc850d7a 153:99fd4ae573ae
1 /*
2 * In this module we implement functions that send MNCC messages
3 * to OsmoMSC via themwi-mncc, to be called by SIP and TMGW events.
4 */
5
6 #include <sys/types.h>
7 #include <sys/socket.h>
8 #include <sys/time.h>
9 #include <netinet/in.h>
10 #include <stdio.h>
11 #include <stdint.h>
12 #include <stdlib.h>
13 #include <string.h>
14 #include <strings.h>
15 #include <syslog.h>
16 #include "../include/mncc.h"
17 #include "../include/gsm48_const.h"
18 #include "call.h"
19
20 void
21 send_mncc_connect_ack(call)
22 struct call *call;
23 {
24 struct gsm_mncc ack;
25
26 bzero(&ack, sizeof(struct gsm_mncc));
27 ack.msg_type = MNCC_SETUP_COMPL_REQ;
28 ack.callref = call->mncc_callref;
29 send_mncc_to_gsm(&ack, sizeof(struct gsm_mncc));
30 call->mncc_state = MNCC_STATE_CONNECTED;
31 call->overall_state = OVERALL_STATE_CONNECTED;
32 }
33
34 void
35 mncc_dtmf_start_ok(call)
36 struct call *call;
37 {
38 struct gsm_mncc msg;
39
40 bzero(&msg, sizeof(struct gsm_mncc));
41 msg.msg_type = MNCC_START_DTMF_RSP;
42 msg.callref = call->mncc_callref;
43 msg.fields |= MNCC_F_KEYPAD;
44 msg.keypad = call->dtmf_digit;
45 send_mncc_to_gsm(&msg, sizeof(struct gsm_mncc));
46 }
47
48 void
49 mncc_dtmf_start_err(call)
50 struct call *call;
51 {
52 struct gsm_mncc msg;
53
54 bzero(&msg, sizeof(struct gsm_mncc));
55 msg.msg_type = MNCC_START_DTMF_REJ;
56 msg.callref = call->mncc_callref;
57 mncc_set_cause(&msg, GSM48_CAUSE_LOC_PRN_S_LU,
58 GSM48_CC_CAUSE_PROTO_ERR);
59 send_mncc_to_gsm(&msg, sizeof(struct gsm_mncc));
60 }
61
62 void
63 mncc_dtmf_stop_ok(call)
64 struct call *call;
65 {
66 struct gsm_mncc msg;
67
68 bzero(&msg, sizeof(struct gsm_mncc));
69 msg.msg_type = MNCC_STOP_DTMF_RSP;
70 msg.callref = call->mncc_callref;
71 send_mncc_to_gsm(&msg, sizeof(struct gsm_mncc));
72 }
73
74 void
75 mncc_send_hold_ack(call)
76 struct call *call;
77 {
78 struct gsm_mncc msg;
79
80 bzero(&msg, sizeof(struct gsm_mncc));
81 msg.msg_type = MNCC_HOLD_CNF;
82 msg.callref = call->mncc_callref;
83 send_mncc_to_gsm(&msg, sizeof(struct gsm_mncc));
84 }
85
86 void
87 mncc_send_retrieve_ack(call)
88 struct call *call;
89 {
90 struct gsm_mncc msg;
91
92 bzero(&msg, sizeof(struct gsm_mncc));
93 msg.msg_type = MNCC_RETRIEVE_CNF;
94 msg.callref = call->mncc_callref;
95 send_mncc_to_gsm(&msg, sizeof(struct gsm_mncc));
96 }