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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gsm_04_08: add parser for Mobile Station Classmark 3<br><br>3GPP TS 24.008 section 10.5.1.7 describes a Mobile Station Classmark 3<br>IE, which is encoded as CSN.1 struct. This means that it can not be<br>parsed by just casting a memory location to a struct pointer, so lets<br>add a parser to parse the CM3 IE.<br><br>This is fixed version of Ic8b2bfd00330235f5bed00771e421588abfaac1f,<br>which got reverted because it used the keyword "class" as struct member,<br>which lead into problems with c++ builds. This is now fixed.<br><br>Change-Id: Id8732551b33616227609cd6fcf6c3133751a89eb<br>Related: OS#4796 SYS#5114<br>---<br>M include/osmocom/gsm/gsm48_ie.h<br>M include/osmocom/gsm/protocol/gsm_04_08.h<br>M src/gsm/gsm48_ie.c<br>M src/gsm/libosmogsm.map<br>M tests/gsm0408/gsm0408_test.c<br>M tests/gsm0408/gsm0408_test.ok<br>6 files changed, 960 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/gsm/gsm48_ie.h b/include/osmocom/gsm/gsm48_ie.h</span><br><span>index 339aa13..b79cbfc 100644</span><br><span>--- a/include/osmocom/gsm/gsm48_ie.h</span><br><span>+++ b/include/osmocom/gsm/gsm48_ie.h</span><br><span>@@ -119,3 +119,7 @@</span><br><span> /* decode "Cell Channel Description" (10.5.2.1b) and other frequency lists */</span><br><span> int gsm48_decode_freq_list(struct gsm_sysinfo_freq *f, uint8_t *cd,</span><br><span>                         uint8_t len, uint8_t mask, uint8_t frqt);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* decode "CSN.1 encoded Classmark 3" (10.5.1.7) */</span><br><span style="color: hsl(120, 100%, 40%);">+int gsm48_decode_classmark3(struct gsm48_classmark3 *classmark3_out,</span><br><span style="color: hsl(120, 100%, 40%);">+                       const uint8_t *classmark3, size_t classmark3_len);</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 df13b15..a103c32 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>@@ -58,6 +58,175 @@</span><br><span> #endif</span><br><span> } __attribute__ ((packed));</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Chapter 10.5.1.7 */</span><br><span style="color: hsl(120, 100%, 40%);">+struct gsm48_classmark3 {</span><br><span style="color: hsl(120, 100%, 40%);">+     uint8_t a5_bits;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint8_t mult_band_supp;</span><br><span style="color: hsl(120, 100%, 40%);">+       uint8_t assoc_radio_cap_1;</span><br><span style="color: hsl(120, 100%, 40%);">+    uint8_t assoc_radio_cap_2;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t r_gsm_assoc_radio_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+        } r_support;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t mslot_class;</span><br><span style="color: hsl(120, 100%, 40%);">+  } hscsd_mult_slot_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      bool ucs2_treatment;</span><br><span style="color: hsl(120, 100%, 40%);">+  bool extended_meas_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t sms_value;</span><br><span style="color: hsl(120, 100%, 40%);">+            uint8_t sm_value;</span><br><span style="color: hsl(120, 100%, 40%);">+     } ms_meas_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t method;</span><br><span style="color: hsl(120, 100%, 40%);">+       } ms_pos_method_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t mslot_class;</span><br><span style="color: hsl(120, 100%, 40%);">+  } ecsd_multislot_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         bool mod_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+               struct {</span><br><span style="color: hsl(120, 100%, 40%);">+                      bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+                 uint8_t value;</span><br><span style="color: hsl(120, 100%, 40%);">+                } rf_pwr_cap_1;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+             struct {</span><br><span style="color: hsl(120, 100%, 40%);">+                      bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+                 uint8_t value;</span><br><span style="color: hsl(120, 100%, 40%);">+                } rf_pwr_cap_2;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     } psk8_struct;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t value;</span><br><span style="color: hsl(120, 100%, 40%);">+                uint8_t assoc_radio_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+      } gsm_400_bands_supp;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t value;</span><br><span style="color: hsl(120, 100%, 40%);">+        } gsm_850_assoc_radio_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t value;</span><br><span style="color: hsl(120, 100%, 40%);">+        } gsm_1900_assoc_radio_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ bool umts_fdd_rat_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+        bool umts_tdd_rat_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+        bool cdma200_rat_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t mslot_class;</span><br><span style="color: hsl(120, 100%, 40%);">+          bool single_slot_dtm;</span><br><span style="color: hsl(120, 100%, 40%);">+         struct {</span><br><span style="color: hsl(120, 100%, 40%);">+                      bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+                 uint8_t mslot_class;</span><br><span style="color: hsl(120, 100%, 40%);">+          } dtm_egprs_multislot_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+    } dtm_gprs_multislot_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t value;</span><br><span style="color: hsl(120, 100%, 40%);">+        } single_band_supp;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t value;</span><br><span style="color: hsl(120, 100%, 40%);">+        } gsm_750_assoc_radio_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  bool umts_1_28_mcps_tdd_rat_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+      bool geran_feature_package;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t mslot_class;</span><br><span style="color: hsl(120, 100%, 40%);">+          struct {</span><br><span style="color: hsl(120, 100%, 40%);">+                      bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+                 uint8_t mslot_class;</span><br><span style="color: hsl(120, 100%, 40%);">+          } extended_dtm_egprs_multislot_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+   } extended_dtm_gprs_multislot_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t value;</span><br><span style="color: hsl(120, 100%, 40%);">+        } high_multislot_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       bool geran_feature_package_2;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint8_t gmsk_multislot_power_prof;</span><br><span style="color: hsl(120, 100%, 40%);">+    uint8_t psk8_multislot_power_prof;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t value;</span><br><span style="color: hsl(120, 100%, 40%);">+                uint8_t assoc_radio_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+      } t_gsm_400_bands_supp;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     uint8_t dl_advanced_rx_perf;</span><br><span style="color: hsl(120, 100%, 40%);">+  bool dtm_enhancements_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t mslot_class;</span><br><span style="color: hsl(120, 100%, 40%);">+          bool offset_required;</span><br><span style="color: hsl(120, 100%, 40%);">+         struct {</span><br><span style="color: hsl(120, 100%, 40%);">+                      bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+                 uint8_t mslot_class;</span><br><span style="color: hsl(120, 100%, 40%);">+          } dtm_egprs_high_multislot_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+       } dtm_gprs_high_multislot_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      bool repeated_acch_capability;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t value;</span><br><span style="color: hsl(120, 100%, 40%);">+        } gsm_710_assoc_radio_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  struct {</span><br><span style="color: hsl(120, 100%, 40%);">+              bool present;</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t value;</span><br><span style="color: hsl(120, 100%, 40%);">+        } t_gsm_810_assoc_radio_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        bool ciphering_mode_setting_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+      bool add_pos_cap;</span><br><span style="color: hsl(120, 100%, 40%);">+     bool e_utra_fdd_supp;</span><br><span style="color: hsl(120, 100%, 40%);">+ bool e_utra_tdd_supp;</span><br><span style="color: hsl(120, 100%, 40%);">+ bool e_utra_meas_rep_supp;</span><br><span style="color: hsl(120, 100%, 40%);">+    bool prio_resel_supp;</span><br><span style="color: hsl(120, 100%, 40%);">+ bool utra_csg_cells_rep;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    uint8_t vamos_level;</span><br><span style="color: hsl(120, 100%, 40%);">+  uint8_t tighter_capability;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ bool sel_ciph_dl_sacch;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     uint8_t cs_ps_srvcc_geran_utra;</span><br><span style="color: hsl(120, 100%, 40%);">+       uint8_t cs_ps_srvcc_geran_eutra;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    bool geran_net_sharing;</span><br><span style="color: hsl(120, 100%, 40%);">+       bool e_utra_wb_rsrq_meas_supp;</span><br><span style="color: hsl(120, 100%, 40%);">+        bool er_band_support;</span><br><span style="color: hsl(120, 100%, 40%);">+ bool utra_mult_band_ind_supp;</span><br><span style="color: hsl(120, 100%, 40%);">+ bool e_utra_mult_band_ind_supp;</span><br><span style="color: hsl(120, 100%, 40%);">+       bool extended_tsc_set_cap_supp;</span><br><span style="color: hsl(120, 100%, 40%);">+       bool extended_earfcn_val_range;</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> struct osmo_gsm48_classmark {</span><br><span>       bool classmark1_set;</span><br><span>         struct gsm48_classmark1 classmark1;</span><br><span>diff --git a/src/gsm/gsm48_ie.c b/src/gsm/gsm48_ie.c</span><br><span>index 31028ba..6070e5c 100644</span><br><span>--- a/src/gsm/gsm48_ie.c</span><br><span>+++ b/src/gsm/gsm48_ie.c</span><br><span>@@ -34,6 +34,7 @@</span><br><span> #include <osmocom/core/msgb.h></span><br><span> #include <osmocom/gsm/tlv.h></span><br><span> #include <osmocom/gsm/mncc.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/bitvec.h></span><br><span> #include <osmocom/gsm/protocol/gsm_04_08.h></span><br><span> #include <osmocom/gsm/gsm48_ie.h></span><br><span> </span><br><span>@@ -1299,4 +1300,249 @@</span><br><span> </span><br><span>  return 0;</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Decode 3GPP TS 24.008 Mobile Station Classmark 3 (10.5.1.7).</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[out] classmark3_out user provided memory to store decoded classmark3.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] classmark3 pointer to memory that contains the raw classmark bits.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] classmark3_len length in bytes of the memory where classmark3 points to.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns 0 on success; negative on error. */</span><br><span style="color: hsl(120, 100%, 40%);">+int gsm48_decode_classmark3(struct gsm48_classmark3 *classmark3_out,</span><br><span style="color: hsl(120, 100%, 40%);">+                          const uint8_t *classmark3, size_t classmark3_len)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      struct bitvec bv;</span><br><span style="color: hsl(120, 100%, 40%);">+     uint8_t data[255];</span><br><span style="color: hsl(120, 100%, 40%);">+    struct gsm48_classmark3 *cm3 = classmark3_out;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* if cm3 gets extended by spec, it will be truncated, but 255 bytes</span><br><span style="color: hsl(120, 100%, 40%);">+   * should be more than enough. */</span><br><span style="color: hsl(120, 100%, 40%);">+     if (classmark3_len > sizeof(data))</span><br><span style="color: hsl(120, 100%, 40%);">+         classmark3_len = sizeof(data);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      memset(&bv, 0, sizeof(bv));</span><br><span style="color: hsl(120, 100%, 40%);">+       memset(data, 0, sizeof(data));</span><br><span style="color: hsl(120, 100%, 40%);">+        memset(classmark3_out, 0, sizeof(*classmark3_out));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ memcpy(data, classmark3, classmark3_len);</span><br><span style="color: hsl(120, 100%, 40%);">+     bv.data = (uint8_t*) data;</span><br><span style="color: hsl(120, 100%, 40%);">+    bv.data_len = sizeof(data);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Parse bit vector, see also: 3GPP TS 24.008, section 10.5.1.7 */</span><br><span style="color: hsl(120, 100%, 40%);">+    bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+  cm3->mult_band_supp = bitvec_get_uint(&bv, 3);</span><br><span style="color: hsl(120, 100%, 40%);">+ switch (cm3->mult_band_supp) {</span><br><span style="color: hsl(120, 100%, 40%);">+     case 0x00:</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->a5_bits = bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+                break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case 0x05:</span><br><span style="color: hsl(120, 100%, 40%);">+    case 0x06:</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->a5_bits = bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+                cm3->assoc_radio_cap_2 = bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+              cm3->assoc_radio_cap_1 = bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+              break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case 0x01:</span><br><span style="color: hsl(120, 100%, 40%);">+    case 0x02:</span><br><span style="color: hsl(120, 100%, 40%);">+    case 0x04:</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->a5_bits = bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+                bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+          cm3->assoc_radio_cap_1 = bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+              break;</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%);">+   cm3->r_support.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+      if (cm3->r_support.present)</span><br><span style="color: hsl(120, 100%, 40%);">+                cm3->r_support.r_gsm_assoc_radio_cap = bitvec_get_uint(&bv, 3);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      cm3->hscsd_mult_slot_cap.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (cm3->hscsd_mult_slot_cap.present)</span><br><span style="color: hsl(120, 100%, 40%);">+              cm3->hscsd_mult_slot_cap.mslot_class = bitvec_get_uint(&bv, 5);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      cm3->ucs2_treatment = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ cm3->extended_meas_cap = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    cm3->ms_meas_cap.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (cm3->ms_meas_cap.present) {</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->ms_meas_cap.sms_value = bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+          cm3->ms_meas_cap.sm_value = bitvec_get_uint(&bv, 4);</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%);">+   cm3->ms_pos_method_cap.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+      if (cm3->ms_pos_method_cap.present)</span><br><span style="color: hsl(120, 100%, 40%);">+                cm3->ms_pos_method_cap.method = bitvec_get_uint(&bv, 5);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     cm3->ecsd_multislot_cap.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (cm3->ecsd_multislot_cap.present)</span><br><span style="color: hsl(120, 100%, 40%);">+               cm3->ecsd_multislot_cap.mslot_class = bitvec_get_uint(&bv, 5);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       cm3->psk8_struct.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (cm3->psk8_struct.present) {</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->psk8_struct.mod_cap = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+          cm3->psk8_struct.rf_pwr_cap_1.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+               if (cm3->psk8_struct.rf_pwr_cap_1.present) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       cm3->psk8_struct.rf_pwr_cap_1.value =</span><br><span style="color: hsl(120, 100%, 40%);">+                          bitvec_get_uint(&bv, 2);</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%);">+           cm3->psk8_struct.rf_pwr_cap_2.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+               if (cm3->psk8_struct.rf_pwr_cap_2.present) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       cm3->psk8_struct.rf_pwr_cap_2.value =</span><br><span style="color: hsl(120, 100%, 40%);">+                          bitvec_get_uint(&bv, 2);</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%);">+   cm3->gsm_400_bands_supp.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (cm3->gsm_400_bands_supp.present) {</span><br><span style="color: hsl(120, 100%, 40%);">+             cm3->gsm_400_bands_supp.value = bitvec_get_uint(&bv, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+               if (cm3->gsm_400_bands_supp.value == 0x00)</span><br><span style="color: hsl(120, 100%, 40%);">+                 return -1;</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->gsm_400_bands_supp.assoc_radio_cap =</span><br><span style="color: hsl(120, 100%, 40%);">+              bitvec_get_uint(&bv, 4);</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%);">+   cm3->gsm_850_assoc_radio_cap.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+        if (cm3->gsm_850_assoc_radio_cap.present)</span><br><span style="color: hsl(120, 100%, 40%);">+          cm3->gsm_850_assoc_radio_cap.value = bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->gsm_1900_assoc_radio_cap.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (cm3->gsm_1900_assoc_radio_cap.present)</span><br><span style="color: hsl(120, 100%, 40%);">+         cm3->gsm_1900_assoc_radio_cap.value = bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       cm3->umts_fdd_rat_cap = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+       cm3->umts_tdd_rat_cap = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+       cm3->cdma200_rat_cap = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      cm3->dtm_gprs_multislot_cap.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (cm3->dtm_gprs_multislot_cap.present) {</span><br><span style="color: hsl(120, 100%, 40%);">+         cm3->dtm_gprs_multislot_cap.mslot_class = bitvec_get_uint(&bv, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+             cm3->dtm_gprs_multislot_cap.single_slot_dtm =</span><br><span style="color: hsl(120, 100%, 40%);">+                  bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+              cm3->dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present =</span><br><span style="color: hsl(120, 100%, 40%);">+                  bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+              if (cm3->dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present)</span><br><span style="color: hsl(120, 100%, 40%);">+                   cm3->dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.</span><br><span style="color: hsl(120, 100%, 40%);">+                           mslot_class = bitvec_get_uint(&bv, 2);</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%);">+   /* Release 4 starts here. */</span><br><span style="color: hsl(120, 100%, 40%);">+  cm3->single_band_supp.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (cm3->single_band_supp.present)</span><br><span style="color: hsl(120, 100%, 40%);">+         cm3->single_band_supp.value = bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       cm3->gsm_750_assoc_radio_cap.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+        if (cm3->gsm_750_assoc_radio_cap.present)</span><br><span style="color: hsl(120, 100%, 40%);">+          cm3->gsm_750_assoc_radio_cap.value = bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->umts_1_28_mcps_tdd_rat_cap = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+     cm3->geran_feature_package = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->extended_dtm_gprs_multislot_cap.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+        if (cm3->extended_dtm_gprs_multislot_cap.present) {</span><br><span style="color: hsl(120, 100%, 40%);">+                cm3->extended_dtm_gprs_multislot_cap.mslot_class =</span><br><span style="color: hsl(120, 100%, 40%);">+             bitvec_get_uint(&bv, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+              cm3->extended_dtm_gprs_multislot_cap.</span><br><span style="color: hsl(120, 100%, 40%);">+                  extended_dtm_egprs_multislot_cap.present =</span><br><span style="color: hsl(120, 100%, 40%);">+                    bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+              if (cm3->extended_dtm_gprs_multislot_cap.</span><br><span style="color: hsl(120, 100%, 40%);">+              extended_dtm_egprs_multislot_cap.present)</span><br><span style="color: hsl(120, 100%, 40%);">+                 cm3->extended_dtm_gprs_multislot_cap.</span><br><span style="color: hsl(120, 100%, 40%);">+                          extended_dtm_egprs_multislot_cap.mslot_class =</span><br><span style="color: hsl(120, 100%, 40%);">+                        bitvec_get_uint(&bv, 2);</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%);">+   /* Release 5 starts here */</span><br><span style="color: hsl(120, 100%, 40%);">+   cm3->high_multislot_cap.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (cm3->high_multislot_cap.present)</span><br><span style="color: hsl(120, 100%, 40%);">+               cm3->high_multislot_cap.value = bitvec_get_uint(&bv, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* This used to be the GERAN Iu mode support bit, but the newer spec</span><br><span style="color: hsl(120, 100%, 40%);">+   * releases say that it should not be used (always zero), however</span><br><span style="color: hsl(120, 100%, 40%);">+      * we will just ignore tha state of this bit. */</span><br><span style="color: hsl(120, 100%, 40%);">+      bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->geran_feature_package_2 = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->gmsk_multislot_power_prof = bitvec_get_uint(&bv, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+      cm3->psk8_multislot_power_prof = bitvec_get_uint(&bv, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Release 6 starts here */</span><br><span style="color: hsl(120, 100%, 40%);">+   cm3->t_gsm_400_bands_supp.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+   if (cm3->t_gsm_400_bands_supp.present) {</span><br><span style="color: hsl(120, 100%, 40%);">+           cm3->t_gsm_400_bands_supp.value = bitvec_get_uint(&bv, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+             cm3->t_gsm_400_bands_supp.assoc_radio_cap =</span><br><span style="color: hsl(120, 100%, 40%);">+                    bitvec_get_uint(&bv, 4);</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%);">+   /* This used to be T-GSM 900 associated radio capability, but the</span><br><span style="color: hsl(120, 100%, 40%);">+      * newer spec releases say that this bit should not be used, but if</span><br><span style="color: hsl(120, 100%, 40%);">+    * it is used by some MS anyway we must assume that there is data</span><br><span style="color: hsl(120, 100%, 40%);">+      * we have to override. */</span><br><span style="color: hsl(120, 100%, 40%);">+    if (bitvec_get_uint(&bv, 1))</span><br><span style="color: hsl(120, 100%, 40%);">+              bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->dl_advanced_rx_perf = bitvec_get_uint(&bv, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+    cm3->dtm_enhancements_cap = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ cm3->dtm_gprs_high_multislot_cap.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (cm3->dtm_gprs_high_multislot_cap.present) {</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->dtm_gprs_high_multislot_cap.mslot_class =</span><br><span style="color: hsl(120, 100%, 40%);">+                 bitvec_get_uint(&bv, 3);</span><br><span style="color: hsl(120, 100%, 40%);">+              cm3->dtm_gprs_high_multislot_cap.offset_required =</span><br><span style="color: hsl(120, 100%, 40%);">+             bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+              cm3->dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.</span><br><span style="color: hsl(120, 100%, 40%);">+                 present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+            if (cm3->dtm_gprs_high_multislot_cap.</span><br><span style="color: hsl(120, 100%, 40%);">+                  dtm_egprs_high_multislot_cap.present)</span><br><span style="color: hsl(120, 100%, 40%);">+                     cm3->dtm_gprs_high_multislot_cap.</span><br><span style="color: hsl(120, 100%, 40%);">+                      dtm_egprs_high_multislot_cap.mslot_class =</span><br><span style="color: hsl(120, 100%, 40%);">+                            bitvec_get_uint(&bv, 3);</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%);">+   cm3->repeated_acch_capability = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Release 7 starts here */</span><br><span style="color: hsl(120, 100%, 40%);">+   cm3->gsm_710_assoc_radio_cap.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+        if (cm3->gsm_710_assoc_radio_cap.present)</span><br><span style="color: hsl(120, 100%, 40%);">+          cm3->gsm_710_assoc_radio_cap.value = bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->t_gsm_810_assoc_radio_cap.present = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+      if (cm3->t_gsm_810_assoc_radio_cap.present)</span><br><span style="color: hsl(120, 100%, 40%);">+                cm3->t_gsm_810_assoc_radio_cap.value = bitvec_get_uint(&bv, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      cm3->ciphering_mode_setting_cap = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+     cm3->add_pos_cap = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Release 8 starts here */</span><br><span style="color: hsl(120, 100%, 40%);">+   cm3->e_utra_fdd_supp = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->e_utra_tdd_supp = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->e_utra_meas_rep_supp = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+   cm3->prio_resel_supp = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Release 9 starts here */</span><br><span style="color: hsl(120, 100%, 40%);">+   cm3->utra_csg_cells_rep = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   cm3->vamos_level = bitvec_get_uint(&bv, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Release 10 starts here */</span><br><span style="color: hsl(120, 100%, 40%);">+  cm3->tighter_capability = bitvec_get_uint(&bv, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+     cm3->sel_ciph_dl_sacch = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Release 11 starts here */</span><br><span style="color: hsl(120, 100%, 40%);">+  cm3->cs_ps_srvcc_geran_utra = bitvec_get_uint(&bv, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+ cm3->cs_ps_srvcc_geran_eutra = bitvec_get_uint(&bv, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      cm3->geran_net_sharing = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+      cm3->e_utra_wb_rsrq_meas_supp = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Release 12 starts here */</span><br><span style="color: hsl(120, 100%, 40%);">+  cm3->er_band_support = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->utra_mult_band_ind_supp = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->e_utra_mult_band_ind_supp = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+      cm3->extended_tsc_set_cap_supp = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Late addition of a release 11 feature */</span><br><span style="color: hsl(120, 100%, 40%);">+   cm3->extended_earfcn_val_range = bitvec_get_uint(&bv, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> /*! @} */</span><br><span>diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map</span><br><span>index 031cc20..f339120 100644</span><br><span>--- a/src/gsm/libosmogsm.map</span><br><span>+++ b/src/gsm/libosmogsm.map</span><br><span>@@ -339,6 +339,7 @@</span><br><span> gsm48_decode_connected;</span><br><span> gsm48_decode_facility;</span><br><span> gsm48_decode_freq_list;</span><br><span style="color: hsl(120, 100%, 40%);">+gsm48_decode_classmark3;</span><br><span> gsm48_decode_keypad;</span><br><span> gsm48_decode_lai;</span><br><span> gsm48_decode_notify;</span><br><span>diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c</span><br><span>index d2ae6f6..5a59639 100644</span><br><span>--- a/tests/gsm0408/gsm0408_test.c</span><br><span>+++ b/tests/gsm0408/gsm0408_test.c</span><br><span>@@ -327,6 +327,203 @@</span><br><span>     }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static void dump_cm3(struct gsm48_classmark3 *cm3)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("mult_band_supp=%02x\n", cm3->mult_band_supp);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("a5_bits=%02x\n", cm3->a5_bits);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf("assoc_radio_cap_1=%02x\n", cm3->assoc_radio_cap_1);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("assoc_radio_cap_2=%02x\n", cm3->assoc_radio_cap_2);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("r_support.present=%u\n", cm3->r_support.present);</span><br><span style="color: hsl(120, 100%, 40%);">+        printf("r_support.r_gsm_assoc_radio_cap=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+           cm3->r_support.r_gsm_assoc_radio_cap);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("hscsd_mult_slot_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+         cm3->hscsd_mult_slot_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf("hscsd_mult_slot_cap.mslot_class=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+           cm3->hscsd_mult_slot_cap.mslot_class);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("ucs2_treatment=%u\n", cm3->ucs2_treatment);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("extended_meas_cap=%u\n", cm3->extended_meas_cap);</span><br><span style="color: hsl(120, 100%, 40%);">+        printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("ms_meas_cap.present=%u\n", cm3->ms_meas_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("ms_meas_cap.sms_value=%02x\n", cm3->ms_meas_cap.sms_value);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("ms_meas_cap.sm_value=%02x\n", cm3->ms_meas_cap.sm_value);</span><br><span style="color: hsl(120, 100%, 40%);">+        printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("ms_pos_method_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+           cm3->ms_pos_method_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("ms_pos_method_cap.method=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+          cm3->ms_pos_method_cap.method);</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("ecsd_multislot_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+          cm3->ecsd_multislot_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("ecsd_multislot_cap.mslot_class=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->ecsd_multislot_cap.mslot_class);</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("psk8_struct.present=%u\n", cm3->psk8_struct.present);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("psk8_struct.mod_cap=%u\n", cm3->psk8_struct.mod_cap);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("psk8_struct.rf_pwr_cap_1.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->psk8_struct.rf_pwr_cap_1.present);</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("psk8_struct.rf_pwr_cap_1.value=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->psk8_struct.rf_pwr_cap_1.value);</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("psk8_struct.rf_pwr_cap_2.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->psk8_struct.rf_pwr_cap_2.present);</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("psk8_struct.rf_pwr_cap_2.value=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->psk8_struct.rf_pwr_cap_2.value);</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("gsm_400_bands_supp.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+          cm3->gsm_400_bands_supp.present);</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("gsm_400_bands_supp.value=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+          cm3->gsm_400_bands_supp.value);</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("gsm_400_bands_supp.assoc_radio_cap=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->gsm_400_bands_supp.assoc_radio_cap);</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("gsm_850_assoc_radio_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+             cm3->gsm_850_assoc_radio_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("gsm_850_assoc_radio_cap.value=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+             cm3->gsm_850_assoc_radio_cap.value);</span><br><span style="color: hsl(120, 100%, 40%);">+        printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("gsm_1900_assoc_radio_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->gsm_1900_assoc_radio_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("gsm_1900_assoc_radio_cap.value=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->gsm_1900_assoc_radio_cap.value);</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("umts_fdd_rat_cap=%u\n", cm3->umts_fdd_rat_cap);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf("umts_tdd_rat_cap=%u\n", cm3->umts_tdd_rat_cap);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf("cdma200_rat_cap=%u\n", cm3->cdma200_rat_cap);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("dtm_gprs_multislot_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+              cm3->dtm_gprs_multislot_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("dtm_gprs_multislot_cap.mslot_class=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->dtm_gprs_multislot_cap.mslot_class);</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("dtm_gprs_multislot_cap.single_slot_dtm=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+              cm3->dtm_gprs_multislot_cap.single_slot_dtm);</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+              cm3->dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.mslot_class=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.mslot_class);</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("single_band_supp.present=%u\n", cm3->single_band_supp.present);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf("single_band_supp.value=%u\n", cm3->single_band_supp.value);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("gsm_750_assoc_radio_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+             cm3->gsm_750_assoc_radio_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("gsm_750_assoc_radio_cap.value=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+             cm3->gsm_750_assoc_radio_cap.value);</span><br><span style="color: hsl(120, 100%, 40%);">+        printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("umts_1_28_mcps_tdd_rat_cap=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+          cm3->umts_1_28_mcps_tdd_rat_cap);</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("geran_feature_package=%u\n", cm3->geran_feature_package);</span><br><span style="color: hsl(120, 100%, 40%);">+        printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("extended_dtm_gprs_multislot_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+             cm3->extended_dtm_gprs_multislot_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("extended_dtm_gprs_multislot_cap.mslot_class=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+               cm3->extended_dtm_gprs_multislot_cap.mslot_class);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf</span><br><span style="color: hsl(120, 100%, 40%);">+            ("extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+             cm3->extended_dtm_gprs_multislot_cap.</span><br><span style="color: hsl(120, 100%, 40%);">+      extended_dtm_egprs_multislot_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+       printf</span><br><span style="color: hsl(120, 100%, 40%);">+            ("extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.mslot_class=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+       cm3->extended_dtm_gprs_multislot_cap.</span><br><span style="color: hsl(120, 100%, 40%);">+      extended_dtm_egprs_multislot_cap.mslot_class);</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("high_multislot_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+          cm3->high_multislot_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("high_multislot_cap.value=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+          cm3->high_multislot_cap.value);</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("geran_feature_package_2=%u\n", cm3->geran_feature_package_2);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("gmsk_multislot_power_prof=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+         cm3->gmsk_multislot_power_prof);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("psk8_multislot_power_prof=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+         cm3->psk8_multislot_power_prof);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("t_gsm_400_bands_supp.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->t_gsm_400_bands_supp.present);</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("t_gsm_400_bands_supp.value=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+        cm3->t_gsm_400_bands_supp.value);</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("t_gsm_400_bands_supp.assoc_radio_cap=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+              cm3->t_gsm_400_bands_supp.assoc_radio_cap);</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("dl_advanced_rx_perf=%02x\n", cm3->dl_advanced_rx_perf);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf("dtm_enhancements_cap=%u\n", cm3->dtm_enhancements_cap);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("dtm_gprs_high_multislot_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+         cm3->dtm_gprs_high_multislot_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf("dtm_gprs_high_multislot_cap.mslot_class=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+           cm3->dtm_gprs_high_multislot_cap.mslot_class);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("dtm_gprs_high_multislot_cap.offset_required=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+         cm3->dtm_gprs_high_multislot_cap.offset_required);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf</span><br><span style="color: hsl(120, 100%, 40%);">+            ("dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+            cm3->dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.</span><br><span style="color: hsl(120, 100%, 40%);">+             present);</span><br><span style="color: hsl(120, 100%, 40%);">+        printf</span><br><span style="color: hsl(120, 100%, 40%);">+            ("dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.mslot_class=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+      cm3->dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.</span><br><span style="color: hsl(120, 100%, 40%);">+             mslot_class);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("repeated_acch_capability=%u\n", cm3->repeated_acch_capability);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("gsm_710_assoc_radio_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+             cm3->gsm_710_assoc_radio_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("gsm_710_assoc_radio_cap.value=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+             cm3->gsm_710_assoc_radio_cap.value);</span><br><span style="color: hsl(120, 100%, 40%);">+        printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("t_gsm_810_assoc_radio_cap.present=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+           cm3->t_gsm_810_assoc_radio_cap.present);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("t_gsm_810_assoc_radio_cap.value=%02x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+           cm3->t_gsm_810_assoc_radio_cap.value);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("ciphering_mode_setting_cap=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+          cm3->ciphering_mode_setting_cap);</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("add_pos_cap=%u\n", cm3->add_pos_cap);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("e_utra_fdd_supp=%u\n", cm3->e_utra_fdd_supp);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("e_utra_tdd_supp=%u\n", cm3->e_utra_tdd_supp);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("e_utra_meas_rep_supp=%u\n", cm3->e_utra_meas_rep_supp);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf("prio_resel_supp=%u\n", cm3->prio_resel_supp);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("utra_csg_cells_rep=%u\n", cm3->utra_csg_cells_rep);</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("vamos_level=%02x\n", cm3->vamos_level);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf("tighter_capability=%02x\n", cm3->tighter_capability);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("sel_ciph_dl_sacch=%u\n", cm3->sel_ciph_dl_sacch);</span><br><span style="color: hsl(120, 100%, 40%);">+        printf("cs_ps_srvcc_geran_utra=%02x\n", cm3->cs_ps_srvcc_geran_utra);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("cs_ps_srvcc_geran_eutra=%02x\n", cm3->cs_ps_srvcc_geran_eutra);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf("geran_net_sharing=%u\n", cm3->geran_net_sharing);</span><br><span style="color: hsl(120, 100%, 40%);">+        printf("e_utra_wb_rsrq_meas_supp=%u\n", cm3->e_utra_wb_rsrq_meas_supp);</span><br><span style="color: hsl(120, 100%, 40%);">+  printf("er_band_support=%u\n", cm3->er_band_support);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("utra_mult_band_ind_supp=%u\n", cm3->utra_mult_band_ind_supp);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("e_utra_mult_band_ind_supp=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+           cm3->e_utra_mult_band_ind_supp);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("extended_tsc_set_cap_supp=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+           cm3->extended_tsc_set_cap_supp);</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("extended_earfcn_val_range=%u\n",</span><br><span style="color: hsl(120, 100%, 40%);">+           cm3->extended_earfcn_val_range);</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%);">+static void test_decode_classmark3(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  struct gsm48_classmark3 cm3;</span><br><span style="color: hsl(120, 100%, 40%);">+  const uint8_t cm3_1[] = { 0x60, 0x14, 0x04, 0x2f, 0x65, 0x00, 0x20, 0x03, 0x40, 0x4a };</span><br><span style="color: hsl(120, 100%, 40%);">+       const uint8_t cm3_2[] = { 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};</span><br><span style="color: hsl(120, 100%, 40%);">+        const uint8_t cm3_3[] = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("=====cm3_1=====\n");</span><br><span style="color: hsl(120, 100%, 40%);">+        gsm48_decode_classmark3(&cm3, cm3_1, sizeof(cm3_1));</span><br><span style="color: hsl(120, 100%, 40%);">+      dump_cm3(&cm3);</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("=====cm3_2=====\n");</span><br><span style="color: hsl(120, 100%, 40%);">+        gsm48_decode_classmark3(&cm3, cm3_2, sizeof(cm3_2));</span><br><span style="color: hsl(120, 100%, 40%);">+      dump_cm3(&cm3);</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("=====cm3_3=====\n");</span><br><span style="color: hsl(120, 100%, 40%);">+        gsm48_decode_classmark3(&cm3, cm3_3, sizeof(cm3_3));</span><br><span style="color: hsl(120, 100%, 40%);">+      dump_cm3(&cm3);</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("\n");</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static void test_mid_from_tmsi(void)</span><br><span> {</span><br><span>    static const uint8_t res[] = { 0x17, 0x05, 0xf4, 0xaa, 0xbb, 0xcc, 0xdd };</span><br><span>@@ -1550,6 +1747,7 @@</span><br><span>   test_bcd_number_encode_decode();</span><br><span>     test_ra_cap();</span><br><span>       test_lai_encode_decode();</span><br><span style="color: hsl(120, 100%, 40%);">+     test_decode_classmark3();</span><br><span> </span><br><span>        test_si_range_helpers();</span><br><span>     test_arfcn_filter();</span><br><span>diff --git a/tests/gsm0408/gsm0408_test.ok b/tests/gsm0408/gsm0408_test.ok</span><br><span>index 3e6ae1f..52c4ea7 100644</span><br><span>--- a/tests/gsm0408/gsm0408_test.ok</span><br><span>+++ b/tests/gsm0408/gsm0408_test.ok</span><br><span>@@ -385,6 +385,348 @@</span><br><span>   Encoded 21 63 54 00 17 </span><br><span>   gsm48_decode_lai2() gives  123-456-23 (3-digit MNC)</span><br><span>   passed</span><br><span style="color: hsl(120, 100%, 40%);">+=====cm3_1=====</span><br><span style="color: hsl(120, 100%, 40%);">+mult_band_supp=06</span><br><span style="color: hsl(120, 100%, 40%);">+a5_bits=00</span><br><span style="color: hsl(120, 100%, 40%);">+assoc_radio_cap_1=04</span><br><span style="color: hsl(120, 100%, 40%);">+assoc_radio_cap_2=01</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+r_support.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+r_support.r_gsm_assoc_radio_cap=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+hscsd_mult_slot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+hscsd_mult_slot_cap.mslot_class=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ucs2_treatment=0</span><br><span style="color: hsl(120, 100%, 40%);">+extended_meas_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ms_meas_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+ms_meas_cap.sms_value=00</span><br><span style="color: hsl(120, 100%, 40%);">+ms_meas_cap.sm_value=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ms_pos_method_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+ms_pos_method_cap.method=01</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ecsd_multislot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+ecsd_multislot_cap.mslot_class=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.mod_cap=1</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.rf_pwr_cap_1.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.rf_pwr_cap_1.value=02</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.rf_pwr_cap_2.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.rf_pwr_cap_2.value=02</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_400_bands_supp.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_400_bands_supp.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_400_bands_supp.assoc_radio_cap=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_850_assoc_radio_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_850_assoc_radio_cap.value=04</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_1900_assoc_radio_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_1900_assoc_radio_cap.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+umts_fdd_rat_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+umts_tdd_rat_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+cdma200_rat_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.mslot_class=00</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.single_slot_dtm=0</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.mslot_class=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+single_band_supp.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+single_band_supp.value=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_750_assoc_radio_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_750_assoc_radio_cap.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+umts_1_28_mcps_tdd_rat_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+geran_feature_package=1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+extended_dtm_gprs_multislot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+extended_dtm_gprs_multislot_cap.mslot_class=00</span><br><span style="color: hsl(120, 100%, 40%);">+extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.mslot_class=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+high_multislot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+high_multislot_cap.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+geran_feature_package_2=0</span><br><span style="color: hsl(120, 100%, 40%);">+gmsk_multislot_power_prof=00</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_multislot_power_prof=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_400_bands_supp.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_400_bands_supp.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_400_bands_supp.assoc_radio_cap=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+dl_advanced_rx_perf=01</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_enhancements_cap=1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.mslot_class=00</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.offset_required=0</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.mslot_class=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+repeated_acch_capability=1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_710_assoc_radio_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_710_assoc_radio_cap.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_810_assoc_radio_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_810_assoc_radio_cap.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ciphering_mode_setting_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+add_pos_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_fdd_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_tdd_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_meas_rep_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+prio_resel_supp=1</span><br><span style="color: hsl(120, 100%, 40%);">+utra_csg_cells_rep=0</span><br><span style="color: hsl(120, 100%, 40%);">+vamos_level=01</span><br><span style="color: hsl(120, 100%, 40%);">+tighter_capability=01</span><br><span style="color: hsl(120, 100%, 40%);">+sel_ciph_dl_sacch=0</span><br><span style="color: hsl(120, 100%, 40%);">+cs_ps_srvcc_geran_utra=00</span><br><span style="color: hsl(120, 100%, 40%);">+cs_ps_srvcc_geran_eutra=00</span><br><span style="color: hsl(120, 100%, 40%);">+geran_net_sharing=0</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_wb_rsrq_meas_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+er_band_support=0</span><br><span style="color: hsl(120, 100%, 40%);">+utra_mult_band_ind_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_mult_band_ind_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+extended_tsc_set_cap_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+extended_earfcn_val_range=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+=====cm3_2=====</span><br><span style="color: hsl(120, 100%, 40%);">+mult_band_supp=05</span><br><span style="color: hsl(120, 100%, 40%);">+a5_bits=05</span><br><span style="color: hsl(120, 100%, 40%);">+assoc_radio_cap_1=05</span><br><span style="color: hsl(120, 100%, 40%);">+assoc_radio_cap_2=05</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+r_support.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+r_support.r_gsm_assoc_radio_cap=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+hscsd_mult_slot_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+hscsd_mult_slot_cap.mslot_class=0a</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ucs2_treatment=1</span><br><span style="color: hsl(120, 100%, 40%);">+extended_meas_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ms_meas_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+ms_meas_cap.sms_value=05</span><br><span style="color: hsl(120, 100%, 40%);">+ms_meas_cap.sm_value=05</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ms_pos_method_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+ms_pos_method_cap.method=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ecsd_multislot_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+ecsd_multislot_cap.mslot_class=0a</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.mod_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.rf_pwr_cap_1.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.rf_pwr_cap_1.value=01</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.rf_pwr_cap_2.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.rf_pwr_cap_2.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_400_bands_supp.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_400_bands_supp.value=01</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_400_bands_supp.assoc_radio_cap=05</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_850_assoc_radio_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_850_assoc_radio_cap.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_1900_assoc_radio_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_1900_assoc_radio_cap.value=05</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+umts_fdd_rat_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+umts_tdd_rat_cap=1</span><br><span style="color: hsl(120, 100%, 40%);">+cdma200_rat_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.mslot_class=01</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.single_slot_dtm=0</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.mslot_class=01</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+single_band_supp.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+single_band_supp.value=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_750_assoc_radio_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_750_assoc_radio_cap.value=05</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+umts_1_28_mcps_tdd_rat_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+geran_feature_package=1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+extended_dtm_gprs_multislot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+extended_dtm_gprs_multislot_cap.mslot_class=00</span><br><span style="color: hsl(120, 100%, 40%);">+extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.mslot_class=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+high_multislot_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+high_multislot_cap.value=01</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+geran_feature_package_2=1</span><br><span style="color: hsl(120, 100%, 40%);">+gmsk_multislot_power_prof=01</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_multislot_power_prof=01</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_400_bands_supp.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_400_bands_supp.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_400_bands_supp.assoc_radio_cap=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+dl_advanced_rx_perf=01</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_enhancements_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.mslot_class=02</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.offset_required=1</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.mslot_class=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+repeated_acch_capability=1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_710_assoc_radio_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_710_assoc_radio_cap.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_810_assoc_radio_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_810_assoc_radio_cap.value=05</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ciphering_mode_setting_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+add_pos_cap=1</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_fdd_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_tdd_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_meas_rep_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+prio_resel_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+utra_csg_cells_rep=0</span><br><span style="color: hsl(120, 100%, 40%);">+vamos_level=00</span><br><span style="color: hsl(120, 100%, 40%);">+tighter_capability=00</span><br><span style="color: hsl(120, 100%, 40%);">+sel_ciph_dl_sacch=0</span><br><span style="color: hsl(120, 100%, 40%);">+cs_ps_srvcc_geran_utra=00</span><br><span style="color: hsl(120, 100%, 40%);">+cs_ps_srvcc_geran_eutra=00</span><br><span style="color: hsl(120, 100%, 40%);">+geran_net_sharing=0</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_wb_rsrq_meas_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+er_band_support=0</span><br><span style="color: hsl(120, 100%, 40%);">+utra_mult_band_ind_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_mult_band_ind_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+extended_tsc_set_cap_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+extended_earfcn_val_range=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+=====cm3_3=====</span><br><span style="color: hsl(120, 100%, 40%);">+mult_band_supp=02</span><br><span style="color: hsl(120, 100%, 40%);">+a5_bits=0a</span><br><span style="color: hsl(120, 100%, 40%);">+assoc_radio_cap_1=0a</span><br><span style="color: hsl(120, 100%, 40%);">+assoc_radio_cap_2=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+r_support.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+r_support.r_gsm_assoc_radio_cap=02</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+hscsd_mult_slot_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+hscsd_mult_slot_cap.mslot_class=0a</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ucs2_treatment=1</span><br><span style="color: hsl(120, 100%, 40%);">+extended_meas_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ms_meas_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+ms_meas_cap.sms_value=05</span><br><span style="color: hsl(120, 100%, 40%);">+ms_meas_cap.sm_value=05</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ms_pos_method_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+ms_pos_method_cap.method=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ecsd_multislot_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+ecsd_multislot_cap.mslot_class=0a</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.mod_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.rf_pwr_cap_1.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.rf_pwr_cap_1.value=01</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.rf_pwr_cap_2.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_struct.rf_pwr_cap_2.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_400_bands_supp.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_400_bands_supp.value=01</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_400_bands_supp.assoc_radio_cap=05</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_850_assoc_radio_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_850_assoc_radio_cap.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_1900_assoc_radio_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_1900_assoc_radio_cap.value=05</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+umts_fdd_rat_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+umts_tdd_rat_cap=1</span><br><span style="color: hsl(120, 100%, 40%);">+cdma200_rat_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.mslot_class=01</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.single_slot_dtm=0</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.mslot_class=01</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+single_band_supp.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+single_band_supp.value=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_750_assoc_radio_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_750_assoc_radio_cap.value=05</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+umts_1_28_mcps_tdd_rat_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+geran_feature_package=1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+extended_dtm_gprs_multislot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+extended_dtm_gprs_multislot_cap.mslot_class=00</span><br><span style="color: hsl(120, 100%, 40%);">+extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.mslot_class=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+high_multislot_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+high_multislot_cap.value=01</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+geran_feature_package_2=1</span><br><span style="color: hsl(120, 100%, 40%);">+gmsk_multislot_power_prof=01</span><br><span style="color: hsl(120, 100%, 40%);">+psk8_multislot_power_prof=01</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_400_bands_supp.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_400_bands_supp.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_400_bands_supp.assoc_radio_cap=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+dl_advanced_rx_perf=01</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_enhancements_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.mslot_class=02</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.offset_required=1</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.mslot_class=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+repeated_acch_capability=1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_710_assoc_radio_cap.present=0</span><br><span style="color: hsl(120, 100%, 40%);">+gsm_710_assoc_radio_cap.value=00</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_810_assoc_radio_cap.present=1</span><br><span style="color: hsl(120, 100%, 40%);">+t_gsm_810_assoc_radio_cap.value=04</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ciphering_mode_setting_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+add_pos_cap=0</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_fdd_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_tdd_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_meas_rep_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+prio_resel_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+utra_csg_cells_rep=0</span><br><span style="color: hsl(120, 100%, 40%);">+vamos_level=00</span><br><span style="color: hsl(120, 100%, 40%);">+tighter_capability=00</span><br><span style="color: hsl(120, 100%, 40%);">+sel_ciph_dl_sacch=0</span><br><span style="color: hsl(120, 100%, 40%);">+cs_ps_srvcc_geran_utra=00</span><br><span style="color: hsl(120, 100%, 40%);">+cs_ps_srvcc_geran_eutra=00</span><br><span style="color: hsl(120, 100%, 40%);">+geran_net_sharing=0</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_wb_rsrq_meas_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+er_band_support=0</span><br><span style="color: hsl(120, 100%, 40%);">+utra_mult_band_ind_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+e_utra_mult_band_ind_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+extended_tsc_set_cap_supp=0</span><br><span style="color: hsl(120, 100%, 40%);">+extended_earfcn_val_range=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> Element is: 2 => freqs[i] = 121</span><br><span> Element is: 2 => freqs[i] = 1</span><br><span> Element is: 0 => freqs[i] = 68</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/21120">change 21120</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/+/21120"/><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: Id8732551b33616227609cd6fcf6c3133751a89eb </div>
<div style="display:none"> Gerrit-Change-Number: 21120 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>