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 <[email protected]>
+ * 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 <[email protected]>
Gerrit-Reviewer: Harald Welte <[email protected]>
Gerrit-Reviewer: Jenkins Builder

Reply via email to