diff options
Diffstat (limited to 'asn1/lte-rrc/lte-rrc.cnf')
-rw-r--r-- | asn1/lte-rrc/lte-rrc.cnf | 242 |
1 files changed, 145 insertions, 97 deletions
diff --git a/asn1/lte-rrc/lte-rrc.cnf b/asn1/lte-rrc/lte-rrc.cnf index c1c50e526b..f233e2a2b6 100644 --- a/asn1/lte-rrc/lte-rrc.cnf +++ b/asn1/lte-rrc/lte-rrc.cnf @@ -82,13 +82,14 @@ SI-OrPSI-GERAN TYPE_PREFIX } #.FN_BODY UE-CapabilityRAT-Container - actx->private_data = NULL; + /* Since storing value+1, this effectively unsets this field */ + private_data_set_rat_type(actx, 0); %(DEFAULT_BODY)s #.FN_BODY RAT-Type VAL_PTR = &rat_type guint32 rat_type; %(DEFAULT_BODY)s - actx->private_data = GUINT_TO_POINTER(rat_type+1); + private_data_set_rat_type(actx, rat_type+1); #RAT-Type ::= ENUMERATED { # eutra, utra, geran-cs, geran-ps, cdma2000-1XRTT, @@ -126,8 +127,8 @@ if(ue_cap_tvb){ proto_tree *subtree, *subtree2; guint8 byte; subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_UE_CapabilityRAT_Container); - if (actx->private_data) { - switch(GPOINTER_TO_UINT(actx->private_data)-1){ + if (private_data_get_rat_type(actx)) { + switch(private_data_get_rat_type(actx)-1){ case RAT_Type_eutra: /* eutra */ dissect_lte_rrc_UE_EUTRA_Capability_PDU(ue_cap_tvb, actx->pinfo, subtree, NULL); @@ -173,7 +174,8 @@ if(ue_cap_tvb){ default: break; } - actx->private_data = NULL; + /* Unset again */ + private_data_set_rat_type(actx, 0); } } @@ -226,13 +228,14 @@ if(ue_cap_tvb){ } #.FN_BODY Handover - actx->private_data = NULL; + /* Initialise to invalid value */ + private_data_set_rat_type(actx, 0); %(DEFAULT_BODY)s #.FN_BODY Handover/targetRAT-Type VAL_PTR = &target_rat_type guint32 target_rat_type; %(DEFAULT_BODY)s - actx->private_data = GUINT_TO_POINTER(target_rat_type+1); + private_data_set_rat_target_type(actx, target_rat_type+1); #.FN_BODY Handover/targetRAT-MessageContainer VAL_PTR = &target_rat_msg_cont_tvb tvbuff_t *target_rat_msg_cont_tvb = NULL; @@ -241,8 +244,8 @@ if(ue_cap_tvb){ guint8 byte; proto_tree *subtree; subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_targetRAT_MessageContainer); - if (actx->private_data) { - switch(GPOINTER_TO_UINT(actx->private_data)-1){ + if (private_data_get_rat_target_type(actx)) { + switch (private_data_get_rat_target_type(actx)-1){ case T_targetRAT_Type_utra: /* utra */ if (rrc_irat_ho_to_utran_cmd_handle) @@ -270,7 +273,8 @@ if(ue_cap_tvb){ default: break; } - actx->private_data = NULL; + /* Unset again */ + private_data_set_rat_target_type(actx, 0); } } @@ -301,10 +305,10 @@ if(ue_cap_tvb){ #.FN_BODY SI-OrPSI-GERAN VAL_PTR = &si_or_psi_geran guint32 si_or_psi_geran; %(DEFAULT_BODY)s - actx->private_data = GUINT_TO_POINTER(si_or_psi_geran+1); + private_data_set_si_or_psi_geran(actx, si_or_psi_geran+1); #.FN_BODY CellInfoGERAN-r9 - actx->private_data = GUINT_TO_POINTER(SI_OrPSI_GERAN_si+1); /* SI message */ + private_data_set_si_or_psi_geran(actx, SI_OrPSI_GERAN_si+1); /* SI message */ %(DEFAULT_BODY)s #.FN_BODY SystemInfoListGERAN/_item VAL_PTR = &sys_info_list_tvb @@ -313,8 +317,8 @@ if(ue_cap_tvb){ %(DEFAULT_BODY)s if (sys_info_list_tvb) { subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_siPsiSibContainer); - if (actx->private_data) { - switch (GPOINTER_TO_UINT(actx->private_data)-1) { + if (private_data_get_si_or_psi_geran(actx)) { + switch (private_data_get_si_or_psi_geran(actx)-1) { case SI_OrPSI_GERAN_si: /* SI message */ if (gsm_a_dtap_handle) { @@ -330,7 +334,8 @@ if(ue_cap_tvb){ default: break; } - actx->private_data = NULL; + /* Unset value */ + private_data_set_si_or_psi_geran(actx, 0); } } @@ -542,7 +547,7 @@ SystemInformationBlockType11/messageIdentifier TYPE=FT_UINT16 DISPLAY=BASE_DEC|B #.FN_FTR SystemInformationBlockType11/messageIdentifier if (msg_id_tvb) { - actx->private_data = GUINT_TO_POINTER(tvb_get_ntohs(msg_id_tvb, 0) << 16); + private_data_set_message_identifier(actx, tvb_get_ntohs(msg_id_tvb, 0) << 16); actx->created_item = proto_tree_add_item(tree, hf_index, msg_id_tvb, 0, 2, ENC_BIG_ENDIAN); } @@ -553,7 +558,8 @@ SystemInformationBlockType11/messageIdentifier TYPE=FT_UINT16 DISPLAY=BASE_DEC|B #.FN_FTR SystemInformationBlockType11/serialNumber if (serial_nb_tvb) { proto_tree *subtree; - actx->private_data = GUINT_TO_POINTER(GPOINTER_TO_UINT(actx->private_data) | tvb_get_ntohs(serial_nb_tvb, 0)); + private_data_set_message_identifier(actx, + private_data_get_message_identifier(actx) | tvb_get_ntohs(serial_nb_tvb, 0)); subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_serialNumber); proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_gs, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN); proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_msg_code, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN); @@ -570,7 +576,7 @@ SystemInformationBlockType11/messageIdentifier TYPE=FT_UINT16 DISPLAY=BASE_DEC|B guint32 dataCodingScheme; subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_dataCodingScheme); dataCodingScheme = dissect_cbs_data_coding_scheme(data_coding_scheme_tvb, actx->pinfo, subtree, 0); - g_hash_table_insert(lte_rrc_etws_cmas_dcs_hash, actx->private_data, + g_hash_table_insert(lte_rrc_etws_cmas_dcs_hash, GUINT_TO_POINTER((guint)private_data_get_message_identifier(actx)), GUINT_TO_POINTER(dataCodingScheme)); } @@ -580,7 +586,7 @@ SystemInformationBlockType11/messageIdentifier TYPE=FT_UINT16 DISPLAY=BASE_DEC|B %(DEFAULT_BODY)s #.FN_FTR SystemInformationBlockType11/warningMessageSegment - p_dcs = g_hash_table_lookup(lte_rrc_etws_cmas_dcs_hash, actx->private_data); + p_dcs = g_hash_table_lookup(lte_rrc_etws_cmas_dcs_hash, GUINT_TO_POINTER((guint)private_data_get_message_identifier(actx))); if (warning_msg_seg_tvb && p_dcs) { proto_tree *subtree; subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_warningMessageSegment); @@ -596,7 +602,7 @@ SystemInformationBlockType12-r9/messageIdentifier-r9 TYPE=FT_UINT16 DISPLAY=BASE #.FN_FTR SystemInformationBlockType12-r9/messageIdentifier-r9 if (msg_id_tvb) { - actx->private_data = GUINT_TO_POINTER(tvb_get_ntohs(msg_id_tvb, 0) << 16); + private_data_set_message_identifier(actx, tvb_get_ntohs(msg_id_tvb, 0) << 16); actx->created_item = proto_tree_add_item(tree, hf_index, msg_id_tvb, 0, 2, ENC_BIG_ENDIAN); } @@ -607,7 +613,8 @@ SystemInformationBlockType12-r9/messageIdentifier-r9 TYPE=FT_UINT16 DISPLAY=BASE #.FN_FTR SystemInformationBlockType12-r9/serialNumber-r9 if (serial_nb_tvb) { proto_tree *subtree; - actx->private_data = GUINT_TO_POINTER(GPOINTER_TO_UINT(actx->private_data) | tvb_get_ntohs(serial_nb_tvb, 0)); + private_data_set_message_identifier(actx, + private_data_get_message_identifier(actx) | tvb_get_ntohs(serial_nb_tvb, 0)); subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_serialNumber); proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_gs, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN); proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_msg_code, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN); @@ -624,7 +631,7 @@ SystemInformationBlockType12-r9/messageIdentifier-r9 TYPE=FT_UINT16 DISPLAY=BASE guint32 dataCodingScheme; subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_dataCodingScheme); dataCodingScheme = dissect_cbs_data_coding_scheme(data_coding_scheme_tvb, actx->pinfo, subtree, 0); - g_hash_table_insert(lte_rrc_etws_cmas_dcs_hash, actx->private_data, + g_hash_table_insert(lte_rrc_etws_cmas_dcs_hash, GUINT_TO_POINTER((guint)private_data_get_message_identifier(actx)), GUINT_TO_POINTER(dataCodingScheme)); } @@ -634,7 +641,7 @@ SystemInformationBlockType12-r9/messageIdentifier-r9 TYPE=FT_UINT16 DISPLAY=BASE %(DEFAULT_BODY)s #.FN_FTR SystemInformationBlockType12-r9/warningMessageSegment-r9 - p_dcs = g_hash_table_lookup(lte_rrc_etws_cmas_dcs_hash, actx->private_data); + p_dcs = g_hash_table_lookup(lte_rrc_etws_cmas_dcs_hash, GUINT_TO_POINTER((guint)private_data_get_message_identifier(actx))); if (warning_msg_seg_tvb && p_dcs) { proto_tree *subtree; subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_warningMessageSegment); @@ -743,6 +750,19 @@ CQI-ReportConfig-r10/nomPDSCH-RS-EPRE-Offset STRINGS=VALS(lte_rrc_nomPDSCH_RS_EP #.TYPE_ATTR CQI-ReportConfigSCell-r10/nomPDSCH-RS-EPRE-Offset-r10 STRINGS=VALS(lte_rrc_nomPDSCH_RS_EPRE_Offset_vals) +#.FN_BODY MAC-MainConfig + /* Accumulate values in drx_config while dissecting DRX config. + Do this here rather than down in DRX-Config so that we will see + fields overwritten in the R11 extension */ + drx_config_t *drx_config = private_data_get_drx_config(actx); +%(DEFAULT_BODY)s + /* Verify that config is valid */ + if (drx_config->configured) { + drx_check_config_sane(drx_config, actx); + drx_config->configured = FALSE; + } + + #.FN_BODY MAC-MainConfig/eag_1/sr-ProhibitTimer-r9 VAL_PTR=&timer guint32 timer; %(DEFAULT_BODY)s @@ -1176,10 +1196,9 @@ SoundingRS-UL-ConfigDedicated/setup/duration STRINGS=TFS(<e_rrc_duration_val) #.FN_BODY DRB-ToAddMod struct mac_lte_info *p_mac_lte_info; - /* Clear out the struct */ - static drb_mapping_t drb_mapping; - memset(&drb_mapping, 0, sizeof(drb_mapping)); - actx->private_data = (void*)&drb_mapping; + /* Get the struct and clear it out */ + drb_mapping_t *drb_mapping = private_data_get_drb_mapping(actx); + memset(drb_mapping, 0, sizeof(drb_mapping)); %(DEFAULT_BODY)s /* Need UE identifier */ p_mac_lte_info = (mac_lte_info *)p_get_proto_data(actx->pinfo->fd, proto_mac_lte, 0); @@ -1187,18 +1206,17 @@ SoundingRS-UL-ConfigDedicated/setup/duration STRINGS=TFS(<e_rrc_duration_val) return offset; } else { - drb_mapping.ueid = p_mac_lte_info->ueid; + drb_mapping->ueid = p_mac_lte_info->ueid; } /* Tell MAC about this mapping */ - set_mac_lte_channel_mapping(&drb_mapping); - /* Clear out struct again, just in case */ + set_mac_lte_channel_mapping(drb_mapping); /* Also tell RLC how many PDCP sequence number bits */ - if (drb_mapping.pdcp_sn_size_present) { - set_rlc_lte_drb_pdcp_seqnum_length(drb_mapping.ueid, - drb_mapping.drbid, - drb_mapping.pdcp_sn_size); + if (drb_mapping->pdcp_sn_size_present) { + set_rlc_lte_drb_pdcp_seqnum_length(drb_mapping->ueid, + drb_mapping->drbid, + drb_mapping->pdcp_sn_size); } /* Clear out the struct again */ @@ -1207,78 +1225,87 @@ SoundingRS-UL-ConfigDedicated/setup/duration STRINGS=TFS(<e_rrc_duration_val) #.FN_BODY DRB-Identity VAL_PTR=&value guint32 value; + drb_mapping_t *mapping = private_data_get_drb_mapping(actx); %(DEFAULT_BODY)s - if (actx->private_data != NULL) { - ((drb_mapping_t*)actx->private_data)->drbid = (guint8)value; + if (mapping != NULL) { + mapping->drbid = (guint8)value; } #.FN_BODY RLC-Config VAL_PTR=&value guint32 value; + drb_mapping_t *mapping = private_data_get_drb_mapping(actx); %(DEFAULT_BODY)s - if (actx->private_data != NULL) { - ((drb_mapping_t*)actx->private_data)->rlcMode = (value==0) ? RLC_AM_MODE : RLC_UM_MODE; - ((drb_mapping_t*)actx->private_data)->rlcMode_present = TRUE; + if (mapping != NULL) { + mapping->rlcMode = (value==0) ? RLC_AM_MODE : RLC_UM_MODE; + mapping->rlcMode_present = TRUE; - if (((drb_mapping_t*)actx->private_data)->rlcMode == RLC_AM_MODE) { - ((drb_mapping_t*)actx->private_data)->pdcp_sn_size = 12; - ((drb_mapping_t*)actx->private_data)->pdcp_sn_size_present = TRUE; + if (mapping->rlcMode == RLC_AM_MODE) { + mapping->pdcp_sn_size = 12; + mapping->pdcp_sn_size_present = TRUE; } } #.FN_BODY DRB-ToAddMod/logicalChannelIdentity VAL_PTR=&value guint32 value; + drb_mapping_t *mapping = private_data_get_drb_mapping(actx); %(DEFAULT_BODY)s - if (actx->private_data != NULL) { - ((drb_mapping_t*)actx->private_data)->lcid = (guint8)value; - ((drb_mapping_t*)actx->private_data)->lcid_present = TRUE; + if (mapping != NULL) { + mapping->lcid = (guint8)value; + mapping->lcid_present = TRUE; } #.FN_BODY SN-FieldLength VAL_PTR=&value guint32 value; + drb_mapping_t *mapping = private_data_get_drb_mapping(actx); %(DEFAULT_BODY)s - if (actx->private_data != NULL) { - ((drb_mapping_t*)actx->private_data)->um_sn_length = (value==0) ? 5 : 10; - ((drb_mapping_t*)actx->private_data)->um_sn_length_present = TRUE; + if (mapping != NULL) { + mapping->um_sn_length = (value==0) ? 5 : 10; + mapping->um_sn_length_present = TRUE; } #.FN_BODY LogicalChannelConfig/ul-SpecificParameters/priority VAL_PTR=&value guint32 value; + drb_mapping_t *mapping = private_data_get_drb_mapping(actx); %(DEFAULT_BODY)s - if (actx->private_data != NULL) { - ((drb_mapping_t*)actx->private_data)->ul_priority = value; - ((drb_mapping_t*)actx->private_data)->ul_priority_present = TRUE; + if (mapping != NULL) { + mapping->ul_priority = value; + mapping->ul_priority_present = TRUE; } #.FN_BODY PDCP-Config/rlc-UM/pdcp-SN-Size VAL_PTR=&value guint32 value; + drb_mapping_t *mapping = private_data_get_drb_mapping(actx); %(DEFAULT_BODY)s - if (actx->private_data != NULL) { - ((drb_mapping_t*)actx->private_data)->pdcp_sn_size = (value==0) ? 7 : 12; - ((drb_mapping_t*)actx->private_data)->pdcp_sn_size_present = TRUE; + if (mapping != NULL) { + mapping->pdcp_sn_size = (value==0) ? 7 : 12; + mapping->pdcp_sn_size_present = TRUE; } -#.FN_FTR PDCP-Config/eag_2/pdcp-SN-Size-v1130 - if (actx->private_data != NULL) { - ((drb_mapping_t*)actx->private_data)->pdcp_sn_size = 15; - ((drb_mapping_t*)actx->private_data)->pdcp_sn_size_present = TRUE; +#.FN_BODY PDCP-Config/eag_2/pdcp-SN-Size-v1130 + drb_mapping_t *mapping = private_data_get_drb_mapping(actx); +%(DEFAULT_BODY)s + if (mapping != NULL) { + mapping->pdcp_sn_size = 15; + mapping->pdcp_sn_size_present = TRUE; } #.FN_BODY RACH-ConfigCommon/preambleInfo %(DEFAULT_BODY)s - actx->private_data = NULL; + /* Initialise to invalid value */ + private_data_set_ra_preambles(actx, 0); #.FN_BODY RACH-ConfigCommon/preambleInfo/numberOfRA-Preambles VAL_PTR=&value guint value; %(DEFAULT_BODY)s /* This is mandatory, store value */ - actx->private_data = GUINT_TO_POINTER(value); + private_data_set_ra_preambles(actx, value); #.FN_BODY RACH-ConfigCommon/preambleInfo/preamblesGroupAConfig/sizeOfRA-PreamblesGroupA VAL_PTR=&value guint ra_value, value; %(DEFAULT_BODY)s /* Retrived stored value for RA (both Group A & Group B) */ - ra_value = GPOINTER_TO_UINT(actx->private_data); + ra_value = private_data_get_ra_preambles(actx); if (value > ra_value) { /* Something is wrong if A has more RAPIDs than A & B combined! */ expert_add_info_format_text(actx->pinfo, actx->created_item, &ei_lte_rrc_too_many_group_a_rapids, @@ -1287,155 +1314,176 @@ SoundingRS-UL-ConfigDedicated/setup/duration STRINGS=TFS(<e_rrc_duration_val) val_to_str_const(ra_value, lte_rrc_T_numberOfRA_Preambles_vals, "Unknown")); } - actx->private_data = NULL; - + /* Reset again */ + private_data_set_ra_preambles(actx, 0); -#.FN_BODY DRX-Config/setup - /* Accumulate values in drx_config while dissecting DRX config */ - static drx_config_t drx_config; - memset(&drx_config, 0, sizeof(drx_config)); - actx->private_data = &drx_config; -%(DEFAULT_BODY)s - /* Verify that config is valid */ - drx_check_config_sane(&drx_config, actx); - - /* Unset again afterwards */ - actx->private_data = NULL; - #.FN_BODY DRX-Config/setup/onDurationTimer VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s + /* Set 'configured' state so that config can be examine once complete! */ + config->configured = TRUE; config->onDurationTimer = drx_lookup_onDurationTimer(value); #.FN_BODY DRX-Config/setup/drx-InactivityTimer VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->inactivityTimer = drx_lookup_inactivityTimer(value); #.FN_BODY DRX-Config/setup/drx-RetransmissionTimer VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->retransmissionTimer = drx_lookup_retransmissionTimer(value); #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->longCycle = drx_lookup_longCycle(value); #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf10 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf20 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf32 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf40 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf64 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf80 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf128 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf160 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf256 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf320 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf512 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf640 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf1024 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf1280 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf2048 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf2560 VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->cycleOffset = value; #.FN_BODY DRX-Config/setup/shortDRX/shortDRX-Cycle VAL_PTR=&value guint32 value; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->shortCycleConfigured = TRUE; config->shortCycle = drx_lookup_shortCycle(value); #.FN_BODY DRX-Config/setup/shortDRX/drxShortCycleTimer VAL_PTR=&timer guint32 timer; - drx_config_t* config = (drx_config_t*)actx->private_data; + drx_config_t* config = private_data_get_drx_config(actx); %(DEFAULT_BODY)s config->shortCycleTimer = timer; #.FN_FTR DRX-Config/setup/shortDRX/drxShortCycleTimer proto_item_append_text(actx->created_item, " shortDRX-Cycle%s", plurality(timer, "", "s")); +#.FN_BODY DRX-Config-v1130/drx-RetransmissionTimer-v1130 VAL_PTR=&value + guint32 value; + drx_config_t* config = private_data_get_drx_config(actx); +%(DEFAULT_BODY)s + config->retransmissionTimer = 0; + +#.FN_BODY DRX-Config-v1130/longDRX-CycleStartOffset-v1130 VAL_PTR=&value + guint32 value; + drx_config_t* config = private_data_get_drx_config(actx); +%(DEFAULT_BODY)s + config->longCycle = drx_lookup_longCycle_v1130(value); + +#.FN_BODY DRX-Config-v1130/longDRX-CycleStartOffset-v1130/sf60-v1130 VAL_PTR=&value + guint32 value; + drx_config_t* config = private_data_get_drx_config(actx); +%(DEFAULT_BODY)s + config->cycleOffset = value; + +#.FN_BODY DRX-Config-v1130/longDRX-CycleStartOffset-v1130/sf70-v1130 VAL_PTR=&value + guint32 value; + drx_config_t* config = private_data_get_drx_config(actx); +%(DEFAULT_BODY)s + config->cycleOffset = value; + +#.FN_BODY DRX-Config-v1130/shortDRX-Cycle-v1130 VAL_PTR=&value + guint32 value; + drx_config_t* config = private_data_get_drx_config(actx); +%(DEFAULT_BODY)s + /* Presumably config->shortCycleConfigured will be set... */ + config->shortCycle = 4; + |