Change in osmo-ttcn3-hacks[master]: library: introduce Facility IE templates for SS/USSD

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Sat Jun 2 12:56:50 UTC 2018


Harald Welte has submitted this change and it was merged. ( https://gerrit.osmocom.org/9368 )

Change subject: library: introduce Facility IE templates for SS/USSD
......................................................................

library: introduce Facility IE templates for SS/USSD

Change-Id: Ibc3e8f70230d656b2f0994ea0c63e6554b6165de
---
A library/SS_Templates.ttcn
1 file changed, 202 insertions(+), 0 deletions(-)

Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved



diff --git a/library/SS_Templates.ttcn b/library/SS_Templates.ttcn
new file mode 100644
index 0000000..316b71b
--- /dev/null
+++ b/library/SS_Templates.ttcn
@@ -0,0 +1,202 @@
+module SS_Templates {
+
+/* SS/USSD Facility IE templates, building on top of SS_Types.
+ *
+ * (C) 2018 by Vadim Yanitskiy <axilirator at gmail.com>
+ * All rights reserved.
+ *
+ * Released under the terms of GNU General Public License, Version 2 or
+ * (at your option) any later version.
+ */
+
+import from General_Types all;
+import from SS_Types all;
+
+/* GSM TS 04.80, section 4.5, SS operation code */
+type enumerated SS_Op_Code {
+	SS_OP_CODE_REGISTER_SS			('0A'O),
+	SS_OP_CODE_ERASE_SS			('0B'O),
+	SS_OP_CODE_ACTIVATE_SS			('0C'O),
+	SS_OP_CODE_DEACTIVATE_SS		('0D'O),
+	SS_OP_CODE_INTERROGATE_SS		('0E'O),
+	SS_OP_CODE_NOTIFY_SS			('10'O),
+	SS_OP_CODE_REGISTER_PASSWORD		('11'O),
+	SS_OP_CODE_GET_PASSWORD			('12'O),
+	SS_OP_CODE_PROCESS_USS_DATA		('13'O),
+	SS_OP_CODE_FORWARD_CHECK_SS_IND		('26'O),
+	SS_OP_CODE_PROCESS_USS_REQ		('3B'O),
+	SS_OP_CODE_USS_REQUEST			('3C'O),
+	SS_OP_CODE_USS_NOTIFY			('3D'O),
+	SS_OP_CODE_FORWARD_CUG_INFO		('78'O),
+	SS_OP_CODE_SPLIT_MPTY			('79'O),
+	SS_OP_CODE_RETRIEVE_MPTY		('7A'O),
+	SS_OP_CODE_HOLD_MPTY			('7B'O),
+	SS_OP_CODE_BUILD_MPTY			('7C'O),
+	SS_OP_CODE_FORWARD_CHARGE_ADVICE	('7D'O)
+}
+
+/* GSM TS 04.80, section 4.5, SS error code */
+type enumerated SS_Err_Code {
+	SS_ERR_CODE_UNKNOWN_SUBSCRIBER			('01'O),
+	SS_ERR_CODE_ILLEGAL_SUBSCRIBER			('09'O),
+	SS_ERR_CODE_BEARER_SERVICE_NOT_PROVISIONED	('0A'O),
+	SS_ERR_CODE_TELESERVICE_NOT_PROVISIONED		('0B'O),
+	SS_ERR_CODE_ILLEGAL_EQUIPMENT			('0C'O),
+	SS_ERR_CODE_CALL_BARRED				('0D'O),
+	SS_ERR_CODE_ILLEGAL_SS_OPERATION		('10'O),
+	SS_ERR_CODE_SS_ERROR_STATUS			('11'O),
+	SS_ERR_CODE_SS_NOT_AVAILABLE			('12'O),
+	SS_ERR_CODE_SS_SUBSCRIPTION_VIOLATION		('13'O),
+	SS_ERR_CODE_SS_INCOMPATIBILITY			('14'O),
+	SS_ERR_CODE_FACILITY_NOT_SUPPORTED		('15'O),
+	SS_ERR_CODE_ABSENT_SUBSCRIBER			('1B'O),
+	SS_ERR_CODE_SYSTEM_FAILURE			('22'O),
+	SS_ERR_CODE_DATA_MISSING			('23'O),
+	SS_ERR_CODE_UNEXPECTED_DATA_VALUE		('24'O),
+	SS_ERR_CODE_PW_REGISTRATION_FAILURE		('25'O),
+	SS_ERR_CODE_NEGATIVE_PW_CHECK			('26'O),
+	SS_ERR_CODE_NUM_PW_ATTEMPTS_VIOLATION		('2B'O),
+	SS_ERR_CODE_UNKNOWN_ALPHABET			('47'O),
+	SS_ERR_CODE_USSD_BUSY				('48'O),
+	SS_ERR_CODE_MAX_MPTY_PARTICIPANTS		('7E'O),
+	SS_ERR_CODE_RESOURCES_NOT_AVAILABLE		('7F'O)
+}
+
+/**
+ * According to GSM TS 02.90, section 4.1.1,
+ * the mobile initiated USSD request shall contain
+ * an alphabet indicator set to "SMS default alphabet"
+ * and language indicator set to "language unspecified".
+ *
+ * This DCS value is used quite often, so it makes
+ * sense to define it here as a constant.
+ */
+const octetstring SS_USSD_DEFAULT_DCS := '0F'O;
+
+template (value) SS_FacilityInformation ts_SS_USSD_FACILITY_INVOKE(
+	integer invoke_id := 1,
+	SS_Op_Code op_code := SS_OP_CODE_PROCESS_USS_REQ,
+	octetstring ussd_dcs := SS_USSD_DEFAULT_DCS,
+	octetstring ussd_string := 'AA180C3602'O // *#100#
+) := {
+	{
+		invoke := {
+			invokeId := { present_ := invoke_id },
+			linkedId := omit,
+			opcode := {
+				local := enum2int(op_code)
+			},
+			argument := {
+				uSSD_Arg := {
+					ussd_DataCodingScheme := ussd_dcs,
+					ussd_String := ussd_string,
+					alertingPattern := omit,
+					msisdn := omit
+				}
+			}
+		}
+	}
+}
+template SS_FacilityInformation tr_SS_USSD_FACILITY_INVOKE(
+	template integer invoke_id := ?,
+	template integer op_code := ?,
+	template octetstring ussd_dcs := ?,
+	template octetstring ussd_string := ?
+) := {
+	{
+		invoke := {
+			invokeId := { present_ := invoke_id },
+			linkedId := omit,
+			opcode := {
+				local := op_code
+			},
+			argument := {
+				uSSD_Arg := {
+					ussd_DataCodingScheme := ussd_dcs,
+					ussd_String := ussd_string,
+					alertingPattern := omit,
+					msisdn := omit
+				}
+			}
+		}
+	}
+}
+
+template (value) SS_FacilityInformation ts_SS_USSD_FACILITY_RETURN_RESULT(
+	integer invoke_id := 1,
+	SS_Op_Code op_code := SS_OP_CODE_PROCESS_USS_REQ,
+	octetstring ussd_dcs,
+	octetstring ussd_string
+) := {
+	{
+		returnResult := {
+			invokeId := { present_ := invoke_id },
+			result := {
+				opcode := {
+					local := enum2int(op_code)
+				},
+				result := {
+					uSSD_Res := {
+						ussd_DataCodingScheme := ussd_dcs,
+						ussd_String := ussd_string
+					}
+				}
+			}
+		}
+	}
+}
+template SS_FacilityInformation tr_SS_USSD_FACILITY_RETURN_RESULT(
+	template integer invoke_id := ?,
+	template integer op_code := ?,
+	template octetstring ussd_dcs := ?,
+	template octetstring ussd_string := ?
+) := {
+	{
+		returnResult := {
+			invokeId := { present_ := invoke_id },
+			result := {
+				opcode := {
+					local := op_code
+				},
+				result := {
+					uSSD_Res := {
+						ussd_DataCodingScheme := ussd_dcs,
+						ussd_String := ussd_string
+					}
+				}
+			}
+		}
+	}
+}
+
+/* Common for both structured and unstructured SS */
+template (value) SS_FacilityInformation ts_SS_FACILITY_RETURN_ERROR(
+	integer invoke_id := 1,
+	SS_Err_Code err_code
+) := {
+	{
+		returnError := {
+			invokeId := { present_ := invoke_id },
+			errcode := {
+				local := enum2int(err_code)
+			},
+			parameter := omit
+		}
+	}
+}
+template SS_FacilityInformation tr_SS_FACILITY_RETURN_ERROR(
+	template integer invoke_id := ?,
+	template integer err_code := ?
+) := {
+	{
+		returnError := {
+			invokeId := { present_ := invoke_id },
+			errcode := {
+				local := err_code
+			},
+			parameter := omit
+		}
+	}
+}
+
+}

-- 
To view, visit https://gerrit.osmocom.org/9368
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ibc3e8f70230d656b2f0994ea0c63e6554b6165de
Gerrit-Change-Number: 9368
Gerrit-PatchSet: 3
Gerrit-Owner: Vadim Yanitskiy <axilirator at gmail.com>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180602/104c5f37/attachment.htm>


More information about the gerrit-log mailing list