Vadim Yanitskiy has uploaded this change for review. ( 
https://gerrit.osmocom.org/9422


Change subject: GSUP_Types.ttcn: add SS related messages and IEs
......................................................................

GSUP_Types.ttcn: add SS related messages and IEs

Recently we introduced a few new GSUP IEs, related to TCAP-like
session management and Supplementary Services in libosmocore.
Let's sync the TTCN-3 implementation and add the corresponding
templates for SS payloads.

Change-Id: I54767e49ae98db67f71dd28278b14435860313e0
---
M library/GSUP_Types.ttcn
1 file changed, 153 insertions(+), 3 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks 
refs/changes/22/9422/1

diff --git a/library/GSUP_Types.ttcn b/library/GSUP_Types.ttcn
index 4c2aac0..359e272 100644
--- a/library/GSUP_Types.ttcn
+++ b/library/GSUP_Types.ttcn
@@ -39,7 +39,11 @@
        OSMO_GSUP_AUTN_IE               ('25'O),
        OSMO_GSUP_AUTS_IE               ('26'O),
        OSMO_GSUP_RES_IE                ('27'O),
-       OSMO_GSUP_CN_DOMAIN_IE          ('28'O)
+       OSMO_GSUP_CN_DOMAIN_IE          ('28'O),
+
+       OSMO_GSUP_SESSION_ID_IE         ('30'O),
+       OSMO_GSUP_SESSION_STATE_IE      ('31'O),
+       OSMO_GSUP_SS_INFO_IE            ('35'O)
 } with { variant "FIELDLENGTH(8)" };

 type enumerated GSUP_MessageType {
@@ -67,7 +71,11 @@

        OSMO_GSUP_MSGT_LOCATION_CANCEL_REQUEST  ('00011100'B),
        OSMO_GSUP_MSGT_LOCATION_CANCEL_ERROR    ('00011101'B),
-       OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT   ('00011110'B)
+       OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT   ('00011110'B),
+
+       OSMO_GSUP_MSGT_PROC_SS_REQUEST          ('00100000'B),
+       OSMO_GSUP_MSGT_PROC_SS_ERROR            ('00100001'B),
+       OSMO_GSUP_MSGT_PROC_SS_RESULT           ('00100010'B)
 } with { variant "FIELDLENGTH(8)" };

 type enumerated GSUP_CancelType {
@@ -80,6 +88,13 @@
        OSMO_GSUP_CN_DOMAIN_CS                  (2)
 } with { variant "FIELDLENGTH(8)" };

+type enumerated GSUP_SessionState {
+       OSMO_GSUP_SESSION_STATE_NONE            (0),
+       OSMO_GSUP_SESSION_STATE_BEGIN           (1),
+       OSMO_GSUP_SESSION_STATE_CONTINUE        (2),
+       OSMO_GSUP_SESSION_STATE_END             (3)
+} with { variant "FIELDLENGTH(8)" };
+
 type record GSUP_MSISDN {
        uint8_t len,
        hexstring digits optional
@@ -110,6 +125,9 @@
                                 pdp_qos, tag = OSMO_GSUP_PDP_QOS_IE;
                                 pdp_type, tag = OSMO_GSUP_PDP_TYPE_IE;
                                 charg_char, tag = OSMO_GSUP_CHARG_CHAR_IE;
+                                session_state, tag = 
OSMO_GSUP_SESSION_STATE_IE;
+                                session_id, tag = OSMO_GSUP_SESSION_ID_IE;
+                                ss_info, tag = OSMO_GSUP_SS_INFO_IE;
                        )"
 };

@@ -138,7 +156,12 @@
        octetstring     apn,
        octetstring     pdp_qos,
        OCT2            pdp_type,
-       octetstring     charg_char
+       octetstring     charg_char,
+       /* Session information */
+       GSUP_SessionState       session_state,
+       OCT4                    session_id,
+       /* Supplementary Services */
+       octetstring             ss_info
 };

 type record GSUP_PDU {
@@ -513,5 +536,132 @@
        }
 }

