A bit of clean-up.
This commit is contained in:
@@ -242,10 +242,8 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
first_re=6;
|
first_re=6;
|
||||||
|
|
||||||
for (re=first_re; re<last_re; re++) {
|
for (re=first_re; re<last_re; re++) {
|
||||||
|
|
||||||
// printf("element %d precoder_index for allocation %d\n",re, precoder_index );
|
// printf("element %d precoder_index for allocation %d\n",re, precoder_index );
|
||||||
|
|
||||||
|
|
||||||
if ((skip_dc == 1) && (re==6))
|
if ((skip_dc == 1) && (re==6))
|
||||||
re_off=re_off - frame_parms->ofdm_symbol_size+1;
|
re_off=re_off - frame_parms->ofdm_symbol_size+1;
|
||||||
|
|
||||||
@@ -393,7 +391,6 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
case 4: //16QAM
|
case 4: //16QAM
|
||||||
|
|
||||||
// Antenna 0 position n
|
// Antenna 0 position n
|
||||||
|
|
||||||
qam16_table_offset_re = 0;
|
qam16_table_offset_re = 0;
|
||||||
qam16_table_offset_im = 0;
|
qam16_table_offset_im = 0;
|
||||||
|
|
||||||
@@ -419,6 +416,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
|
|
||||||
qam16_table_offset_re = 0;
|
qam16_table_offset_re = 0;
|
||||||
qam16_table_offset_im = 0;
|
qam16_table_offset_im = 0;
|
||||||
|
|
||||||
if (x0[*jj] == 1)
|
if (x0[*jj] == 1)
|
||||||
qam16_table_offset_re+=2;
|
qam16_table_offset_re+=2;
|
||||||
*jj=*jj+1;
|
*jj=*jj+1;
|
||||||
@@ -437,8 +435,8 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
((int16_t *)&txdataF[1][tti_offset])[0]+=-(int16_t)(((int32_t)amp*qam16_table[qam16_table_offset_re])>>15);
|
((int16_t *)&txdataF[1][tti_offset])[0]+=-(int16_t)(((int32_t)amp*qam16_table[qam16_table_offset_re])>>15);
|
||||||
((int16_t *)&txdataF[1][tti_offset])[1]+=(int16_t)(((int32_t)amp*qam16_table[qam16_table_offset_im])>>15);
|
((int16_t *)&txdataF[1][tti_offset])[1]+=(int16_t)(((int32_t)amp*qam16_table[qam16_table_offset_im])>>15);
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6: // 64-QAM
|
case 6: // 64-QAM
|
||||||
|
|
||||||
// Antenna 0
|
// Antenna 0
|
||||||
@@ -515,19 +513,18 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
|
|
||||||
if (frame_parms->nb_antennas_tx == 2) {
|
if (frame_parms->nb_antennas_tx == 2) {
|
||||||
switch (mod_order0) {
|
switch (mod_order0) {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
LOG_E(PHY,"Unknown mod_order0 %d\n",mod_order0);
|
LOG_E(PHY,"Unknown mod_order0 %d\n",mod_order0);
|
||||||
xx0_re=xx0_im=0;
|
xx0_re=xx0_im=0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2: //QPSK
|
case 2: //QPSK
|
||||||
//printf("%d(%d) : %d,%d => ",tti_offset,*jj,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
|
//printf("%d(%d) : %d,%d => ",tti_offset,*jj,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
|
||||||
xx0_re = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
|
xx0_re = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
|
||||||
*jj = *jj + 1;
|
*jj = *jj + 1;
|
||||||
xx0_im = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
|
xx0_im = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
|
||||||
*jj = *jj + 1;
|
*jj = *jj + 1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//printf("%d,%d\n",((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
|
//printf("%d,%d\n",((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -582,15 +579,17 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
xx0_re = qam_table_s0[qam64_table_offset_re0];
|
xx0_re = qam_table_s0[qam64_table_offset_re0];
|
||||||
xx0_im = qam_table_s0[qam64_table_offset_im0];
|
xx0_im = qam_table_s0[qam64_table_offset_im0];
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (mod_order1) {
|
switch (mod_order1) {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
LOG_E(PHY,"Unknown mod_order1 %d\n",mod_order1);
|
LOG_E(PHY,"Unknown mod_order1 %d\n",mod_order1);
|
||||||
xx1_re=xx1_im=0;
|
xx1_re=xx1_im=0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2: //QPSK
|
case 2: //QPSK
|
||||||
//printf("%d(%d) : %d,%d => ",tti_offset,*jj,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
|
//printf("%d(%d) : %d,%d => ",tti_offset,*jj,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
|
||||||
xx1_re = (x1[*jj2]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
|
xx1_re = (x1[*jj2]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
|
||||||
@@ -649,7 +648,6 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
xx1_re = qam_table_s1[qam64_table_offset_re1];
|
xx1_re = qam_table_s1[qam64_table_offset_re1];
|
||||||
xx1_im = qam_table_s1[qam64_table_offset_im1];
|
xx1_im = qam_table_s1[qam64_table_offset_im1];
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -679,7 +677,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
amp = (int16_t)(((int32_t)tmp_amp*ONE_OVER_SQRT2_Q15)>>15);
|
amp = (int16_t)(((int32_t)tmp_amp*ONE_OVER_SQRT2_Q15)>>15);
|
||||||
|
|
||||||
switch (mod_order0) {
|
switch (mod_order0) {
|
||||||
case 2: //QPSK
|
case 2:
|
||||||
|
|
||||||
((int16_t*)&tmp_sample1)[0] = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
|
((int16_t*)&tmp_sample1)[0] = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
|
||||||
*jj = *jj + 1;
|
*jj = *jj + 1;
|
||||||
@@ -698,7 +696,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4: //16QAM
|
case 4:
|
||||||
|
|
||||||
qam16_table_offset_re = 0;
|
qam16_table_offset_re = 0;
|
||||||
qam16_table_offset_im = 0;
|
qam16_table_offset_im = 0;
|
||||||
@@ -733,8 +731,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6: //64QAM
|
case 6:
|
||||||
|
|
||||||
|
|
||||||
qam64_table_offset_re = 0;
|
qam64_table_offset_re = 0;
|
||||||
qam64_table_offset_im = 0;
|
qam64_table_offset_im = 0;
|
||||||
@@ -770,14 +767,12 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((mimo_mode >= DUALSTREAM_UNIFORM_PRECODING1)&&(mimo_mode <= DUALSTREAM_PUSCH_PRECODING)) {
|
else if ((mimo_mode >= DUALSTREAM_UNIFORM_PRECODING1)&&(mimo_mode <= DUALSTREAM_PUSCH_PRECODING)) {
|
||||||
// this is for transmission mode 4 (1 layer)
|
// this is for transmission mode 4 (1 layer)
|
||||||
*re_allocated = *re_allocated + 1;
|
*re_allocated = *re_allocated + 1;
|
||||||
|
|
||||||
|
|
||||||
if (precoder_index==0) {
|
if (precoder_index==0) {
|
||||||
precoder_index0 = 0; //[1 1]
|
precoder_index0 = 0; //[1 1]
|
||||||
precoder_index1 = 1; //[1 -1]
|
precoder_index1 = 1; //[1 -1]
|
||||||
@@ -792,7 +787,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (mod_order0) {
|
switch (mod_order0) {
|
||||||
case 2: //QPSK
|
case 2:
|
||||||
|
|
||||||
((int16_t*)&tmp_sample1)[0] = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
|
((int16_t*)&tmp_sample1)[0] = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
|
||||||
*jj = *jj + 1;
|
*jj = *jj + 1;
|
||||||
@@ -813,7 +808,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4: //16QAM
|
case 4:
|
||||||
|
|
||||||
qam16_table_offset_re = 0;
|
qam16_table_offset_re = 0;
|
||||||
qam16_table_offset_im = 0;
|
qam16_table_offset_im = 0;
|
||||||
@@ -825,7 +820,6 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
qam16_table_offset_im+=2;
|
qam16_table_offset_im+=2;
|
||||||
*jj=*jj+1;
|
*jj=*jj+1;
|
||||||
|
|
||||||
|
|
||||||
if (x0[*jj] == 1)
|
if (x0[*jj] == 1)
|
||||||
qam16_table_offset_re+=1;
|
qam16_table_offset_re+=1;
|
||||||
*jj=*jj+1;
|
*jj=*jj+1;
|
||||||
@@ -846,11 +840,11 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6: //64QAM
|
case 6:
|
||||||
|
|
||||||
|
|
||||||
qam64_table_offset_re = 0;
|
qam64_table_offset_re = 0;
|
||||||
qam64_table_offset_im = 0;
|
qam64_table_offset_im = 0;
|
||||||
|
|
||||||
if (x0[*jj] == 1)
|
if (x0[*jj] == 1)
|
||||||
qam64_table_offset_re+=4;
|
qam64_table_offset_re+=4;
|
||||||
*jj=*jj+1;
|
*jj=*jj+1;
|
||||||
@@ -887,7 +881,8 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
|
|
||||||
if (dlsch1_harq) {
|
if (dlsch1_harq) {
|
||||||
switch (mod_order1) {
|
switch (mod_order1) {
|
||||||
case 2: //QPSK
|
|
||||||
|
case 2:
|
||||||
|
|
||||||
((int16_t*)&tmp_sample1)[0] = (x1[*jj2]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
|
((int16_t*)&tmp_sample1)[0] = (x1[*jj2]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
|
||||||
*jj2 = *jj2 + 1;
|
*jj2 = *jj2 + 1;
|
||||||
@@ -906,7 +901,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4: //16QAM
|
case 4:
|
||||||
|
|
||||||
qam16_table_offset_re = 0;
|
qam16_table_offset_re = 0;
|
||||||
qam16_table_offset_im = 0;
|
qam16_table_offset_im = 0;
|
||||||
@@ -939,8 +934,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6: //64QAM
|
case 6:
|
||||||
|
|
||||||
|
|
||||||
qam64_table_offset_re = 0;
|
qam64_table_offset_re = 0;
|
||||||
qam64_table_offset_im = 0;
|
qam64_table_offset_im = 0;
|
||||||
@@ -1042,7 +1036,6 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
|
|
||||||
case 6: //64QAM
|
case 6: //64QAM
|
||||||
|
|
||||||
|
|
||||||
qam64_table_offset_re = 0;
|
qam64_table_offset_re = 0;
|
||||||
qam64_table_offset_im = 0;
|
qam64_table_offset_im = 0;
|
||||||
|
|
||||||
@@ -1090,10 +1083,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1150,7 +1140,7 @@ int allocate_REs_in_RB_MCH(int32_t **txdataF,
|
|||||||
|
|
||||||
|
|
||||||
switch (mod_order) {
|
switch (mod_order) {
|
||||||
case 2: //QPSK
|
case 2:
|
||||||
|
|
||||||
//printf("%d : %d,%d => ",tti_offset,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
|
//printf("%d : %d,%d => ",tti_offset,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
|
||||||
for (aa=0; aa<frame_parms->nb_antennas_tx; aa++)
|
for (aa=0; aa<frame_parms->nb_antennas_tx; aa++)
|
||||||
@@ -1166,7 +1156,7 @@ int allocate_REs_in_RB_MCH(int32_t **txdataF,
|
|||||||
//printf("%d,%d\n",((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
|
//printf("%d,%d\n",((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4: //16QAM
|
case 4:
|
||||||
|
|
||||||
qam16_table_offset_re = 0;
|
qam16_table_offset_re = 0;
|
||||||
qam16_table_offset_im = 0;
|
qam16_table_offset_im = 0;
|
||||||
@@ -1201,8 +1191,7 @@ int allocate_REs_in_RB_MCH(int32_t **txdataF,
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6: //64QAM
|
case 6:
|
||||||
|
|
||||||
|
|
||||||
qam64_table_offset_re = 0;
|
qam64_table_offset_re = 0;
|
||||||
qam64_table_offset_im = 0;
|
qam64_table_offset_im = 0;
|
||||||
@@ -1588,7 +1577,6 @@ int dlsch_modulation(int32_t **txdataF,
|
|||||||
|
|
||||||
re_offset+=12; // go to next RB
|
re_offset+=12; // go to next RB
|
||||||
|
|
||||||
|
|
||||||
// check if we crossed the symbol boundary and skip DC
|
// check if we crossed the symbol boundary and skip DC
|
||||||
if (re_offset >= frame_parms->ofdm_symbol_size) {
|
if (re_offset >= frame_parms->ofdm_symbol_size) {
|
||||||
if (skip_dc == 0) //even number of RBs (doesn't straddle DC)
|
if (skip_dc == 0) //even number of RBs (doesn't straddle DC)
|
||||||
@@ -1597,11 +1585,8 @@ int dlsch_modulation(int32_t **txdataF,
|
|||||||
re_offset=7; // odd number of RBs
|
re_offset=7; // odd number of RBs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef DEBUG_DLSCH_MODULATION
|
#ifdef DEBUG_DLSCH_MODULATION
|
||||||
msg("generate_dlsch : jj = %d,re_allocated = %d (G %d)\n",jj,re_allocated,get_G(frame_parms,dlsch0_harq->nb_rb,dlsch0_harq->rb_alloc,mod_order0,Nl0,2,0,subframe_offset));
|
msg("generate_dlsch : jj = %d,re_allocated = %d (G %d)\n",jj,re_allocated,get_G(frame_parms,dlsch0_harq->nb_rb,dlsch0_harq->rb_alloc,mod_order0,Nl0,2,0,subframe_offset));
|
||||||
#endif
|
#endif
|
||||||
@@ -1657,16 +1642,15 @@ int dlsch_modulation_SIC(int32_t **sic_buffer,
|
|||||||
/* TODO: handle more than 1 antenna */
|
/* TODO: handle more than 1 antenna */
|
||||||
//printf("%d(%d) : %d,%d => ",tti_offset,*jj,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
|
//printf("%d(%d) : %d,%d => ",tti_offset,*jj,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
|
||||||
|
|
||||||
((int16_t*)&sic_buffer[0][i])[0] += (x0[jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; //I //b_i
|
((int16_t*)&sic_buffer[0][i])[0] = (x0[jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; //I //b_i
|
||||||
|
|
||||||
jj = jj + 1;
|
jj = jj + 1;
|
||||||
|
|
||||||
((int16_t*)&sic_buffer[0][i])[1] += (x0[jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; //Q //b_{i+1}
|
((int16_t*)&sic_buffer[0][i])[1] = (x0[jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; //Q //b_{i+1}
|
||||||
|
|
||||||
jj = jj + 1;
|
jj = jj + 1;
|
||||||
|
|
||||||
//printf("recon %d,%d\n",((int16_t*)&sic_buffer[0][i])[0],((int16_t*)&sic_buffer[0][i])[1]);
|
//printf("recon %d,%d\n",((int16_t*)&sic_buffer[0][i])[0],((int16_t*)&sic_buffer[0][i])[1]);
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -1705,8 +1689,7 @@ int dlsch_modulation_SIC(int32_t **sic_buffer,
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6: //64QAM
|
case 6:
|
||||||
|
|
||||||
|
|
||||||
qam64_table_offset_re = 0;
|
qam64_table_offset_re = 0;
|
||||||
qam64_table_offset_im = 0;
|
qam64_table_offset_im = 0;
|
||||||
@@ -1814,7 +1797,6 @@ int mch_modulation(int32_t **txdataF,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (mod_order == 4)
|
if (mod_order == 4)
|
||||||
qam_table_s = qam16_table_a;
|
qam_table_s = qam16_table_a;
|
||||||
else if (mod_order == 6)
|
else if (mod_order == 6)
|
||||||
@@ -1838,7 +1820,6 @@ int mch_modulation(int32_t **txdataF,
|
|||||||
|
|
||||||
re_offset+=12; // go to next RB
|
re_offset+=12; // go to next RB
|
||||||
|
|
||||||
|
|
||||||
// check if we crossed the symbol boundary and skip DC
|
// check if we crossed the symbol boundary and skip DC
|
||||||
if (re_offset >= frame_parms->ofdm_symbol_size) {
|
if (re_offset >= frame_parms->ofdm_symbol_size) {
|
||||||
if (skip_dc == 0) //even number of RBs (doesn't straddle DC)
|
if (skip_dc == 0) //even number of RBs (doesn't straddle DC)
|
||||||
@@ -1849,10 +1830,6 @@ int mch_modulation(int32_t **txdataF,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef DEBUG_DLSCH_MODULATION
|
#ifdef DEBUG_DLSCH_MODULATION
|
||||||
msg("generate_dlsch(MCH) : jj = %d,re_allocated = %d (G %d)\n",jj,re_allocated,get_G(frame_parms,dlsch->harq_processes[0]->nb_rb,dlsch->harq_processes[0]->rb_alloc,mod_order,1,2,0,subframe_offset));
|
msg("generate_dlsch(MCH) : jj = %d,re_allocated = %d (G %d)\n",jj,re_allocated,get_G(frame_parms,dlsch->harq_processes[0]->nb_rb,dlsch->harq_processes[0]->rb_alloc,mod_order,1,2,0,subframe_offset));
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -435,19 +435,15 @@ int main(int argc, char **argv)
|
|||||||
case 'B':
|
case 'B':
|
||||||
channel_model=SCM_B;
|
channel_model=SCM_B;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'C':
|
case 'C':
|
||||||
channel_model=SCM_C;
|
channel_model=SCM_C;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'D':
|
case 'D':
|
||||||
channel_model=SCM_D;
|
channel_model=SCM_D;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'E':
|
case 'E':
|
||||||
channel_model=EPA;
|
channel_model=EPA;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'F':
|
case 'F':
|
||||||
channel_model=EVA;
|
channel_model=EVA;
|
||||||
break;
|
break;
|
||||||
@@ -668,7 +664,6 @@ int main(int argc, char **argv)
|
|||||||
n_users = 2;
|
n_users = 2;
|
||||||
eNB_id_i = PHY_vars_UE->n_connected_eNB;
|
eNB_id_i = PHY_vars_UE->n_connected_eNB;
|
||||||
//eNB_id_i=1;
|
//eNB_id_i=1;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
eNB_id_i = eNB_id;
|
eNB_id_i = eNB_id;
|
||||||
@@ -1035,8 +1030,6 @@ n(tikz_fname,"w");
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (input_fd==NULL) {
|
if (input_fd==NULL) {
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// common DCI
|
// common DCI
|
||||||
memcpy(&dci_alloc[num_dci].dci_pdu[0],&CCCH_alloc_pdu,sizeof(DCI1A_5MHz_TDD_1_6_t));
|
memcpy(&dci_alloc[num_dci].dci_pdu[0],&CCCH_alloc_pdu,sizeof(DCI1A_5MHz_TDD_1_6_t));
|
||||||
@@ -1933,7 +1926,6 @@ n(tikz_fname,"w");
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case 5:
|
case 5:
|
||||||
case 6:
|
case 6:
|
||||||
memcpy(&dci_alloc[num_dci].dci_pdu[0],&DLSCH_alloc_pdu2_1E[k],sizeof(DCI1E_5MHz_2A_M10PRB_TDD_t));
|
memcpy(&dci_alloc[num_dci].dci_pdu[0],&DLSCH_alloc_pdu2_1E[k],sizeof(DCI1E_5MHz_2A_M10PRB_TDD_t));
|
||||||
@@ -1979,11 +1971,13 @@ n(tikz_fname,"w");
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
if (n_frames==1) printf("num_pdcch_symbols %d, numCCE %d => ",num_pdcch_symbols,numCCE);
|
if (n_frames==1)
|
||||||
|
printf("num_pdcch_symbols %d, numCCE %d => ",num_pdcch_symbols,numCCE);
|
||||||
|
|
||||||
numCCE = get_nCCE(num_pdcch_symbols,&PHY_vars_eNB->lte_frame_parms,get_mi(&PHY_vars_eNB->lte_frame_parms,subframe));
|
numCCE = get_nCCE(num_pdcch_symbols,&PHY_vars_eNB->lte_frame_parms,get_mi(&PHY_vars_eNB->lte_frame_parms,subframe));
|
||||||
|
|
||||||
if (n_frames==1) printf("%d\n",numCCE);
|
if (n_frames==1)
|
||||||
|
printf("%d\n",numCCE);
|
||||||
|
|
||||||
// apply RNTI-based nCCE allocation
|
// apply RNTI-based nCCE allocation
|
||||||
memset(CCE_table,0,800*sizeof(int));
|
memset(CCE_table,0,800*sizeof(int));
|
||||||
@@ -2366,8 +2360,6 @@ n(tikz_fname,"w");
|
|||||||
PHY_vars_eNB->dlsch_eNB[0][0]->harq_processes[0]->rvidx = round&3;
|
PHY_vars_eNB->dlsch_eNB[0][0]->harq_processes[0]->rvidx = round&3;
|
||||||
|
|
||||||
if (PHY_vars_eNB->lte_frame_parms.frame_type == TDD) {
|
if (PHY_vars_eNB->lte_frame_parms.frame_type == TDD) {
|
||||||
|
|
||||||
|
|
||||||
switch (transmission_mode) {
|
switch (transmission_mode) {
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
@@ -2771,8 +2763,7 @@ n(tikz_fname,"w");
|
|||||||
0,subframe,
|
0,subframe,
|
||||||
&PHY_vars_eNB->dlsch_rate_matching_stats,
|
&PHY_vars_eNB->dlsch_rate_matching_stats,
|
||||||
&PHY_vars_eNB->dlsch_turbo_encoding_stats,
|
&PHY_vars_eNB->dlsch_turbo_encoding_stats,
|
||||||
&PHY_vars_eNB->dlsch_interleaving_stats
|
&PHY_vars_eNB->dlsch_interleaving_stats)<0)
|
||||||
)<0)
|
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
|
||||||
|
|
||||||
@@ -2877,7 +2868,6 @@ n(tikz_fname,"w");
|
|||||||
if (n_frames==1) {
|
if (n_frames==1) {
|
||||||
printf("tx_lev = %d (%d dB)\n",tx_lev,tx_lev_dB);
|
printf("tx_lev = %d (%d dB)\n",tx_lev,tx_lev_dB);
|
||||||
write_output("txsig0.m","txs0", &PHY_vars_eNB->lte_eNB_common_vars.txdata[eNB_id][0][subframe* PHY_vars_eNB->lte_frame_parms.samples_per_tti],
|
write_output("txsig0.m","txs0", &PHY_vars_eNB->lte_eNB_common_vars.txdata[eNB_id][0][subframe* PHY_vars_eNB->lte_frame_parms.samples_per_tti],
|
||||||
|
|
||||||
PHY_vars_eNB->lte_frame_parms.samples_per_tti,1,1);
|
PHY_vars_eNB->lte_frame_parms.samples_per_tti,1,1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3103,15 +3093,14 @@ n(tikz_fname,"w");
|
|||||||
|
|
||||||
if (PHY_vars_UE->perfect_ce==1) {
|
if (PHY_vars_UE->perfect_ce==1) {
|
||||||
if (awgn_flag==0) {
|
if (awgn_flag==0) {
|
||||||
|
|
||||||
for(k=0; k<NUMBER_OF_eNB_MAX; k++) {
|
for(k=0; k<NUMBER_OF_eNB_MAX; k++) {
|
||||||
for(aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
|
for(aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
|
||||||
for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
|
for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
|
||||||
for (i=0; i<frame_parms->N_RB_DL*12; i++) {
|
for (i=0; i<frame_parms->N_RB_DL*12; i++) {
|
||||||
((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[k][(aa<<1)+aarx])[2*i+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=(int16_t)(
|
((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[k][(aa<<1)+aarx])[2*i+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=
|
||||||
eNB2UE[round]->chF[aarx+(aa*frame_parms->nb_antennas_rx)][i].x*AMP);
|
(int16_t)(eNB2UE[round]->chF[aarx+(aa*frame_parms->nb_antennas_rx)][i].x*AMP);
|
||||||
((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[k][(aa<<1)+aarx])[2*i+1+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=(int16_t)(
|
((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[k][(aa<<1)+aarx])[2*i+1+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=
|
||||||
eNB2UE[round]->chF[aarx+(aa*frame_parms->nb_antennas_rx)][i].y*AMP);
|
(int16_t)(eNB2UE[round]->chF[aarx+(aa*frame_parms->nb_antennas_rx)][i].y*AMP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3128,8 +3117,7 @@ n(tikz_fname,"w");
|
|||||||
((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[0][3])[2*i+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=-(short)(AMP);
|
((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[0][3])[2*i+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=-(short)(AMP);
|
||||||
((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[0][3])[2*i+1+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=0;
|
((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[0][3])[2*i+1+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=0;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
for(aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
|
for(aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
|
||||||
for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
|
for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
|
||||||
for (i=0; i<frame_parms->N_RB_DL*12; i++) {
|
for (i=0; i<frame_parms->N_RB_DL*12; i++) {
|
||||||
@@ -3141,6 +3129,7 @@ n(tikz_fname,"w");
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((Ns==((2*subframe))) && (l==0)) {
|
if ((Ns==((2*subframe))) && (l==0)) {
|
||||||
lte_ue_measurements(PHY_vars_UE,
|
lte_ue_measurements(PHY_vars_UE,
|
||||||
subframe*PHY_vars_UE->lte_frame_parms.samples_per_tti,
|
subframe*PHY_vars_UE->lte_frame_parms.samples_per_tti,
|
||||||
@@ -3183,11 +3172,10 @@ n(tikz_fname,"w");
|
|||||||
|
|
||||||
|
|
||||||
if ((Ns==(2*subframe)) && (l==pilot1)) {// process symbols 0,1,2
|
if ((Ns==(2*subframe)) && (l==pilot1)) {// process symbols 0,1,2
|
||||||
|
|
||||||
if (dci_flag == 1) {
|
if (dci_flag == 1) {
|
||||||
PHY_vars_UE->UE_mode[0] = PUSCH;
|
PHY_vars_UE->UE_mode[0] = PUSCH;
|
||||||
|
|
||||||
start_meas(&PHY_vars_UE->dlsch_rx_pdcch_stats);
|
start_meas(&PHY_vars_UE->dlsch_rx_pdcch_stats);
|
||||||
|
|
||||||
rx_pdcch(&PHY_vars_UE->lte_ue_common_vars,
|
rx_pdcch(&PHY_vars_UE->lte_ue_common_vars,
|
||||||
PHY_vars_UE->lte_ue_pdcch_vars,
|
PHY_vars_UE->lte_ue_pdcch_vars,
|
||||||
&PHY_vars_UE->lte_frame_parms,
|
&PHY_vars_UE->lte_frame_parms,
|
||||||
@@ -3196,6 +3184,7 @@ n(tikz_fname,"w");
|
|||||||
(PHY_vars_UE->lte_frame_parms.mode1_flag == 1) ? SISO : ALAMOUTI,
|
(PHY_vars_UE->lte_frame_parms.mode1_flag == 1) ? SISO : ALAMOUTI,
|
||||||
PHY_vars_UE->high_speed_flag,
|
PHY_vars_UE->high_speed_flag,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
stop_meas(&PHY_vars_UE->dlsch_rx_pdcch_stats);
|
stop_meas(&PHY_vars_UE->dlsch_rx_pdcch_stats);
|
||||||
// overwrite number of pdcch symbols
|
// overwrite number of pdcch symbols
|
||||||
PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols = num_pdcch_symbols;
|
PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols = num_pdcch_symbols;
|
||||||
@@ -3247,7 +3236,8 @@ n(tikz_fname,"w");
|
|||||||
get_Qm(PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->mcs),
|
get_Qm(PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->mcs),
|
||||||
PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->Nl,
|
PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->Nl,
|
||||||
PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols,
|
PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols,
|
||||||
0,subframe);
|
0,
|
||||||
|
subframe);
|
||||||
/*
|
/*
|
||||||
rate = (double)dlsch_tbs25[get_I_TBS(PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->mcs)][PHY_vars_UE->dlsch_ue[0][0]->nb_rb-1]/(coded_bits_per_codeword);
|
rate = (double)dlsch_tbs25[get_I_TBS(PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->mcs)][PHY_vars_UE->dlsch_ue[0][0]->nb_rb-1]/(coded_bits_per_codeword);
|
||||||
rate*=get_Qm(PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->mcs);
|
rate*=get_Qm(PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->mcs);
|
||||||
@@ -3255,8 +3245,7 @@ n(tikz_fname,"w");
|
|||||||
printf("num_pdcch_symbols %d, G %d, TBS %d\n",PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols,coded_bits_per_codeword,PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->TBS);
|
printf("num_pdcch_symbols %d, G %d, TBS %d\n",PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols,coded_bits_per_codeword,PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->TBS);
|
||||||
|
|
||||||
dlsch_active = 1;
|
dlsch_active = 1;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
dlsch_active = 0;
|
dlsch_active = 0;
|
||||||
if (round==0) {
|
if (round==0) {
|
||||||
dci_errors++;
|
dci_errors++;
|
||||||
@@ -3273,9 +3262,7 @@ n(tikz_fname,"w");
|
|||||||
// round=5;
|
// round=5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // if dci_flag==1
|
} else { //dci_flag == 0
|
||||||
else { //dci_flag == 0
|
|
||||||
|
|
||||||
PHY_vars_UE->lte_ue_pdcch_vars[0]->crnti = n_rnti;
|
PHY_vars_UE->lte_ue_pdcch_vars[0]->crnti = n_rnti;
|
||||||
PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols = num_pdcch_symbols;
|
PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols = num_pdcch_symbols;
|
||||||
if (round == 0) {
|
if (round == 0) {
|
||||||
@@ -3340,16 +3327,13 @@ n(tikz_fname,"w");
|
|||||||
0,
|
0,
|
||||||
P_RNTI);
|
P_RNTI);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
dlsch_active = 1;
|
dlsch_active = 1;
|
||||||
} // if dci_flag == 1
|
} // if dci_flag == 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dlsch_active == 1) {
|
if (dlsch_active == 1) {
|
||||||
if ((Ns==(1+(2*subframe))) && (l==0)) {// process PDSCH symbols 1,2,3,4,5,(6 Normal Prefix)
|
if ((Ns==(1+(2*subframe))) && (l==0)) {// process PDSCH symbols 1,2,3,4,5,(6 Normal Prefix
|
||||||
|
|
||||||
|
|
||||||
if (transmission_mode == 5) {
|
if (transmission_mode == 5) {
|
||||||
if ((PHY_vars_UE->dlsch_ue[eNB_id][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->dl_power_off==0) &&
|
if ((PHY_vars_UE->dlsch_ue[eNB_id][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->dl_power_off==0) &&
|
||||||
(openair_daq_vars.use_ia_receiver ==1)) {
|
(openair_daq_vars.use_ia_receiver ==1)) {
|
||||||
@@ -3362,10 +3346,7 @@ n(tikz_fname,"w");
|
|||||||
|
|
||||||
start_meas(&PHY_vars_UE->dlsch_llr_stats);
|
start_meas(&PHY_vars_UE->dlsch_llr_stats);
|
||||||
|
|
||||||
for (m=PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols;
|
for (m=PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols; m<pilot2; m++) {
|
||||||
m<pilot2;
|
|
||||||
m++)
|
|
||||||
{
|
|
||||||
if (rx_pdsch(PHY_vars_UE,
|
if (rx_pdsch(PHY_vars_UE,
|
||||||
PDSCH,
|
PDSCH,
|
||||||
eNB_id,
|
eNB_id,
|
||||||
@@ -3375,8 +3356,7 @@ n(tikz_fname,"w");
|
|||||||
(m==PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols)?1:0,
|
(m==PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols)?1:0,
|
||||||
rx_type,
|
rx_type,
|
||||||
i_mod,
|
i_mod,
|
||||||
PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid)==-1)
|
PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid)==-1){
|
||||||
{
|
|
||||||
dlsch_active = 0;
|
dlsch_active = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -3384,13 +3364,9 @@ n(tikz_fname,"w");
|
|||||||
stop_meas(&PHY_vars_UE->dlsch_llr_stats);
|
stop_meas(&PHY_vars_UE->dlsch_llr_stats);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((Ns==(1+(2*subframe))) && (l==pilot1))
|
if ((Ns==(1+(2*subframe))) && (l==pilot1)){// process symbols (6 Extended Prefix),7,8,9
|
||||||
{// process symbols (6 Extended Prefix),7,8,9
|
|
||||||
start_meas(&PHY_vars_UE->dlsch_llr_stats);
|
start_meas(&PHY_vars_UE->dlsch_llr_stats);
|
||||||
for (m=pilot2;
|
for (m=pilot2;m<pilot3; m++) {
|
||||||
m<pilot3;
|
|
||||||
m++)
|
|
||||||
{
|
|
||||||
if (rx_pdsch(PHY_vars_UE,
|
if (rx_pdsch(PHY_vars_UE,
|
||||||
PDSCH,
|
PDSCH,
|
||||||
eNB_id,
|
eNB_id,
|
||||||
@@ -3400,8 +3376,7 @@ n(tikz_fname,"w");
|
|||||||
0,
|
0,
|
||||||
rx_type,
|
rx_type,
|
||||||
i_mod,
|
i_mod,
|
||||||
PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid)==-1)
|
PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid)==-1){
|
||||||
{
|
|
||||||
dlsch_active=0;
|
dlsch_active=0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -3409,13 +3384,9 @@ n(tikz_fname,"w");
|
|||||||
stop_meas(&PHY_vars_UE->dlsch_llr_stats);
|
stop_meas(&PHY_vars_UE->dlsch_llr_stats);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((Ns==(2+(2*subframe))) && (l==0)) // process symbols 10,11,(12,13 Normal Prefix) do deinterleaving for TTI
|
if ((Ns==(2+(2*subframe))) && (l==0)) { // process symbols 10,11,(12,13 Normal Prefix) do deinterleaving for TTI
|
||||||
{
|
|
||||||
start_meas(&PHY_vars_UE->dlsch_llr_stats);
|
start_meas(&PHY_vars_UE->dlsch_llr_stats);
|
||||||
for (m=pilot3;
|
for (m=pilot3; m<PHY_vars_UE->lte_frame_parms.symbols_per_tti; m++) {
|
||||||
m<PHY_vars_UE->lte_frame_parms.symbols_per_tti;
|
|
||||||
m++)
|
|
||||||
{
|
|
||||||
if (rx_pdsch(PHY_vars_UE,
|
if (rx_pdsch(PHY_vars_UE,
|
||||||
PDSCH,
|
PDSCH,
|
||||||
eNB_id,
|
eNB_id,
|
||||||
@@ -3425,8 +3396,7 @@ n(tikz_fname,"w");
|
|||||||
0,
|
0,
|
||||||
rx_type,
|
rx_type,
|
||||||
i_mod,
|
i_mod,
|
||||||
PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid)==-1)
|
PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid)==-1) {
|
||||||
{
|
|
||||||
dlsch_active=0;
|
dlsch_active=0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user