From c2118940aaf15967ec33061a40b50f4a6e2f0ecf Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Wed, 11 Nov 2020 23:10:00 +0100 Subject: 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 --- include/osmocom/gsm/gsm48_ie.h | 4 - include/osmocom/gsm/protocol/gsm_04_08.h | 169 --------------- src/gsm/gsm48_ie.c | 246 ---------------------- src/gsm/libosmogsm.map | 1 - tests/gsm0408/gsm0408_test.c | 198 ------------------ tests/gsm0408/gsm0408_test.ok | 342 ------------------------------- 6 files changed, 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 #include #include -#include #include #include @@ -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 -- cgit v1.2.3