+template (value) GSUP_IE ts_GSUP_IE_SessionId(OCT4 sid) := {
+       tag := OSMO_GSUP_SESSION_ID_IE,
+       len := 0, /* overwritten */
+       val := {
+               session_id := sid
+       }
+}
+template GSUP_IE tr_GSUP_IE_SessionId(template OCT4 sid) := {
+       tag := OSMO_GSUP_SESSION_ID_IE,
+       len := ?,
+       val := {
+               session_id := sid
+       }
+}
+
+template (value) GSUP_IE ts_GSUP_IE_SessionState(GSUP_SessionState state) := {
+       tag := OSMO_GSUP_SESSION_STATE_IE,
+       len := 0, /* overwritten */
+       val := {
+               session_state := state
+       }
+}
+template GSUP_IE tr_GSUP_IE_SessionState(template GSUP_SessionState state) := {
+       tag := OSMO_GSUP_SESSION_STATE_IE,
+       len := ?,
+       val := {
+               session_state := state
+       }
+}
+
+template (value) GSUP_IE ts_GSUP_IE_SSInfo(octetstring ss) := {
+       tag := OSMO_GSUP_SS_INFO_IE,
+       len := 0, /* overwritten */
+       val := {
+               ss_info := ss
+       }
+}
+template GSUP_IE tr_GSUP_IE_SSInfo(template octetstring ss) := {
+       tag := OSMO_GSUP_SS_INFO_IE,
+       len := ?,
+       val := {
+               ss_info := ss
+       }
+}
+
+template (value) GSUP_PDU ts_GSUP_PROC_SS_REQ(
+       hexstring imsi,
+       OCT4 sid,
+       GSUP_SessionState state,
+       octetstring ss
+) := ts_GSUP(
+       OSMO_GSUP_MSGT_PROC_SS_REQUEST,
+       {
+               valueof(ts_GSUP_IE_IMSI(imsi)),
+               valueof(ts_GSUP_IE_SessionId(sid)),
+               valueof(ts_GSUP_IE_SessionState(state)),
+               valueof(ts_GSUP_IE_SSInfo(ss))
+       }
+);
+template GSUP_PDU tr_GSUP_PROC_SS_REQ(
+       template hexstring imsi,
+       template OCT4 sid := ?,
+       template GSUP_SessionState state := ?,
+       template octetstring ss := ?
+) := tr_GSUP(
+       OSMO_GSUP_MSGT_PROC_SS_REQUEST,
+       {
+               tr_GSUP_IE_IMSI(imsi),
+               tr_GSUP_IE_SessionId(sid),
+               tr_GSUP_IE_SessionState(state),
+               tr_GSUP_IE_SSInfo(ss)
+       }
+);
+
+template (value) GSUP_PDU ts_GSUP_PROC_SS_RES(
+       hexstring imsi,
+       OCT4 sid,
+       GSUP_SessionState state,
+       octetstring ss
+) := ts_GSUP(
+       OSMO_GSUP_MSGT_PROC_SS_RESULT,
+       {
+               valueof(ts_GSUP_IE_IMSI(imsi)),
+               valueof(ts_GSUP_IE_SessionId(sid)),
+               valueof(ts_GSUP_IE_SessionState(state)),
+               valueof(ts_GSUP_IE_SSInfo(ss))
+       }
+);
+template GSUP_PDU tr_GSUP_PROC_SS_RES(
+       template hexstring imsi,
+       template OCT4 sid := ?,
+       template GSUP_SessionState state := ?,
+       template octetstring ss := ?
+) := tr_GSUP(
+       OSMO_GSUP_MSGT_PROC_SS_RESULT,
+       {
+               tr_GSUP_IE_IMSI(imsi),
+               tr_GSUP_IE_SessionId(sid),
+               tr_GSUP_IE_SessionState(state),
+               tr_GSUP_IE_SSInfo(ss)
+       }
+);
+
+template (value) GSUP_PDU ts_GSUP_PROC_SS_ERR(
+       hexstring imsi,
+       OCT4 sid,
+       integer cause
+) := ts_GSUP(
+       OSMO_GSUP_MSGT_PROC_SS_ERROR,
+       {
+               valueof(ts_GSUP_IE_IMSI(imsi)),
+               valueof(ts_GSUP_IE_SessionId(sid)),
+               valueof(ts_GSUP_IE_Cause(cause))
+       }
+);
+template GSUP_PDU tr_GSUP_PROC_SS_ERR(
+       template hexstring imsi,
+       template OCT4 sid := ?,
+       template integer cause := ?
+) := tr_GSUP(
+       OSMO_GSUP_MSGT_PROC_SS_ERROR,
+       {
+               tr_GSUP_IE_IMSI(imsi),
+               tr_GSUP_IE_SessionId(sid),
+               tr_GSUP_IE_Cause(cause)
+       }
+);

 } with { encode "RAW"; variant "FIELDORDER(msb)" }

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

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I54767e49ae98db67f71dd28278b14435860313e0
Gerrit-Change-Number: 9422
Gerrit-PatchSet: 1
Gerrit-Owner: Vadim Yanitskiy <[email protected]>

Reply via email to