cbc: Test ETWS msg over CBSP
So far only non-emergency CBS messages were tested, which require a
slighlty idfferent encoding on the protocol side.
Related: OS#4945
Change-Id: Ie22a00120218a205db11a5622274dcc67435f5de
diff --git a/cbc/BSC_ConnectionHandler.ttcn b/cbc/BSC_ConnectionHandler.ttcn
index a8601a6..804d246 100644
--- a/cbc/BSC_ConnectionHandler.ttcn
+++ b/cbc/BSC_ConnectionHandler.ttcn
@@ -106,11 +106,20 @@
tx_list := valueof(tx_cell_list);
}
if (istemplatekind(tx_compl_list, "omit")) {
- tx := ts_CBSP_WRITE_CBS_COMPL(msg.msg_id, msg.ser_nr, tx_list, msg.channel_ind);
+ if (msg_id_is_etws(msg.msg_id)) {
+ tx := ts_CBSP_WRITE_EMERG_COMPL(msg.msg_id, msg.ser_nr, tx_list);
+ } else {
+ tx := ts_CBSP_WRITE_CBS_COMPL(msg.msg_id, msg.ser_nr, tx_list, msg.channel_ind);
+ }
} else {
- tx := ts_CBSP_REPLACE_CBS_COMPL(msg.msg_id, msg.ser_nr, msg.old_ser_nr,
- valueof(tx_compl_list), tx_list,
- msg.channel_ind);
+ if (msg_id_is_etws(msg.msg_id)) {
+ tx := ts_CBSP_REPLACE_EMERG_COMPL(msg.msg_id, msg.ser_nr, msg.old_ser_nr,
+ tx_list);
+ } else {
+ tx := ts_CBSP_REPLACE_CBS_COMPL(msg.msg_id, msg.ser_nr, msg.old_ser_nr,
+ valueof(tx_compl_list), tx_list,
+ msg.channel_ind);
+ }
}
CBSP[idx].send(ts_CBSP_Send(g_cbsp_conn_id[idx], tx));
}
@@ -134,13 +143,19 @@
var template CBSP_IEs content_ies := {};
var template (present) CBSP_PDU rx_templ;
var CBSP_RecvFrom rf;
- for (var integer i := 0; i < lengthof(msg.content); i := i+1) {
- //content_ies[i] := tr_CbspMsgContent(msg.content[i].payload, msg.content[i].user_len);
- content_ies[i] := tr_CbspMsgContent(?, ?);
+ if (msg_id_is_etws(msg.msg_id)) {
+ rx_templ := tr_CBSP_WRITE_EMERG(msg.msg_id, msg.ser_nr, msg.cell_list, 1,
+ hex2int('180'H) + (msg.msg_id - 4352),
+ msg.num_bcast_req, 0)
+ } else {
+ for (var integer i := 0; i < lengthof(msg.content); i := i+1) {
+ //content_ies[i] := tr_CbspMsgContent(msg.content[i].payload, msg.content[i].user_len);
+ content_ies[i] := tr_CbspMsgContent(?, ?);
+ }
+ rx_templ := tr_CBSP_WRITE_CBS(msg.msg_id, msg.ser_nr, msg.cell_list, msg.channel_ind,
+ msg.category, msg.rep_period, msg.num_bcast_req, msg.dcs,
+ content_ies);
}
- rx_templ := tr_CBSP_WRITE_CBS(msg.msg_id, msg.ser_nr, msg.cell_list, msg.channel_ind,
- msg.category, msg.rep_period, msg.num_bcast_req, msg.dcs,
- content_ies);
alt {
[] CBSP[idx].receive(tr_CBSP_Recv(g_cbsp_conn_id[idx], rx_templ)) -> value rf {
var template (value) CBSP_PDU tx;