aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2020-11-11 23:10:00 +0100
committerHarald Welte <laforge@osmocom.org>2020-11-11 23:11:15 +0100
commitc2118940aaf15967ec33061a40b50f4a6e2f0ecf (patch)
tree91bbb8943dcdcc013d59c5277ad40bb62f70c7f0
parent1b75e4bbd1780a1fbd949fe679cb908820188d3d (diff)
Revert "gsm_04_08: add parser for Mobile Station Classmark 3"
This reverts commit a4939dc8461c0a2d8e67aa3bb95bfb73ad9225b7, which caused massive build failures in C++ programs like osmo-pcu - unsurprisingly, as it calls a struct member "class", which is a reserved keyword in C++. Change-Id: Ia43e56385e7b580f492c560aee8ff8b1e8a0e1d8
-rw-r--r--include/osmocom/gsm/gsm48_ie.h4
-rw-r--r--include/osmocom/gsm/protocol/gsm_04_08.h169
-rw-r--r--src/gsm/gsm48_ie.c246
-rw-r--r--src/gsm/libosmogsm.map1
-rw-r--r--tests/gsm0408/gsm0408_test.c198
-rw-r--r--tests/gsm0408/gsm0408_test.ok342
6 files changed, 0 insertions, 960 deletions
diff --git a/include/osmocom/gsm/gsm48_ie.h b/include/osmocom/gsm/gsm48_ie.h
index b79cbfcb..339aa136 100644
--- a/include/osmocom/gsm/gsm48_ie.h
+++ b/include/osmocom/gsm/gsm48_ie.h
@@ -119,7 +119,3 @@ struct gsm_sysinfo_freq {
/* decode "Cell Channel Description" (10.5.2.1b) and other frequency lists */
int gsm48_decode_freq_list(struct gsm_sysinfo_freq *f, uint8_t *cd,
uint8_t len, uint8_t mask, uint8_t frqt);
-
-/* decode "CSN.1 encoded Classmark 3" (10.5.1.7) */
-int gsm48_decode_classmark3(struct gsm48_classmark3 *classmark3_out,
- const uint8_t *classmark3, size_t classmark3_len);
diff --git a/include/osmocom/gsm/protocol/gsm_04_08.h b/include/osmocom/gsm/protocol/gsm_04_08.h
index 2093bee0..df13b15e 100644
--- a/include/osmocom/gsm/protocol/gsm_04_08.h
+++ b/include/osmocom/gsm/protocol/gsm_04_08.h
@@ -58,175 +58,6 @@ struct gsm48_classmark2 {
#endif
} __attribute__ ((packed));
-/* Chapter 10.5.1.7 */
-struct gsm48_classmark3 {
- uint8_t a5_bits;
- uint8_t mult_band_supp;
- uint8_t assoc_radio_cap_1;
- uint8_t assoc_radio_cap_2;
-
- struct {
- bool present;
- uint8_t r_gsm_assoc_radio_cap;
- } r_support;
-
- struct {
- bool present;
- uint8_t class;
- } hscsd_mult_slot_cap;
-
- bool ucs2_treatment;
- bool extended_meas_cap;
-
- struct {
- bool present;
- uint8_t sms_value;
- uint8_t sm_value;
- } ms_meas_cap;
-
- struct {
- bool present;
- uint8_t method;
- } ms_pos_method_cap;
-
- struct {
- bool present;
- uint8_t class;
- } ecsd_multislot_cap;
-
- struct {
- bool present;
- bool mod_cap;
-
- struct {
- bool present;
- uint8_t value;
- } rf_pwr_cap_1;
-
- struct {
- bool present;
- uint8_t value;
- } rf_pwr_cap_2;
-
- } psk8_struct;
-
- struct {
- bool present;
- uint8_t value;
- uint8_t assoc_radio_cap;
- } gsm_400_bands_supp;
-
- struct {
- bool present;
- uint8_t value;
- } gsm_850_assoc_radio_cap;
-
- struct {
- bool present;
- uint8_t value;
- } gsm_1900_assoc_radio_cap;
-
- bool umts_fdd_rat_cap;
- bool umts_tdd_rat_cap;
- bool cdma200_rat_cap;
-
- struct {
- bool present;
- uint8_t class;
- bool single_slot_dtm;
- struct {
- bool present;
- uint8_t class;
- } dtm_egprs_multislot_cap;
- } dtm_gprs_multislot_cap;
-
- struct {
- bool present;
- uint8_t value;
- } single_band_supp;
-
- struct {
- bool present;
- uint8_t value;
- } gsm_750_assoc_radio_cap;
-
- bool umts_1_28_mcps_tdd_rat_cap;
- bool geran_feature_package;
-
- struct {
- bool present;
- uint8_t class;
- struct {
- bool present;
- uint8_t class;
- } extended_dtm_egprs_multislot_cap;
- } extended_dtm_gprs_multislot_cap;
-
- struct {
- bool present;
- uint8_t value;
- } high_multislot_cap;
-
- bool geran_feature_package_2;
- uint8_t gmsk_multislot_power_prof;
- uint8_t psk8_multislot_power_prof;
-
- struct {
- bool present;
- uint8_t value;
- uint8_t assoc_radio_cap;
- } t_gsm_400_bands_supp;
-
- uint8_t dl_advanced_rx_perf;
- bool dtm_enhancements_cap;
-
- struct {
- bool present;
- uint8_t class;
- bool offset_required;
- struct {
- bool present;
- uint8_t class;
- } dtm_egprs_high_multislot_cap;
- } dtm_gprs_high_multislot_cap;
-
- bool repeated_acch_capability;
-
- struct {
- bool present;
- uint8_t value;
- } gsm_710_assoc_radio_cap;
-
- struct {
- bool present;
- uint8_t value;
- } t_gsm_810_assoc_radio_cap;
-
- bool ciphering_mode_setting_cap;
- bool add_pos_cap;
- bool e_utra_fdd_supp;
- bool e_utra_tdd_supp;
- bool e_utra_meas_rep_supp;
- bool prio_resel_supp;
- bool utra_csg_cells_rep;
-
- uint8_t vamos_level;
- uint8_t tighter_capability;
-
- bool sel_ciph_dl_sacch;
-
- uint8_t cs_ps_srvcc_geran_utra;
- uint8_t cs_ps_srvcc_geran_eutra;
-
- bool geran_net_sharing;
- bool e_utra_wb_rsrq_meas_supp;
- bool er_band_support;
- bool utra_mult_band_ind_supp;
- bool e_utra_mult_band_ind_supp;
- bool extended_tsc_set_cap_supp;
- bool extended_earfcn_val_range;
-};
-
struct osmo_gsm48_classmark {
bool classmark1_set;
struct gsm48_classmark1 classmark1;
diff --git a/src/gsm/gsm48_ie.c b/src/gsm/gsm48_ie.c
index e93e2a5c..31028ba4 100644
--- a/src/gsm/gsm48_ie.c
+++ b/src/gsm/gsm48_ie.c
@@ -34,7 +34,6 @@
#include <osmocom/core/msgb.h>
#include <osmocom/gsm/tlv.h>
#include <osmocom/gsm/mncc.h>
-#include <osmocom/core/bitvec.h>
#include <osmocom/gsm/protocol/gsm_04_08.h>
#include <osmocom/gsm/gsm48_ie.h>
@@ -1300,249 +1299,4 @@ int gsm48_decode_freq_list(struct gsm_sysinfo_freq *f, uint8_t *cd,
return 0;
}
-
-/*! Decode 3GPP TS 24.008 Mobile Station Classmark 3 (10.5.1.7).
- * \param[out] classmark3_out user provided memory to store decoded classmark3.
- * \param[in] classmark3 pointer to memory that contains the raw classmark bits.
- * \param[in] classmark3_len length in bytes of the memory where classmark3 points to.
- * \returns 0 on success; negative on error. */
-int gsm48_decode_classmark3(struct gsm48_classmark3 *classmark3_out,
- const uint8_t *classmark3, size_t classmark3_len)
-{
- struct bitvec bv;
- uint8_t data[255];
- struct gsm48_classmark3 *cm3 = classmark3_out;
-
- /* if cm3 gets extended by spec, it will be truncated, but 255 bytes
- * should be more than enough. */
- if (classmark3_len > sizeof(data))
- classmark3_len = sizeof(data);
-
- memset(&bv, 0, sizeof(bv));
- memset(data, 0, sizeof(data));
- memset(classmark3_out, 0, sizeof(*classmark3_out));
-
- memcpy(data, classmark3, classmark3_len);
- bv.data = (uint8_t*) data;
- bv.data_len = sizeof(data);
-
- /* Parse bit vector, see also: 3GPP TS 24.008, section 10.5.1.7 */
- bitvec_get_uint(&bv, 1);
- cm3->mult_band_supp = bitvec_get_uint(&bv, 3);
- switch (cm3->mult_band_supp) {
- case 0x00:
- cm3->a5_bits = bitvec_get_uint(&bv, 4);
- break;
- case 0x05:
- case 0x06:
- cm3->a5_bits = bitvec_get_uint(&bv, 4);
- cm3->assoc_radio_cap_2 = bitvec_get_uint(&bv, 4);
- cm3->assoc_radio_cap_1 = bitvec_get_uint(&bv, 4);
- break;
- case 0x01:
- case 0x02:
- case 0x04:
- cm3->a5_bits = bitvec_get_uint(&bv, 4);
- bitvec_get_uint(&bv, 4);
- cm3->assoc_radio_cap_1 = bitvec_get_uint(&bv, 4);
- break;
- default:
- return -1;
- }
-
- cm3->r_support.present = bitvec_get_uint(&bv, 1);
- if (cm3->r_support.present)
- cm3->r_support.r_gsm_assoc_radio_cap = bitvec_get_uint(&bv, 3);
-
- cm3->hscsd_mult_slot_cap.present = bitvec_get_uint(&bv, 1);
- if (cm3->hscsd_mult_slot_cap.present)
- cm3->hscsd_mult_slot_cap.class = bitvec_get_uint(&bv, 5);
-
- cm3->ucs2_treatment = bitvec_get_uint(&bv, 1);
- cm3->extended_meas_cap = bitvec_get_uint(&bv, 1);
-
- cm3->ms_meas_cap.present = bitvec_get_uint(&bv, 1);
- if (cm3->ms_meas_cap.present) {
- cm3->ms_meas_cap.sms_value = bitvec_get_uint(&bv, 4);
- cm3->ms_meas_cap.sm_value = bitvec_get_uint(&bv, 4);
- }
-
- cm3->ms_pos_method_cap.present = bitvec_get_uint(&bv, 1);
- if (cm3->ms_pos_method_cap.present)
- cm3->ms_pos_method_cap.method = bitvec_get_uint(&bv, 5);
-
- cm3->ecsd_multislot_cap.present = bitvec_get_uint(&bv, 1);
- if (cm3->ecsd_multislot_cap.present)
- cm3->ecsd_multislot_cap.class = bitvec_get_uint(&bv, 5);
-
- cm3->psk8_struct.present = bitvec_get_uint(&bv, 1);
- if (cm3->psk8_struct.present) {
- cm3->psk8_struct.mod_cap = bitvec_get_uint(&bv, 1);
-
- cm3->psk8_struct.rf_pwr_cap_1.present = bitvec_get_uint(&bv, 1);
- if (cm3->psk8_struct.rf_pwr_cap_1.present) {
- cm3->psk8_struct.rf_pwr_cap_1.value =
- bitvec_get_uint(&bv, 2);
- }
-
- cm3->psk8_struct.rf_pwr_cap_2.present = bitvec_get_uint(&bv, 1);
- if (cm3->psk8_struct.rf_pwr_cap_2.present) {
- cm3->psk8_struct.rf_pwr_cap_2.value =
- bitvec_get_uint(&bv, 2);
- }
- }
-
- cm3->gsm_400_bands_supp.present = bitvec_get_uint(&bv, 1);
- if (cm3->gsm_400_bands_supp.present) {
- cm3->gsm_400_bands_supp.value = bitvec_get_uint(&bv, 2);
- if (cm3->gsm_400_bands_supp.value == 0x00)
- return -1;
- cm3->gsm_400_bands_supp.assoc_radio_cap =
- bitvec_get_uint(&bv, 4);
- }
-
- cm3->gsm_850_assoc_radio_cap.present = bitvec_get_uint(&bv, 1);
- if (cm3->gsm_850_assoc_radio_cap.present)
- cm3->gsm_850_assoc_radio_cap.value = bitvec_get_uint(&bv, 4);
-
- cm3->gsm_1900_assoc_radio_cap.present = bitvec_get_uint(&bv, 1);
- if (cm3->gsm_1900_assoc_radio_cap.present)
- cm3->gsm_1900_assoc_radio_cap.value = bitvec_get_uint(&bv, 4);
-
- cm3->umts_fdd_rat_cap = bitvec_get_uint(&bv, 1);
- cm3->umts_tdd_rat_cap = bitvec_get_uint(&bv, 1);
- cm3->cdma200_rat_cap = bitvec_get_uint(&bv, 1);
-
- cm3->dtm_gprs_multislot_cap.present = bitvec_get_uint(&bv, 1);
- if (cm3->dtm_gprs_multislot_cap.present) {
- cm3->dtm_gprs_multislot_cap.class = bitvec_get_uint(&bv, 2);
- cm3->dtm_gprs_multislot_cap.single_slot_dtm =
- bitvec_get_uint(&bv, 1);
- cm3->dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present =
- bitvec_get_uint(&bv, 1);
- if (cm3->dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present)
- cm3->dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.
- class = bitvec_get_uint(&bv, 2);
- }
-
- /* Release 4 starts here. */
- cm3->single_band_supp.present = bitvec_get_uint(&bv, 1);
- if (cm3->single_band_supp.present)
- cm3->single_band_supp.value = bitvec_get_uint(&bv, 4);
-
- cm3->gsm_750_assoc_radio_cap.present = bitvec_get_uint(&bv, 1);
- if (cm3->gsm_750_assoc_radio_cap.present)
- cm3->gsm_750_assoc_radio_cap.value = bitvec_get_uint(&bv, 4);
-
- cm3->umts_1_28_mcps_tdd_rat_cap = bitvec_get_uint(&bv, 1);
- cm3->geran_feature_package = bitvec_get_uint(&bv, 1);
-
- cm3->extended_dtm_gprs_multislot_cap.present = bitvec_get_uint(&bv, 1);
- if (cm3->extended_dtm_gprs_multislot_cap.present) {
- cm3->extended_dtm_gprs_multislot_cap.class =
- bitvec_get_uint(&bv, 2);
- cm3->extended_dtm_gprs_multislot_cap.
- extended_dtm_egprs_multislot_cap.present =
- bitvec_get_uint(&bv, 1);
- if (cm3->extended_dtm_gprs_multislot_cap.
- extended_dtm_egprs_multislot_cap.present)
- cm3->extended_dtm_gprs_multislot_cap.
- extended_dtm_egprs_multislot_cap.class =
- bitvec_get_uint(&bv, 2);
- }
-
- /* Release 5 starts here */
- cm3->high_multislot_cap.present = bitvec_get_uint(&bv, 1);
- if (cm3->high_multislot_cap.present)
- cm3->high_multislot_cap.value = bitvec_get_uint(&bv, 2);
-
- /* This used to be the GERAN Iu mode support bit, but the newer spec
- * releases say that it should not be used (always zero), however
- * we will just ignore tha state of this bit. */
- bitvec_get_uint(&bv, 1);
-
- cm3->geran_feature_package_2 = bitvec_get_uint(&bv, 1);
- cm3->gmsk_multislot_power_prof = bitvec_get_uint(&bv, 2);
- cm3->psk8_multislot_power_prof = bitvec_get_uint(&bv, 2);
-
- /* Release 6 starts here */
- cm3->t_gsm_400_bands_supp.present = bitvec_get_uint(&bv, 1);
- if (cm3->t_gsm_400_bands_supp.present) {
- cm3->t_gsm_400_bands_supp.value = bitvec_get_uint(&bv, 2);
- cm3->t_gsm_400_bands_supp.assoc_radio_cap =
- bitvec_get_uint(&bv, 4);
- }
-
- /* This used to be T-GSM 900 associated radio capability, but the
- * newer spec releases say that this bit should not be used, but if
- * it is used by some MS anyway we must assume that there is data
- * we have to override. */
- if (bitvec_get_uint(&bv, 1))
- bitvec_get_uint(&bv, 4);
-
- cm3->dl_advanced_rx_perf = bitvec_get_uint(&bv, 2);
- cm3->dtm_enhancements_cap = bitvec_get_uint(&bv, 1);
-
- cm3->dtm_gprs_high_multislot_cap.present = bitvec_get_uint(&bv, 1);
- if (cm3->dtm_gprs_high_multislot_cap.present) {
- cm3->dtm_gprs_high_multislot_cap.class =
- bitvec_get_uint(&bv, 3);
- cm3->dtm_gprs_high_multislot_cap.offset_required =
- bitvec_get_uint(&bv, 1);
- cm3->dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.
- present = bitvec_get_uint(&bv, 1);
- if (cm3->dtm_gprs_high_multislot_cap.
- dtm_egprs_high_multislot_cap.present)
- cm3->dtm_gprs_high_multislot_cap.
- dtm_egprs_high_multislot_cap.class =
- bitvec_get_uint(&bv, 3);
- }
-
- cm3->repeated_acch_capability = bitvec_get_uint(&bv, 1);
-
- /* Release 7 starts here */
- cm3->gsm_710_assoc_radio_cap.present = bitvec_get_uint(&bv, 1);
- if (cm3->gsm_710_assoc_radio_cap.present)
- cm3->gsm_710_assoc_radio_cap.value = bitvec_get_uint(&bv, 4);
-
- cm3->t_gsm_810_assoc_radio_cap.present = bitvec_get_uint(&bv, 1);
- if (cm3->t_gsm_810_assoc_radio_cap.present)
- cm3->t_gsm_810_assoc_radio_cap.value = bitvec_get_uint(&bv, 4);
-
- cm3->ciphering_mode_setting_cap = bitvec_get_uint(&bv, 1);
- cm3->add_pos_cap = bitvec_get_uint(&bv, 1);
-
- /* Release 8 starts here */
- cm3->e_utra_fdd_supp = bitvec_get_uint(&bv, 1);
- cm3->e_utra_tdd_supp = bitvec_get_uint(&bv, 1);
- cm3->e_utra_meas_rep_supp = bitvec_get_uint(&bv, 1);
- cm3->prio_resel_supp = bitvec_get_uint(&bv, 1);
-
- /* Release 9 starts here */
- cm3->utra_csg_cells_rep = bitvec_get_uint(&bv, 1);
-
- cm3->vamos_level = bitvec_get_uint(&bv, 2);
-
- /* Release 10 starts here */
- cm3->tighter_capability = bitvec_get_uint(&bv, 2);
- cm3->sel_ciph_dl_sacch = bitvec_get_uint(&bv, 1);
-
- /* Release 11 starts here */
- cm3->cs_ps_srvcc_geran_utra = bitvec_get_uint(&bv, 2);
- cm3->cs_ps_srvcc_geran_eutra = bitvec_get_uint(&bv, 2);
-
- cm3->geran_net_sharing = bitvec_get_uint(&bv, 1);
- cm3->e_utra_wb_rsrq_meas_supp = bitvec_get_uint(&bv, 1);
-
- /* Release 12 starts here */
- cm3->er_band_support = bitvec_get_uint(&bv, 1);
- cm3->utra_mult_band_ind_supp = bitvec_get_uint(&bv, 1);
- cm3->e_utra_mult_band_ind_supp = bitvec_get_uint(&bv, 1);
- cm3->extended_tsc_set_cap_supp = bitvec_get_uint(&bv, 1);
-
- /* Late addition of a release 11 feature */
- cm3->extended_earfcn_val_range = bitvec_get_uint(&bv, 1);
-
- return 0;
-}
/*! @} */
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index f339120c..031cc200 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -339,7 +339,6 @@ gsm48_decode_cccap;
gsm48_decode_connected;
gsm48_decode_facility;
gsm48_decode_freq_list;
-gsm48_decode_classmark3;
gsm48_decode_keypad;
gsm48_decode_lai;
gsm48_decode_notify;
diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c
index 8d774d6f..d2ae6f6c 100644
--- a/tests/gsm0408/gsm0408_test.c
+++ b/tests/gsm0408/gsm0408_test.c
@@ -327,203 +327,6 @@ static void test_lai_encode_decode(void)
}
}
-static void dump_cm3(struct gsm48_classmark3 *cm3)
-{
- printf("mult_band_supp=%02x\n", cm3->mult_band_supp);
- printf("a5_bits=%02x\n", cm3->a5_bits);
- printf("assoc_radio_cap_1=%02x\n", cm3->assoc_radio_cap_1);
- printf("assoc_radio_cap_2=%02x\n", cm3->assoc_radio_cap_2);
- printf("\n");
- printf("r_support.present=%u\n", cm3->r_support.present);
- printf("r_support.r_gsm_assoc_radio_cap=%02x\n",
- cm3->r_support.r_gsm_assoc_radio_cap);
- printf("\n");
- printf("hscsd_mult_slot_cap.present=%u\n",
- cm3->hscsd_mult_slot_cap.present);
- printf("hscsd_mult_slot_cap.class=%02x\n",
- cm3->hscsd_mult_slot_cap.class);
- printf("\n");
- printf("ucs2_treatment=%u\n", cm3->ucs2_treatment);
- printf("extended_meas_cap=%u\n", cm3->extended_meas_cap);
- printf("\n");
- printf("ms_meas_cap.present=%u\n", cm3->ms_meas_cap.present);
- printf("ms_meas_cap.sms_value=%02x\n", cm3->ms_meas_cap.sms_value);
- printf("ms_meas_cap.sm_value=%02x\n", cm3->ms_meas_cap.sm_value);
- printf("\n");
- printf("ms_pos_method_cap.present=%u\n",
- cm3->ms_pos_method_cap.present);
- printf("ms_pos_method_cap.method=%02x\n",
- cm3->ms_pos_method_cap.method);
- printf("\n");
- printf("ecsd_multislot_cap.present=%u\n",
- cm3->ecsd_multislot_cap.present);
- printf("ecsd_multislot_cap.class=%02x\n",
- cm3->ecsd_multislot_cap.class);
- printf("\n");
- printf("psk8_struct.present=%u\n", cm3->psk8_struct.present);
- printf("psk8_struct.mod_cap=%u\n", cm3->psk8_struct.mod_cap);
- printf("psk8_struct.rf_pwr_cap_1.present=%u\n",
- cm3->psk8_struct.rf_pwr_cap_1.present);
- printf("psk8_struct.rf_pwr_cap_1.value=%02x\n",
- cm3->psk8_struct.rf_pwr_cap_1.value);
- printf("psk8_struct.rf_pwr_cap_2.present=%u\n",
- cm3->psk8_struct.rf_pwr_cap_2.present);
- printf("psk8_struct.rf_pwr_cap_2.value=%02x\n",
- cm3->psk8_struct.rf_pwr_cap_2.value);
- printf("\n");
- printf("gsm_400_bands_supp.present=%u\n",
- cm3->gsm_400_bands_supp.present);
- printf("gsm_400_bands_supp.value=%02x\n",
- cm3->gsm_400_bands_supp.value);
- printf("gsm_400_bands_supp.assoc_radio_cap=%02x\n",
- cm3->gsm_400_bands_supp.assoc_radio_cap);
- printf("\n");
- printf("gsm_850_assoc_radio_cap.present=%u\n",
- cm3->gsm_850_assoc_radio_cap.present);
- printf("gsm_850_assoc_radio_cap.value=%02x\n",
- cm3->gsm_850_assoc_radio_cap.value);
- printf("\n");
- printf("gsm_1900_assoc_radio_cap.present=%u\n",
- cm3->gsm_1900_assoc_radio_cap.present);
- printf("gsm_1900_assoc_radio_cap.value=%02x\n",
- cm3->gsm_1900_assoc_radio_cap.value);
- printf("\n");
- printf("umts_fdd_rat_cap=%u\n", cm3->umts_fdd_rat_cap);
- printf("umts_tdd_rat_cap=%u\n", cm3->umts_tdd_rat_cap);
- printf("cdma200_rat_cap=%u\n", cm3->cdma200_rat_cap);
- printf("\n");
- printf("dtm_gprs_multislot_cap.present=%u\n",
- cm3->dtm_gprs_multislot_cap.present);
- printf("dtm_gprs_multislot_cap.class=%02x\n",
- cm3->dtm_gprs_multislot_cap.class);
- printf("dtm_gprs_multislot_cap.single_slot_dtm=%u\n",
- cm3->dtm_gprs_multislot_cap.single_slot_dtm);
- printf("dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=%u\n",
- cm3->dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present);
- printf("dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.class=%02x\n",
- cm3->dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.class);
- printf("\n");
- printf("single_band_supp.present=%u\n", cm3->single_band_supp.present);
- printf("single_band_supp.value=%u\n", cm3->single_band_supp.value);
- printf("\n");
- printf("gsm_750_assoc_radio_cap.present=%u\n",
- cm3->gsm_750_assoc_radio_cap.present);
- printf("gsm_750_assoc_radio_cap.value=%02x\n",
- cm3->gsm_750_assoc_radio_cap.value);
- printf("\n");
- printf("umts_1_28_mcps_tdd_rat_cap=%u\n",
- cm3->umts_1_28_mcps_tdd_rat_cap);
- printf("geran_feature_package=%u\n", cm3->geran_feature_package);
- printf("\n");
- printf("extended_dtm_gprs_multislot_cap.present=%u\n",
- cm3->extended_dtm_gprs_multislot_cap.present);
- printf("extended_dtm_gprs_multislot_cap.class=%02x\n",
- cm3->extended_dtm_gprs_multislot_cap.class);
- printf
- ("extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=%u\n",
- cm3->extended_dtm_gprs_multislot_cap.
- extended_dtm_egprs_multislot_cap.present);
- printf
- ("extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.class=%02x\n",
- cm3->extended_dtm_gprs_multislot_cap.
- extended_dtm_egprs_multislot_cap.class);
- printf("\n");
- printf("high_multislot_cap.present=%u\n",
- cm3->high_multislot_cap.present);
- printf("high_multislot_cap.value=%02x\n",
- cm3->high_multislot_cap.value);
- printf("\n");
- printf("geran_feature_package_2=%u\n", cm3->geran_feature_package_2);
- printf("gmsk_multislot_power_prof=%02x\n",
- cm3->gmsk_multislot_power_prof);
- printf("psk8_multislot_power_prof=%02x\n",
- cm3->psk8_multislot_power_prof);
- printf("\n");
- printf("t_gsm_400_bands_supp.present=%u\n",
- cm3->t_gsm_400_bands_supp.present);
- printf("t_gsm_400_bands_supp.value=%02x\n",
- cm3->t_gsm_400_bands_supp.value);
- printf("t_gsm_400_bands_supp.assoc_radio_cap=%02x\n",
- cm3->t_gsm_400_bands_supp.assoc_radio_cap);
- printf("\n");
- printf("dl_advanced_rx_perf=%02x\n", cm3->dl_advanced_rx_perf);
- printf("dtm_enhancements_cap=%u\n", cm3->dtm_enhancements_cap);
- printf("\n");
- printf("dtm_gprs_high_multislot_cap.present=%u\n",
- cm3->dtm_gprs_high_multislot_cap.present);
- printf("dtm_gprs_high_multislot_cap.class=%02x\n",
- cm3->dtm_gprs_high_multislot_cap.class);
- printf("dtm_gprs_high_multislot_cap.offset_required=%u\n",
- cm3->dtm_gprs_high_multislot_cap.offset_required);
- printf
- ("dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.present=%u\n",
- cm3->dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.
- present);
- printf
- ("dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.class=%02x\n",
- cm3->dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.
- class);
- printf("\n");
- printf("repeated_acch_capability=%u\n", cm3->repeated_acch_capability);
- printf("\n");
- printf("gsm_710_assoc_radio_cap.present=%u\n",
- cm3->gsm_710_assoc_radio_cap.present);
- printf("gsm_710_assoc_radio_cap.value=%02x\n",
- cm3->gsm_710_assoc_radio_cap.value);
- printf("\n");
- printf("t_gsm_810_assoc_radio_cap.present=%u\n",
- cm3->t_gsm_810_assoc_radio_cap.present);
- printf("t_gsm_810_assoc_radio_cap.value=%02x\n",
- cm3->t_gsm_810_assoc_radio_cap.value);
- printf("\n");
- printf("ciphering_mode_setting_cap=%u\n",
- cm3->ciphering_mode_setting_cap);
- printf("add_pos_cap=%u\n", cm3->add_pos_cap);
- printf("e_utra_fdd_supp=%u\n", cm3->e_utra_fdd_supp);
- printf("e_utra_tdd_supp=%u\n", cm3->e_utra_tdd_supp);
- printf("e_utra_meas_rep_supp=%u\n", cm3->e_utra_meas_rep_supp);
- printf("prio_resel_supp=%u\n", cm3->prio_resel_supp);
- printf("utra_csg_cells_rep=%u\n", cm3->utra_csg_cells_rep);
- printf("vamos_level=%02x\n", cm3->vamos_level);
- printf("tighter_capability=%02x\n", cm3->tighter_capability);
- printf("sel_ciph_dl_sacch=%u\n", cm3->sel_ciph_dl_sacch);
- printf("cs_ps_srvcc_geran_utra=%02x\n", cm3->cs_ps_srvcc_geran_utra);
- printf("cs_ps_srvcc_geran_eutra=%02x\n", cm3->cs_ps_srvcc_geran_eutra);
- printf("geran_net_sharing=%u\n", cm3->geran_net_sharing);
- printf("e_utra_wb_rsrq_meas_supp=%u\n", cm3->e_utra_wb_rsrq_meas_supp);
- printf("er_band_support=%u\n", cm3->er_band_support);
- printf("utra_mult_band_ind_supp=%u\n", cm3->utra_mult_band_ind_supp);
- printf("e_utra_mult_band_ind_supp=%u\n",
- cm3->e_utra_mult_band_ind_supp);
- printf("extended_tsc_set_cap_supp=%u\n",
- cm3->extended_tsc_set_cap_supp);
- printf("extended_earfcn_val_range=%u\n",
- cm3->extended_earfcn_val_range);
-}
-
-static void test_decode_classmark3(void)
-{
- struct gsm48_classmark3 cm3;
- const uint8_t cm3_1[] = { 0x60, 0x14, 0x04, 0x2f, 0x65, 0x00, 0x20, 0x03, 0x40, 0x4a };
- const uint8_t cm3_2[] = { 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
- const uint8_t cm3_3[] = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa};
-
- printf("=====cm3_1=====\n");
- gsm48_decode_classmark3(&cm3, cm3_1, sizeof(cm3_1));
- dump_cm3(&cm3);
- printf("\n");
-
- printf("=====cm3_2=====\n");
- gsm48_decode_classmark3(&cm3, cm3_2, sizeof(cm3_2));
- dump_cm3(&cm3);
- printf("\n");
-
- printf("=====cm3_3=====\n");
- gsm48_decode_classmark3(&cm3, cm3_3, sizeof(cm3_3));
- dump_cm3(&cm3);
- printf("\n");
-}
-
static void test_mid_from_tmsi(void)
{
static const uint8_t res[] = { 0x17, 0x05, 0xf4, 0xaa, 0xbb, 0xcc, 0xdd };
@@ -1747,7 +1550,6 @@ int main(int argc, char **argv)
test_bcd_number_encode_decode();
test_ra_cap();
test_lai_encode_decode();
- test_decode_classmark3();
test_si_range_helpers();
test_arfcn_filter();
diff --git a/tests/gsm0408/gsm0408_test.ok b/tests/gsm0408/gsm0408_test.ok
index 709c2a7c..3e6ae1f4 100644
--- a/tests/gsm0408/gsm0408_test.ok
+++ b/tests/gsm0408/gsm0408_test.ok
@@ -385,348 +385,6 @@ RA test...passed
Encoded 21 63 54 00 17
gsm48_decode_lai2() gives 123-456-23 (3-digit MNC)
passed
-=====cm3_1=====
-mult_band_supp=06
-a5_bits=00
-assoc_radio_cap_1=04
-assoc_radio_cap_2=01
-
-r_support.present=0
-r_support.r_gsm_assoc_radio_cap=00
-
-hscsd_mult_slot_cap.present=0
-hscsd_mult_slot_cap.class=00
-
-ucs2_treatment=0
-extended_meas_cap=0
-
-ms_meas_cap.present=0
-ms_meas_cap.sms_value=00
-ms_meas_cap.sm_value=00
-
-ms_pos_method_cap.present=1
-ms_pos_method_cap.method=01
-
-ecsd_multislot_cap.present=0
-ecsd_multislot_cap.class=00
-
-psk8_struct.present=1
-psk8_struct.mod_cap=1
-psk8_struct.rf_pwr_cap_1.present=1
-psk8_struct.rf_pwr_cap_1.value=02
-psk8_struct.rf_pwr_cap_2.present=1
-psk8_struct.rf_pwr_cap_2.value=02
-
-gsm_400_bands_supp.present=0
-gsm_400_bands_supp.value=00
-gsm_400_bands_supp.assoc_radio_cap=00
-
-gsm_850_assoc_radio_cap.present=1
-gsm_850_assoc_radio_cap.value=04
-
-gsm_1900_assoc_radio_cap.present=0
-gsm_1900_assoc_radio_cap.value=00
-
-umts_fdd_rat_cap=0
-umts_tdd_rat_cap=0
-cdma200_rat_cap=0
-
-dtm_gprs_multislot_cap.present=0
-dtm_gprs_multislot_cap.class=00
-dtm_gprs_multislot_cap.single_slot_dtm=0
-dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=0
-dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.class=00
-
-single_band_supp.present=0
-single_band_supp.value=0
-
-gsm_750_assoc_radio_cap.present=0
-gsm_750_assoc_radio_cap.value=00
-
-umts_1_28_mcps_tdd_rat_cap=0
-geran_feature_package=1
-
-extended_dtm_gprs_multislot_cap.present=0
-extended_dtm_gprs_multislot_cap.class=00
-extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=0
-extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.class=00
-
-high_multislot_cap.present=0
-high_multislot_cap.value=00
-
-geran_feature_package_2=0
-gmsk_multislot_power_prof=00
-psk8_multislot_power_prof=00
-
-t_gsm_400_bands_supp.present=0
-t_gsm_400_bands_supp.value=00
-t_gsm_400_bands_supp.assoc_radio_cap=00
-
-dl_advanced_rx_perf=01
-dtm_enhancements_cap=1
-
-dtm_gprs_high_multislot_cap.present=0
-dtm_gprs_high_multislot_cap.class=00
-dtm_gprs_high_multislot_cap.offset_required=0
-dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.present=0
-dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.class=00
-
-repeated_acch_capability=1
-
-gsm_710_assoc_radio_cap.present=0
-gsm_710_assoc_radio_cap.value=00
-
-t_gsm_810_assoc_radio_cap.present=0
-t_gsm_810_assoc_radio_cap.value=00
-
-ciphering_mode_setting_cap=0
-add_pos_cap=0
-e_utra_fdd_supp=0
-e_utra_tdd_supp=0
-e_utra_meas_rep_supp=0
-prio_resel_supp=1
-utra_csg_cells_rep=0
-vamos_level=01
-tighter_capability=01
-sel_ciph_dl_sacch=0
-cs_ps_srvcc_geran_utra=00
-cs_ps_srvcc_geran_eutra=00
-geran_net_sharing=0
-e_utra_wb_rsrq_meas_supp=0
-er_band_support=0
-utra_mult_band_ind_supp=0
-e_utra_mult_band_ind_supp=0
-extended_tsc_set_cap_supp=0
-extended_earfcn_val_range=0
-
-=====cm3_2=====
-mult_band_supp=05
-a5_bits=05
-assoc_radio_cap_1=05
-assoc_radio_cap_2=05
-
-r_support.present=0
-r_support.r_gsm_assoc_radio_cap=00
-
-hscsd_mult_slot_cap.present=1
-hscsd_mult_slot_cap.class=0a
-
-ucs2_treatment=1
-extended_meas_cap=0
-
-ms_meas_cap.present=1
-ms_meas_cap.sms_value=05
-ms_meas_cap.sm_value=05
-
-ms_pos_method_cap.present=0
-ms_pos_method_cap.method=00
-
-ecsd_multislot_cap.present=1
-ecsd_multislot_cap.class=0a
-
-psk8_struct.present=1
-psk8_struct.mod_cap=0
-psk8_struct.rf_pwr_cap_1.present=1
-psk8_struct.rf_pwr_cap_1.value=01
-psk8_struct.rf_pwr_cap_2.present=0
-psk8_struct.rf_pwr_cap_2.value=00
-
-gsm_400_bands_supp.present=1
-gsm_400_bands_supp.value=01
-gsm_400_bands_supp.assoc_radio_cap=05
-
-gsm_850_assoc_radio_cap.present=0
-gsm_850_assoc_radio_cap.value=00
-
-gsm_1900_assoc_radio_cap.present=1
-gsm_1900_assoc_radio_cap.value=05
-
-umts_fdd_rat_cap=0
-umts_tdd_rat_cap=1
-cdma200_rat_cap=0
-
-dtm_gprs_multislot_cap.present=1
-dtm_gprs_multislot_cap.class=01
-dtm_gprs_multislot_cap.single_slot_dtm=0
-dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=1
-dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.class=01
-
-single_band_supp.present=0
-single_band_supp.value=0
-
-gsm_750_assoc_radio_cap.present=1
-gsm_750_assoc_radio_cap.value=05
-
-umts_1_28_mcps_tdd_rat_cap=0
-geran_feature_package=1
-
-extended_dtm_gprs_multislot_cap.present=0
-extended_dtm_gprs_multislot_cap.class=00
-extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=0
-extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.class=00
-
-high_multislot_cap.present=1
-high_multislot_cap.value=01
-
-geran_feature_package_2=1
-gmsk_multislot_power_prof=01
-psk8_multislot_power_prof=01
-
-t_gsm_400_bands_supp.present=0
-t_gsm_400_bands_supp.value=00
-t_gsm_400_bands_supp.assoc_radio_cap=00
-
-dl_advanced_rx_perf=01
-dtm_enhancements_cap=0
-
-dtm_gprs_high_multislot_cap.present=1
-dtm_gprs_high_multislot_cap.class=02
-dtm_gprs_high_multislot_cap.offset_required=1
-dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.present=0
-dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.class=00
-
-repeated_acch_capability=1
-
-gsm_710_assoc_radio_cap.present=0
-gsm_710_assoc_radio_cap.value=00
-
-t_gsm_810_assoc_radio_cap.present=1
-t_gsm_810_assoc_radio_cap.value=05
-
-ciphering_mode_setting_cap=0
-add_pos_cap=1
-e_utra_fdd_supp=0
-e_utra_tdd_supp=0
-e_utra_meas_rep_supp=0
-prio_resel_supp=0
-utra_csg_cells_rep=0
-vamos_level=00
-tighter_capability=00
-sel_ciph_dl_sacch=0
-cs_ps_srvcc_geran_utra=00
-cs_ps_srvcc_geran_eutra=00
-geran_net_sharing=0
-e_utra_wb_rsrq_meas_supp=0
-er_band_support=0
-utra_mult_band_ind_supp=0
-e_utra_mult_band_ind_supp=0
-extended_tsc_set_cap_supp=0
-extended_earfcn_val_range=0
-
-=====cm3_3=====
-mult_band_supp=02
-a5_bits=0a
-assoc_radio_cap_1=0a
-assoc_radio_cap_2=00
-
-r_support.present=1
-r_support.r_gsm_assoc_radio_cap=02
-
-hscsd_mult_slot_cap.present=1
-hscsd_mult_slot_cap.class=0a
-
-ucs2_treatment=1
-extended_meas_cap=0
-
-ms_meas_cap.present=1
-ms_meas_cap.sms_value=05
-ms_meas_cap.sm_value=05
-
-ms_pos_method_cap.present=0
-ms_pos_method_cap.method=00
-
-ecsd_multislot_cap.present=1
-ecsd_multislot_cap.class=0a
-
-psk8_struct.present=1
-psk8_struct.mod_cap=0
-psk8_struct.rf_pwr_cap_1.present=1
-psk8_struct.rf_pwr_cap_1.value=01
-psk8_struct.rf_pwr_cap_2.present=0
-psk8_struct.rf_pwr_cap_2.value=00
-
-gsm_400_bands_supp.present=1
-gsm_400_bands_supp.value=01
-gsm_400_bands_supp.assoc_radio_cap=05
-
-gsm_850_assoc_radio_cap.present=0
-gsm_850_assoc_radio_cap.value=00
-
-gsm_1900_assoc_radio_cap.present=1
-gsm_1900_assoc_radio_cap.value=05
-
-umts_fdd_rat_cap=0
-umts_tdd_rat_cap=1
-cdma200_rat_cap=0
-
-dtm_gprs_multislot_cap.present=1
-dtm_gprs_multislot_cap.class=01
-dtm_gprs_multislot_cap.single_slot_dtm=0
-dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=1
-dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.class=01
-
-single_band_supp.present=0
-single_band_supp.value=0
-
-gsm_750_assoc_radio_cap.present=1
-gsm_750_assoc_radio_cap.value=05
-
-umts_1_28_mcps_tdd_rat_cap=0
-geran_feature_package=1
-
-extended_dtm_gprs_multislot_cap.present=0
-extended_dtm_gprs_multislot_cap.class=00
-extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.present=0
-extended_dtm_gprs_multislot_cap.dtm_egprs_multislot_cap.class=00
-
-high_multislot_cap.present=1
-high_multislot_cap.value=01
-
-geran_feature_package_2=1
-gmsk_multislot_power_prof=01
-psk8_multislot_power_prof=01
-
-t_gsm_400_bands_supp.present=0
-t_gsm_400_bands_supp.value=00
-t_gsm_400_bands_supp.assoc_radio_cap=00
-
-dl_advanced_rx_perf=01
-dtm_enhancements_cap=0
-
-dtm_gprs_high_multislot_cap.present=1
-dtm_gprs_high_multislot_cap.class=02
-dtm_gprs_high_multislot_cap.offset_required=1
-dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.present=0
-dtm_gprs_high_multislot_cap.dtm_egprs_high_multislot_cap.class=00
-
-repeated_acch_capability=1
-
-gsm_710_assoc_radio_cap.present=0
-gsm_710_assoc_radio_cap.value=00
-
-t_gsm_810_assoc_radio_cap.present=1
-t_gsm_810_assoc_radio_cap.value=04
-
-ciphering_mode_setting_cap=0
-add_pos_cap=0
-e_utra_fdd_supp=0
-e_utra_tdd_supp=0
-e_utra_meas_rep_supp=0
-prio_resel_supp=0
-utra_csg_cells_rep=0
-vamos_level=00
-tighter_capability=00
-sel_ciph_dl_sacch=0
-cs_ps_srvcc_geran_utra=00
-cs_ps_srvcc_geran_eutra=00
-geran_net_sharing=0
-e_utra_wb_rsrq_meas_supp=0
-er_band_support=0
-utra_mult_band_ind_supp=0
-e_utra_mult_band_ind_supp=0
-extended_tsc_set_cap_supp=0
-extended_earfcn_val_range=0
-
Element is: 2 => freqs[i] = 121
Element is: 2 => freqs[i] = 1
Element is: 0 => freqs[i] = 68