aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2019-09-18 15:22:32 +0700
committerfixeria <axilirator@gmail.com>2019-09-27 03:17:50 +0000
commit799cd3f55be9bd146d678b04a339808b2ef76f49 (patch)
treed63ddd6f301a3f5439a0066579a27ec94a50119a
parentc524849e2dd15f134151047e11a110466dbaa2fa (diff)
library/PCUIF_CodecPort.ttcn: strip padding bytes from PCUIF_data
In Ieefa61232eb215a19a02e490255332e28e23b8f8, I had to revert I5808954b5c67c3239e795e43ae77035152d359ef, because that change broke encoding of messages on the PCU interface. Since we cannot use 'PADDING' attribute until its implementation is fixed in TITAN, let's work this around by stripping padding bytes manually in UD_to_PCUIF(). Change-Id: Ibd698094c897d395208e80189457444a91018beb
-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 {