<p>neels <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/23805">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  fixeria: Looks good to me, but someone else must approve
  pespin: Looks good to me, but someone else must approve
  neels: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">RR: add VAMOS channel modes<br><br>Also add functions to convert between VAMOS and non-VAMOS speech modes.<br><br>Related: SYS#4895 SYS#5315<br>Change-Id: Ie0ea592da5610ae70290106d004e549cf3212a89<br>---<br>M include/osmocom/gsm/gsm48.h<br>M include/osmocom/gsm/protocol/gsm_04_08.h<br>M src/gsm/gsm48.c<br>M src/gsm/libosmogsm.map<br>4 files changed, 55 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/gsm/gsm48.h b/include/osmocom/gsm/gsm48.h</span><br><span>index fdaa572..c1ca630 100644</span><br><span>--- a/include/osmocom/gsm/gsm48.h</span><br><span>+++ b/include/osmocom/gsm/gsm48.h</span><br><span>@@ -118,3 +118,6 @@</span><br><span> </span><br><span> #define gsm48_push_l3hdr_tid(msg, pdisc, tid, msg_type) \</span><br><span>  gsm48_push_l3hdr(msg, (pdisc & 0x0f) | (tid << 4), msg_type)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enum gsm48_chan_mode gsm48_chan_mode_to_vamos(enum gsm48_chan_mode mode);</span><br><span style="color: hsl(120, 100%, 40%);">+enum gsm48_chan_mode gsm48_chan_mode_to_non_vamos(enum gsm48_chan_mode mode);</span><br><span>diff --git a/include/osmocom/gsm/protocol/gsm_04_08.h b/include/osmocom/gsm/protocol/gsm_04_08.h</span><br><span>index a103c32..c9cc667 100644</span><br><span>--- a/include/osmocom/gsm/protocol/gsm_04_08.h</span><br><span>+++ b/include/osmocom/gsm/protocol/gsm_04_08.h</span><br><span>@@ -749,6 +749,10 @@</span><br><span>       GSM48_CMODE_DATA_12k0   = 0x03,</span><br><span>      GSM48_CMODE_DATA_6k0    = 0x0b,</span><br><span>      GSM48_CMODE_DATA_3k6    = 0x13,</span><br><span style="color: hsl(120, 100%, 40%);">+       GSM48_CMODE_SPEECH_V1_VAMOS     = 0xc1,</span><br><span style="color: hsl(120, 100%, 40%);">+       GSM48_CMODE_SPEECH_V2_VAMOS     = 0xc2,</span><br><span style="color: hsl(120, 100%, 40%);">+       GSM48_CMODE_SPEECH_V3_VAMOS     = 0xc3,</span><br><span style="color: hsl(120, 100%, 40%);">+       GSM48_CMODE_SPEECH_V5_VAMOS     = 0xc5,</span><br><span> };</span><br><span> </span><br><span> extern const struct value_string gsm48_chan_mode_names[];</span><br><span>diff --git a/src/gsm/gsm48.c b/src/gsm/gsm48.c</span><br><span>index e12fda5..927e639 100644</span><br><span>--- a/src/gsm/gsm48.c</span><br><span>+++ b/src/gsm/gsm48.c</span><br><span>@@ -432,9 +432,55 @@</span><br><span>       { GSM48_CMODE_DATA_12k0,        "DATA_12k0" },</span><br><span>     { GSM48_CMODE_DATA_6k0,         "DATA_6k0" },</span><br><span>      { GSM48_CMODE_DATA_3k6,         "DATA_3k6" },</span><br><span style="color: hsl(120, 100%, 40%);">+       { GSM48_CMODE_SPEECH_V1_VAMOS,  "SPEECH_V1_VAMOS" },</span><br><span style="color: hsl(120, 100%, 40%);">+        { GSM48_CMODE_SPEECH_V2_VAMOS,  "SPEECH_V2_VAMOS" },</span><br><span style="color: hsl(120, 100%, 40%);">+        { GSM48_CMODE_SPEECH_V3_VAMOS,  "SPEECH_V3_VAMOS" },</span><br><span style="color: hsl(120, 100%, 40%);">+        { GSM48_CMODE_SPEECH_V5_VAMOS,  "SPEECH_V5_VAMOS" },</span><br><span>       { 0,                            NULL },</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Translate GSM48_CMODE_SPEECH_* to its corresponding GSM48_CMODE_SPEECH_*_VAMOS mode.</span><br><span style="color: hsl(120, 100%, 40%);">+ * If the mode has no equivalent VAMOS mode, return a negative value.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+enum gsm48_chan_mode gsm48_chan_mode_to_vamos(enum gsm48_chan_mode mode)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  switch (mode) {</span><br><span style="color: hsl(120, 100%, 40%);">+       case GSM48_CMODE_SPEECH_V1:</span><br><span style="color: hsl(120, 100%, 40%);">+   case GSM48_CMODE_SPEECH_V1_VAMOS:</span><br><span style="color: hsl(120, 100%, 40%);">+             return GSM48_CMODE_SPEECH_V1_VAMOS;</span><br><span style="color: hsl(120, 100%, 40%);">+   case GSM48_CMODE_SPEECH_EFR:</span><br><span style="color: hsl(120, 100%, 40%);">+  case GSM48_CMODE_SPEECH_V2_VAMOS:</span><br><span style="color: hsl(120, 100%, 40%);">+             return GSM48_CMODE_SPEECH_V2_VAMOS;</span><br><span style="color: hsl(120, 100%, 40%);">+   case GSM48_CMODE_SPEECH_AMR:</span><br><span style="color: hsl(120, 100%, 40%);">+  case GSM48_CMODE_SPEECH_V3_VAMOS:</span><br><span style="color: hsl(120, 100%, 40%);">+             return GSM48_CMODE_SPEECH_V3_VAMOS;</span><br><span style="color: hsl(120, 100%, 40%);">+   case GSM48_CMODE_SPEECH_V5_VAMOS:</span><br><span style="color: hsl(120, 100%, 40%);">+             return GSM48_CMODE_SPEECH_V5_VAMOS;</span><br><span style="color: hsl(120, 100%, 40%);">+   default:</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%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Translate GSM48_CMODE_SPEECH_*_VAMOS to its corresponding GSM48_CMODE_SPEECH_* non-vamos mode.</span><br><span style="color: hsl(120, 100%, 40%);">+ * If the mode has no equivalent non-VAMOS mode, return a negative value.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+enum gsm48_chan_mode gsm48_chan_mode_to_non_vamos(enum gsm48_chan_mode mode)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   switch (mode) {</span><br><span style="color: hsl(120, 100%, 40%);">+       case GSM48_CMODE_SPEECH_V1_VAMOS:</span><br><span style="color: hsl(120, 100%, 40%);">+     case GSM48_CMODE_SPEECH_V1:</span><br><span style="color: hsl(120, 100%, 40%);">+           return GSM48_CMODE_SPEECH_V1;</span><br><span style="color: hsl(120, 100%, 40%);">+ case GSM48_CMODE_SPEECH_V2_VAMOS:</span><br><span style="color: hsl(120, 100%, 40%);">+     case GSM48_CMODE_SPEECH_EFR:</span><br><span style="color: hsl(120, 100%, 40%);">+          return GSM48_CMODE_SPEECH_EFR;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_CMODE_SPEECH_V3_VAMOS:</span><br><span style="color: hsl(120, 100%, 40%);">+     case GSM48_CMODE_SPEECH_AMR:</span><br><span style="color: hsl(120, 100%, 40%);">+          return GSM48_CMODE_SPEECH_AMR;</span><br><span style="color: hsl(120, 100%, 40%);">+        default:</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%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> const struct value_string gsm_chan_t_names[] = {</span><br><span>   { GSM_LCHAN_NONE,       "NONE" },</span><br><span>  { GSM_LCHAN_SDCCH,      "SDCCH" },</span><br><span>diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map</span><br><span>index 7b2c18f..56a57b8 100644</span><br><span>--- a/src/gsm/libosmogsm.map</span><br><span>+++ b/src/gsm/libosmogsm.map</span><br><span>@@ -372,6 +372,8 @@</span><br><span> gsm48_generate_mid_from_imsi;</span><br><span> gsm48_generate_mid_from_tmsi;</span><br><span> gsm48_mi_to_string;</span><br><span style="color: hsl(120, 100%, 40%);">+gsm48_chan_mode_to_vamos;</span><br><span style="color: hsl(120, 100%, 40%);">+gsm48_chan_mode_to_non_vamos;</span><br><span> osmo_mobile_identity_to_str_buf;</span><br><span> osmo_mobile_identity_to_str_c;</span><br><span> osmo_mobile_identity_cmp;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/23805">change 23805</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/c/libosmocore/+/23805"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ie0ea592da5610ae70290106d004e549cf3212a89 </div>
<div style="display:none"> Gerrit-Change-Number: 23805 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>