Download libtrf v1.5.1 Release Package (The reference manual is in the zip folder)
thinkRF’s libtrf API is a multi-platform API library that can be used for interfacing with existing generation thinkRF RTSA devices (R5xx0) and will be maintained into the future to support interfacing with future thinkRF devices. In addition, the API supports and will be evolved to increasingly provide sophisticated signal processing capabilities that can be easily integrated into end-user application code.
The libtrf library is currently released as builds for Microsoft Windows 64-bit (.h/.dll/.lib) and Linux (.h/.so) for both x86_64 (Intel/AMD) and aarch64 (ARM v8+) targets. The interface is presented as undecorated ‘C’ compatible with the C99 (ISO/IEC 9899:1999) and later standards.
This document describes the release information of libtrf API software version 1.5.1. Refer to the companion ‘libtrf API Reference Manual’ 1.5.1 document for full libtrf and its usage details.
1.1 Supported Devices
The versions of libtrf currently released support all thinkRF’s RTSA products R55x0/R57x0 products (408/418/427 models).
2 New Features
The following new feature(s) and capabiliti(es) were added in version 1.5.1. Refer to the Reference Guide for the full details.
- Spectrum span and IFBW now support down to 12.5kHz.
- Added trfCreateBasebandStream() for AM/FM usge.
- The following processors are added:
- Added TRFFlattenFlag of boolean type and TRFHasFlatteningInfo to use for enabling or disabling noise floor flattening over the IFBW. This only applies for RTSA devices with noise floor flattening supported.
- Added TRFDCOffsetFilter of boolean type to turn on or off the removal of DC offset residual from IQ data. Note that this correction affects when the input signal aligns with the center frequency.
- For data capture at RTSA’s DD technology with frequency 50MHz or lower, libtrf made used of RTSA’s built in DDS and decimation to tune to the frequency of interest when the desired frequency is at 50MHz or smaller.
- For finite IQ capture using during, expected number of frames is provided via TRFFramesExpected parameter.
- Refined enumeration mechanism which will validate the enumerated list at each re-enumeration and also provide the ability to retire no-longer required device addresses via trfRemoveDeviceAddress() to prevent enumeration. Enumeration of devices only permitted if a connection can be established (discovery on LAN, manually added and responded to PING on WAN).
- Modified SpectrumCharacterizationProcessor to compute average using a single-pole averaging mechanism instead of the memory-intensive window method previously used. See newly added parameter TRFWeightedFilter. This efficient average method replaced the average basing on number of spectral frames (TRFAverageCount) as this latter method caused a significant RAM resource being used when the data has a large number of data points.
- Added the following new trfStatus:
The following other change(s) were made version 1.5.1:
- Improved stability in changing parameters on the fly while performing any data streaming modes.
- Faster spectral data output with less memory consumption for narrow spans by utilizing RTSA’s decimation.
- The following libtrf’s output information structures are improved or with newly added information to provide a more comprehensive and consistent information.
- trfGetParameterInfo() with improved RTSA’s default information
- New saved metadata JSON file with these following parameters:
- Enhanced parameter input to be case insensitive.
- Change filenames where special characters, .*?"'<>|, are eliminated from presented filenames and replaced with '_' for cross platforms support.
- Improved FM and AM demodulation with the new BasebandResampler along with the stability.
- Improved Windowing feature to remove unintended Sinc artefact.
- Updated and improved libtrf Reference Manual.
4 Fixed Defects
The following issue(s) are fixed in version 1.5.1:
- Fixed parameter changes on the fly along with better boundaries checking while streaming that led to persistent trfWaiting or SIGABRT and SIGPFE errors.
- Fixed playback’s frame sequence number handling.
- Fixed IQ playback stuck in trfAttachStreamToFile() after closing and reopening again on Windows platforms.
- For finite IQ capture:
- Fixed failure to attach to the stream to the device after trfExhausted.
- Fixed issue the capture would sometimes deliver one less than the expected number of frames.
- Fixed issue where running trfGetParameters on a stream in a separate thread could cause trfGetNextSpectrum to return trfNotStarted.
- Fixed IQToSpectrum frame sequence ID that is erroneous in some special usage scenarios.
- Fixed dynamically switching reference level during spectrum capture.
- Resolved issue where occasionally closing handles could cause a segfault on linux platforms.
- Fixed issue where changing a spectrum stream span just before closing the stream could cause a segfault on linux platforms.
- Fixed issue where trfGetNextIQ would occasionally report trfWaiting when trfExhausted was the correct response.
- Fixed issue where output frame sequence numbers from IQToSpectrum processor with the TRFFollowIQ flag set were not identical to the input IQ frames.
- Fixed incorrect frame or sample counts above 20MHz IFBW.
- Fixed and updated examples.
This section lists the deprecated capabilities, functions or parameters:
1. Removed TRFAverageCount as mentioned in section 2 item 9. above.
6 Known Issues and Limitations
The following are the known limitations or other issues present in version libtrf version 1.4.0:
- Limitation: R55x0/R57x0 products only - Between 30MHz and 50MHz centre frequencies, it is not possible to stream a full 40MHz IFBW as IQ data. This is due to the switching of the RTSA hardware technology types at the 50MHz point, between DD (Direct Digitizer) and SH (SuperHeterodyne) modes. This issue does not impact sweep spectrum data at that frequency range.
- For IQ sampling with centre frequency below 50MHz and IFBWs lower than 20MHz, the IQ stream will run for a maximum of around 500msec. This is due to inherent limitations of the direct-sampling range on R5xx0 receivers.
- Below 50MHz frequency range, IFBW below 1MHz exhibits sinc-type spectral distortion. This is a libtrf’s constraint, not a RTSA hardware issue.