📄 plugins-wimax-wimax_compact_ulmap_ie_decoder.c
字号:
if(nibble_offset & 1)
{
proto_tree_add_item(tree, hf_culmap_num_subchannels_1, tvb, ul_map_offset, 2, FALSE);
}
else
{
proto_tree_add_item(tree, hf_culmap_num_subchannels, tvb, ul_map_offset, 1, FALSE);
}
ul_map_offset++;
length += 2;
}
else if(allocation_mode == 1)
{
for(i=0; i<band_count; i++)
{
if(nibble_offset & 1)
{
proto_tree_add_item(tree, hf_culmap_num_subchannels_1, tvb, ul_map_offset, 2, FALSE);
}
else
{
proto_tree_add_item(tree, hf_culmap_num_subchannels, tvb, ul_map_offset, 1, FALSE);
}
ul_map_offset++;
}
length += (band_count * 2);
}
/* decode HARQ Control IE */
nibble_length = wimax_compact_ulmap_harq_control_ie_decoder(tree, pinfo, tvb, ul_map_offset, nibble_offset);
length += nibble_length;
break;
case COMPACT_UL_MAP_TYPE_SAFETY:/* 6.3.2.3.43.7.3 */
/* display the UL-MAP type and reserved bit */
if(nibble_offset & 1)
{
proto_tree_add_item(tree, hf_culmap_ul_map_type_1, tvb, ul_map_offset, 1, FALSE);
/* display the reserved */
proto_tree_add_item(tree, hf_culmap_reserved_1, tvb, ul_map_offset, 1, FALSE);
/* move to next byte */
ul_map_offset++;
nibble_offset = 0;
}
else
{
proto_tree_add_item(tree, hf_culmap_ul_map_type, tvb, ul_map_offset, 1, FALSE);
/* display the reserved */
proto_tree_add_item(tree, hf_culmap_reserved, tvb, ul_map_offset, 1, FALSE);
nibble_offset = 1;
}
length = 1;
/* decode RCID IE */
nibble_length = wimax_compact_ulmap_rcid_ie_decoder(tree, pinfo, tvb, ul_map_offset, nibble_offset);
length += nibble_length;
ul_map_offset += (nibble_length >> 1);
nibble_offset = (nibble_length & 1);
/* check harq mode */
if(!harq_mode)
{ /* display the Nep and Nsch Code */
if(nibble_offset & 1)
{
proto_tree_add_item(tree, hf_culmap_nep_code_1, tvb, ul_map_offset, 1, FALSE);
/* move to next byte */
ul_map_offset++;
proto_tree_add_item(tree, hf_culmap_nsch_code, tvb, ul_map_offset, 1, FALSE);
}
else
{
proto_tree_add_item(tree, hf_culmap_nep_code, tvb, ul_map_offset, 1, FALSE);
proto_tree_add_item(tree, hf_culmap_nsch_code_1, tvb, ul_map_offset, 1, FALSE);
/* move to next byte */
ul_map_offset++;
}
length += 2;
}
else if(harq_mode == 1)
{ /* display the Shortened UIUC and Companded SC */
if(nibble_offset & 1)
{
proto_tree_add_item(tree, hf_culmap_shortened_uiuc_1, tvb, ul_map_offset, 2, FALSE);
proto_tree_add_item(tree, hf_culmap_companded_sc_1, tvb, ul_map_offset, 2, FALSE);
}
else
{
proto_tree_add_item(tree, hf_culmap_shortened_uiuc, tvb, ul_map_offset, 1, FALSE);
proto_tree_add_item(tree, hf_culmap_companded_sc, tvb, ul_map_offset, 1, FALSE);
}
/* move to next byte */
ul_map_offset++;
length += 2;
}
/* display BIN offset */
if(nibble_offset & 1)
{
proto_tree_add_item(tree, hf_culmap_bin_offset_1, tvb, ul_map_offset, 2, FALSE);
/* move to next byte */
ul_map_offset++;
}
else
{
proto_tree_add_item(tree, hf_culmap_bin_offset, tvb, ul_map_offset, 1, FALSE);
/* move to next byte */
ul_map_offset++;
}
length += 2;
/* decode HARQ Control IE */
nibble_length = wimax_compact_ulmap_harq_control_ie_decoder(tree, pinfo, tvb, ul_map_offset, nibble_offset);
length += nibble_length;
break;
case COMPACT_UL_MAP_TYPE_UIUC:/* 6.3.2.3.43.7.4 */
/* display the UL-MAP type and reserved bit */
if(nibble_offset & 1)
{
proto_tree_add_item(tree, hf_culmap_ul_map_type_1, tvb, ul_map_offset, 1, FALSE);
/* display the reserved */
proto_tree_add_item(tree, hf_culmap_reserved_1, tvb, ul_map_offset, 1, FALSE);
/* move to next byte */
ul_map_offset++;
/* get the new byte */
byte = tvb_get_guint8(tvb, ul_map_offset);
/* get the UIUC */
uiuc = ((byte & MSB_NIBBLE_MASK) >> 4);
/* display the UIUC */
proto_tree_add_item(tree, hf_culmap_uiuc, tvb, ul_map_offset, 1, FALSE);
}
else
{
/* display the UL-MAP type */
proto_tree_add_item(tree, hf_culmap_ul_map_type, tvb, ul_map_offset, 1, FALSE);
/* display the reserved */
proto_tree_add_item(tree, hf_culmap_reserved, tvb, ul_map_offset, 1, FALSE);
/* get the UIUC */
uiuc = (byte & LSB_NIBBLE_MASK);
/* display the UIUC */
proto_tree_add_item(tree, hf_culmap_uiuc_1, tvb, ul_map_offset, 1, FALSE);
}
length = 2;
/* decode RCID IE */
nibble_length = wimax_compact_ulmap_rcid_ie_decoder(tree, pinfo, tvb, ul_map_offset, nibble_offset);
length += nibble_length;
ul_map_offset += (nibble_length >> 1);
nibble_offset = (nibble_length & 1);
if(uiuc == 15)
{ /* Extended UIUC dependent IE */
nibble_length = wimax_extended_uiuc_dependent_ie_decoder(tree, pinfo, tvb, ul_map_offset, nibble_offset);
length += nibble_length;
ul_map_offset += (nibble_length >> 1);
nibble_offset = (nibble_length & 1);
}
else if(uiuc == 14)
{ /* CDMA Allocation IE */
nibble_length = wimax_cdma_allocation_ie_decoder(tree, pinfo, tvb, ul_map_offset, nibble_offset);
length += nibble_length;
ul_map_offset += (nibble_length >> 1);
nibble_offset = (nibble_length & 1);
}
else if(uiuc == 12)
{
if(nibble_offset & 1)
{
/* display the OFDMA symbol offset */
proto_tree_add_item(tree, hf_culmap_uiuc_ofdma_symbol_offset_1, tvb, ul_map_offset, 2, FALSE);
ul_map_offset++;
/* display the subchannel offset */
proto_tree_add_item(tree, hf_culmap_uiuc_subchannel_offset_7_1, tvb, ul_map_offset, 4, FALSE);
/* display the number of OFDMA symbols */
proto_tree_add_item(tree, hf_culmap_uiuc_num_of_ofdma_symbols_7_1, tvb, ul_map_offset, 4, FALSE);
/* display the number of subchannels */
proto_tree_add_item(tree, hf_culmap_uiuc_num_of_subchannels_7_1, tvb, ul_map_offset, 4, FALSE);
/* display the ranging method */
proto_tree_add_item(tree, hf_culmap_uiuc_ranging_method_1, tvb, ul_map_offset, 4, FALSE);
/* display the reserved */
proto_tree_add_item(tree, hf_culmap_uiuc_reserved_1, tvb, ul_map_offset, 4, FALSE);
ul_map_offset += 3;
}
else
{ /* display the OFDMA symbol offset */
proto_tree_add_item(tree, hf_culmap_uiuc_ofdma_symbol_offset, tvb, ul_map_offset, 1, FALSE);
ul_map_offset++;
/* display the subchannel offset */
proto_tree_add_item(tree, hf_culmap_uiuc_subchannel_offset_7, tvb, ul_map_offset, 3, FALSE);
/* display the number of OFDMA symbols */
proto_tree_add_item(tree, hf_culmap_uiuc_num_of_ofdma_symbols_7, tvb, ul_map_offset, 3, FALSE);
/* display the number of subchannels */
proto_tree_add_item(tree, hf_culmap_uiuc_num_of_subchannels_7, tvb, ul_map_offset, 3, FALSE);
/* display the ranging method */
proto_tree_add_item(tree, hf_culmap_uiuc_ranging_method, tvb, ul_map_offset, 3, FALSE);
/* display the reserved */
proto_tree_add_item(tree, hf_culmap_uiuc_reserved, tvb, ul_map_offset, 3, FALSE);
ul_map_offset += 3;
}
length += 8;
}
else
{ /* display Number of subchannels */
if(nibble_offset & 1)
proto_tree_add_item(tree, hf_culmap_uiuc_num_of_subchannels_1, tvb, ul_map_offset, 2, FALSE);
else
proto_tree_add_item(tree, hf_culmap_uiuc_num_of_subchannels, tvb, ul_map_offset, 1, FALSE);
length += 2;
/* display the repetition coding indication and reserved bits */
if(nibble_offset & 1)
{
proto_tree_add_item(tree, hf_culmap_uiuc_repetition_coding_indication_1, tvb, ul_map_offset, 1, FALSE);
proto_tree_add_item(tree, hf_culmap_uiuc_reserved_1, tvb, ul_map_offset, 1, FALSE);
nibble_offset = 0;
}
else
{
proto_tree_add_item(tree, hf_culmap_uiuc_repetition_coding_indication, tvb, ul_map_offset, 1, FALSE);
proto_tree_add_item(tree, hf_culmap_uiuc_reserved, tvb, ul_map_offset, 1, FALSE);
nibble_offset = 1;
}
length += 1;
}
/* decode HARQ Control IE */
nibble_length = wimax_compact_ulmap_harq_control_ie_decoder(tree, pinfo, tvb, ul_map_offset, nibble_offset);
length += nibble_length;
break;
case COMPACT_UL_MAP_TYPE_HARQ_REGION_IE:/* 6.3.2.3.43.7.5 */
if(nibble_offset & 1)
{ /* display the UL-MAP type */
proto_tree_add_item(tree, hf_culmap_ul_map_type_1, tvb, ul_map_offset, 1, FALSE);
/* display the HARQ Region Change Indication */
proto_tree_add_item(tree, hf_culmap_harq_region_change_indication_1, tvb, ul_map_offset, 1, FALSE);
/* get the HARQ Region Change Indication */
harq_region_change_indication = (byte & 0x01);
/* move to next byte */
ul_map_offset++;
nibble_offset = 0;
}
else
{ /* display the UL-MAP type */
proto_tree_add_item(tree, hf_culmap_ul_map_type, tvb, ul_map_offset, 1, FALSE);
/* display the HARQ Region Change Indication */
proto_tree_add_item(tree, hf_culmap_harq_region_change_indication, tvb, ul_map_offset, 1, FALSE);
/* get the HARQ Region Change Indication */
harq_region_change_indication = (byte & 0x10);
nibble_offset = 1;
}
length = 1;
if(harq_region_change_indication == 1)
{
if(nibble_offset & 1)
{
/* display the OFDMA symbol offset */
proto_tree_add_item(tree, hf_culmap_uiuc_ofdma_symbol_offset_1, tvb, ul_map_offset, 2, FALSE);
ul_map_offset++;
/* display the subchannel offset */
proto_tree_add_item(tree, hf_culmap_uiuc_subchannel_offset_1, tvb, ul_map_offset, 2, FALSE);
ul_map_offset++;
/* display the number of OFDMA symbols */
proto_tree_add_item(tree, hf_culmap_uiuc_num_of_ofdma_symbols_1, tvb, ul_map_offset, 2, FALSE);
ul_map_offset++;
/* display the number of subchannels */
proto_tree_add_item(tree, hf_culmap_uiuc_num_of_subchannels_1, tvb, ul_map_offset, 2, FALSE);
ul_map_offset++;
}
else
{ /* display the OFDMA symbol offset */
proto_tree_add_item(tree, hf_culmap_uiuc_ofdma_symbol_offset, tvb, ul_map_offset, 1, FALSE);
ul_map_offset++;
/* display the subchannel offset */
proto_tree_add_item(tree, hf_culmap_uiuc_subchannel_offset, tvb, ul_map_offset, 1, FALSE);
ul_map_offset++;
/* display the number of OFDMA symbols */
proto_tree_add_item(tree, hf_culmap_uiuc_num_of_ofdma_symbols, tvb, ul_map_offset, 1, FALSE);
ul_map_offset++;
/* display the number of subchannels */
proto_tree_add_item(tree, hf_culmap_uiuc_num_of_subchannels, tvb, ul_map_offset, 1, FALSE);
ul_map_offset++;
}
length += 8;
}
break;
case COMPACT_UL_MAP_TYPE_CQICH_REGION_IE:/* 6.3.2.3.43.7.6 */
if(nibble_offset & 1)
{ /* display the UL-MAP type */
proto_tree_add_item(tree, hf_culmap_ul_map_type_1, tvb, ul_map_offset, 1, FALSE);
/* display the CQI Region Change Indication */
proto_tree_add_item(tree, hf_culmap_cqi_region_change_indication_1, tvb, ul_map_offset, 1, FALSE);
/* get the CQI Region Change Indication */
cqi_region_change_indication = (byte & 0x01);
/* move to next byte */
ul_map_offset++;
nibble_offset = 0;
}
else
{ /* display the UL-MAP type */
proto_tree_add_item(tree, hf_culmap_ul_map_type, tvb, ul_map_offset, 1, FALSE);
/* display the CQI Region Change Indication */
proto_tree_add_item(tree, hf_culmap_cqi_region_change_indication, tvb, ul_map_offset, 1, FALSE);
/* get the CQI Region Change Indication */
cqi_region_change_indication = (byte & 0x10);
nibble_offset = 1;
}
length = 1;
if(cqi_region_change_indication == 1)
{
if(nibble_offset & 1)
{
/* display the OFDMA symbol offset */
proto_tree_add_item(tree, hf_culmap_uiuc_ofdma_symbol_offset_1, tvb, ul_map_offset, 2, FALSE);
ul_map_offset++;
/* display the subchannel offset */
proto_tree_add_item(tree, hf_culmap_uiuc_subchannel_offset_1, tvb, ul_map_offset, 2, FALSE);
ul_map_offset++;
/* display the number of OFDMA symbols */
proto_tree_add_item(tree, hf_culmap_uiuc_num_of_ofdma_symbols_1, tvb, ul_map_offset, 2, FALSE);
ul_map_offset++;
/* display the number of subchannels */
proto_tree_add_item(tree, hf_culmap_uiuc_num_of_subchannels_1, tvb, ul_map_offset, 2, FALSE);
ul_map_offset++;
}
else
{ /* display the OFDMA symbol offset */
proto_tree_add_item(tree, hf_culmap_uiuc_ofdma_symbol_offset, tvb, ul_map_offset, 1, FALSE);
ul_map_offset++;
/* display the subchannel offset */
proto_tree_add_item(tree, hf_culmap_uiuc_subchannel_offset, tvb, ul_map_offset, 1, FALSE);
ul_map_offset++;
/* display the number of OFDMA symbols */
proto_tree_add_item(tree, hf_culmap_uiuc_num_of_ofdma_symbols, tvb, ul_map_offset, 1, FALSE);
ul_map_offset++;
/* display the number of subchannels */
proto_tree_add_item(tree, hf_culmap_uiuc_num_of_subchannels, tvb, ul_map_offset, 1, FALSE);
ul_map_offset++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -