blob: 6c00dce4297bda0d6240e9e78b43bb633d19c15f [file] [log] [blame]
Harald Welte00566f52017-11-21 16:43:49 +01001module IPA_Test {
2
Harald Welte00566f52017-11-21 16:43:49 +01003 import from IPL4asp_Types all;
4
Harald Welted86cdc62017-11-22 00:45:07 +01005 import from IPA_Emulation all;
6
7 import from SCCP_Types all;
8 import from SCCPasp_Types all;
9 import from SCCP_Emulation all;
10
11 type component test_CT {
12 /* component references */
13 var IPA_Emulation_CT vc_IPA;
14 var SCCP_CT vc_SCCP;
15 /* test port to SCCP emulation */
16 port SCCPasp_PT SCCP;
17
Harald Welte00566f52017-11-21 16:43:49 +010018 var boolean g_initialized := false;
Harald Welted86cdc62017-11-22 00:45:07 +010019 var octetstring g_sio;
20 var MSC_SCCP_MTP3_parameters g_sccp_pars;
21 var SCCP_PAR_Address g_sccp_addr_own, g_sccp_addr_peer;
Harald Welte00566f52017-11-21 16:43:49 +010022
23 var ConnectionId g_ipa_conn_id := -1;
24 }
25
26 modulepar {
27 PortNumber mp_local_port := 0;
28 charstring mp_local_ip := "127.0.0.1";
29 PortNumber mp_remote_port := 3002;
30 charstring mp_remote_ip := "127.0.0.1";
Harald Welted86cdc62017-11-22 00:45:07 +010031
32 charstring mp_sccp_service_type := "mtp3_itu";
33
34 integer mp_own_pc := 196;
35 integer mp_own_ssn := 254;
36
37 integer mp_peer_pc := 185; /* 0.23.1 */
38 integer mp_peer_ssn := 254;
Harald Welte00566f52017-11-21 16:43:49 +010039 }
40
Harald Welted86cdc62017-11-22 00:45:07 +010041/* construct a SCCP_PAR_Address with just PC + SSN and no GT */
42template (value) SCCP_PAR_Address ts_SccpAddr_PC_SSN(integer pc, integer ssn) := {
43 addressIndicator := {
44 pointCodeIndic := '1'B,
45 ssnIndicator := '1'B,
46 globalTitleIndic := '0000'B,
47 routingIndicator := '1'B
48 },
49 signPointCode := SCCP_SPC_int2bit(pc, mp_sccp_service_type, '83'O),
50 //signPointCode := SCCP_SPC_int2bit(pc, mp_sccp_service_type, g_sio),
51 subsystemNumber := ssn,
52 globalTitle := omit
53}
54
55
56function init_pars() runs on test_CT {
57 g_sio := '83'O;
58 g_sccp_pars := {
59 sio := {
60 ni := substr(oct2bit(g_sio),0,2),
61 prio := substr(oct2bit(g_sio),2,2),
62 si := substr(oct2bit(g_sio),4,4)
63 },
64 opc := mp_own_pc,
65 dpc := mp_peer_pc,
66 sls := 0,
67 sccp_serviceType := mp_sccp_service_type,
68 ssn := mp_own_ssn
69 };
70 g_sccp_addr_own := valueof(ts_SccpAddr_PC_SSN(mp_own_pc, mp_own_ssn));
71 g_sccp_addr_peer := valueof(ts_SccpAddr_PC_SSN(mp_peer_pc, mp_peer_ssn));
72}
73
74 private function f_init() runs on test_CT {
Harald Welte00566f52017-11-21 16:43:49 +010075 var Result res;
76
77 if (g_initialized == true) {
78 return;
79 }
80 g_initialized := true;
Harald Welte00566f52017-11-21 16:43:49 +010081
Harald Welted86cdc62017-11-22 00:45:07 +010082 init_pars();
83
84 /* create components */
85 vc_IPA := IPA_Emulation_CT.create;
86 vc_SCCP := SCCP_CT.create;
87
88 map(vc_IPA:IPA_PORT, system:IPA_CODEC_PT);
89
90 /* connect MTP3 service provider (IPA) to lower side of SCCP */
91 connect(vc_IPA:MTP3_SP_PORT, vc_SCCP:MTP3_SCCP_PORT);
92
93 /* connect us to upper side of SCCP */
94 connect(self:SCCP, vc_SCCP:SCCP_SP_PORT);
95
96 vc_IPA.start(IPA_Emulation.ScanEvents());
97 vc_SCCP.start(SCCPStart(g_sccp_pars));
98
99 //IPA_Emulation.f_connect(mp_remote_ip, mp_remote_port, mp_local_ip, mp_local_port);
Harald Welte00566f52017-11-21 16:43:49 +0100100 }
101
Harald Welted86cdc62017-11-22 00:45:07 +0100102 testcase TC_recv_dump() runs on test_CT {
Harald Welte00566f52017-11-21 16:43:49 +0100103 f_init();
104
105 while (true) {
Harald Welted86cdc62017-11-22 00:45:07 +0100106 SCCP.receive;
Harald Welte00566f52017-11-21 16:43:49 +0100107 }
108 }
109
110 control {
111 execute( TC_recv_dump() );
112 }
113}