aboutsummaryrefslogtreecommitdiffstats
path: root/library/PCUIF_CodecPort.ttcn
diff options
context:
space:
mode:
Diffstat (limited to 'library/PCUIF_CodecPort.ttcn')
-rw-r--r--library/PCUIF_CodecPort.ttcn10
1 files changed, 10 insertions, 0 deletions
diff --git a/library/PCUIF_CodecPort.ttcn b/library/PCUIF_CodecPort.ttcn
index 3d6ceac1..4b2a8ce9 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 {