mirror of https://github.com/PentHertz/srsLTE.git
Merge branch 'next'
This commit is contained in:
commit
33bae5898a
|
@ -528,9 +528,9 @@ int update_radl() {
|
||||||
|
|
||||||
srslte_ra_pdsch_fprint(stdout, &ra_dl, cell.nof_prb);
|
srslte_ra_pdsch_fprint(stdout, &ra_dl, cell.nof_prb);
|
||||||
srslte_ra_dl_grant_t dummy_grant;
|
srslte_ra_dl_grant_t dummy_grant;
|
||||||
srslte_ra_nbits_t dummy_nbits;
|
srslte_ra_nbits_t dummy_nbits[SRSLTE_MAX_CODEWORDS];
|
||||||
srslte_ra_dl_dci_to_grant(&ra_dl, cell.nof_prb, UE_CRNTI, &dummy_grant);
|
srslte_ra_dl_dci_to_grant(&ra_dl, cell.nof_prb, UE_CRNTI, &dummy_grant);
|
||||||
srslte_ra_dl_grant_to_nbits(&dummy_grant, cfi, cell, 0, &dummy_nbits);
|
srslte_ra_dl_grant_to_nbits(&dummy_grant, cfi, cell, 0, dummy_nbits);
|
||||||
srslte_ra_dl_grant_fprint(stdout, &dummy_grant);
|
srslte_ra_dl_grant_fprint(stdout, &dummy_grant);
|
||||||
dummy_grant.sf_type = SRSLTE_SF_NORM;
|
dummy_grant.sf_type = SRSLTE_SF_NORM;
|
||||||
if (pdsch_cfg.mimo_type != SRSLTE_MIMO_TYPE_SINGLE_ANTENNA) {
|
if (pdsch_cfg.mimo_type != SRSLTE_MIMO_TYPE_SINGLE_ANTENNA) {
|
||||||
|
|
|
@ -133,7 +133,7 @@ void map_simd_dec(map_gen_t * h, int16_t * input[SRSLTE_TDEC_MAX_NPAR], int16_t
|
||||||
{
|
{
|
||||||
|
|
||||||
uint32_t nof_cb = 1;
|
uint32_t nof_cb = 1;
|
||||||
int16_t *outptr[SRSLTE_TDEC_MAX_NPAR];
|
int16_t *outptr[SRSLTE_TDEC_MAX_NPAR] = { NULL, NULL };
|
||||||
|
|
||||||
// Compute branch metrics
|
// Compute branch metrics
|
||||||
switch(cb_mask) {
|
switch(cb_mask) {
|
||||||
|
|
|
@ -85,6 +85,10 @@ void map_sse_inter_beta(srslte_tdec_simd_inter_t * s, int16_t *input, int16_t *p
|
||||||
__m128i *outputPtr = (__m128i*) output;
|
__m128i *outputPtr = (__m128i*) output;
|
||||||
__m128i *alphaPtr = (__m128i*) s->alpha;
|
__m128i *alphaPtr = (__m128i*) s->alpha;
|
||||||
|
|
||||||
|
for (int i = 0; i < 8; i++) {
|
||||||
|
old[i] = _mm_set1_epi16(0);
|
||||||
|
}
|
||||||
|
|
||||||
for (int k = end - 1; k >= 0; k--) {
|
for (int k = end - 1; k >= 0; k--) {
|
||||||
x = _mm_load_si128(inputPtr++);
|
x = _mm_load_si128(inputPtr++);
|
||||||
y = _mm_load_si128(parityPtr++);
|
y = _mm_load_si128(parityPtr++);
|
||||||
|
|
|
@ -555,7 +555,7 @@ static int dl_dci_to_grant_mcs(srslte_ra_dl_dci_t *dci, srslte_ra_dl_grant_t *gr
|
||||||
}
|
}
|
||||||
|
|
||||||
void srslte_ra_dl_grant_to_nbits(srslte_ra_dl_grant_t *grant, uint32_t cfi, srslte_cell_t cell, uint32_t sf_idx,
|
void srslte_ra_dl_grant_to_nbits(srslte_ra_dl_grant_t *grant, uint32_t cfi, srslte_cell_t cell, uint32_t sf_idx,
|
||||||
srslte_ra_nbits_t nbits [SRSLTE_MAX_CODEWORDS])
|
srslte_ra_nbits_t nbits[SRSLTE_MAX_CODEWORDS])
|
||||||
{
|
{
|
||||||
// Compute number of RE
|
// Compute number of RE
|
||||||
for (int i = 0; i < SRSLTE_MAX_TB; i++) {
|
for (int i = 0; i < SRSLTE_MAX_TB; i++) {
|
||||||
|
|
|
@ -97,7 +97,11 @@ char* rf_soapy_devname(void* h)
|
||||||
|
|
||||||
bool rf_soapy_rx_wait_lo_locked(void *h)
|
bool rf_soapy_rx_wait_lo_locked(void *h)
|
||||||
{
|
{
|
||||||
printf("TODO: implement rf_soapy_rx_wait_lo_locked()\n");
|
rf_soapy_handler_t *handler = (rf_soapy_handler_t*)h;
|
||||||
|
char *ret = SoapySDRDevice_readChannelSensor(handler->device, SOAPY_SDR_RX, 0, "lo_locked");
|
||||||
|
if (ret != NULL) {
|
||||||
|
return (strcmp(ret, "true") == 0 ? true : false);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,7 +216,7 @@ int rf_soapy_open_multi(char *args, void **h, uint32_t nof_rx_antennas)
|
||||||
|
|
||||||
SoapySDRDevice *sdr = SoapySDRDevice_make(&(soapy_args[0]));
|
SoapySDRDevice *sdr = SoapySDRDevice_make(&(soapy_args[0]));
|
||||||
if (sdr == NULL) {
|
if (sdr == NULL) {
|
||||||
printf("failed to create SOAPY object\n");
|
printf("Failed to create Soapy object\n");
|
||||||
return SRSLTE_ERROR;
|
return SRSLTE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,7 +229,7 @@ int rf_soapy_open_multi(char *args, void **h, uint32_t nof_rx_antennas)
|
||||||
handler->rx_stream_active = false;
|
handler->rx_stream_active = false;
|
||||||
handler->devname = devname;
|
handler->devname = devname;
|
||||||
if(SoapySDRDevice_getNumChannels(handler->device,SOAPY_SDR_RX) > 0){
|
if(SoapySDRDevice_getNumChannels(handler->device,SOAPY_SDR_RX) > 0){
|
||||||
printf("setting up RX stream\n");
|
printf("Setting up RX stream\n");
|
||||||
if(SoapySDRDevice_setupStream(handler->device, &(handler->rxStream), SOAPY_SDR_RX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
|
if(SoapySDRDevice_setupStream(handler->device, &(handler->rxStream), SOAPY_SDR_RX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
|
||||||
printf("Rx setupStream fail: %s\n", SoapySDRDevice_lastError());
|
printf("Rx setupStream fail: %s\n", SoapySDRDevice_lastError());
|
||||||
return SRSLTE_ERROR;
|
return SRSLTE_ERROR;
|
||||||
|
@ -233,19 +237,27 @@ int rf_soapy_open_multi(char *args, void **h, uint32_t nof_rx_antennas)
|
||||||
}
|
}
|
||||||
|
|
||||||
if(SoapySDRDevice_getNumChannels(handler->device,SOAPY_SDR_TX) > 0){
|
if(SoapySDRDevice_getNumChannels(handler->device,SOAPY_SDR_TX) > 0){
|
||||||
printf("setting up TX stream\n");
|
printf("Setting up TX stream\n");
|
||||||
if (SoapySDRDevice_setupStream(handler->device, &(handler->txStream), SOAPY_SDR_TX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
|
if (SoapySDRDevice_setupStream(handler->device, &(handler->txStream), SOAPY_SDR_TX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
|
||||||
printf("Tx setupStream fail: %s\n", SoapySDRDevice_lastError());
|
printf("Tx setupStream fail: %s\n", SoapySDRDevice_lastError());
|
||||||
return SRSLTE_ERROR;
|
return SRSLTE_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// list device sensors
|
||||||
size_t sensor_length;
|
size_t sensor_length;
|
||||||
char** sensors;
|
char** sensors;
|
||||||
sensors = SoapySDRDevice_listSensors(handler->device, &sensor_length);
|
sensors = SoapySDRDevice_listSensors(handler->device, &sensor_length);
|
||||||
for(int i = 0; i < sensor_length;i++)
|
printf("Available device sensors: \n");
|
||||||
{
|
for(int i = 0; i < sensor_length; i++) {
|
||||||
printf("available sensors are : \n");
|
printf(" - %s\n", sensors[i]);
|
||||||
puts(sensors[i]);
|
}
|
||||||
|
|
||||||
|
// list channel sensors
|
||||||
|
sensors = SoapySDRDevice_listChannelSensors(handler->device, SOAPY_SDR_RX, 0, &sensor_length);
|
||||||
|
printf("Available sensors for RX channel 0: \n");
|
||||||
|
for(int i = 0; i < sensor_length; i++) {
|
||||||
|
printf(" - %s\n", sensors[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return SRSLTE_SUCCESS;
|
return SRSLTE_SUCCESS;
|
||||||
|
@ -408,6 +420,7 @@ int rf_soapy_recv_with_time_multi(void *h,
|
||||||
rf_soapy_handler_t *handler = (rf_soapy_handler_t*) h;
|
rf_soapy_handler_t *handler = (rf_soapy_handler_t*) h;
|
||||||
int flags; //flags set by receive operation
|
int flags; //flags set by receive operation
|
||||||
int num_channels = 1; // temp
|
int num_channels = 1; // temp
|
||||||
|
const long timeoutUs = 1000000; // arbitrarily chosen
|
||||||
|
|
||||||
int trials = 0;
|
int trials = 0;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
@ -424,7 +437,7 @@ int rf_soapy_recv_with_time_multi(void *h,
|
||||||
cf_t *data_c = (cf_t*) data[i];
|
cf_t *data_c = (cf_t*) data[i];
|
||||||
buffs_ptr[i] = &data_c[n];
|
buffs_ptr[i] = &data_c[n];
|
||||||
}
|
}
|
||||||
ret = SoapySDRDevice_readStream(handler->device, handler->rxStream, buffs_ptr, rx_samples, &flags, &timeNs, 1000000);
|
ret = SoapySDRDevice_readStream(handler->device, handler->rxStream, buffs_ptr, rx_samples, &flags, &timeNs, timeoutUs);
|
||||||
if(ret < 0) {
|
if(ret < 0) {
|
||||||
// continue when getting overflows
|
// continue when getting overflows
|
||||||
if (ret == SOAPY_SDR_OVERFLOW) {
|
if (ret == SOAPY_SDR_OVERFLOW) {
|
||||||
|
@ -446,8 +459,6 @@ int rf_soapy_recv_with_time_multi(void *h,
|
||||||
n += ret;
|
n += ret;
|
||||||
trials++;
|
trials++;
|
||||||
} while (n < nsamples && trials < 100);
|
} while (n < nsamples && trials < 100);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
|
@ -212,6 +212,7 @@ bool sched_ue::pucch_sr_collision(uint32_t current_tti, uint32_t n_cce)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
srslte_pucch_sched_t pucch_sched;
|
srslte_pucch_sched_t pucch_sched;
|
||||||
|
pucch_sched.sps_enabled = false;
|
||||||
pucch_sched.n_pucch_sr = cfg.sr_N_pucch;
|
pucch_sched.n_pucch_sr = cfg.sr_N_pucch;
|
||||||
pucch_sched.n_pucch_2 = cfg.n_pucch_cqi;
|
pucch_sched.n_pucch_2 = cfg.n_pucch_cqi;
|
||||||
pucch_sched.N_pucch_1 = cfg.pucch_cfg.n1_pucch_an;
|
pucch_sched.N_pucch_1 = cfg.pucch_cfg.n1_pucch_an;
|
||||||
|
|
Loading…
Reference in New Issue