<p>Vadim Yanitskiy <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/12843">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">libmsc/gsm_04_80.c: add msc_send_ussd_release_complete_cause()<br><br>According to GSM 04.80, section 2.5.1, Release complete message<br>may have an optional Cause IE. Let's add a new function, that<br>allows to specify cause location and value.<br><br>This function will be used by the upcoming changes.<br><br>Change-Id: I3b9e8e4f473d113d5b9e9e5d33f7914202077203<br>Depends Change-Id: (libosmocore) Ie3ac85fcef90a5e532334ba3482804d5305c88d7<br>---<br>M include/osmocom/msc/gsm_04_80.h<br>M src/libmsc/gsm_04_80.c<br>2 files changed, 31 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/msc/gsm_04_80.h b/include/osmocom/msc/gsm_04_80.h</span><br><span>index 073794b..b786dcc 100644</span><br><span>--- a/include/osmocom/msc/gsm_04_80.h</span><br><span>+++ b/include/osmocom/msc/gsm_04_80.h</span><br><span>@@ -12,3 +12,6 @@</span><br><span>                       const char *text);</span><br><span> int msc_send_ussd_release_complete(struct ran_conn *conn,</span><br><span>                                uint8_t transaction_id);</span><br><span style="color: hsl(120, 100%, 40%);">+int msc_send_ussd_release_complete_cause(struct ran_conn *conn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   uint8_t transaction_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       uint8_t cause_loc, uint8_t cause_val);</span><br><span>diff --git a/src/libmsc/gsm_04_80.c b/src/libmsc/gsm_04_80.c</span><br><span>index 502848f..e3547f4 100644</span><br><span>--- a/src/libmsc/gsm_04_80.c</span><br><span>+++ b/src/libmsc/gsm_04_80.c</span><br><span>@@ -86,3 +86,31 @@</span><br><span>            return -1;</span><br><span>   return msc_tx_dtap(conn, msg);</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+int msc_send_ussd_release_complete_cause(struct ran_conn *conn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                         uint8_t transaction_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       uint8_t cause_loc, uint8_t cause_val)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     struct msgb *msg;</span><br><span style="color: hsl(120, 100%, 40%);">+     uint8_t *cause_ie;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  msg = gsm0480_create_release_complete(transaction_id);</span><br><span style="color: hsl(120, 100%, 40%);">+        if (!msg)</span><br><span style="color: hsl(120, 100%, 40%);">+             return -1;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Encode cause IE (see GSM 04.08, section 10.5.4.11)</span><br><span style="color: hsl(120, 100%, 40%);">+  * with fixed length (2 bytes of TL, 2 bytes of payload).</span><br><span style="color: hsl(120, 100%, 40%);">+      * NOTE: we don't use gsm48_encode_cause() API because</span><br><span style="color: hsl(120, 100%, 40%);">+     * it wants gsm_mncc_cause struct from us. */</span><br><span style="color: hsl(120, 100%, 40%);">+ cause_ie = msgb_put(msg, 2 + 2);</span><br><span style="color: hsl(120, 100%, 40%);">+      cause_ie[0] = GSM48_IE_CAUSE;</span><br><span style="color: hsl(120, 100%, 40%);">+ cause_ie[1] = 2;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Coding standard defined for the GSM PLMNs,</span><br><span style="color: hsl(120, 100%, 40%);">+  * location and cause: as given by caller,</span><br><span style="color: hsl(120, 100%, 40%);">+     * no extension, no diagnostics. */</span><br><span style="color: hsl(120, 100%, 40%);">+   cause_ie[2] = (1 << 7) | (0x03 << 5) | (cause_loc & 0x0f);</span><br><span style="color: hsl(120, 100%, 40%);">+    cause_ie[3] = (1 << 7) | cause_val;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return msc_tx_dtap(conn, msg);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12843">change 12843</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/12843"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-msc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I3b9e8e4f473d113d5b9e9e5d33f7914202077203 </div>
<div style="display:none"> Gerrit-Change-Number: 12843 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Max <msuraev@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Vadim Yanitskiy <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>