FreeCalypso > hg > themwi-system-sw
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 } |