📄 wib_dl_source_gen.c
字号:
ul_burst_type = dl_subframe_tx->zone[i].burst[j].burst_type;
/* HARQ ACK Channel burst */
if(ul_burst_type == 0){
/************************** Insert HARQ ACK Region Allocation IE **************************/
/* assign HARQ ACK Region Allocation IE Content */
ul_harq_ackch.cid = ul_subframe_tx->zone[i].burst[j].cid_burst; // CID
ul_harq_ackch.uiuc = 11; // UIUC = 11 for Extended-2 UIUC
ul_harq_ackch.ext_uiuc = 0x08; // Extended-2 UIUC = 0x08
ul_harq_ackch.len = 3 // Length in bytes
ul_harq_ackch.symbol_ofst = ul_subframe_tx->zone[i].burst[j].ofdma_symbol_offset; // OFDMA Symbol offset
ul_harq_ackch.subchn_ofst = ul_subframe_tx->zone[i].burst[j].subchannel_offset; // Subchannel offset
ul_harq_ackch.symbol_num = ul_subframe_tx->zone[i].burst[j].number_of_symbol; // Number of OFDMA symbols
ul_harq_ackch.subchn_num = ul_subframe_tx->zone[i].burst[j].number_of_subchannel; // Number of subchannels
/* get the address of HARQ ACK Region Allocation IE */
p_ul_harq_ackch = (UINT8*)(&ul_harq_ackch);
/* if current last byte is aligned to byte */
if(byte_align_flag == 0){
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch + 1); // CID[15:8]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch); // CID[7:0]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch + 2); // UIUC, Extended-2 UIUC
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch + 3); // Length in bytes
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch + 6); // OFDMA Symbol offset
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch + 5); // Subchannel offset
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch + 4); // Number of OFDMA symbols
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch + 3); // Number of subchannels
dlul_map_len++;
}
/* if current last byte is not aligned to byte */
else if(byte_align_flag == 1){
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch + 1); // CID[15:8]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch); // CID[7:0]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch + 2); // UIUC, Extended-2 UIUC
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch + 3); // Length in bytes
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch + 6); // OFDMA Symbol offset
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch + 5); // Subchannel offset
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch + 4); // Number of OFDMA symbols
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_harq_ackch + 3); // Number of subchannels
/* All byte shift left 4bits */
*(p_dlul_map + dlul_map_len - 7) = (UINT8)(*(p_dlul_map + dlul_map_len - 7) >> 4);
for(l = 0; l < 8; l++){
*(p_dlul_map + dlul_map_len - 7 + l) = (UINT8)(((*(p_dlul_map + dlul_map_len - 7 + l)) << 4)
| ((*(p_dlul_map + dlul_map_len - 6 + l)) >> 4));
}
}
}
/* Fast Feedback Channel burst */
else if(ul_burst_type == 1){
/************************** Insert FAST FEEDBACK Allocation IE **************************/
/* assign FAST FEEDBACK IE Content */
ul_fast_feedback.cid = ul_subframe_tx->zone[i].burst[j].cid_burst; // CID
ul_fast_feedback.uiuc = 0; // UIUC = 0 for FAST-FEEDBACK Allocation IE
ul_fast_feedback.byte_align = 0; // align to byte boundary
ul_fast_feedback.symbol_ofst = ul_subframe_tx->zone[i].burst[j].ofdma_symbol_offset; // OFDMA Symbol offset
ul_fast_feedback.subchn_ofst = ul_subframe_tx->zone[i].burst[j].subchannel_offset; // Subchannel offset
ul_fast_feedback.symbol_num = ul_subframe_tx->zone[i].burst[j].number_of_symbol; // Number of OFDMA symbols
ul_fast_feedback.subchn_num = ul_subframe_tx->zone[i].burst[j].number_of_subchannel; // Number of subchannels
ul_fast_feedback.reserved = 0;
/* get the address of FAST FEEDBACK IE */
p_ul_fast_feedback = (UINT8*)(&ul_fast_feedback);
/* if current last byte is aligned to byte */
if(byte_align_flag == 0){
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_fast_feedback + 1); // CID[15:8]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_fast_feedback); // CID[7:0]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_fast_feedback + 2); // Byte align[3:0] ,UIUC
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_fast_feedback + 6); // OFDMA Symbol offset
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_fast_feedback + 5); // Subchannel offset[6:0], Number of OFDMA symbols[6]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_fast_feedback + 4); // Number of OFDMA symbols[5:0], Number of subchannels[6:5]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_fast_feedback + 3); // Number of subchannels[4:0], Reserved[2:0]
/* All bytes after CID shift left 4bits */
for(l = 0; l < 5; l++){
*(p_dlul_map + dlul_map_len - 4 + l) = (UINT8)(((*(p_dlul_map + dlul_map_len - 4 + l)) << 4)
| ((*(p_dlul_map + dlul_map_len - 3 + l)) >> 4));
}
byte_align_flag = 1;
}
/* if current last byte is not aligned to byte */
else if(byte_align_flag == 1){
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_fast_feedback + 1); // CID[15:8]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_fast_feedback); // CID[7:0]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_fast_feedback + 2); // Byte align[3:0] ,UIUC
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_fast_feedback + 6); // OFDMA Symbol offset
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_fast_feedback + 5); // Subchannel offset[6:0], Number of OFDMA symbols[6]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_fast_feedback + 4); // Number of OFDMA symbols[5:0], Number of subchannels[6:5]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_fast_feedback + 3); // Number of subchannels[4:0], Reserved[2:0]
/* All bytes shift left 4bits */
*(p_dlul_map + dlul_map_len - 7) = (UINT8)(*(p_dlul_map + dlul_map_len - 7) >> 4);
for(l = 0; l < 8; l++){
*(p_dlul_map + dlul_map_len - 7 + l) = (UINT8)(((*(p_dlul_map + dlul_map_len - 7 + l)) << 4)
| ((*(p_dlul_map + dlul_map_len - 6 + l)) >> 4));
}
/* All bytes after CID shift left 4bits */
*(p_dlul_map + dlul_map_len - 5) = (UINT8)(*(p_dlul_map + dlul_map_len - 5) >> 4);
for(l = 0; l < 5; l++){
*(p_dlul_map + dlul_map_len - 5 + l) = (UINT8)(((*(p_dlul_map + dlul_map_len - 5 + l)) << 4)
| ((*(p_dlul_map + dlul_map_len - 4 + l)) >> 4));
}
byte_align_flag = 0;
}
}
/* Initial Ranging/Handover Ranging burst */
else if(ul_burst_type == 2){
/****************************** Insert CDMA RANGING IE ********************************/
/* assign CDMA RANGING IE Content */
ul_cdma_ranging.cid = ul_subframe_tx->zone[i].burst[j].cid_burst; // CID
ul_cdma_ranging.byte_align = 0; // align to byte boundary
ul_cdma_ranging.uiuc = 12; // UIUC = 12 for CDMA RANGING IE
ul_cdma_ranging.symbol_ofst = ul_subframe_tx->zone[i].burst[j].ofdma_symbol_offset; // OFDMA Symbol offset
ul_cdma_ranging.subchn_ofst = ul_subframe_tx->zone[i].burst[j].subchannel_offset; // Subchannel offset
ul_cdma_ranging.symbol_num = ul_subframe_tx->zone[i].burst[j].number_of_symbol; // Number of OFDMA symbols
ul_cdma_ranging.subchn_num = ul_subframe_tx->zone[i].burst[j].number_of_subchannel; // Number of subchannels
ul_cdma_ranging.ran_method = 0b00; // Ranging method
ul_cdma_ranging.dedic_ranging = 0; // Dedicated ranging indicator
/* get the address of CDMA RANGING IE */
p_ul_cdma_ranging = (UINT8*)(&ul_cdma_ranging);
/* if current last byte is aligned to byte */
if(byte_align_flag == 0){
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 1); // CID[15:8]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging); // CID[7:0]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 2); // Byte align[3:0] ,UIUC
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 6); // OFDMA Symbol offset
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 5); // Subchannel offset[6:0], Number of OFDMA symbols[6]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 4); // Number of OFDMA symbols[5:0], Number of subchannels[6:5]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 3); // Number of subchannels[4:0], Ranging method[1:0], Dedicated ranging indicator
/* All bytes after CID shift left 4bits */
for(l = 0; l < 5; l++){
*(p_dlul_map + dlul_map_len - 4 + l) = (UINT8)(((*(p_dlul_map + dlul_map_len - 4 + l)) << 4)
| ((*(p_dlul_map + dlul_map_len - 3 + l)) >> 4));
}
byte_align_flag = 1;
}
/* if current last byte is not aligned to byte */
else if(byte_align_flag == 1){
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 1); // CID[15:8]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging); // CID[7:0]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 2); // Byte align[3:0] ,UIUC
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 6); // OFDMA Symbol offset
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 5); // Subchannel offset[6:0], Number of OFDMA symbols[6]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 4); // Number of OFDMA symbols[5:0], Number of subchannels[6:5]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 3); // Number of subchannels[4:0], Ranging method[1:0], Dedicated ranging indicator
/* All bytes shift left 4bits */
*(p_dlul_map + dlul_map_len - 7) = (UINT8)(*(p_dlul_map + dlul_map_len - 7) >> 4);
for(l = 0; l < 8; l++){
*(p_dlul_map + dlul_map_len - 7 + l) = (UINT8)(((*(p_dlul_map + dlul_map_len - 7 + l)) << 4)
| ((*(p_dlul_map + dlul_map_len - 6 + l)) >> 4));
}
/* All bytes after CID shift left 4bits */
*(p_dlul_map + dlul_map_len - 5) = (UINT8)(*(p_dlul_map + dlul_map_len - 5) >> 4);
for(l = 0; l < 5; l++){
*(p_dlul_map + dlul_map_len - 5 + l) = (UINT8)(((*(p_dlul_map + dlul_map_len - 5 + l)) << 4)
| ((*(p_dlul_map + dlul_map_len - 4 + l)) >> 4));
}
byte_align_flag = 0;
}
}
/* Periodic Ranging/Bandwidth Request burst */
else if(ul_burst_type == 3){
/****************************** Insert CDMA RANGING IE ********************************/
/* assign CDMA RANGING IE Content */
ul_cdma_ranging.cid = ul_subframe_tx->zone[i].burst[j].cid_burst; // CID
ul_cdma_ranging.byte_align = 0; // align to byte boundary
ul_cdma_ranging.uiuc = 12; // UIUC = 12 for CDMA RANGING IE
ul_cdma_ranging.symbol_ofst = ul_subframe_tx->zone[i].burst[j].ofdma_symbol_offset; // OFDMA Symbol offset
ul_cdma_ranging.subchn_ofst = ul_subframe_tx->zone[i].burst[j].subchannel_offset; // Subchannel offset
ul_cdma_ranging.symbol_num = ul_subframe_tx->zone[i].burst[j].number_of_symbol; // Number of OFDMA symbols
ul_cdma_ranging.subchn_num = ul_subframe_tx->zone[i].burst[j].number_of_subchannel; // Number of subchannels
ul_cdma_ranging.ran_method = 0b10; // Ranging method
ul_cdma_ranging.dedic_ranging = 0; // Dedicated ranging indicator
/* get the address of CDMA RANGING IE */
p_ul_cdma_ranging = (UINT8*)(&ul_cdma_ranging);
/* if current last byte is aligned to byte */
if(byte_align_flag == 0){
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 1); // CID[15:8]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging); // CID[7:0]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 2); // Byte align[3:0] ,UIUC
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 6); // OFDMA Symbol offset
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 5); // Subchannel offset[6:0], Number of OFDMA symbols[6]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 4); // Number of OFDMA symbols[5:0], Number of subchannels[6:5]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 3); // Number of subchannels[4:0], Ranging method[1:0], Dedicated ranging indicator
/* All bytes after CID shift left 4bits */
for(l = 0; l < 5; l++){
*(p_dlul_map + dlul_map_len - 4 + l) = (UINT8)(((*(p_dlul_map + dlul_map_len - 4 + l)) << 4)
| ((*(p_dlul_map + dlul_map_len - 3 + l)) >> 4));
}
byte_align_flag = 1;
}
/* if current last byte is not aligned to byte */
else if(byte_align_flag == 1){
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 1); // CID[15:8]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging); // CID[7:0]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 2); // Byte align[3:0] ,UIUC
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 6); // OFDMA Symbol offset
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 5); // Subchannel offset[6:0], Number of OFDMA symbols[6]
dlul_map_len++;
*(p_dlul_map + dlul_map_len) = (UINT8)(*p_ul_cdma_ranging + 4); // Number of OFDMA symbols[5:0], Number of subchannels[6:5]
dlul_map_len++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -