annotate mtctest/sig_handler.c @ 139:c731ec342ba0

mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 07 Oct 2022 23:25:38 -0800
parents 0967f67c6ac3
children c8e9b295e88f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * In this module we handle all incoming messages from MNCC,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * printing all of them and generating protocol-required responses
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * for some.
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 */
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <sys/types.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <sys/socket.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <stdio.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <stdint.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include <stdlib.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 #include <string.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 #include <strings.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 #include "../include/mncc.h"
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 #include "../include/gsm48_const.h"
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 extern int disconnect_mode;
36
e8e82a4bf12b themwi-test-mtc: implement dummy RTP via themwi-mgw
Mychaela Falconia <falcon@freecalypso.org>
parents: 21
diff changeset
18 extern struct sockaddr_storage dummy_rtp_endp;
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 static void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 print_bearer_cap(bcap)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 struct gsm_mncc_bearer_cap *bcap;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 int i, sv;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 printf("Bearer cap: itcap=%d tmod=%d coding=%d rrq=%d\n",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 bcap->transfer, bcap->mode, bcap->coding, bcap->radio);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 printf(" speech: CTM=%d sv", bcap->speech_ctm);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 for (i = 0; i < 8; i++) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 sv = bcap->speech_ver[i];
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 if (sv < 0)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 break;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 printf(" %d", sv);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 putchar('\n');
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 printf(" data: ra=%d sig=%d async=%d nstop=%d ndata=%d\n",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 bcap->data.rate_adaption, bcap->data.sig_access,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 bcap->data.async, bcap->data.nr_stop_bits,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 bcap->data.nr_data_bits);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 printf(" urate=%d par=%d irate=%d transp=%d mtype=%d\n",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 bcap->data.user_rate, bcap->data.parity,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 bcap->data.interm_rate, bcap->data.transp,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 bcap->data.modem_type);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 static void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 print_cc_cap(cc)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 struct gsm_mncc_cccap *cc;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 printf("CC capabilities: DTMF=%d PCP=%d\n", cc->dtmf, cc->pcp);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 static void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 print_cause(cause)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 struct gsm_mncc_cause *cause;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 int i;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 printf("Cause: loc=%d coding=%d value=%d", cause->location,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 cause->coding, cause->value);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 if (cause->rec)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 printf(" rec=0x%02X", cause->rec_val);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 for (i = 0; i < cause->diag_len; i++) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 if (!(i & 15)) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 putchar('\n');
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 putchar(' ');
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 printf(" %02X", cause->diag[i] & 0xFF);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 putchar('\n');
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 static void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 print_progress(prog)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 struct gsm_mncc_progress *prog;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 printf("Progress: loc=%d coding=%d descr=0x%02X", prog->location,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 prog->coding, prog->descr);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 static void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 print_useruser(uu)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 struct gsm_mncc_useruser *uu;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 printf("User-User IE: proto=0x%02X\n", uu->proto);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 /* dump to be implemented if and when we actually get a UU somewhere */
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 static void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 print_keypad(kp)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 int kp;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 if (kp >= '!' && kp <= '~')
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 printf("Keypad code: %c\n", kp);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 else
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 printf("Keypad code: 0x%02X\n", kp);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 static void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 print_facility(fac)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 struct gsm_mncc_facility *fac;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 int i;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 printf("Facility IE: %d byte(s)", fac->len);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 for (i = 0; i < fac->len; i++) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 if (!(i & 15)) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 putchar('\n');
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 putchar(' ');
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 printf(" %02X", fac->info[i] & 0xFF);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 putchar('\n');
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 static void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117 print_ssver(ssv)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 struct gsm_mncc_ssversion *ssv;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120 int i;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122 printf("SS version IE: %d byte(s)", ssv->len);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 for (i = 0; i < ssv->len; i++) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124 if (!(i & 15)) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 putchar('\n');
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 putchar(' ');
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 printf(" %02X", ssv->info[i] & 0xFF);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 putchar('\n');
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 static void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134 print_fields(msg)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 struct gsm_mncc *msg;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 if (msg->fields & MNCC_F_BEARER_CAP)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 print_bearer_cap(&msg->bearer_cap);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 if (msg->fields & MNCC_F_CCCAP)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 print_cc_cap(&msg->cccap);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 if (msg->fields & MNCC_F_CAUSE)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 print_cause(&msg->cause);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 if (msg->fields & MNCC_F_PROGRESS)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 print_progress(&msg->progress);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 if (msg->fields & MNCC_F_USERUSER)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 print_useruser(&msg->useruser);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 if (msg->more)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 printf("More data flag set\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 if (msg->fields & MNCC_F_KEYPAD)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 print_keypad(msg->keypad);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 if (msg->fields & MNCC_F_FACILITY)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 print_facility(&msg->facility);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 if (msg->fields & MNCC_F_SSVERSION)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 print_ssver(&msg->ssversion);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 static void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 send_connect_ack()
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 struct gsm_mncc ack;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162 printf("Sending connect ack\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163 bzero(&ack, sizeof(struct gsm_mncc));
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 ack.msg_type = MNCC_SETUP_COMPL_REQ;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165 ack.callref = 1;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 send_mncc_to_gsm(&ack, sizeof(struct gsm_mncc));
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
167 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
168
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
169 static void
139
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
170 send_rtp_connect()
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
171 {
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
172 struct gsm_mncc_rtp rtp;
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
173
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
174 printf("Sending MNCC_RTP_CONNECT\n");
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
175 bzero(&rtp, sizeof(struct gsm_mncc_rtp));
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
176 rtp.msg_type = MNCC_RTP_CONNECT;
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
177 rtp.callref = 1;
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
178 bcopy(&dummy_rtp_endp, &rtp.addr, sizeof(struct sockaddr_storage));
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
179 send_mncc_to_gsm(&rtp, sizeof(struct gsm_mncc_rtp));
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
180 }
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
181
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
182 static void
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
183 handle_signaling_msg(msg, msglen)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
184 struct gsm_mncc *msg;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
185 unsigned msglen;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
186 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
187 if (msglen != sizeof(struct gsm_mncc)) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
188 fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
189 "error: Rx MNCC message type 0x%x has wrong length\n",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
190 msg->msg_type);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
191 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
192 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
193 if (msg->callref != 1) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
194 fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
195 "error: Rx MNCC message type 0x%x has unexpected callref 0x%x\n",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
196 msg->msg_type, msg->callref);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
197 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
198 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
199 switch (msg->msg_type) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
200 case MNCC_SETUP_CNF:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
201 printf("MNCC_SETUP_CNF: call is answered\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
202 print_fields(msg);
139
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
203 send_rtp_connect();
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
204 send_connect_ack();
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
205 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
206 case MNCC_CALL_CONF_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
207 printf("MNCC_CALL_CONF_IND: call is confirmed\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
208 print_fields(msg);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
209 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
210 case MNCC_ALERT_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
211 printf("MNCC_ALERT_IND: call is alerting\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
212 print_fields(msg);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
213 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
214 case MNCC_NOTIFY_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
215 printf("NNCC_NOTIFY_IND: NOTIFY byte from MS: 0x%02X\n",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
216 msg->notify);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
217 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
218 case MNCC_DISC_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
219 printf("MNCC_DISC_IND: MS initiates disconnect\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
220 print_fields(msg);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
221 disconnect_mode = 1;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
222 printf("Responding with release request\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
223 msg->msg_type = MNCC_REL_REQ;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
224 send_mncc_to_gsm(msg, sizeof(struct gsm_mncc));
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
225 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
226 case MNCC_FACILITY_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
227 printf("MNCC_FACILITY_IND: call-related SS from MS\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
228 print_fields(msg);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
229 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
230 case MNCC_START_DTMF_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
231 printf("MNCC_START_DTMF_IND: MS sending DTMF start\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
232 print_fields(msg);
39
64b9f0f90726 themwi-test-mtc: handle DTMF from MS
Mychaela Falconia <falcon@freecalypso.org>
parents: 36
diff changeset
233 if (msg->fields & MNCC_F_KEYPAD &&
64b9f0f90726 themwi-test-mtc: handle DTMF from MS
Mychaela Falconia <falcon@freecalypso.org>
parents: 36
diff changeset
234 is_valid_dtmf_digit(msg->keypad)) {
64b9f0f90726 themwi-test-mtc: handle DTMF from MS
Mychaela Falconia <falcon@freecalypso.org>
parents: 36
diff changeset
235 printf("Responding with ACK\n");
64b9f0f90726 themwi-test-mtc: handle DTMF from MS
Mychaela Falconia <falcon@freecalypso.org>
parents: 36
diff changeset
236 msg->msg_type = MNCC_START_DTMF_RSP;
64b9f0f90726 themwi-test-mtc: handle DTMF from MS
Mychaela Falconia <falcon@freecalypso.org>
parents: 36
diff changeset
237 } else {
64b9f0f90726 themwi-test-mtc: handle DTMF from MS
Mychaela Falconia <falcon@freecalypso.org>
parents: 36
diff changeset
238 printf("Responding with Reject\n");
64b9f0f90726 themwi-test-mtc: handle DTMF from MS
Mychaela Falconia <falcon@freecalypso.org>
parents: 36
diff changeset
239 msg->msg_type = MNCC_START_DTMF_REJ;
64b9f0f90726 themwi-test-mtc: handle DTMF from MS
Mychaela Falconia <falcon@freecalypso.org>
parents: 36
diff changeset
240 mncc_set_cause(msg, GSM48_CAUSE_LOC_PRN_S_LU,
64b9f0f90726 themwi-test-mtc: handle DTMF from MS
Mychaela Falconia <falcon@freecalypso.org>
parents: 36
diff changeset
241 GSM48_CC_CAUSE_INVAL_MAND_INF);
64b9f0f90726 themwi-test-mtc: handle DTMF from MS
Mychaela Falconia <falcon@freecalypso.org>
parents: 36
diff changeset
242 }
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
243 send_mncc_to_gsm(msg, sizeof(struct gsm_mncc));
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
244 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
245 case MNCC_STOP_DTMF_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
246 printf("MNCC_STOP_DTMF_IND: MS sending DTMF stop\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
247 msg->msg_type = MNCC_STOP_DTMF_RSP;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
248 send_mncc_to_gsm(msg, sizeof(struct gsm_mncc));
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
249 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
250 case MNCC_MODIFY_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
251 printf("MNCC_MODIFY_IND: MS requests call modification\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
252 print_fields(msg);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
253 msg->msg_type = MNCC_MODIFY_REJ;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
254 mncc_set_cause(msg, GSM48_CAUSE_LOC_PRN_S_LU,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
255 GSM48_CC_CAUSE_SERV_OPT_UNIMPL);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
256 send_mncc_to_gsm(msg, sizeof(struct gsm_mncc));
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
257 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
258 case MNCC_HOLD_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
259 printf("MNCC_HOLD_IND: MS requests call hold\n");
138
0967f67c6ac3 mtctest: accept call hold and retrieve requests
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
260 msg->msg_type = MNCC_HOLD_CNF;
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
261 send_mncc_to_gsm(msg, sizeof(struct gsm_mncc));
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
262 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
263 case MNCC_RETRIEVE_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
264 printf("MNCC_RETRIEVE_IND: MS requests call retrieve\n");
139
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
265 send_rtp_connect();
138
0967f67c6ac3 mtctest: accept call hold and retrieve requests
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
266 msg->msg_type = MNCC_RETRIEVE_CNF;
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
267 send_mncc_to_gsm(msg, sizeof(struct gsm_mncc));
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
268 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
269 case MNCC_USERINFO_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
270 printf("MNCC_USERINFO_IND: user-user info\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
271 print_fields(msg);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
272 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
273 case MNCC_REL_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
274 printf("MNCC_REL_IND: final release\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
275 print_fields(msg);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
276 exit(0);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
277 case MNCC_REL_CNF:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
278 printf("MNCC_REL_CNF: final release in response to request\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
279 print_fields(msg);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
280 exit(0);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
281 case MNCC_REJ_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
282 printf("MNCC_REJ_IND: MT call rejected\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
283 print_fields(msg);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
284 exit(0);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
285 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
286 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
287
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
288 static void
139
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
289 handle_rtp_msg(msg, msglen)
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
290 struct gsm_mncc_rtp *msg;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
291 unsigned msglen;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
292 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
293 if (msglen != sizeof(struct gsm_mncc_rtp)) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
294 fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
295 "error: Rx MNCC message type 0x%x has wrong length\n",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
296 msg->msg_type);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
297 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
298 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
299 if (msg->callref != 1) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
300 fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
301 "error: Rx MNCC message type 0x%x has unexpected callref 0x%x\n",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
302 msg->msg_type, msg->callref);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
303 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
304 }
139
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
305 switch (msg->msg_type) {
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
306 case MNCC_RTP_CREATE:
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
307 printf("MNCC_RTP_CREATE: RTP info from MSC\n");
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
308 printf("payload_type=0x%x payload_msg_type=0x%x\n",
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
309 msg->payload_type, msg->payload_msg_type);
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
310 return;
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
311 case MNCC_RTP_CONNECT:
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
312 printf("MNCC_RTP_CONNECT: error response\n");
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
313 return;
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
314 case MNCC_RTP_FREE:
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
315 printf("MNCC_RTP_FREE: bogon\n");
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
316 return;
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
317 }
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
318 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
319
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
320 void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
321 msg_from_mncc(msg, msglen)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
322 union mncc_msg *msg;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
323 unsigned msglen;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
324 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
325 switch (msg->msg_type) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
326 case MNCC_SETUP_CNF:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
327 case MNCC_CALL_CONF_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
328 case MNCC_ALERT_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
329 case MNCC_NOTIFY_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
330 case MNCC_DISC_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
331 case MNCC_FACILITY_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
332 case MNCC_START_DTMF_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
333 case MNCC_STOP_DTMF_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
334 case MNCC_MODIFY_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
335 case MNCC_HOLD_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
336 case MNCC_RETRIEVE_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
337 case MNCC_USERINFO_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
338 case MNCC_REL_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
339 case MNCC_REL_CNF:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
340 case MNCC_REJ_IND:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
341 handle_signaling_msg(msg, msglen);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
342 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
343 case MNCC_RTP_CREATE:
139
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
344 case MNCC_RTP_CONNECT:
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
345 case MNCC_RTP_FREE:
c731ec342ba0 mtctest: rework MNCC_RTP_CONNECT sending for hold/retrieve and CW
Mychaela Falconia <falcon@freecalypso.org>
parents: 138
diff changeset
346 handle_rtp_msg(msg, msglen);
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
347 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
348 default:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
349 fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
350 "error: received unexpected MNCC message type 0x%x\n",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
351 msg->msg_type);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
352 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
353 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
354 }