Exemple #1
0
int main(int argc, char **argv) {
  parse_args(argc, argv);

  srslte_prach_t *p = (srslte_prach_t*)malloc(sizeof(srslte_prach_t));

  bool high_speed_flag      = false;

  cf_t preamble[MAX_LEN];
  memset(preamble, 0, sizeof(cf_t)*MAX_LEN);
  cf_t preamble_sum[MAX_LEN];
  memset(preamble_sum, 0, sizeof(cf_t)*MAX_LEN);

  srslte_prach_init(p,
             N_ifft_ul,
             preamble_format,
             root_seq_idx,
             high_speed_flag,
             zero_corr_zone);

  uint32_t seq_index = 0;
  uint32_t frequency_offset = 0;

  uint32_t indices[64];
  uint32_t n_indices = 0;
  for(int i=0;i<64;i++)
    indices[i] = 0;

  for(seq_index=0;seq_index<n_seqs;seq_index++)
  {
    srslte_prach_gen(p,
              seq_index,
              frequency_offset,
              preamble);

    for(int i=0;i<p->N_cp+p->N_seq;i++)
    {
      preamble_sum[i] += preamble[i];
    }
  }

  uint32_t prach_len = p->N_seq;
  if(preamble_format == 2 || preamble_format == 3)
    prach_len /= 2;
  srslte_prach_detect(p, 0, &preamble_sum[p->N_cp], prach_len, indices, &n_indices);

  if(n_indices != n_seqs)
    return -1;

  for(int i=0;i<n_seqs;i++)
  {
    if(indices[i] != i)
      return -1;
  }

  srslte_prach_free(p);
  free(p);

	printf("Done\n");
	exit(0);
}
Exemple #2
0
int main(int argc, char** argv)
{
  parse_args(argc, argv);
  srslte_prach_t prach;

  bool high_speed_flag      = false;

  cf_t preamble[MAX_LEN];
  memset(preamble, 0, sizeof(cf_t)*MAX_LEN);

  srslte_prach_cfg_t prach_cfg;
  ZERO_OBJECT(prach_cfg);
  prach_cfg.config_idx     = config_idx;
  prach_cfg.hs_flag        = high_speed_flag;
  prach_cfg.freq_offset    = 0;
  prach_cfg.root_seq_idx   = root_seq_idx;
  prach_cfg.zero_corr_zone = zero_corr_zone;

  if (srslte_prach_init(&prach, srslte_symbol_sz(nof_prb))) {
    return -1;
  }
  if (srslte_prach_set_cfg(&prach, &prach_cfg, nof_prb)) {
    ERROR("Error initiating PRACH object\n");
    return -1;
  }

  uint32_t seq_index = 0;
  uint32_t indices[64];
  uint32_t n_indices = 0;
  for(int i=0;i<64;i++)
    indices[i] = 0;

  for(seq_index=0;seq_index<64;seq_index++)
  {
    srslte_prach_gen(&prach, seq_index, 0, preamble);

    uint32_t prach_len = prach.N_seq;

    struct timeval t[3];
    gettimeofday(&t[1], NULL);
    srslte_prach_detect(&prach, 0, &preamble[prach.N_cp], prach_len, indices, &n_indices);
    gettimeofday(&t[2], NULL);
    get_time_interval(t);
    printf("texec=%ld us\n", t[0].tv_usec);
    if(n_indices != 1 || indices[0] != seq_index)
      return -1;
  }

  srslte_prach_free(&prach);
  srslte_dft_exit();

  printf("Done\n");
  exit(0);
}
Exemple #3
0
int main(int argc, char** argv)
{
  parse_args(argc, argv);
  srslte_prach_t prach;

  bool high_speed_flag      = false;

  cf_t preamble[MAX_LEN];
  memset(preamble, 0, sizeof(cf_t)*MAX_LEN);
  cf_t preamble_sum[MAX_LEN];
  memset(preamble_sum, 0, sizeof(cf_t)*MAX_LEN);

  srslte_prach_cfg_t prach_cfg;
  ZERO_OBJECT(prach_cfg);
  prach_cfg.config_idx     = preamble_format;
  prach_cfg.hs_flag        = high_speed_flag;
  prach_cfg.freq_offset    = 0;
  prach_cfg.root_seq_idx   = root_seq_idx;
  prach_cfg.zero_corr_zone = zero_corr_zone;

  if (srslte_prach_init(&prach, srslte_symbol_sz(nof_prb))) {
    return -1;
  }

  if (srslte_prach_set_cfg(&prach, &prach_cfg, nof_prb)) {
    ERROR("Error initiating PRACH object\n");
    return -1;
  }

  uint32_t seq_index = 0;
  uint32_t frequency_offset = 0;

  uint32_t indices[64];
  uint32_t n_indices = 0;
  for(int i=0;i<64;i++)
    indices[i] = 0;

  srslte_prach_set_detect_factor(&prach, 10);

  for(seq_index=0;seq_index<n_seqs;seq_index++)
  {
    srslte_prach_gen(&prach, seq_index, frequency_offset, preamble);

    for (int i = 0; i < prach.N_cp + prach.N_seq; i++) {
      preamble_sum[i] += preamble[i];
    }
  }

  uint32_t prach_len = prach.N_seq;
  if (preamble_format == 2 || preamble_format == 3) {
    prach_len /= 2;
  }
  srslte_prach_detect(&prach, 0, &preamble_sum[prach.N_cp], prach_len, indices, &n_indices);

  if (n_indices != n_seqs) {
    return -1;
  }

  for (int i = 0; i < n_seqs; i++) {
    if (indices[i] != i) {
      return -1;
    }
  }

  srslte_prach_free(&prach);
  srslte_dft_exit();
  printf("Done\n");
  exit(0);
}