Jump to content

Search the Community

Showing results for tags 'qvrt'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • QRC General
    • General Discussion
    • Question and Answer
  • QRC Products
    • Wide Band Transcorder
    • Surveyor and ICS
    • QSAK (Phone Tools)
  • Group Boards

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Found 4 results

  1. I am writing an OOT GNURadio block that makes use of the osmocom sink/source project file modified for the WBT. I was reading last night like certain aspects of the API (raw high bandwidth qvrt streams) are only available in "WBT Service Apps". However, i am not developing apps using Service applications but directly inside the source code of the stream and source blocks. 1. I am allowed to access these high bandwidth streams from within gr-osmocom's (WBT) sink and sources? These are of course to be added in a WBT GRC GUI app (subproject), not in a service app. Is this going to cause an issue with access to the data i need (high BW raw IQ)? 2. What is the difference between the QVRT sink/source type and the WBT source type? These devices can be specified in gr-osmosdr - you can say "wbt=0" "wbt=1" "wbt=2" and i believe "qvrt=0".... Is the "wbt=0" sink/source direct IQ data from the radio and the QVRT one a file sink/source?
  2. Alexey

    Delete record file

    How do I remove a recorded QVRT file? Is it a reliable way to construct the path manually using WbtCommon::Data::FileInfo contents and then pass it to QFile::remove() or is there an API method? For example: const WbtCommon::Data::FileInfo file = WbtApi::WbtSystem().getRecordingList()[0]; const WbtCommon::Data::WbtStatusData status = WbtApi::WbtStatus().getCurrentStatus(); QString mountPoint; switch(file._diskSlot) { case WbtCommon::Data::DATA_DISK_1: mountPoint = QString::fromStdString(status._systemVolumesStatus._DataDisk1VolumeStatus._mountPoint); break; case WbtCommon::Data::DATA_DISK_2: mountPoint = QString::fromStdString(status._systemVolumesStatus._DataDisk2VolumeStatus._mountPoint); break; } if(!mountPoint.isEmpty()) { const QString path = mountPoint + QDir::separator() + QString::fromStdString(file._fileName) + ".qvrt"; QFile::remove(path); }
  3. Let me describe the issue that I have. There is a file which contains data from both tuners and TunerA sample rate is 42 MS/s and TunerB is 13.3 MS/s. The app dumps the processed packets number and encountered metadata (WbtVRTFileReadIterator::getCurrentMetadataAsJSON) to debug output. I start processing TunerA data. The first metadata has "GPS Fix UTC Seconds" value of 1446218004. By the time app processed 815M samples (which should constitute approx. 19 seconds of data) the metadata timestamp is 1446218019 - only 15 seconds later than the starting value. The difference is even bigger in case of TunerB. After processing 250M samples (~18 sec.) the metadata timestamp is 1446218009 - moved forward by only 5 sec. What is happening here and is it the expected behavior?
  4. I have a few questions regarding certain use-cases of reading data from a QVRT file: If I need to read a chunk of data in the middle of the file (for example from 10th second to 20th), there is the moveToTimeInSeconds method that will move the iterator to the starting position. But how do I know when to stop? Do I access the raw data with getCurrentPacketData and read the timestamp with help of the QVRT format spec? Or do I get it from getCurrentMetadataAsJSON - if so, what is the structure of returned JSON?How do I know how much data (IQ) packets does the file contain? Do I iterate over the whole file incrementing some counter when I see an IQ packet (VRT_IF_DATA)?How do I actually read the data? Is the following code snippet correct:WbtVRTFileReadIterator it("qvrtfile.qvrt"); it.moveToTimeInSeconds(5); while(!it.isEndOfStream()) { if(it.getCurrentPacketType() == 1) // VRT_IF_DATA { const int size = it.getCurrentSizeBytes(); float *data = new float[size]; it.getCurrentIQDataFloat(data, size); foobar(data, size); delete[] data; } ++it; }
×