diff --git a/library/PCUIF_CodecPort.ttcn b/library/PCUIF_CodecPort.ttcn index 3d6ceac13..4b2a8ce93 100644 --- a/library/PCUIF_CodecPort.ttcn +++ b/library/PCUIF_CodecPort.ttcn @@ -26,9 +26,19 @@ private function PCUIF_to_UD(in PCUIF_send_data pin, out UD_send_data pout) { pout.data := enc_PCUIF_Message(pin.data); } with { extension "prototype(fast)" }; +private function fix_padding(inout PCUIF_data data) { + data.data := substr(data.data, 0, data.len); +} + private function UD_to_PCUIF(in UD_send_data pin, out PCUIF_send_data pout) { pout.id := pin.id; pout.data := dec_PCUIF_Message(pin.data); + + /* HACK: fix padding in decoded message. Due to a bug in TITAN, we + * cannot just use its 'PADDING' attribute because it breaks decoding. */ + if (ischosen(pout.data.u.data_req)) { fix_padding(pout.data.u.data_req); } + if (ischosen(pout.data.u.data_cnf)) { fix_padding(pout.data.u.data_cnf); } + if (ischosen(pout.data.u.data_ind)) { fix_padding(pout.data.u.data_ind); } } with { extension "prototype(fast)" }; type port PCUIF_CODEC_PT message {