/// First CCE of last PDSCH scheduling per subframe. Again used during PUCCH detection for ACK/NAK.
/// First CCE of last PDSCH scheduling per subframe. Again used during PUCCH detection for ACK/NAK.
uint8_tnCCE[10];
uint8_tnCCE[10];
/*in NB-IoT there is only 1 HARQ process for each UE therefore no pid is required*/
/*in NB-IoT there is only 1 HARQ process for each UE therefore no pid is required*/
/// The only HARQ process for the DLSCH
/// The only HARQ process for the DLSCH
NB_IoT_DL_eNB_HARQ_t*harq_process;
NB_IoT_DL_eNB_HARQ_t*harq_process;
...
@@ -555,7 +560,6 @@ typedef struct {
...
@@ -555,7 +560,6 @@ typedef struct {
int16_tsqrt_rho_a;
int16_tsqrt_rho_a;
/// amplitude of PDSCH (compared to RS) in symbols containing pilots
/// amplitude of PDSCH (compared to RS) in symbols containing pilots
int16_tsqrt_rho_b;
int16_tsqrt_rho_b;
///NB-IoT
///NB-IoT
/// may use in the npdsch_procedures
/// may use in the npdsch_procedures
uint16_tscrambling_sequence_intialization;
uint16_tscrambling_sequence_intialization;
...
@@ -564,23 +568,18 @@ typedef struct {
...
@@ -564,23 +568,18 @@ typedef struct {
//This indicate the current subframe within the subframe interval between the NPDSCH transmission (Nsf*Nrep)
//This indicate the current subframe within the subframe interval between the NPDSCH transmission (Nsf*Nrep)
uint16_tsf_index;
uint16_tsf_index;
///indicates the starting OFDM symbol in the first slot of a subframe k for the NPDSCH transmission
///indicates the starting OFDM symbol in the first slot of a subframe k for the NPDSCH transmission
/// see FAPI/NFAPI specs Table 4-47
/// see FAPI/NFAPI specs Table 4-47
uint8_tnpdsch_start_symbol;
uint8_tnpdsch_start_symbol;
/*SIB1-NB related parameters*/
/*SIB1-NB related parameters*/
///flag for indicate if the current frame is the start of a new SIB1-NB repetition within the SIB1-NB period (0 = FALSE, 1 = TRUE)
///flag for indicate if the current frame is the start of a new SIB1-NB repetition within the SIB1-NB period (0 = FALSE, 1 = TRUE)
uint8_tsib1_rep_start;
uint8_tsib1_rep_start;
///the number of the frame within the 16 continuous frame in which sib1-NB is transmitted (1-8 = 1st, 2nd ecc..) (0 = not foresees a transmission)
///the number of the frame within the 16 continuous frame in which sib1-NB is transmitted (1-8 = 1st, 2nd ecc..) (0 = not foresees a transmission)
uint8_trelative_sib1_frame;
uint8_trelative_sib1_frame;
//Flag used to discern among different NDLSCH structures (SIB1,SI,RA,UE-spec)
//Flag used to discern among different NDLSCH structures (SIB1,SI,RA,UE-spec)
//(used inside the ndlsch procedure for distinguish the different type of data to manage also in term of repetitions and transmission over more subframes
//(used inside the ndlsch procedure for distinguish the different type of data to manage also in term of repetitions and transmission over more subframes
ndlsch_flag_tndlsch_type;
ndlsch_flag_tndlsch_type;
}NB_IoT_eNB_NDLSCH_t;
}NB_IoT_eNB_NDLSCH_t;
typedefstruct{
typedefstruct{
...
@@ -616,7 +615,6 @@ typedef struct {
...
@@ -616,7 +615,6 @@ typedef struct {
uint8_trepetition_number;
uint8_trepetition_number;
/// Determined the repetition number value 0-3
/// Determined the repetition number value 0-3
uint8_tdci_subframe_repetitions;
uint8_tdci_subframe_repetitions;
/// Flag indicating that this ULSCH has been allocated by a DCI (otherwise it is a retransmission based on PHICH NAK)
/// Flag indicating that this ULSCH has been allocated by a DCI (otherwise it is a retransmission based on PHICH NAK)
uint8_tdci_alloc;
uint8_tdci_alloc;
/// Flag indicating that this ULSCH has been allocated by a RAR (otherwise it is a retransmission based on PHICH NAK or DCI)
/// Flag indicating that this ULSCH has been allocated by a RAR (otherwise it is a retransmission based on PHICH NAK or DCI)
/* The input bit is shifted in position 8 of the state.
/* The input bit is shifted in position 8 of the state.
Shiftbit will take values between 1 and 8 */
Shiftbit will take values between 1 and 8 */
state=0;
state=0;
...
@@ -74,12 +73,14 @@ int dlsch_encoding_NB_IoT(unsigned char *a,
...
@@ -74,12 +73,14 @@ int dlsch_encoding_NB_IoT(unsigned char *a,
time_stats_t_NB_IoT*te_stats,
time_stats_t_NB_IoT*te_stats,
time_stats_t_NB_IoT*i_stats)
time_stats_t_NB_IoT*i_stats)
{
{
unsignedintcrc=1;
unsignedintcrc=1;
//unsigned char harq_pid = dlsch->current_harq_pid; // to check during implementation if harq_pid is required in the NB_IoT_eNB_DLSCH_t structure in defs_NB_IoT.h
//unsigned char harq_pid = dlsch->current_harq_pid; // to check during implementation if harq_pid is required in the NB_IoT_eNB_DLSCH_t structure in defs_NB_IoT.h
unsignedintA;
unsignedintA;
uint8_tRCC;
uint8_tRCC;
A=dlsch->harq_process.TBS;// 680
A=dlsch->harq_process.TBS;// 680
dlsch->harq_process.length_e=G*Nsf;// G*Nsf (number_of_subframes) = total number of bits to transmit
dlsch->harq_process.length_e=G*Nsf;// G*Nsf (number_of_subframes) = total number of bits to transmit
int32_tnumbits=A+24;
int32_tnumbits=A+24;
if(dlsch->harq_process.round==0){// This is a new packet
if(dlsch->harq_process.round==0){// This is a new packet