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/ECBE_Components.ttcn b/cbc/ECBE_Components.ttcn
index eaf2772..996b17d 100644
--- a/cbc/ECBE_Components.ttcn
+++ b/cbc/ECBE_Components.ttcn
@@ -35,9 +35,44 @@
 	return hex2str(oct2hex(inp.payload));
 }
 
+private function f_cbs2ecbe_etws(CBS_Message inp, charstring cbe_name) return EcbeCbcMessage
+{
+	var EcbeWarningTypeDecoded warn_type;
+	int2enum(inp.msg_id - 4352, warn_type);
+
+	var EcbeCbcMessage ret := {
+		cbe_name := cbe_name,
+		category := f_cbs2ecbe_category(inp.category),
+		repetition_period := inp.rep_period,
+		num_of_bcast := inp.num_bcast_req,
+		scope := { scope_plmn := {} },
+		smscb_message := {
+			serial_nr := {
+				serial_nr_encoded := inp.ser_nr
+			},
+			message_id := inp.msg_id,
+			payload := {
+				payload_etws := {
+					warning_type := {
+						warning_type_decoded := warn_type
+					},
+					emergency_user_alert := true,
+					popup_on_display := true,
+					warning_sec_info := omit
+					}
+			}
+		}
+	};
+	return ret;
+}
+
 /* convert from CBS_Message to EcbeCbcMessage */
 function f_cbs2ecbe(CBS_Message inp, charstring cbe_name) return EcbeCbcMessage
 {
+	if (msg_id_is_etws(inp.msg_id)) {
+		return f_cbs2ecbe_etws(inp, cbe_name);
+	}
+
 	var EcbeCbcMessage ret := {
 		cbe_name := cbe_name,
 		category := f_cbs2ecbe_category(inp.category),