From f9b3ba52c290c037c775387712f6fe92fd8cc0a4 Mon Sep 17 00:00:00 2001 From: ismagom Date: Wed, 10 Jun 2015 19:12:12 +0200 Subject: [PATCH] Fixed problems with DL HARQ. Fixed PUSCH/HARQ multiplexing. Removed some Info messages --- .../ue/mac/include/srsapps/ue/mac/dl_harq.h | 1 - .../ue/mac/include/srsapps/ue/mac/proc_ra.h | 4 ++ srsapps/ue/mac/src/demux.cc | 4 +- srsapps/ue/mac/src/dl_harq.cc | 40 +++++++--------- srsapps/ue/mac/src/mac.cc | 16 +++---- srsapps/ue/mac/src/mux.cc | 6 +-- srsapps/ue/mac/src/proc_bsr.cc | 7 +-- srsapps/ue/mac/src/proc_ra.cc | 48 +++++++++++++------ srsapps/ue/mac/src/proc_sr.cc | 4 +- srsapps/ue/mac/src/ul_harq.cc | 2 +- .../include/srsapps/ue/phy/dl_sched_grant.h | 10 ++++ srsapps/ue/phy/src/dl_buffer.cc | 4 +- srsapps/ue/phy/src/phy.cc | 2 +- srsapps/ue/phy/src/prach.cc | 2 +- srsapps/ue/phy/src/ul_buffer.cc | 8 ++-- srslte/lib/phch/src/dci.c | 11 +++-- srslte/lib/phch/src/prach.c | 2 - srslte/lib/ue/src/ue_ul.c | 2 +- 18 files changed, 102 insertions(+), 71 deletions(-) diff --git a/srsapps/ue/mac/include/srsapps/ue/mac/dl_harq.h b/srsapps/ue/mac/include/srsapps/ue/mac/dl_harq.h index 85bc77a62..d5744f6e3 100644 --- a/srsapps/ue/mac/include/srsapps/ue/mac/dl_harq.h +++ b/srsapps/ue/mac/include/srsapps/ue/mac/dl_harq.h @@ -81,7 +81,6 @@ private: dl_sched_grant cur_grant; dl_sched_grant pending_ack_grant; ul_buffer *pending_ul_buffer; - bool is_first_tx; bool pending_ack; srslte::log *log_h; diff --git a/srsapps/ue/mac/include/srsapps/ue/mac/proc_ra.h b/srsapps/ue/mac/include/srsapps/ue/mac/proc_ra.h index 6abc0aae4..14aaeccf4 100644 --- a/srsapps/ue/mac/include/srsapps/ue/mac/proc_ra.h +++ b/srsapps/ue/mac/include/srsapps/ue/mac/proc_ra.h @@ -66,6 +66,7 @@ class ra_proc : public proc,timer_callback void pdcch_to_crnti(bool is_ul_grant); void timer_expired(uint32_t timer_id); + void* run_prach_thread(); private: void process_timeadv_cmd(uint32_t ta_cmd); @@ -144,6 +145,9 @@ private: demux *demux_unit; pthread_t pt_init_prach; + pthread_cond_t cond; + pthread_mutex_t mutex; + bool start_prach_init; uint64_t transmitted_contention_id; uint16_t transmitted_crnti; diff --git a/srsapps/ue/mac/src/demux.cc b/srsapps/ue/mac/src/demux.cc index c5eed6a04..36bce0301 100644 --- a/srsapps/ue/mac/src/demux.cc +++ b/srsapps/ue/mac/src/demux.cc @@ -148,11 +148,11 @@ void demux::process_pdu(sch_pdu *pdu_msg) qbuff *dest_lch = mac_io_h->get(pdu_msg->get()->get_sdu_lcid()); if (dest_lch) { dest_lch->send(pdu_msg->get()->get_sdu_ptr(), pdu_msg->get()->get_sdu_nbytes()*8); - Info("Sent MAC SDU len=%d bytes to lchid=%d\n", + Debug("Sent MAC SDU len=%d bytes to lchid=%d\n", pdu_msg->get()->get_sdu_nbytes(), pdu_msg->get()->get_sdu_lcid()); if (sdu_handler_) { sdu_handler_->notify_new_sdu(pdu_msg->get()->get_sdu_lcid()); - Info("Notified SDU handler len=%d bytes to lchid=%d\n", + Debug("Notified SDU handler len=%d bytes to lchid=%d\n", pdu_msg->get()->get_sdu_nbytes(), pdu_msg->get()->get_sdu_lcid()); } diff --git a/srsapps/ue/mac/src/dl_harq.cc b/srsapps/ue/mac/src/dl_harq.cc index 2460de4ce..5e08fb6d9 100644 --- a/srsapps/ue/mac/src/dl_harq.cc +++ b/srsapps/ue/mac/src/dl_harq.cc @@ -102,7 +102,6 @@ void dl_harq_entity::send_pending_ack_contention_resolution() *********************************************************/ dl_harq_entity::dl_harq_process::dl_harq_process() : cur_grant(0),pending_ack_grant(0) { - is_first_tx = true; is_initiated = false; ack = false; bzero(&cur_grant, sizeof(srslte::ue::dl_sched_grant)); @@ -112,7 +111,6 @@ dl_harq_entity::dl_harq_process::dl_harq_process() : cur_grant(0),pending_ack_gr void dl_harq_entity::dl_harq_process::reset() { ack = false; - is_first_tx = true; bzero(&cur_grant, sizeof(srslte::ue::dl_sched_grant)); if (is_initiated) { srslte_softbuffer_rx_reset(&softbuffer); @@ -135,8 +133,17 @@ void dl_harq_entity::dl_harq_process::receive_data(uint32_t tti, srslte::ue::dl_ // If data has not yet been successfully decoded if (ack == false) { + // Combine the received data and attempt to decode it if (dl_buffer->decode_data(&cur_grant, &softbuffer, payload)) { + ack = true; + } else { + ack = false; + } + + Info("DL PID %d: TBS=%d, RV=%d, MCS=%d, crc=%s\n", pid, cur_grant.get_tbs(), cur_grant.get_rv(), cur_grant.get_mcs(), ack?"OK":"NOK"); + + if (ack) { // RX OK if (pid == HARQ_BCCH_PID) { Debug("Delivering PDU=%d bytes to Dissassemble and Demux unit (BCCH)\n", cur_grant.get_tbs()/8); @@ -150,13 +157,10 @@ void dl_harq_entity::dl_harq_process::receive_data(uint32_t tti, srslte::ue::dl_ Debug("Delivering PDU=%d bytes to Dissassemble and Demux unit\n", cur_grant.get_tbs()/8); harq_entity->demux_unit->push_pdu(payload, cur_grant.get_tbs()); } - ack = true; - is_first_tx = true; - } - } else { - // RX NOK - ack = false; + } } + } else { + Warning("DL PID %d: Received duplicate TB. Discarting and retransmitting ACK\n"); } if (pid == HARQ_BCCH_PID || harq_entity->timers_db->get(mac::TIME_ALIGNMENT)->is_expired()) { // Do not generate ACK @@ -180,15 +184,15 @@ void dl_harq_entity::dl_harq_process::receive_data(uint32_t tti, srslte::ue::dl_ fprintf(stderr, "Error with DL grant. TBS (%d) exceeds payload buffer length (%d)\n", cur_grant.get_tbs(), max_payload_len); } } - - Info("DL PID %d: TBS=%d, RV=%d, MCS=%d, crc=%s, PHY TTI: %d\n", pid, cur_grant.get_tbs(), cur_grant.get_rv(), cur_grant.get_mcs(), ack?"OK":"NOK", phy_h->get_current_tti()); - } // Implement 5.3.2.2 void dl_harq_entity::dl_harq_process::set_harq_info(srslte::ue::dl_sched_grant* new_grant) { bool is_new_transmission = false; - if (new_grant->get_ndi() == true || is_first_tx || (pid == HARQ_BCCH_PID && new_grant->get_rv() == 0)) { + if ((new_grant->get_ndi() != cur_grant.get_ndi() && new_grant->get_tbs() == cur_grant.get_tbs()) || // NDI toggled for same TB (assume TB is identified by TBS) + (pid == HARQ_BCCH_PID && new_grant->get_rv() == 0) || // Broadcast PID and 1st TX (RV=0) + (new_grant->get_tbs() != cur_grant.get_tbs())) // First transmission for this TB + { is_new_transmission = true; Debug("Set HARQ Info for new transmission\n"); } else { @@ -196,16 +200,8 @@ void dl_harq_entity::dl_harq_process::set_harq_info(srslte::ue::dl_sched_grant* Debug("Set HARQ Info for retransmission\n"); } - if (is_first_tx) { - Info("DL PID %d: first TX RV=%d, NDI=%d\n", pid, new_grant->get_rv(), new_grant->get_ndi()); - } else { - Info("DL PID %d: %s RV=%d, NDI=%d, LastNDI=%d\n", pid, is_new_transmission?"new TX":"reTX", new_grant->get_rv(), - new_grant->get_ndi(), cur_grant.get_ndi()); - } - - if (is_first_tx) { - is_first_tx = false; - } + Info("DL PID %d: %s RV=%d, NDI=%d, LastNDI=%d, DCI %s\n", pid, is_new_transmission?"new TX":"reTX", new_grant->get_rv(), + new_grant->get_ndi(), cur_grant.get_ndi(), new_grant->get_dciformat_string()); if (is_new_transmission) { ack = false; diff --git a/srsapps/ue/mac/src/mac.cc b/srsapps/ue/mac/src/mac.cc index 2b6b11f2e..331995caa 100644 --- a/srsapps/ue/mac/src/mac.cc +++ b/srsapps/ue/mac/src/mac.cc @@ -201,17 +201,17 @@ void mac::main_radio_loop() { // Check if BSR procedure need to start SR if (bsr_procedure.need_to_send_sr()) { - Info("Starting SR procedure by BSR request, PHY TTI=%d\n", phy_h->get_current_tti()); + Debug("Starting SR procedure by BSR request, PHY TTI=%d\n", phy_h->get_current_tti()); sr_procedure.start(); } else if (bsr_procedure.need_to_reset_sr()) { - Info("Resetting SR procedure by BSR request\n"); + Debug("Resetting SR procedure by BSR request\n"); sr_procedure.reset(); } sr_procedure.step(tti); // Check SR if we need to start RA if (sr_procedure.need_random_access()) { - Info("Starting RA procedure by MAC order\n"); + Warning("Starting RA procedure by MAC order is DISABLED\n"); //ra_procedure.start_mac_order(); } @@ -244,7 +244,6 @@ void mac::main_radio_loop() { if (mux_unit.is_pending_ccch_sdu()) { // Start RA procedure if (!ra_procedure.in_progress() && !ra_procedure.is_successful()) { - Info("Starting RA procedure by RLC order\n"); ra_procedure.start_rlc_order(); } } @@ -379,14 +378,17 @@ void mac::process_dl_grants(uint32_t tti) { uint32_t harq_pid = ue_grant.get_harq_process(); if (i == mac_params::RNTI_TEMP && last_temporal_crnti != params_db.get_param(i)) { ue_grant.set_ndi(true); + Info("Set NDI=1 for Temp-RNTI DL grant\n"); last_temporal_crnti = params_db.get_param(i); } if (i == mac_params::RNTI_C && dl_harq.is_sps(harq_pid)) { ue_grant.set_ndi(true); + Info("Set NDI=1 for C-RNTI DL grant\n"); } dl_harq.set_harq_info(harq_pid, &ue_grant); dl_harq.receive_data(tti, harq_pid, dl_buffer, phy_h); } else { + /* This is for SPS scheduling */ uint32_t harq_pid = get_harq_sps_pid(tti); if (ue_grant.get_ndi()) { ue_grant.set_ndi(false); @@ -428,7 +430,7 @@ void mac::process_dl_grants(uint32_t tti) { if (!(phy_h->tti_to_subf(si_window_length) != 1 && phy_h->tti_to_subf(si_window_start) == 5 && (phy_h->tti_to_SFN(tti)%2) == 0)) { - Info("Searching for DL grant for SI-RNTI window_st=%d, window_len=%d\n", si_window_start, si_window_length); + Debug("Searching for DL grant for SI-RNTI window_st=%d, window_len=%d\n", si_window_start, si_window_length); dl_sched_grant si_grant(sched_grant::RNTI_TYPE_SIRNTI, SRSLTE_SIRNTI); if (dl_buffer->get_dl_grant(&si_grant)) { uint32_t k; @@ -443,9 +445,7 @@ void mac::process_dl_grants(uint32_t tti) { dl_harq.receive_data(tti, dl_harq_entity::HARQ_BCCH_PID, dl_buffer, phy_h); params_db.set_param(mac_params::BCCH_SI_WINDOW_ST, 0); params_db.set_param(mac_params::BCCH_SI_WINDOW_LEN, 0); - } else { - Warning("DL grant not found\n"); - } + } } } diff --git a/srsapps/ue/mac/src/mux.cc b/srsapps/ue/mac/src/mux.cc index c69e38e22..fde3eb2aa 100644 --- a/srsapps/ue/mac/src/mux.cc +++ b/srsapps/ue/mac/src/mux.cc @@ -230,7 +230,7 @@ bool mux::assemble_pdu(uint32_t pdu_sz_nbits) { // MAC control element for BSR, with exception of BSR included for padding; sch_subh *bsr_subh = NULL; if (bsr_payload_sz) { - Info("Including BSR CE size %d\n", bsr_payload_sz); + Debug("Including BSR CE size %d\n", bsr_payload_sz); if (pdu_msg.new_subh()) { pdu_msg.next(); bsr_subh = pdu_msg.get(); @@ -281,7 +281,7 @@ bool mux::assemble_pdu(uint32_t pdu_sz_nbits) { } } - Info("Assembled MAC PDU msg size %d/%d bytes\n", pdu_msg.size(), pdu_sz_nbits/8); + Debug("Assembled MAC PDU msg size %d/%d bytes\n", pdu_msg.size(), pdu_sz_nbits/8); //pdu_msg.fprint(stdout); /* Generate MAC PDU and save to buffer */ @@ -321,7 +321,7 @@ bool mux::allocate_sdu(uint32_t lcid, sch_pdu *pdu_msg, uint32_t *sdu_sz, bool * if (is_first) { *is_first = false; } - Info("Allocated SDU lcid=%d nbytes=%d\n", lcid, nbytes); + Debug("Allocated SDU lcid=%d nbytes=%d\n", lcid, nbytes); // Increase number of pop'ed packets from queue nof_tx_pkts[lcid]++; return true; diff --git a/srsapps/ue/mac/src/proc_bsr.cc b/srsapps/ue/mac/src/proc_bsr.cc index 34ec3dd03..daa494e7a 100644 --- a/srsapps/ue/mac/src/proc_bsr.cc +++ b/srsapps/ue/mac/src/proc_bsr.cc @@ -264,10 +264,10 @@ uint32_t bsr_proc::need_to_send_bsr_on_ul_grant(uint32_t grant_size) bsr_sz = bsr.format==LONG_BSR?3:1; if (total_data <= grant_size && total_data + 1 + bsr_sz > grant_size) { bsr_sz = 0; - Info("Grant is not enough to accomodate the BSR MAC CE\n"); + Debug("Grant is not enough to accomodate the BSR MAC CE\n"); triggered_bsr_type = NONE; } - Info("Checking if Regular BSR is sent: grant_size=%d, total_data=%d, bsr_sz=%d\n", + Debug("Checking if Regular BSR is sent: grant_size=%d, total_data=%d, bsr_sz=%d\n", grant_size, total_data, bsr_sz); } return bsr_sz; @@ -285,7 +285,7 @@ bool bsr_proc::generate_bsr_on_ul_grant(uint32_t nof_padding_bytes, bsr_t *bsr) } generate_bsr(bsr, nof_padding_bytes); ret = true; - Info("Sending BSR type %s, format %s, nof_padding_bytes=%d\n", + Debug("Sending BSR type %s, format %s, nof_padding_bytes=%d\n", bsr_type_tostring(triggered_bsr_type), bsr_format_tostring(bsr->format), nof_padding_bytes); if (timer_periodic && bsr->format != TRUNC_BSR) { @@ -308,6 +308,7 @@ bool bsr_proc::generate_bsr_on_ul_grant(uint32_t nof_padding_bytes, bsr_t *bsr) bool bsr_proc::need_to_reset_sr() { if (reset_sr) { reset_sr = false; + sr_is_sent = false; return true; } else { return false; diff --git a/srsapps/ue/mac/src/proc_ra.cc b/srsapps/ue/mac/src/proc_ra.cc index 17f92095a..1821b47b5 100644 --- a/srsapps/ue/mac/src/proc_ra.cc +++ b/srsapps/ue/mac/src/proc_ra.cc @@ -47,6 +47,25 @@ uint32_t backoff_table[16] = {0, 10, 20, 30, 40, 60, 80, 120, 160, 240, 320, 480 // Table 7.6-1: DELTA_PREAMBLE values. int delta_preamble_db_table[5] = {0, 0, -3, -3, 8}; + +void* init_prach_thread(void *arg) { + ra_proc* ra = (ra_proc*) arg; + return ra->run_prach_thread(); +} + +void* ra_proc::run_prach_thread() { + pthread_mutex_lock(&mutex); + while(!start_prach_init) { + pthread_cond_wait(&cond, &mutex); + } + pthread_mutex_unlock(&mutex); + if (phy_h->init_prach()) { + return (void*) 0; + } else { + return (void*) -1; + } + +} bool ra_proc::init(mac_params* params_db_, phy* phy_h_, srslte::log* log_h_, srslte::timers* timers_db_, mux* mux_unit_, demux* demux_unit_) { @@ -56,6 +75,12 @@ bool ra_proc::init(mac_params* params_db_, phy* phy_h_, srslte::log* log_h_, srs timers_db = timers_db_; mux_unit = mux_unit_; demux_unit= demux_unit_; + start_prach_init = false; + if (pthread_create(&pt_init_prach, NULL, init_prach_thread, this)) { + perror("pthread_create"); + } + pthread_mutex_init(&mutex, NULL); + pthread_cond_init(&cond, NULL); reset(); } @@ -168,15 +193,6 @@ void ra_proc::process_timeadv_cmd(uint32_t ta) { } } -void* init_prach_thread(void *arg) { - phy* phy_h = (phy*) arg; - if (phy_h->init_prach()) { - return (void*) 0; - } else { - return (void*) -1; - } -} - void ra_proc::step_initialization() { read_params(); pdcch_to_crnti_received = PDCCH_CRNTI_NOT_RECEIVED; @@ -185,12 +201,14 @@ void ra_proc::step_initialization() { first_rar_received = true; mux_unit->msg3_flush(); backoff_param_ms = 0; - if (pthread_create(&pt_init_prach, NULL, init_prach_thread, phy_h)) { - perror("pthread_create"); - state = RA_PROBLEM; - } else { - state = INITIALIZATION_WAIT; - } + + // Instruct phy prach init thread to start initialization + pthread_mutex_lock(&mutex); + start_prach_init = true; + pthread_cond_signal(&cond); + pthread_mutex_unlock(&mutex); + state = INITIALIZATION_WAIT; + } void ra_proc::step_initialization_wait() { diff --git a/srsapps/ue/mac/src/proc_sr.cc b/srsapps/ue/mac/src/proc_sr.cc index 19324447a..0d394b4a5 100644 --- a/srsapps/ue/mac/src/proc_sr.cc +++ b/srsapps/ue/mac/src/proc_sr.cc @@ -60,7 +60,7 @@ void sr_proc::step(uint32_t tti) int last_tx_tti = phy_h->sr_last_tx_tti(); if (last_tx_tti >= 0 && last_tx_tti + 4 < tti) { sr_counter++; - Info("SR signalling PHY. sr_counter=%d, PHY TTI=%d\n", sr_counter, phy_h->get_current_tti()); + Debug("SR signalling PHY. sr_counter=%d, PHY TTI=%d\n", sr_counter, phy_h->get_current_tti()); phy_h->send_sr(true); } } else { @@ -94,7 +94,7 @@ void sr_proc::start() is_pending_sr = true; } dsr_transmax = params_db->get_param(mac_params::SR_TRANS_MAX); - Info("SR starting dsrTransMax=%d. sr_counter=%d, PHY TTI=%d\n", dsr_transmax, sr_counter, phy_h->get_current_tti()); + Debug("SR starting dsrTransMax=%d. sr_counter=%d, PHY TTI=%d\n", dsr_transmax, sr_counter, phy_h->get_current_tti()); } } diff --git a/srsapps/ue/mac/src/ul_harq.cc b/srsapps/ue/mac/src/ul_harq.cc index 4ec3418d0..a964a51b4 100644 --- a/srsapps/ue/mac/src/ul_harq.cc +++ b/srsapps/ue/mac/src/ul_harq.cc @@ -93,7 +93,7 @@ void ul_harq_entity::run_tti(uint32_t tti, ul_sched_grant *grant, phy *phy_h) } if (grant) { - if ((!grant->is_temp_rnti() && grant->get_ndi() == true) || + if ((!grant->is_temp_rnti() && grant->get_ndi() != proc[pid].get_ndi()) || (grant->is_crnti() && !proc[pid].has_grant()) || grant->is_from_rar()) { diff --git a/srsapps/ue/phy/include/srsapps/ue/phy/dl_sched_grant.h b/srsapps/ue/phy/include/srsapps/ue/phy/dl_sched_grant.h index 8ef94f31d..956160c54 100644 --- a/srsapps/ue/phy/include/srsapps/ue/phy/dl_sched_grant.h +++ b/srsapps/ue/phy/include/srsapps/ue/phy/dl_sched_grant.h @@ -75,6 +75,16 @@ namespace ue { uint32_t get_mcs() { return dl_dci.mcs_idx; } + const char* get_dciformat_string() { + switch(dl_dci.dci_format) { + case srslte_ra_dl_dci_t::SRSLTE_RA_DCI_FORMAT1: + return "Format1"; + case srslte_ra_dl_dci_t::SRSLTE_RA_DCI_FORMAT1A: + return "Format1A"; + case srslte_ra_dl_dci_t::SRSLTE_RA_DCI_FORMAT1C: + return "Format1C"; + } + } bool create_from_dci(srslte_dci_msg_t *msg, uint32_t nof_prb, uint32_t ncce_) { ncce = ncce_; if (srslte_dci_msg_to_dl_grant(msg, rnti, nof_prb, &dl_dci, &grant)) { diff --git a/srsapps/ue/phy/src/dl_buffer.cc b/srsapps/ue/phy/src/dl_buffer.cc index 94e302d79..b8685a548 100644 --- a/srsapps/ue/phy/src/dl_buffer.cc +++ b/srsapps/ue/phy/src/dl_buffer.cc @@ -117,6 +117,8 @@ bool dl_buffer::get_ul_grant(ul_sched_grant *grant) return false; } + Info("PDCCH: UL DCI Format0 cce_index=%d, n_data_bits=%d\n", ue_dl.last_n_cce, dci_msg.nof_bits); + return grant->create_from_dci(&dci_msg, cell, params_db->get_param(phy_params::PUSCH_HOPPING_OFFSET)); } } @@ -166,7 +168,7 @@ bool dl_buffer::get_dl_grant(dl_sched_grant *grant) return false; } - Info("Found DL DCI cce_index=%d, n_data_bits=%d\n", ue_dl.last_n_cce, dci_msg.nof_bits); + Info("PDCCH: DL DCI %s cce_index=%d, n_data_bits=%d\n", grant->get_dciformat_string(), ue_dl.last_n_cce, dci_msg.nof_bits); return grant->create_from_dci(&dci_msg, cell.nof_prb, srslte_ue_dl_get_ncce(&ue_dl)); } diff --git a/srsapps/ue/phy/src/phy.cc b/srsapps/ue/phy/src/phy.cc index bda8b067e..3ad6699d4 100644 --- a/srsapps/ue/phy/src/phy.cc +++ b/srsapps/ue/phy/src/phy.cc @@ -199,7 +199,7 @@ bool phy::sr_is_ready_to_send(uint32_t tti_) { if (srslte_ue_ul_sr_send_tti(I_sr, tti_)) { sr_enabled = false; sr_tx_tti = tti_; - Info("SR ready to send for TTI=%d\n", tti_); + Info("SR sending at TTI=%d\n", tti_); return true; } } diff --git a/srsapps/ue/phy/src/prach.cc b/srsapps/ue/phy/src/prach.cc index 17714cf85..5ca8d72ff 100644 --- a/srsapps/ue/phy/src/prach.cc +++ b/srsapps/ue/phy/src/prach.cc @@ -147,7 +147,7 @@ bool prach::send(radio *radio_handler, float cfo, srslte_timestamp_t rx_time) } radio_handler->tx(signal_buffer, len, tx_time); - Info("PRACH transmitted CFO: %f, preamble=%d, len=%d rx_time=%f, tx_time=%f, PeakAmplitude=%.2f\n", + Debug("PRACH transmitted CFO: %f, preamble=%d, len=%d rx_time=%f, tx_time=%f, PeakAmplitude=%.2f\n", cfo*15000, preamble_idx, len, rx_time.frac_secs, tx_time.frac_secs, max); preamble_idx = -1; } diff --git a/srsapps/ue/phy/src/ul_buffer.cc b/srsapps/ue/phy/src/ul_buffer.cc index dca3f5894..729dfbcb8 100644 --- a/srsapps/ue/phy/src/ul_buffer.cc +++ b/srsapps/ue/phy/src/ul_buffer.cc @@ -195,8 +195,8 @@ bool ul_buffer::generate_data(ul_sched_grant *grant, srslte_softbuffer_tx_t *sof */ grant->to_pusch_cfg(tti%10, 0, &ue_ul); - Info("Encoding PUSCH TBS=%d, mod=%s, rb_start=%d n_prb=%d, ack=%s, sr=%s, rnti=%d, sf_idx=%d\n", - grant->get_tbs(), srslte_mod_string(ue_ul.pusch_cfg.grant.mcs.mod), ue_ul.pusch_cfg.grant.n_prb[0], + Info("PUSCH: TTI=%d, TBS=%d, mod=%s, rb_start=%d n_prb=%d, ack=%s, sr=%s, rnti=%d, sf_idx=%d\n", + tti, grant->get_tbs(), srslte_mod_string(ue_ul.pusch_cfg.grant.mcs.mod), ue_ul.pusch_cfg.grant.n_prb[0], ue_ul.pusch_cfg.grant.L_prb, uci_data.uci_ack_len>0?(uci_data.uci_ack?"1":"0"):"no",uci_data.scheduling_request?"yes":"no", grant->get_rnti(), tti%10); @@ -207,7 +207,7 @@ bool ul_buffer::generate_data(ul_sched_grant *grant, srslte_softbuffer_tx_t *sof grant->get_rnti(), signal_buffer); } else { - Info("Encoding PUCCH n_cce=%d, sf_idx=%d, ack=%s, sr=%s\n", last_n_cce, tti%10, + Info("PUCCH: TTI=%d n_cce=%d, sf_idx=%d, ack=%s, sr=%s\n", tti, last_n_cce, tti%10, uci_data.uci_ack_len>0?(uci_data.uci_ack?"1":"0"):"no",uci_data.scheduling_request?"yes":"no"); n = srslte_ue_ul_pucch_encode(&ue_ul, uci_data, tti%10, signal_buffer); @@ -256,7 +256,7 @@ bool ul_buffer::send(srslte::radio* radio_handler, float time_adv_sec, float cfo srslte_vec_sc_prod_cfc(signal_buffer, 0.9/max, signal_buffer, SRSLTE_SF_LEN_PRB(cell.nof_prb)); } - Info("TX CFO: %f, len=%d, rx_time= %.6f tx_time = %.6f TA: %.1f PeakAmplitude=%.2f PKT#%d\n", + Debug("TX CFO: %f, len=%d, rx_time= %.6f tx_time = %.6f TA: %.1f PeakAmplitude=%.2f PKT#%d\n", cfo*15000, SRSLTE_SF_LEN_PRB(cell.nof_prb), srslte_timestamp_real(&rx_time), srslte_timestamp_real(&tx_time), time_adv_sec*1000000, max, nof_tx); diff --git a/srslte/lib/phch/src/dci.c b/srslte/lib/phch/src/dci.c index 05ab4cb93..6f93aeb18 100644 --- a/srslte/lib/phch/src/dci.c +++ b/srslte/lib/phch/src/dci.c @@ -523,7 +523,6 @@ int dci_format1_unpack(srslte_dci_msg_t *msg, srslte_ra_dl_dci_t *data, uint32_t data->harq_process = srslte_bit_unpack(&y, 3); data->ndi = *y++ ? true : false; - // rv version data->rv_idx = srslte_bit_unpack(&y, 2); @@ -670,10 +669,14 @@ int dci_format1As_unpack(srslte_dci_msg_t *msg, srslte_ra_dl_dci_t *data, uint32 data->harq_process = srslte_bit_unpack(&y, 3); - if (!crc_is_crnti && nof_prb >= 50 && data->type2_alloc.mode == SRSLTE_RA_TYPE2_DIST) { - data->type2_alloc.n_gap = *y++; + if (!crc_is_crnti) { + if (nof_prb >= 50 && data->type2_alloc.mode == SRSLTE_RA_TYPE2_DIST) { + data->type2_alloc.n_gap = *y++; + } else { + y++; // NDI reserved + } } else { - y++; // bit reserved + data->ndi = *y++ ? true : false; } // rv version diff --git a/srslte/lib/phch/src/prach.c b/srslte/lib/phch/src/prach.c index bb749618f..3745c9ae2 100644 --- a/srslte/lib/phch/src/prach.c +++ b/srslte/lib/phch/src/prach.c @@ -371,8 +371,6 @@ int srslte_prach_init(srslte_prach_t *p, } } - printf("Ncs=%d, zczc=%d, root_seq_index=%d, format=%d\n", p->N_cs, zero_corr_zone_config, root_seq_index, preamble_format); - // Set up containers p->prach_bins = srslte_vec_malloc(sizeof(cf_t)*p->N_zc); p->corr_spec = srslte_vec_malloc(sizeof(cf_t)*p->N_zc); diff --git a/srslte/lib/ue/src/ue_ul.c b/srslte/lib/ue/src/ue_ul.c index b216f05f8..79fe2aa5f 100644 --- a/srslte/lib/ue/src/ue_ul.c +++ b/srslte/lib/ue/src/ue_ul.c @@ -340,7 +340,7 @@ int srslte_ue_ul_pusch_encode_rnti_softbuffer(srslte_ue_ul_t *q, softbuffer != NULL && output_signal != NULL) { - if (srslte_pusch_encode_rnti(&q->pusch, &q->pusch_cfg, softbuffer, data, rnti, q->sf_symbols)) { + if (srslte_pusch_uci_encode_rnti(&q->pusch, &q->pusch_cfg, softbuffer, data, uci_data, rnti, q->sf_symbols)) { fprintf(stderr, "Error encoding TB\n"); return ret; }