Hi all,
I am a newbie in USRP and UHD. Please dont be mad at me if I am wrong. I am
currently trying to implement SRSLTE using multi usrp. However I have been
stuck for days trying to contain real data from the buffer received. If I
try to assign the buffs_ptr with the data_c, it says core Segmentation
fault (core dumped). I attach my piece of code below. Please help me for
some idea to solve this. I am very grateful for your help.

Thank you.

Regards,
Risa




int multi_usrp_recv_with_time_multi(void *h,
                                   void *data[SRSLTE_MAX_PORTS],
                                   uint32_t nsamples,
                                   bool blocking,
                                   time_t *secs,
                                   double *frac_secs) {
    md = rx_md_first;
    size_t rxd_samples = 0;
    const size_t rx_nof_samples = rx_stream_handle->get_max_num_samps();
    int trials = 0;
    if (blocking) {
        uint32_t n = 0;
        while (n < nsamples && trials < 100) {
            void *buffs_ptr[4];
            for (size_t i=0;i<rx_nof_channel;i++) {
                cf_t *data_c = (cf_t*) data[i];
                buffs_ptr[i] = &data_c[n];
            }
            size_t num_samps_left = nsamples - n;
            size_t num_rx_samples = (num_samps_left > rx_nof_samples)
? rx_nof_samples : num_samps_left;
           // printf("testing1");
            rxd_samples = 0;
            rxd_samples =
rx_stream_handle->recv(buffs_ptr,num_rx_samples, md,1.0,false);
            printf("rxd_samples: %lu", rxd_samples);
            if (md.error_code == uhd::rx_metadata_t::ERROR_CODE_TIMEOUT) {
                printf("ERROR_CODE_TIMEOUT");
            };
            if (md.error_code == uhd::rx_metadata_t::ERROR_CODE_LATE_COMMAND){
                printf("ERROR_CODE_LATE_COMMAND");
            };
            if (md.error_code == uhd::rx_metadata_t::ERROR_CODE_BROKEN_CHAIN){
                printf("ERROR_CODE_BROKEN_CHAIN");
            };
            if (md.error_code == uhd::rx_metadata_t::ERROR_CODE_OVERFLOW){
                printf("ERROR_CODE_OVERFLOW");
            };
            if (md.error_code == uhd::rx_metadata_t::ERROR_CODE_ALIGNMENT){
                printf("ERROR_CODE_ALIGNMENT");
            };
            if (md.error_code == uhd::rx_metadata_t::ERROR_CODE_BAD_PACKET){
                printf("ERROR_CODE_BAD_PACKET");
            };

            md = rx_md;
            n += rxd_samples;
            trials++;
        }
    } else {
        rxd_samples = rx_stream_handle->recv(data,nsamples, md,0.0,false);
    }
    if (secs && frac_secs) {
        *secs = md.time_spec.get_full_secs();
                *frac_secs = md.time_spec.get_frac_secs();

    }
    return nsamples;
 }
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to