BB API
|
API functions for the BB60 spectrum analyzers. More...
Go to the source code of this file.
Data Structures | |
struct | bbIQPacket |
Functions | |
BB_API bbStatus | bbGetSerialNumberList (int serialNumbers[BB_MAX_DEVICES], int *deviceCount) |
BB_API bbStatus | bbGetSerialNumberList2 (int serialNumbers[BB_MAX_DEVICES], int deviceTypes[BB_MAX_DEVICES], int *deviceCount) |
BB_API bbStatus | bbOpenDevice (int *device) |
BB_API bbStatus | bbOpenDeviceBySerialNumber (int *device, int serialNumber) |
BB_API bbStatus | bbCloseDevice (int device) |
BB_API bbStatus | bbSetPowerState (int device, bbPowerState powerState) |
BB_API bbStatus | bbGetPowerState (int device, bbPowerState *powerState) |
BB_API bbStatus | bbPreset (int device) |
BB_API bbStatus | bbPresetFull (int *device) |
BB_API bbStatus | bbSelfCal (int device) |
BB_API bbStatus | bbGetSerialNumber (int device, uint32_t *serialNumber) |
BB_API bbStatus | bbGetDeviceType (int device, int *deviceType) |
BB_API bbStatus | bbGetFirmwareVersion (int device, int *version) |
BB_API bbStatus | bbGetDeviceDiagnostics (int device, float *temperature, float *usbVoltage, float *usbCurrent) |
BB_API bbStatus | bbConfigureIO (int device, uint32_t port1, uint32_t port2) |
BB_API bbStatus | bbSyncCPUtoGPS (int comPort, int baudRate) |
BB_API bbStatus | bbSetUARTRate (int device, int rate) |
BB_API bbStatus | bbEnableUARTSweeping (int device, const double *freqs, const uint8_t *data, int states) |
BB_API bbStatus | bbDisableUARTSweeping (int device) |
BB_API bbStatus | bbEnableUARTStreaming (int device, const uint8_t *data, const uint32_t *counts, int states) |
BB_API bbStatus | bbDisableUARTStreaming (int device) |
BB_API bbStatus | bbWriteUARTImm (int device, uint8_t data) |
BB_API bbStatus | bbConfigureRefLevel (int device, double refLevel) |
BB_API bbStatus | bbConfigureGainAtten (int device, int gain, int atten) |
BB_API bbStatus | bbConfigureCenterSpan (int device, double center, double span) |
BB_API bbStatus | bbConfigureSweepCoupling (int device, double rbw, double vbw, double sweepTime, uint32_t rbwShape, uint32_t rejection) |
BB_API bbStatus | bbConfigureAcquisition (int device, uint32_t detector, uint32_t scale) |
BB_API bbStatus | bbConfigureProcUnits (int device, uint32_t units) |
BB_API bbStatus | bbConfigureRealTime (int device, double frameScale, int frameRate) |
BB_API bbStatus | bbConfigureRealTimeOverlap (int device, double advanceRate) |
BB_API bbStatus | bbConfigureIQCenter (int device, double centerFreq) |
BB_API bbStatus | bbConfigureIQ (int device, int downsampleFactor, double bandwidth) |
BB_API bbStatus | bbConfigureIQDataType (int device, bbDataType dataType) |
BB_API bbStatus | bbConfigureIQTriggerSentinel (int sentinel) |
BB_API bbStatus | bbConfigureDemod (int device, int modulationType, double freq, float IFBW, float audioLowPassFreq, float audioHighPassFreq, float FMDeemphasis) |
BB_API bbStatus | bbInitiate (int device, uint32_t mode, uint32_t flag) |
BB_API bbStatus | bbAbort (int device) |
BB_API bbStatus | bbQueryTraceInfo (int device, uint32_t *traceLen, double *binSize, double *start) |
BB_API bbStatus | bbQueryRealTimeInfo (int device, int *frameWidth, int *frameHeight) |
BB_API bbStatus | bbQueryRealTimePoi (int device, double *poi) |
BB_API bbStatus | bbQueryIQParameters (int device, double *sampleRate, double *bandwidth) |
BB_API bbStatus | bbGetIQCorrection (int device, float *correction) |
BB_API bbStatus | bbFetchTrace_32f (int device, int arraySize, float *traceMin, float *traceMax) |
BB_API bbStatus | bbFetchTrace (int device, int arraySize, double *traceMin, double *traceMax) |
BB_API bbStatus | bbFetchRealTimeFrame (int device, float *traceMin, float *traceMax, float *frame, float *alphaFrame) |
BB_API bbStatus | bbGetIQ (int device, bbIQPacket *pkt) |
BB_API bbStatus | bbGetIQUnpacked (int device, void *iqData, int iqCount, int *triggers, int triggerCount, int purge, int *dataRemaining, int *sampleLoss, int *sec, int *nano) |
BB_API bbStatus | bbFetchAudio (int device, float *audio) |
BB_API bbStatus | bbAttachTg (int device) |
BB_API bbStatus | bbIsTgAttached (int device, bool *attached) |
BB_API bbStatus | bbConfigTgSweep (int device, int sweepSize, bool highDynamicRange, bool passiveDevice) |
BB_API bbStatus | bbStoreTgThru (int device, int flag) |
BB_API bbStatus | bbSetTg (int device, double frequency, double amplitude) |
BB_API bbStatus | bbGetTgFreqAmpl (int device, double *frequency, double *amplitude) |
BB_API bbStatus | bbSetTgReference (int device, int reference) |
BB_API const char * | bbGetAPIVersion () |
BB_API const char * | bbGetProductID () |
BB_API const char * | bbGetErrorString (bbStatus status) |
API functions for the BB60 spectrum analyzers.
This is the main file for user accessible functions for controlling the BB60 spectrum analyzers.
#define BB_TRUE (1) |
Used for boolean true when integer parameters are being used.
#define BB_FALSE (0) |
Used for boolean false when integer parameters are being used.
#define BB_DEVICE_NONE (0) |
Device type: No Device. See bbGetDeviceType.
#define BB_DEVICE_BB60A (1) |
Device type: BB60A. See bbGetDeviceType.
#define BB_DEVICE_BB60C (2) |
Device type: BB60C. See bbGetDeviceType.
#define BB_DEVICE_BB60D (3) |
Device type: BB60D. See bbGetDeviceType.
#define BB_MAX_DEVICES (8) |
Maximum number of devices that can be interfaced in the API. See bbGetSerialNumberList, bbGetSerialNumberList2.
#define BB_MIN_FREQ (9.0e3) |
Minimum frequency (Hz) for sweeps, and minimum center frequency for I/Q measurements. See bbConfigureCenterSpan, bbConfigureIQCenter.
#define BB_MAX_FREQ (6.4e9) |
Maximum frequency (Hz) for sweeps, and maximum center frequency for I/Q measurements. See bbConfigureCenterSpan, bbConfigureIQCenter.
#define BB_MIN_SPAN (20.0) |
Minimum span (Hz) for sweeps. See bbConfigureCenterSpan.
#define BB_MAX_SPAN (BB_MAX_FREQ - BB_MIN_FREQ) |
Maximum span (Hz) for sweeps. See bbConfigureCenterSpan.
#define BB_MIN_RBW (0.602006912) |
Minimum RBW (Hz) for sweeps. See bbConfigureSweepCoupling.
#define BB_MAX_RBW (10100000.0) |
Maximum RBW (Hz) for sweeps. See bbConfigureSweepCoupling.
#define BB_MIN_SWEEP_TIME (0.00001) |
Minimum sweep time in seconds. See bbConfigureSweepCoupling.
#define BB_MAX_SWEEP_TIME (1.0) |
Maximum sweep time in seconds. See bbConfigureSweepCoupling.
#define BB_MIN_RT_RBW (2465.820313) |
Minimum RBW (Hz) for device configured in real-time measurement mode. See bbConfigureSweepCoupling.
#define BB_MAX_RT_RBW (631250.0) |
Maximum RBW (Hz) for device configured in real-time measurement mode. See bbConfigureSweepCoupling.
#define BB_MIN_RT_SPAN (200.0e3) |
Minimum span (Hz) for device configured in real-time measurement mode. See bbConfigureCenterSpan.
#define BB60A_MAX_RT_SPAN (20.0e6) |
Maximum span (Hz) for BB60A device configured in real-time measurement mode. See bbConfigureCenterSpan.
#define BB60C_MAX_RT_SPAN (27.0e6) |
Maximum span (Hz) for BB60C/D device configured in real-time measurement mode. See bbConfigureCenterSpan.
#define BB_MIN_USB_VOLTAGE (4.4) |
Minimum USB voltage. See bbGetDeviceDiagnostics.
#define BB_MAX_REFERENCE (20.0) |
Maximum reference level in dBm. See bbConfigureRefLevel.
#define BB_AUTO_ATTEN (-1) |
Automatically choose attenuation based on reference level. See bbConfigureGainAtten.
#define BB_MAX_ATTEN (3) |
Maximum attentuation. Valid values [0,3] or -1 for auto. See bbConfigureGainAtten.
#define BB_AUTO_GAIN (-1) |
Automatically choose gain based on reference level. See bbConfigureGainAtten.
#define BB_MAX_GAIN (3) |
Maximum gain. Valid values [0,3] or -1 for auto. See bbConfigureGainAtten.
#define BB_MIN_DECIMATION (1) |
No decimation. See bbConfigureIQ.
#define BB_MAX_DECIMATION (8192) |
Maimumx decimation for I/Q streaming. See bbConfigureIQ.
#define BB_IDLE (-1) |
Measurement mode: Idle, no measurement. See bbInitiate.
#define BB_SWEEPING (0) |
Measurement mode: Swept spectrum analysis. See bbInitiate.
#define BB_REAL_TIME (1) |
Measurement mode: Real-time spectrum analysis. See bbInitiate.
#define BB_STREAMING (4) |
Measurement mode: I/Q streaming. See bbInitiate.
#define BB_AUDIO_DEMOD (7) |
Measurement mode: Audio demod. See bbInitiate.
#define BB_TG_SWEEPING (8) |
Measurement mode: Tracking generator sweeps for scalar network analysis. See bbInitiate.
#define BB_NO_SPUR_REJECT (0) |
Turn off spur rejection. See bbConfigureSweepCoupling.
#define BB_SPUR_REJECT (1) |
Turn on spur rejection. See bbConfigureSweepCoupling.
#define BB_LOG_SCALE (0) |
Specifies dBm units of sweep and real-time spectrum analysis measurements. See bbConfigureAcquisition.
#define BB_LIN_SCALE (1) |
Specifies mV units of sweep and real-time spectrum analysis measurements. See bbConfigureAcquisition.
#define BB_LOG_FULL_SCALE (2) |
Specifies dBm units, with no corrections, of sweep and real-time spectrum analysis measurements. See bbConfigureAcquisition.
#define BB_LIN_FULL_SCALE (3) |
Specifies mV units, with no corrections, of sweep and real-time spectrum analysis measurements. See bbConfigureAcquisition.
#define BB_RBW_SHAPE_NUTTALL (0) |
Specifies the Nuttall window used for sweep and real-time analysis. See bbConfigureSweepCoupling.
#define BB_RBW_SHAPE_FLATTOP (1) |
Specifies the Stanford flattop window used for sweep and real-time analysis. See bbConfigureSweepCoupling.
#define BB_RBW_SHAPE_CISPR (2) |
Specifies a Gaussian window with 6dB cutoff used for sweep and real-time analysis. See bbConfigureSweepCoupling.
#define BB_MIN_AND_MAX (0) |
Use min/max detector for sweep and real-time spectrum analysis. See bbConfigureAcquisition.
#define BB_AVERAGE (1) |
Use average detector for sweep and real-time spectrum analysis. See bbConfigureAcquisition.
#define BB_LOG (0) |
VBW processing occurs in dBm. See bbConfigureProcUnits.
#define BB_VOLTAGE (1) |
VBW processing occurs in linear voltage units (mV). See bbConfigureProcUnits.
#define BB_POWER (2) |
VBW processing occurs in linear power units (mW). See bbConfigureProcUnits.
#define BB_SAMPLE (3) |
No VBW processing. See bbConfigureProcUnits.
#define BB_DEMOD_AM (0) |
Audio demodulation type: AM. See bbConfigureDemod.
#define BB_DEMOD_FM (1) |
Audio demodulation type: FM. See bbConfigureDemod.
#define BB_DEMOD_USB (2) |
Audio demodulation type: Upper side band. See bbConfigureDemod.
#define BB_DEMOD_LSB (3) |
Audio demodulation type: Lower side band. See bbConfigureDemod.
#define BB_DEMOD_CW (4) |
Audio demodulation type: CW. See bbConfigureDemod.
#define BB_STREAM_IQ (0x0) |
Default for BB_SWEEPING measurement mode. See bbInitiate.
#define BB_DIRECT_RF (0x2) |
For BB60C/D devices. See bbInitiate.
#define BB_TIME_STAMP (0x10) |
Time stamp data using an external GPS receiver. See Using a GPS Receiver to Time-Stamp Data and bbInitiate.
#define BB60C_PORT1_AC_COUPLED (0x00) |
Configure BB60A/C port 1 as AC coupled. This is the default. See bbConfigureIO.
#define BB60C_PORT1_DC_COUPLED (0x04) |
Configure BB60A/C port 1 as DC coupled. See bbConfigureIO.
#define BB60C_PORT1_10MHZ_USE_INT (0x00) |
Use BB60A/C internal 10MHz reference. The internal reference is also output on port 1, but it is considered unused. See bbConfigureIO.
#define BB60C_PORT1_10MHZ_REF_OUT (0x100) |
Output BB60A/C internal 10 MHz reference on port 1. Use this setting when external equipment such as signal generators are using the 10MHz from the BB60. See bbConfigureIO.
#define BB60C_PORT1_10MHZ_REF_IN (0x8) |
Use an external 10MHz provided on BB60A/C port 1. Best phase noise is achieved by using a low jitter 3.3V CMOS input. See bbConfigureIO.
#define BB60C_PORT1_OUT_LOGIC_LOW (0x14) |
Output logic low on BB60A/C port 1. See bbConfigureIO.
#define BB60C_PORT1_OUT_LOGIC_HIGH (0x1C) |
Output logic high on BB60A/C port 1. See bbConfigureIO.
#define BB60C_PORT2_OUT_LOGIC_LOW (0x00) |
Output logic low on BB60A/C port 2. See bbConfigureIO.
#define BB60C_PORT2_OUT_LOGIC_HIGH (0x20) |
Output logic high on BB60A/C port 2. See bbConfigureIO.
#define BB60C_PORT2_IN_TRIG_RISING_EDGE (0x40) |
Detect and report external triggers rising edge on BB60A/C port 2 when I/Q streaming. See bbConfigureIO.
#define BB60C_PORT2_IN_TRIG_FALLING_EDGE (0x60) |
Detect and report external triggers falling edge on BB60A/C port 2 when I/Q streaming. See bbConfigureIO.
#define BB60D_PORT1_DISABLED (0) |
Disable BB60D port 1. See bbConfigureIO.
#define BB60D_PORT1_10MHZ_REF_IN (1) |
Discipline BB60D to an externally generated 10 MHz reference on port 1. See bbConfigureIO.
#define BB60D_PORT2_DISABLED (0) |
Disable BB60D port 2. See bbConfigureIO.
#define BB60D_PORT2_10MHZ_REF_OUT (1) |
Output B660D internal 10MHz reference on port 2. See bbConfigureIO.
#define BB60D_PORT2_IN_TRIG_RISING_EDGE (2) |
Detect and report external triggers rising edge on BB60D port 2 when I/Q streaming. See bbConfigureIO.
#define BB60D_PORT2_IN_TRIG_FALLING_EDGE (3) |
Detect and report external triggers falling edge on BB60D port 2 when I/Q streaming. See bbConfigureIO.
#define BB60D_PORT2_OUT_LOGIC_LOW (4) |
Output logic low on BB60D port 2. See bbConfigureIO.
#define BB60D_PORT2_OUT_LOGIC_HIGH (5) |
Output logic high on BB60D port 2. See bbConfigureIO.
#define BB60D_PORT2_OUT_UART (6) |
Use when any BB60D UART output functionality is desired. See bbConfigureIO.
#define BB60D_UART_BAUD_4_8K (0) |
Set 4800 baud rate for BB60D UART transmissions. See bbSetUARTRate.
#define BB60D_UART_BAUD_9_6K (1) |
Set 9600 baud rate for BB60D UART transmissions. See bbSetUARTRate.
#define BB60D_UART_BAUD_19_2K (2) |
Set 19200 baud rate for BB60D UART transmissions. See bbSetUARTRate.
#define BB60D_UART_BAUD_38_4K (3) |
Set 38400 baud rate for BB60D UART transmissions. See bbSetUARTRate.
#define BB60D_UART_BAUD_14_4K (4) |
Set 14400 baud rate for BB60D UART transmissions. See bbSetUARTRate.
#define BB60D_UART_BAUD_28_8K (5) |
Set 28800 baud rate for BB60D UART transmissions. See bbSetUARTRate.
#define BB60D_UART_BAUD_57_6K (6) |
Set 57600 baud rate for BB60D UART transmissions. See bbSetUARTRate.
#define BB60D_UART_BAUD_115_2K (7) |
Set 115200 baud rate for BB60D UART transmissions. See bbSetUARTRate.
#define BB60D_UART_BAUD_125K (8) |
Set 125000 baud rate for BB60D UART transmissions. See bbSetUARTRate.
#define BB60D_UART_BAUD_250K (9) |
Set 250000 baud rate for BB60D UART transmissions. See bbSetUARTRate.
#define BB60D_UART_BAUD_500K (10) |
Set 500000 baud rate for BB60D UART transmissions. See bbSetUARTRate.
#define BB60D_UART_BAUD_1000K (11) |
Set 1000000 baud rate for BB60D UART transmissions. See bbSetUARTRate.
#define BB60D_MIN_UART_STATES (2) |
Minimum number of frequency/data pairs given in bbEnableUARTSweeping. See UART Antenna Switching.
#define BB60D_MAX_UART_STATES (8) |
Maximum number of frequency/data pairs given in bbEnableUARTSweeping. See UART Antenna Switching.
#define TG_THRU_0DB (0x1) |
In scalar network analysis, use the next trace as a thru. See bbStoreTgThru.
#define TG_THRU_20DB (0x2) |
In scalar network analysis, improve accuracy with a second thru step. See bbStoreTgThru.
#define TG_REF_UNUSED (0) |
Additional corrections are applied to tracking generator timebase. See bbSetTgReference.
#define TG_REF_INTERNAL_OUT (1) |
Use tracking generator timebase as frequency standard for system, and do not apply additional corrections. See bbSetTgReference.
#define TG_REF_EXTERNAL_IN (2) |
Use an external reference for TG124A, and do not apply additional corrections to timebase. See bbSetTgReference.
enum bbStatus |
Status code returned from all BB API functions. Errors are negative and suffixed with 'Err'. Errors stop the flow of execution, warnings do not.
Enumerator | |
---|---|
bbInvalidModeErr | Invalid mode |
bbReferenceLevelErr | Reference level cannot exceed 20dBm |
bbInvalidVideoUnitsErr | Invalid video processing units specified |
bbInvalidWindowErr | Invalid window |
bbInvalidBandwidthTypeErr | Invalid bandwidth type |
bbInvalidSweepTimeErr | Invalid sweep time |
bbBandwidthErr | Invalid bandwidth |
bbInvalidGainErr | Invalid gain |
bbAttenuationErr | Invalid attenuation |
bbFrequencyRangeErr | Frequency range out of bounds |
bbInvalidSpanErr | Invalid span |
bbInvalidScaleErr | Invalid scale parameter |
bbInvalidDetectorErr | Invalid detector type |
bbInvalidFileSizeErr | Invalid file size |
bbLibusbError | Unable to initialize libusb |
bbNotSupportedErr | Attempting to perform an operation on a device that does not support it. |
bbTrackingGeneratorNotFound | Tracking generator not found |
bbUSBTimeoutErr | USB timeout error |
bbDeviceConnectionErr | Device connection issues detected |
bbPacketFramingErr | Device packet framing issues |
bbGPSErr | GPS receiver not found or not configured properly |
bbGainNotSetErr | Gain cannot be auto |
bbDeviceNotIdleErr | Function could not complete because the instrument is actively configured for or making a measurement. Call bbAbort and try again. |
bbDeviceInvalidErr | Invalid device |
bbBufferTooSmallErr | Buffer provided too small |
bbNullPtrErr | Returned when one or more required pointer parameter is null. |
bbAllocationLimitErr | Allocation limit reached |
bbDeviceAlreadyStreamingErr | Device is already streaming |
bbInvalidParameterErr | Returned when one or more parameters provided does not match the range of possible values. |
bbDeviceNotConfiguredErr | Returned if the device is not properly configured for the desired action. Often occurs when the device needs to be configured for a specific measurement mode before taking an action. |
bbDeviceNotStreamingErr | Device not streaming |
bbDeviceNotOpenErr | Returned when the device handle provided does not match an open or known device. |
bbNoError | Function returned successfully. No warnings or errors. |
bbAdjustedParameter | One or more parameters was clamped to a minimum or maximum limit. |
bbADCOverflow | ADC overflow |
bbNoTriggerFound | No trigger found |
bbClampedToUpperLimit | One or more parameters was clamped to a maximum upper limit. |
bbClampedToLowerLimit | One or more parameters was clamped to a minimum lower limit. |
bbUncalibratedDevice | Device is uncalibrated |
bbDataBreak | Break in data |
bbUncalSweep | Sweep uncalibrated, data invalid or incomplete. |
bbInvalidCalData | Invalid cal data, potentially corrupted |
enum bbDataType |
enum bbPowerState |
Specifies device power state. See Power State for more information.
Enumerator | |
---|---|
bbPowerStateOn | On |
bbPowerStateStandby | Standby |
BB_API bbStatus bbGetSerialNumberList | ( | int | serialNumbers[BB_MAX_DEVICES], |
int * | deviceCount | ||
) |
This function returns the serial numbers for all unopened devices.
The array provided is populated starting at index 0 up to BB_MAX_DEVICES. It is undefined behavior if the array provided contains fewer elements than the number of unopened devices connected. For this reason, it is recommended the array is BB_MAX_DEVICES elements in length. The integer deviceCount will contain the number of devices detected. Elements in the array beyond deviceCount are not modified.
Note: BB60A devices will have 0 returned as the serial number.
[out] | serialNumbers | A pointer to an array of integers. Can be NULL. |
[out] | deviceCount | A pointer to an integer. Will be set to the number of devices found on the system. |
BB_API bbStatus bbGetSerialNumberList2 | ( | int | serialNumbers[BB_MAX_DEVICES], |
int | deviceTypes[BB_MAX_DEVICES], | ||
int * | deviceCount | ||
) |
This function returns the serial numbers and device types for all unopened devices.
The arrays provided are populated starting at index 0 up to BB_MAX_DEVICES. It is undefined behavior if the arrays provided contain fewer elements than the number of unopened devices connected. For this reason, it is recommended the arrays are BB_MAX_DEVICES elements in length. The integer deviceCount will contain the number of devices detected. Elements in the arrays beyond deviceCount are not modified.
Note: BB60A devices will have 0 returned as the serial number.
[out] | serialNumbers | A pointer to an array of integers. Can be NULL. |
[out] | deviceTypes | A pointer to an array of integers. The possible device types returned are BB_DEVICE_BB60A, BB_DEVICE_BB60C, and BB_DEVICE_BB60D. Can be NULL. |
[out] | deviceCount | A pointer to an integer. Will be set to the number of devices found on the system. |
BB_API bbStatus bbOpenDevice | ( | int * | device | ) |
This function attempts to open the first unopened BB60 it detects. If a device is opened successfully, a handle to the device will be returned through the device pointer which can be used to target that device in subsequent API function calls.
When successful, this function takes about 3 seconds to return. During that time, the calling thread is blocked.
If you wish to target multiple devices or wish to target devices across processes, see Multiple Devices and Multiple Processes.
[out] | device | Pointer to an integer. If successful, a device handle is returned. This handle is used for all successive API function calls. |
BB_API bbStatus bbOpenDeviceBySerialNumber | ( | int * | device, |
int | serialNumber | ||
) |
The function attempts to open the device with the provided serial number. If no devices are detected with that serial, the function returns an error. If a device is opened successfully, a handle to the device will be returned through the device pointer which can be used to target that device in subsequent API function calls.
Only BB60C/D devices can be opened by specifying the serial number. If the serial number specified is 0, the first BB60A found will be opened.
When successful, this function takes about 3 seconds to return. During that time, the calling thread is blocked.
If you wish to target multiple devices or wish to target devices across processes, see Multiple Devices and Multiple Processes.
[out] | device | Pointer to an integer. If successful, the integer pointed to by device will contain a valid device handle which can be used to identify a device for successive API function calls. |
[in] | serialNumber | User-provided serial number. |
BB_API bbStatus bbCloseDevice | ( | int | device | ) |
This function closes a device, freeing internal allocated memory and USB 3.0 resources. The device closed will become available to be opened again.
This function will abort any active measurements.
[in] | device | Device handle. |
BB_API bbStatus bbSetPowerState | ( | int | device, |
bbPowerState | powerState | ||
) |
This function is used to set the power state of a BB60D device. This function will return an error for any non BB60D device. The device should not be performing any measurements when calling this function. The device can be configured for sweeps as long as it is not actively performing one.
The device should not perform any measurements while in the standby power state. Ideally no API functions calls should be performed between setting the device into standby power state and returning to the on power state.
See the Power State section for more details as well as the C++ programming example.
[in] | device | Device handle. |
[in] | powerState | Specify the on or standby power state. |
BB_API bbStatus bbGetPowerState | ( | int | device, |
bbPowerState * | powerState | ||
) |
This function returns the current device power state.
See the Power State section for more details as well as the C++ programming example.
[in] | device | Device handle. |
[out] | powerState | Pointer to power state variable. |
BB_API bbStatus bbPreset | ( | int | device | ) |
This function instructs the device to perform a power cycle. This might be useful if the device has entered an unresponsive state. The device must still be able to receive USB commands for this function to work. If the device receives the power cycle command, it will take roughly 3 seconds to fully power cycle.
An example of using this function is provided in the C++ example folder.
[in] | device | Device handle. |
BB_API bbStatus bbPresetFull | ( | int * | device | ) |
This function will fully preset, close, and reopen the device pointed to by the device parameter. This function will only work if the device can still receive USB commands.
[in] | device | Pointer to a valid device handle. |
BB_API bbStatus bbSelfCal | ( | int | device | ) |
This function is for the BB60A only.
This function causes the device to recalibrate itself to adjust for internal device temperature changes, generating an amplitude correction array as a function of IF frequency. This function will explicitly call bbAbort to suspend all device operations before performing the calibration and will return the device in an idle state and configured as if it was just opened. The state of the device should not be assumed and should be fully reconfigured after a self-calibration.
Temperature changes of 2 degrees Celsius or more have been shown to measurably alter the shape/amplitude of the IF. We suggest using bbGetDeviceDiagnostics to monitor the device’s temperature and perform self-calibrations when needed. Amplitude measurements are not guaranteed to be accurate otherwise, and large temperature changes (10°C or more) may result in adding a dB or more of error.
Because this is a streaming device, we have decided to leave the programmer in full control of when the device in calibrated. The device is calibrated once upon opening the device through bbOpenDevice and is the responsibility of the programmer after that.
Note: After calling this function, the device returns to the default state. Currently the API does not retain state prior to the calling of bbSelfCal. Fully reconfiguring the device will be necessary.
[in] | device | Device handle. |
BB_API bbStatus bbGetSerialNumber | ( | int | device, |
uint32_t * | serialNumber | ||
) |
If this function returns successfully, the variable pointed to by serialNumber will contain the serial number of the specified device.
[in] | device | Device handle. |
[out] | serialNumber | Returns device serial number as unsigned integer. |
BB_API bbStatus bbGetDeviceType | ( | int | device, |
int * | deviceType | ||
) |
If the function returns successfully, the variable pointed to by deviceType will be one of several device type macro values, BB_DEVICE_NONE, BB_DEVICE_BB60A, BB_DEVICE_BB60C, or BB_DEVICE_BB60D. These macros are defined in the API header file.
[in] | device | Device handle. |
[out] | deviceType | Returns device type. Can be BB_DEVICE_NONE, BB_DEVICE_BB60A, BB_DEVICE_BB60C, BB_DEVICE_BB60D. |
BB_API bbStatus bbGetFirmwareVersion | ( | int | device, |
int * | version | ||
) |
If the function returns successfully, the variable pointed to by version will be the firmware version of the specified device.
BB60 firmware version information is available on the BB60 downloads page on the Signal Hound website.
[in] | device | Device handle. |
[out] | version | Returns firmware version number as integer. |
BB_API bbStatus bbGetDeviceDiagnostics | ( | int | device, |
float * | temperature, | ||
float * | usbVoltage, | ||
float * | usbCurrent | ||
) |
The device temperature is updated in the API after each sweep is retrieved, and periodically while I/Q streaming. The temperature is returned in Celsius and has a resolution of 1/8th of a degree. A USB voltage of below 4.4V may cause readings to be out of spec. Check your cable for damage and USB connectors for damage or oxidation.
[in] | device | Device handle. |
[out] | temperature | Returns device temperature as float. |
[out] | usbVoltage | Returns USB voltage as float. |
[out] | usbCurrent | Returns usb current as float. |
BB_API bbStatus bbConfigureIO | ( | int | device, |
uint32_t | port1, | ||
uint32_t | port2 | ||
) |
The device must be idle when calling this function.
This function configures the two I/O ports on the BB60 rear panel. The values passed to the port parameters will change depending on which device is connected. It is up to the developer to determine which device is connected and send the appropriate parameters.
For a full list of all possible parameters see below. For examples on basic configuration of the ports, see the C++ programming examples in the SDK.
Port 1 can be configured for 10 MHz ref in/out or as a logic output and accepts the following values:
Only one of the values above can be selected for port 1. In addition to one of the above values, port 1 can be configured as AC or DC coupled. If AC coupled is desired, simply use one of the macros defined above. If DC coupled is desired, bitwise or “|” one of the above values with BB60C_PORT1_DC_COUPLED.
Port 2 can be configured as trigger input port or logic output port. Port 2 is always DC coupled and accepts the following values:
Port 1 can be configured for reference in. Port 1 is always AC coupled. The following values are accepted:
Port 2 is used for 10 MHz out, trigger input, logic outputs, and UART outputs. Port 2 is always DC coupled. The following values are accepted:
[in] | device | Device handle. |
[in] | port1 | See description. |
[in] | port2 | See description. |
BB_API bbStatus bbSyncCPUtoGPS | ( | int | comPort, |
int | baudRate | ||
) |
This function is currently not supported on the Linux operating system.
The connection to the COM port is only established for the duration of this function. It is closed when the function returns. Call this function once before using a GPS PPS signal to time-stamp RF data. The synchronization will remain valid until the CPU clock drifts more than ¼ second, typically several hours, and will re-synchronize continually while streaming data using a PPS trigger input.
This function calculates the offset between your CPU clock time and the GPS clock time to within a few milliseconds and stores this value for time-stamping RF data using the GPS PPS trigger. This function ignores time zone, limiting the calculated offset to +/- 30 minutes. It was tested using an FTS 500 from Connor Winfield at 38.4k baud. It uses the RMC sentence, so you must set up your GPS to output this.
[in] | comPort | COM port number for the NMEA data output from the GPS receiver. |
[in] | baudRate | Baud Rate of the COM port. |
BB_API bbStatus bbSetUARTRate | ( | int | device, |
int | rate | ||
) |
BB60D only.
Sets the baud rate on all UART transmissions. Must be configured when the device is idle. Only the baud rates defined as macros are supported.
See the section on UART Antenna Switching for more information
[in] | device | Device handle. |
[in] | rate | One of any of the baud rate macros defined in the API header file. Macro names start with BB60D_UART_BAUD_. |
BB_API bbStatus bbEnableUARTSweeping | ( | int | device, |
const double * | freqs, | ||
const uint8_t * | data, | ||
int | states | ||
) |
BB60D only.
Must be called when the device is idle prior to initiating the sweep.
Configures the receiver to transmit UART bytes at certain frequency thresholds. The BB60D steps the frequency spectrum in 20MHz steps, and thus resolution is +/- 20MHz on any given UART transmission.
Frequencies are sorted if they are not provided in increasing order. Regardless of the first frequency provided, the UART byte in position 0 is transmitted at the beginning of the sweep. We recommend simply setting the first frequency to 0Hz.
Port 2 must be configured as an UART output, see bbConfigureIO.
See the section on UART antenna switching for more information.
[in] | device | Device handle. |
[in] | freqs | Array of frequency thresholds at which to transmit a new UART byte. Size of array must be equal to the number of states. |
[in] | data | Array of UART bytes to transmit at the given frequency threshold. Size of array must be equal to the number of states. |
[in] | states | Number of freq/data pairs. Alternatively, the size of the provided arrays. Must be between [2,8]. |
BB_API bbStatus bbDisableUARTSweeping | ( | int | device | ) |
BB60D only.
Disables UART sweep antenna switching and clears any states set in bbEnableUARTSweeping. Device must be idle when calling this function.
See the section on UART Antenna Switching for more information.
[in] | device | Device handle. |
BB_API bbStatus bbEnableUARTStreaming | ( | int | device, |
const uint8_t * | data, | ||
const uint32_t * | counts, | ||
int | states | ||
) |
BB60D only.
Configures the pseudo-doppler antenna switching for I/Q streaming. Must be configured when the device is idle.
When I/Q streaming, the device will cycle through the provided data/count pairs, transmitting the data at that state, then waiting for the specified number of 40MHz clocks. The specified wait count starts as soon as transmission of the start bit occurs.
An external trigger is inserted when the cycle restarts. This allows the ability to determine which I/Q samples correspond to which UART output states. There is a limitation on how quickly external triggers can be generated. The minimum spacing on triggers is ~250us or 4kHz. If the UART streaming configuration produces triggers at a rate faster than this, you will not receive every triggers. In this situation, you will need to extrapolate missing triggers.
An example:
If two states are provided, with data = { 1, 8 } and counts { 10000, 10000 }, with a baud rate of 1M. While I/Q streaming, the UART byte of ‘1’ starts being transmitted, an external trigger is inserted when the start bit begins transmitting. The UART byte of 1 will take 10us to transmit, (10 bits, 8(data) + 1 (start bit) + 1(stop bit)) and the device will stream for 250us (10k / 40MHz) from when the start bit is transmitted. Once 250us have passed, the start bit for the transmission of ‘8’ is output. Again, it will stream for 250us with a time of 1us for transmitting the 10 bits. At that point it goes back to the first state with a ‘1’ being transmitted.
See the section on UART Antenna Switching for more information.
[in] | device | Device handle. |
[in] | data | Array of UART bytes to transmit. |
[in] | counts | Array of 40MHz clock counts to remain at this state. Values cannot exceed 2^24. Values should also be longer than the time it takes to transmit 10 bits at the selected baud rate. |
states | Number of data/counts pairs. Alternatively, the size of the provided arrays. Must be between [2,8]. |
BB_API bbStatus bbDisableUARTStreaming | ( | int | device | ) |
BB60D only.
Disables UART pseudo-doppler switching for I/Q streaming and clears any states set in bbEnableUARTStreaming. Device must be idle when calling this function. See the section on UART Antenna Switching for more information.
[in] | device | Device handle. |
BB_API bbStatus bbWriteUARTImm | ( | int | device, |
uint8_t | data | ||
) |
BB60D only.
Device must be idle when calling this function. Outputs provided byte immediately and returns when complete. Port 2 must be configured for UART output. See bbConfigureIO.
[in] | device | Device handle. |
[in] | data | Byte to transmit. |
BB_API bbStatus bbConfigureRefLevel | ( | int | device, |
double | refLevel | ||
) |
The reference level is used to control the sensitivity of the receiver.
It is recommended to set the reference level ~5dB higher than the maximum expected input level.
The reference level is only used if the gain and attenuation are set to auto (default). It is recommended to leave gain/atten as auto.
[in] | device | Device handle. |
[in] | refLevel | Reference level in dBm. |
BB_API bbStatus bbConfigureGainAtten | ( | int | device, |
int | gain, | ||
int | atten | ||
) |
This function is used to manually control the gain and attenuation of the receiver. Both gain and attenuation must be set to non-auto values to override the reference level.
It is recommended to leave them as auto. When left as auto, gain and attenuation can be optimized for each band independently. If manually chosen, a flat gain/attenuation is used across all bands.
Below is the gain and attenuation used with each setting.
Setting | BB60C | BB60D |
---|---|---|
gain = 0 | 0dB gain | 0dB gain |
gain = 1 | 5dB gain | 5dB gain |
gain = 2 | 30dB gain | 15dB gain |
gain = 3 | 35dB gain | 20dB gain |
atten = 0 | 0dB attenuation | 0 dB attenuation |
atten = 1 | 10dB attenuation | 10dB attenuation |
atten = 2 | 20dB attenuation | 20dB attenuation |
atten = 3 | 30dB attenuation | 30dB attenuation |
[in] | device | Device handle. |
[in] | gain | Gain should be between [-1,3] where -1 represents auto. |
[in] | atten | Atten should be between [-1,3] where -1 represents auto. |
BB_API bbStatus bbConfigureCenterSpan | ( | int | device, |
double | center, | ||
double | span | ||
) |
See bbConfigureIQCenter for configuring I/Q streaming center frequency.
This function configures the sweep frequency range. Start and stop frequencies can be determined from the center and span.
During initialization a more precise start frequency and span is determined and returned in the bbQueryTraceInfo function.
The start/stop frequencies cannot exceed [9kHz, 6.4GHz].
There is an absolute minimum operating span of 20 Hz, but 200kHz is a suggested minimum.
Certain modes of operation have specific frequency range limits. Those mode dependent limits are tested against during bbInitiate.
[in] | device | Device handle. |
[in] | center | Center frequency in Hz. |
[in] | span | Span in Hz. |
BB_API bbStatus bbConfigureSweepCoupling | ( | int | device, |
double | rbw, | ||
double | vbw, | ||
double | sweepTime, | ||
uint32_t | rbwShape, | ||
uint32_t | rejection | ||
) |
For standard bandwidths, the API uses the 3 dB points to define the RBW. For the CISPR RBW shape, 6dB bandwidths are used.
The video bandwidth is implemented as an IIR filter applied bin-by-bin to a sequence of overlapping FFTs. Larger RBW/VBW ratios require more FFTs.
The API uses the Stanford flattop window when FLATTOP is selected. The Nuttall window shape trades increased measurement speed for reduces measurement accuracy by adding up to 0.8dB scalloping losses. The CISPR window uses a Gaussian window with 6dB cutoff.
All windows use zero-padding to achieve arbitrary RBWs. Only powers of 2 FFT sizes are used in the API.
sweepTime applies to standard swept analysis and is ignored for other operating modes. If in sweep mode, sweepTime is the amount of time the device will spend collecting data before processing. Increasing this value is useful for capturing signals of interest or viewing a more consistent view of the spectrum. Increasing sweepTime can have a large impact on the resources used by the API due to the increase of data needing to be stored and the amount of signal processing performed.
Rejection can be used to optimize certain aspects of the signal. The default is BB_NO_SPUR_REJECT and should be used for most measurements. If you have a steady CW or slowly changing signal and need to minimize image and spurious responses from the device, use BB_SPUR_REJECT. Rejection is ignored outside of standard swept analysis.
[in] | device | Device handle. |
[in] | rbw | Resolution bandwidth in Hz. RBWs can be set to arbitrary values but may be limited by mode of operation and span. |
[in] | vbw | Video bandwidth in Hz. VBW must be less than or equal to RBW. VBW can be arbitrary. For best performance use RBW as the VBW. When VBW is set equal to RBW, no VBW filtering is performed. |
[in] | sweepTime | Suggest a sweep time in seconds. In sweep mode, this value specifies how long the BB60 should sample spectrum for the configured sweep. Larger sweep times may increase the odds of capturing spectral events at the cost of slower sweep rates. The range of possible sweepTime values run from 1ms -> 100ms or [0.001 – 0.1]. |
[in] | rbwShape | The possible values for rbwShape are BB_RBW_SHAPE_NUTTALL, BB_RBW_SHAPE_FLATTOP, and BB_RBW_SHAPE_CISPR. This choice determines the window function used and the bandwidth cutoff of the RBW filter. BB_RBW_SHAPE_NUTTALL is default and unchangeable for real-time operation. |
[in] | rejection | The possible values for rejection are BB_NO_SPUR_REJECT and BB_SPUR_REJECT. |
BB_API bbStatus bbConfigureAcquisition | ( | int | device, |
uint32_t | detector, | ||
uint32_t | scale | ||
) |
The detector parameter specifies how to produce the results of the signal processing for the final sweep. Depending on settings, potentially many overlapping FFTs will be performed on the input time domain data to retrieve a more consistent and accurate result. When the results overlap detector chooses whether to average the results together or maintain the minimum and maximum values. If averaging is chosen, the min and max trace arrays returned from bbFetchTrace will contain the same averaged data.
The scale parameter will change the units of returned sweeps. If BB_LOG_SCALE is provided, sweeps will be returned as dBm values, If BB_LIN_SCALE is return, the returned units will be in milli-volts. If the full-scale units are specified, no corrections are applied to the data and amplitudes are taken directly from the full scale input.
[in] | device | Device handle. |
[in] | detector | Specifies the video detector. The two possible values for detector type are BB_AVERAGE and BB_MIN_AND_MAX. |
[in] | scale | Specifies the scale in which sweep results are returned int. The four possible values for scale are BB_LOG_SCALE, BB_LIN_SCALE, BB_LOG_FULL_SCALE, and BB_LIN_FULL_SCALE. |
BB_API bbStatus bbConfigureProcUnits | ( | int | device, |
uint32_t | units | ||
) |
The units provided determines scale video processing occurs in. The chart below shows which unit types are used for each units selection.
For “average power” measurements, BB_POWER should be selected. For cleaning up an amplitude modulated signal, BB_VOLTAGE would be a good choice. To emulate a traditional spectrum analyzer, select BB_LOG. To minimize processing power, select BB_SAMPLE.
Macro | Unit |
---|---|
BB_LOG | dBm |
BB_VOLTAGE | mV |
BB_POWER | mW |
BB_SAMPLE | No video processing |
[in] | device | Device handle. |
[in] | units | The possible values are BB_LOG, BB_VOLTAGE, BB_POWER, BB_SAMPLE. |
BB_API bbStatus bbConfigureRealTime | ( | int | device, |
double | frameScale, | ||
int | frameRate | ||
) |
The function allows you to configure additional parameters of the real-time frames returned from the API. If this function is not called a scale of 100dB is used and a frame rate of 30fps is used. For more information regarding real-time mode see Real-Time Spectrum Analysis.
[in] | device | Device handle. |
[in] | frameScale | Specifies the height in dB of the real-time frame. The value is ignored if the scale is linear. Possible values range from [10 – 200]. |
[in] | frameRate | Specifies the rate at which frames are generated in real-time mode, in frames per second. Possible values range from [4 – 30], where four means a frame is generated every 250ms and 30 means a frame is generated every ~33 ms. |
BB_API bbStatus bbConfigureRealTimeOverlap | ( | int | device, |
double | advanceRate | ||
) |
By setting the advance rate users can control the overlap rate of the FFT processing in real-time spectrum analysis. The advanceRate parameter specifies how far the FFT window slides through the data for each FFT as a function of FFT size. An advanceRate of 0.5 specifies that the FFT window will advance 50% the FFT length for each FFT for a 50% overlap rate. Specifying a value of 1.0 would mean the FFT window advances the full FFT length meaning there is no overlap in real-time processing. The default value is 0.5 and the range of acceptable values are between [0.5, 10]. Increasing the advance rate reduces processing considerably but also increases the 100% probability of intercept of the device.
[in] | device | Device handle. |
[in] | advanceRate | FFT advance rate. |
BB_API bbStatus bbConfigureIQCenter | ( | int | device, |
double | centerFreq | ||
) |
Configure the center frequency for I/Q streaming.
When switching back to sweep acquisition from I/Q acquisition, you will need to call the bbConfigureCenterSpan function again.
The center frequency must be between [BB_MIN_FREQ, BB_MAX_FREQ]
[in] | device | Device handle. |
[in] | centerFreq | Center frequency in Hz. |
BB_API bbStatus bbConfigureIQ | ( | int | device, |
int | downsampleFactor, | ||
double | bandwidth | ||
) |
Configure the sample rate and bandwidth of the I/Q data stream.
The decimation rate divides the I/Q sample rate. The final sample rate is calculated with the equation 40MHz / downsampleFactor
. downsampleFactor must be a power of 2 between [1,8192].
bandwidth specifies the 3dB bandwidth of the I/Q data stream. bandwidth controls the filter cutoff of a FIR filter applied to the data stream prior to decimation.
For each given decimation rate, a maximum bandwidth value is specified to account for sufficient filter roll off. A table of maximum bandwidths can be found in I/Q Filtering and Bandwidth Limitations.
[in] | device | Device handle. |
[in] | downsampleFactor | Specify a decimation rate for the 40MS/s I/Q stream. |
[in] | bandwidth | Specify a bandpass filter width for the I/Q stream. |
BB_API bbStatus bbConfigureIQDataType | ( | int | device, |
bbDataType | dataType | ||
) |
See I/Q Data Types for more information.
[in] | device | Device handle. |
[in] | dataType | Data type can be specified either as 32-bit complex floats or 16-bit complex shorts. |
BB_API bbStatus bbConfigureIQTriggerSentinel | ( | int | sentinel | ) |
See the I/Q Streaming for more information on triggering and how the trigger sentinel value is used.
[in] | sentinel | Value used to fill the remainder of the trigger buffer when the trigger buffer provided is larger than the number of triggers returned. The default sentinel value is zero. |
BB_API bbStatus bbConfigureDemod | ( | int | device, |
int | modulationType, | ||
double | freq, | ||
float | IFBW, | ||
float | audioLowPassFreq, | ||
float | audioHighPassFreq, | ||
float | FMDeemphasis | ||
) |
Below is the overall flow of data through our audio processing algorithm:
This function can be called while the device is active.
[in] | device | Device handle. |
[in] | modulationType | Specifies the demodulation scheme, possible values are BB_DEMOD_AM, BB_DEMOD_FM, BB_DEMOD_USB (upper sideband), BB_DEMOD_LSB (lower sideband), BB_DEMOD_CW. |
[in] | freq | Center frequency. For best results, re-initiate the device if the center frequency changes +/- 8MHz from the initial value. |
[in] | IFBW | Intermediate frequency bandwidth centered on freq. Filter takes place before demodulation. Specified in Hz. Should be between 500 Hz and 500 kHz. |
[in] | audioLowPassFreq | Post demodulation filter in Hz. Should be between 1kHz and 12kHz Hz. |
[in] | audioHighPassFreq | Post demodulation filter in Hz. Should be between 20 and 1000Hz. |
[in] | FMDeemphasis | Specified in micro-seconds. Should be between 1 and 100. |
BB_API bbStatus bbInitiate | ( | int | device, |
uint32_t | mode, | ||
uint32_t | flag | ||
) |
This function configures the device into a state determined by the mode parameter. For more information regarding operating states, refer to the Theory of Operation and Measurement Types sections. This function calls bbAbort before attempting to reconfigure. It should be noted, if an error is returned, any past operating state will no longer be active.
[in] | device | Device handle. |
[in] | mode | The possible values for mode are BB_SWEEPING, BB_REAL_TIME, BB_AUDIO_DEMOD, BB_STREAMING, BB_TG_SWEEPING. |
[in] | flag | The default value should be zero. If the mode is equal to BB_STREAMING, the flag should be set to BB_STREAM_IQ (0). flag can be used to inform the API to time stamp data using an external GPS receiver. Mask the bandwidth flag (‘|’ in C) with BB_TIME_STAMP to achieve this. See Using a GPS Receiver to Time-Stamp Data for information on how to set this up. |
BB_API bbStatus bbAbort | ( | int | device | ) |
Stops the device operation and places the device into an idle state.
[in] | device | Device handle. |
BB_API bbStatus bbQueryTraceInfo | ( | int | device, |
uint32_t * | traceLen, | ||
double * | binSize, | ||
double * | start | ||
) |
This function should be called to determine sweep characteristics after a device has been configured and initiated for sweep mode.
[in] | device | Device handle. |
[out] | traceLen | Pointer to uint32_t to contain the size of the sweeps returned from bbFetchTrace. |
[out] | binSize | Pointer to double, to contain the frequency delta between two sequential bins in the returned sweep. |
[out] | start | Pointer to double to contains the frequency of the first bin in the sweep. |
BB_API bbStatus bbQueryRealTimeInfo | ( | int | device, |
int * | frameWidth, | ||
int * | frameHeight | ||
) |
This function should be called after initializing the device for real-time mode.
[in] | device | Device handle. |
[out] | frameWidth | Pointer to uint32_t to contain the width of the real-time frame in bins. |
[out] | frameHeight | Pointer to uint32_t to contain the height of the real-time frame in bins. |
BB_API bbStatus bbQueryRealTimePoi | ( | int | device, |
double * | poi | ||
) |
The device must be configured for real-time spectrum analysis to call this function.
[in] | device | Device handle. |
[out] | poi | Pointer to double to contain the 100% probability of intercept duration in seconds. |
BB_API bbStatus bbQueryIQParameters | ( | int | device, |
double * | sampleRate, | ||
double * | bandwidth | ||
) |
The device must be configured for I/Q streaming to call this function.
[in] | device | Device handle. |
[out] | sampleRate | Pointer to double to contain the I/Q streaming sample rate in Hz. |
[out] | bandwidth | Pointer to double to contain the I/Q streaming bandwidth. |
BB_API bbStatus bbGetIQCorrection | ( | int | device, |
float * | correction | ||
) |
Retrieve the I/Q correction factor for I/Q streaming with 16-bit complex shorts. The device must be configured for I/Q streaming to call this function.
[in] | device | Device handle. |
[out] | correction | Pointer to float to contain the scalar value used to convert full scale I/Q data to amplitude corrected I/Q. The formulas for these conversions are in I/Q Data Types. Cannot be null. |
BB_API bbStatus bbFetchTrace_32f | ( | int | device, |
int | arraySize, | ||
float * | traceMin, | ||
float * | traceMax | ||
) |
Get one sweep in sweep mode. If the detector type is set to average, the traceMin array returned will equal max, in which case NULL can be used for the min parameter.
The first element returned in the sweep corresponds to the startFreq returned from bbQueryTraceInfo.
[in] | device | Device handle. |
[in] | arraySize | This parameter is deprecated and ignored. |
[out] | traceMin | Pointer to a float array whose length should be equal to or greater than traceSize returned from bbQueryTraceInfo. Set to NULL to ignore this parameter. |
[out] | traceMax | Pointer to a float array whose length should be equal to or greater than traceSize returned from bbQueryTraceInfo. Set to NULL to ignore this parameter. |
BB_API bbStatus bbFetchTrace | ( | int | device, |
int | arraySize, | ||
double * | traceMin, | ||
double * | traceMax | ||
) |
Get one sweep in sweep mode. If the detector type is set to average, the traceMin array returned will equal max, in which case NULL can be used for the min parameter.
The first element returned in the sweep corresponds to the startFreq returned from bbQueryTraceInfo.
[in] | device | Device handle. |
[in] | arraySize | This parameter is deprecated and ignored. |
[out] | traceMin | Pointer to a double array whose length should be equal to or greater than traceSize returned from bbQueryTraceInfo. Set to NULL to ignore this parameter. |
[out] | traceMax | Pointer to a double array whose length should be equal to or greater than traceSize returned from bbQueryTraceInfo. Set to NULL to ignore this parameter. |
BB_API bbStatus bbFetchRealTimeFrame | ( | int | device, |
float * | traceMin, | ||
float * | traceMax, | ||
float * | frame, | ||
float * | alphaFrame | ||
) |
This function is used to retrieve the real-time sweeps, frame, and alpha frame. This function should be used instead of bbFetchTrace for real-time mode. The sweep arrays should be equal to the trace length returned from the bbQueryTraceInfo function. The frame and alphaFrame should be WxH values long, where W and H are the values returned from bbQueryRealTimeInfo. For more information see Real-Time Spectrum Analysis.
[in] | device | Device handle. |
[out] | traceMin | If this pointer is non-null, the min held sweep will be returned to the user. If the detector is set to average, this array will be identical to the traceMax array. |
[out] | traceMax | If this pointer is non-null, the max held sweep will be returned to the user. If the detector is set to average, this array contains the averaged results over the measurement interval. |
[out] | frame | Pointer to a float array. If the function returns successfully, the contents of the array will contain a single real-time frame. |
[out] | alphaFrame | Pointer to a float array. If the function returns successfully, the contents of the array will contain the alphaFrame corresponding to the frame. Can be NULL. |
BB_API bbStatus bbGetIQ | ( | int | device, |
bbIQPacket * | pkt | ||
) |
This function retrieves one block of I/Q data as specified by the bbIQPacket struct. The members of the bbIQPacket struct and how they affect the acquisition are described in the parameters section.
The timestamps returned will either be synchronized to the GPS if it was properly configured or the PC system clock if not. For timestamps generated by the system clock, one should only use the first timestamp collected and use the index and sample rate to determine the time of an individual sample.
The BB60 will report ~5k triggers per second. Use an adequate size trigger buffer if you wish to receive all potential triggers. If the API has more triggers to report than the size of the buffer provided, any excess triggers will be discarded.
[in] | device | Device handle. |
[out] | pkt | Pointer to a bbIQPacket structure. |
BB_API bbStatus bbGetIQUnpacked | ( | int | device, |
void * | iqData, | ||
int | iqCount, | ||
int * | triggers, | ||
int | triggerCount, | ||
int | purge, | ||
int * | dataRemaining, | ||
int * | sampleLoss, | ||
int * | sec, | ||
int * | nano | ||
) |
This function provides a method for retrieving I/Q data without needing the bbIQPacket struct. Each parameter in bbGetIQUnpacked has a one-to-one mapping to variables found in the bbIQPacket struct. This function serves as a convenience for creating bindings in various programming languages and environments such as Python, C#, LabVIEW, MATLAB, etc. This function is implemented by taking the parameters provided into the bbIQPacket struct and calling bbGetIQ.
[in] | device | Device handle. |
[out] | iqData | Pointer to an array of 32-bit complex floating-point values. Complex values are interleaved real-imaginary pairs. This must point to a contiguous block of iqCount complex pairs. |
[in] | iqCount | Number of I/Q data pairs to return. |
[out] | triggers | Pointer to an array of integers. If the external trigger input is active, and a trigger occurs during the acquisition time, triggers will be populated with values which are relative indices into the iqData array where external triggers occurred. Any unused trigger array values will be set to zero. |
[in] | triggerCount | Size of the triggers array. |
[in] | purge | Specifies whether to discard any samples acquired by the API since the last time a bbGetIQ function was called. Set to BB_TRUE if you wish to discard all previously acquired data, and BB_FALSE if you wish to retrieve the contiguous I/Q values from a previous call to this function. |
[out] | dataRemaining | How many I/Q samples are still left buffered in the API. |
[out] | sampleLoss | Returns BB_TRUE or BB_FALSE. Will return BB_TRUE when the API is required to drop data due to internal buffers wrapping. This can be caused by I/Q samples not being polled fast enough, or in instances where the processing is not able to keep up (underpowered systems, or other programs utilizing the CPU) Will return BB_TRUE on the capture in which the sample break occurs. Does not indicate which sample the break occurs on. Will always return false if purge is true. |
[out] | sec | Seconds since epoch representing the timestamp of the first sample in the returned array. |
[out] | nano | Nanoseconds representing the timestamp of the first sample in the returned array. |
BB_API bbStatus bbFetchAudio | ( | int | device, |
float * | audio | ||
) |
If the device is initiated and running in the audio demodulation mode, the function is a blocking call which returns the next 4096 audio samples. The approximate blocking time for this function is 128 ms if called again immediately after returning. There is no internal buffering of audio, meaning the audio will be overwritten if this function is not called in a timely fashion. The audio values are typically -1.0 to 1.0, representing full-scale audio. In FM mode, the audio values will scale with a change in IF bandwidth.
[in] | device | Device handle. |
[out] | audio | Pointer to an array of 4096 32-bit floating point values. |
BB_API bbStatus bbAttachTg | ( | int | device | ) |
This function connects a TG device and associates it with the specified BB60 device. Once the TG is opened, it cannot be opened in any other application until the BB60 is closed via bbCloseDevice.
[in] | device | Device handle. |
BB_API bbStatus bbIsTgAttached | ( | int | device, |
bool * | attached | ||
) |
This is a helper function to determine if a Signal Hound tracking generator has been previously paired with the specified device.
[in] | device | Device handle. |
[out] | attached | Pointer to a boolean variable. If this function returns successfully, the variable attached points to will contain a true/false value as to whether a tracking generator is paired with the spectrum analyzer. |
BB_API bbStatus bbConfigTgSweep | ( | int | device, |
int | sweepSize, | ||
bool | highDynamicRange, | ||
bool | passiveDevice | ||
) |
This function configures the tracking generator sweeps. Through this function you can request a sweep size. The sweep size is the number of discrete points returned in the sweep over the configured span. The final value chosen by the API can be different than the requested size by a factor of 2 at most. The dynamic range of the sweep is determined by the choice of highDynamicRange and passiveDevice. A value of true for both provides the highest dynamic range sweeps. Choosing false for passiveDevice suggests to the API that the device under test is an active device (amplification).
[in] | device | Device handle. |
[in] | sweepSize | Suggested sweep size. |
[in] | highDynamicRange | Request the ability to perform two store throughs for an increased dynamic range sweep. |
[in] | passiveDevice | Specify whether the device under test is a passive device (no gain). |
BB_API bbStatus bbStoreTgThru | ( | int | device, |
int | flag | ||
) |
This function, with flag set to TG_THRU_0DB, notifies the API to use the next trace as a thru (your 0 dB reference). Connect your tracking generator RF output to your spectrum analyzer RF input. This can be accomplished using the included SMA to SMA adapter, or anything else you want the software to establish as the 0 dB reference (e.g. the 0 dB setting on a step attenuator, or a 20 dB attenuator you will be including in your amplifier test setup).
After you have established your 0 dB reference, a second step may be performed to improve the accuracy below -40 dB. With approximately 20-30 dB of insertion loss between the spectrum analyzer and tracking generator, call bbStoreTgThru with flag set to TG_THRU_20DB. This corrects for slight variations between the high gain and low gain sweeps.
[in] | device | Device handle. |
[in] | flag | Specify the type of store thru. Possible values are TG_THRU_0DB, TG_THRU_20DB. |
BB_API bbStatus bbSetTg | ( | int | device, |
double | frequency, | ||
double | amplitude | ||
) |
This function sets the output frequency and amplitude of the tracking generator. This can only be performed if a tracking generator is paired with a spectrum analyzer and is currently not configured and initiated for TG sweeps.
[in] | device | Device handle. |
[in] | frequency | Set the frequency, in Hz, of the TG output. |
[in] | amplitude | Set the amplitude, in dBm, of the TG output. |
BB_API bbStatus bbGetTgFreqAmpl | ( | int | device, |
double * | frequency, | ||
double * | amplitude | ||
) |
Retrieve the last set TG output parameters the user set through the bbSetTg function. The bbSetTg function must have been called for this function to return valid values. If the TG was used to perform scalar network analysis at any point, this function will not return valid values until the bbSetTg function is called again. If a previously set parameter was clamped in the bbSetTg function, this function will return the final clamped value. If any pointer parameter is null, that value is ignored and not returned.
[in] | device | Device handle. |
[out] | frequency | Pointer to a double that will contain the last set frequency of the TG output in Hz. |
[out] | amplitude | Pointer to a double that will contain the last set amplitude of the TG output in dBm. |
BB_API bbStatus bbSetTgReference | ( | int | device, |
int | reference | ||
) |
Configure the time base for the tracking generator attached to the device specified. When TG_REF_UNUSED is specified additional frequency corrections are applied. If using an external reference or you are using the TG time base frequency as the frequency standard for your system, you will want to specify TG_REF_INTERNAL_OUT or TG_REF_EXTERNAL_IN so the additional corrections are not applied.
[in] | device | Device handle. |
[in] | reference | A valid time base setting value. Possible values are TG_REF_UNUSED, TG_REF_INTERNAL_OUT, TG_REF_EXTERNAL_IN. |
BB_API const char * bbGetAPIVersion | ( | ) |
Get API version.
BB_API const char * bbGetProductID | ( | ) |
Get product ID.