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;