support odd-length calling MSISDN in MSC tests
MSC tests were unable to match odd-length digit strings in
a CallingPartyBCD_Number template created by tr_Calling().
This happens because the raw encoder for CallingPartyBCD_Number
pads odd-length digits with 1-bits ('F'H). Do the same when
constructing such a template in our own code to ensure that
we'll match the actual data received.
Change-Id: I34439c8750f588802a5403375e2a3d6e74dae70c
Related: OS#2930
diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn
index 52d4a2a..e109fde 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -838,11 +838,20 @@
digits := digits
}
+private function f_pad_digits(hexstring digits) return hexstring {
+ if (lengthof(digits) mod 2 != 0) {
+ /* Add trailing nibble of 1-bit padding, like the CallingPartyBCD_Number encoder would do.
+ * Otherwise our template won't match the data received (see OS#2930). */
+ return digits & 'F'H;
+ }
+ return digits;
+}
+
template CallingPartyBCD_Number tr_Calling(template hexstring digits) := {
elementIdentifier := '5C'O,
lengthIndicator := ?,
oct3 := ?,
- digits := digits
+ digits := f_pad_digits(valueof(digits))
}
type integer SpeechVer;