cbc: Test ETWS msg over SBc-AP
So far only non-emergency CBS messages were tested, which require a
slighlty idfferent encoding on the protocol side.
Related: OS#4945
Change-Id: I506322fc8a664716db8cd79217c2091b0b926836
diff --git a/cbc/CBC_Tests.ttcn b/cbc/CBC_Tests.ttcn
index 581298a..83cf07d 100644
--- a/cbc/CBC_Tests.ttcn
+++ b/cbc/CBC_Tests.ttcn
@@ -653,7 +653,7 @@
f_shutdown_helper();
}
-/* Test ETWS message. TS 23.041 9.4.1.2.2 */
+/* Test ETWS message over CBSP. TS 23.041 9.4.1.2.2 */
testcase TC_ecbe_create_delete_etws_bsc() runs on test_CT {
f_init(num_bsc := 1);
var template (value) BSSMAP_FIELD_CellIdentificationList cell_list_success;
@@ -672,6 +672,19 @@
f_shutdown_helper();
}
+/* Test ETWS message over SBc-AP. TS 23.041 9.4.1.2.2 */
+testcase TC_ecbe_create_delete_etws_mme() runs on test_CT {
+ f_init(num_mme := 1);
+ var template (value) CBS_Message msg := t_CBSmsg(4352 /* Earthquake */, 16753);
+ msg.channel_ind := omit;
+
+ g_pars_MME[0].start_fn := refers(f_mme_create_and_delete);
+ g_pars_MME[0].exp_cbs_msg := valueof(msg);
+ f_start();
+ f_create_and_delete(valueof(msg));
+ f_shutdown_helper();
+}
+
control {
execute( TC_rx_keepalive() );
execute( TC_rx_keepalive_timeout() );
@@ -688,6 +701,7 @@
execute( TC_concurrent_cbs_msg_mme() );
execute( TC_ecbe_create_delete_etws_bsc() );
+ execute( TC_ecbe_create_delete_etws_mme() );
}
}
diff --git a/cbc/MME_ConnectionHandler.ttcn b/cbc/MME_ConnectionHandler.ttcn
index 4bcc853..c49461a 100644
--- a/cbc/MME_ConnectionHandler.ttcn
+++ b/cbc/MME_ConnectionHandler.ttcn
@@ -102,10 +102,15 @@
runs on MME_ConnHdlr {
var template (present) SBC_AP_PDU rx_templ;
var SBC_AP_RecvFrom rf;
- rx_templ := tr_SBCAP_WRITE_WARNING(int2bit(msg.msg_id, 16),
- int2bit(msg.ser_nr, 16),
- msg.rep_period,
- msg.num_bcast_req);
+ if (msg_id_is_etws(msg.msg_id)) {
+ rx_templ := tr_SBCAP_WRITE_WARNING_REQ_ETWS(
+ int2bit(msg.msg_id, 16), int2bit(msg.ser_nr, 16),
+ msg.rep_period, msg.num_bcast_req, hex2oct('018'H & int2hex(msg.msg_id - 4352, 1)));
+ } else {
+ rx_templ := tr_SBCAP_WRITE_WARNING_REQ_CBS(
+ int2bit(msg.msg_id, 16), int2bit(msg.ser_nr, 16),
+ msg.rep_period, msg.num_bcast_req);
+ }
alt {
[] SBC_AP[idx].receive(tr_SBC_AP_Recv(g_SBC_AP_conn_id[idx], rx_templ)) -> value rf {
log ("received expected req:", rf);