BB API
Data Structures | Macros | Enumerations | Functions
bb_api.h File Reference

API functions for the BB60 spectrum analyzers. More...

Go to the source code of this file.

Data Structures

struct  bbIQPacket
 

Macros

#define BB_TRUE   (1)
 
#define BB_FALSE   (0)
 
#define BB_DEVICE_NONE   (0)
 
#define BB_DEVICE_BB60A   (1)
 
#define BB_DEVICE_BB60C   (2)
 
#define BB_DEVICE_BB60D   (3)
 
#define BB_MAX_DEVICES   (8)
 
#define BB_MIN_FREQ   (9.0e3)
 
#define BB_MAX_FREQ   (6.4e9)
 
#define BB_MIN_SPAN   (20.0)
 
#define BB_MAX_SPAN   (BB_MAX_FREQ - BB_MIN_FREQ)
 
#define BB_MIN_RBW   (0.602006912)
 
#define BB_MAX_RBW   (10100000.0)
 
#define BB_MIN_SWEEP_TIME   (0.00001)
 
#define BB_MAX_SWEEP_TIME   (1.0)
 
#define BB_MIN_RT_RBW   (2465.820313)
 
#define BB_MAX_RT_RBW   (631250.0)
 
#define BB_MIN_RT_SPAN   (200.0e3)
 
#define BB60A_MAX_RT_SPAN   (20.0e6)
 
#define BB60C_MAX_RT_SPAN   (27.0e6)
 
#define BB_MIN_USB_VOLTAGE   (4.4)
 
#define BB_MAX_REFERENCE   (20.0)
 
#define BB_AUTO_ATTEN   (-1)
 
#define BB_MAX_ATTEN   (3)
 
#define BB_AUTO_GAIN   (-1)
 
#define BB_MAX_GAIN   (3)
 
#define BB_MIN_DECIMATION   (1)
 
#define BB_MAX_DECIMATION   (8192)
 
#define BB_IDLE   (-1)
 
#define BB_SWEEPING   (0)
 
#define BB_REAL_TIME   (1)
 
#define BB_STREAMING   (4)
 
#define BB_AUDIO_DEMOD   (7)
 
#define BB_TG_SWEEPING   (8)
 
#define BB_NO_SPUR_REJECT   (0)
 
#define BB_SPUR_REJECT   (1)
 
#define BB_LOG_SCALE   (0)
 
#define BB_LIN_SCALE   (1)
 
#define BB_LOG_FULL_SCALE   (2)
 
#define BB_LIN_FULL_SCALE   (3)
 
#define BB_RBW_SHAPE_NUTTALL   (0)
 
#define BB_RBW_SHAPE_FLATTOP   (1)
 
#define BB_RBW_SHAPE_CISPR   (2)
 
#define BB_MIN_AND_MAX   (0)
 
#define BB_AVERAGE   (1)
 
#define BB_LOG   (0)
 
#define BB_VOLTAGE   (1)
 
#define BB_POWER   (2)
 
#define BB_SAMPLE   (3)
 
#define BB_DEMOD_AM   (0)
 
#define BB_DEMOD_FM   (1)
 
#define BB_DEMOD_USB   (2)
 
#define BB_DEMOD_LSB   (3)
 
#define BB_DEMOD_CW   (4)
 
#define BB_STREAM_IQ   (0x0)
 
#define BB_DIRECT_RF   (0x2)
 
#define BB_TIME_STAMP   (0x10)
 
#define BB60C_PORT1_AC_COUPLED   (0x00)
 
#define BB60C_PORT1_DC_COUPLED   (0x04)
 
#define BB60C_PORT1_10MHZ_USE_INT   (0x00)
 
#define BB60C_PORT1_10MHZ_REF_OUT   (0x100)
 
#define BB60C_PORT1_10MHZ_REF_IN   (0x8)
 
#define BB60C_PORT1_OUT_LOGIC_LOW   (0x14)
 
#define BB60C_PORT1_OUT_LOGIC_HIGH   (0x1C)
 
#define BB60C_PORT2_OUT_LOGIC_LOW   (0x00)
 
#define BB60C_PORT2_OUT_LOGIC_HIGH   (0x20)
 
#define BB60C_PORT2_IN_TRIG_RISING_EDGE   (0x40)
 
#define BB60C_PORT2_IN_TRIG_FALLING_EDGE   (0x60)
 
#define BB60D_PORT1_DISABLED   (0)
 
#define BB60D_PORT1_10MHZ_REF_IN   (1)
 
#define BB60D_PORT2_DISABLED   (0)
 
#define BB60D_PORT2_10MHZ_REF_OUT   (1)
 
#define BB60D_PORT2_IN_TRIG_RISING_EDGE   (2)
 
#define BB60D_PORT2_IN_TRIG_FALLING_EDGE   (3)
 
#define BB60D_PORT2_OUT_LOGIC_LOW   (4)
 
#define BB60D_PORT2_OUT_LOGIC_HIGH   (5)
 
#define BB60D_PORT2_OUT_UART   (6)
 
#define BB60D_UART_BAUD_4_8K   (0)
 
#define BB60D_UART_BAUD_9_6K   (1)
 
#define BB60D_UART_BAUD_19_2K   (2)
 
#define BB60D_UART_BAUD_38_4K   (3)
 
#define BB60D_UART_BAUD_14_4K   (4)
 
#define BB60D_UART_BAUD_28_8K   (5)
 
#define BB60D_UART_BAUD_57_6K   (6)
 
#define BB60D_UART_BAUD_115_2K   (7)
 
#define BB60D_UART_BAUD_125K   (8)
 
#define BB60D_UART_BAUD_250K   (9)
 
#define BB60D_UART_BAUD_500K   (10)
 
#define BB60D_UART_BAUD_1000K   (11)
 
#define BB60D_MIN_UART_STATES   (2)
 
#define BB60D_MAX_UART_STATES   (8)
 
#define TG_THRU_0DB   (0x1)
 
#define TG_THRU_20DB   (0x2)
 
#define TG_REF_UNUSED   (0)
 
#define TG_REF_INTERNAL_OUT   (1)
 
#define TG_REF_EXTERNAL_IN   (2)
 

Enumerations

enum  bbStatus {
  bbInvalidModeErr = -112 , bbReferenceLevelErr = -111 , bbInvalidVideoUnitsErr = -110 , bbInvalidWindowErr = -109 ,
  bbInvalidBandwidthTypeErr = -108 , bbInvalidSweepTimeErr = -107 , bbBandwidthErr = -106 , bbInvalidGainErr = -105 ,
  bbAttenuationErr = -104 , bbFrequencyRangeErr = -103 , bbInvalidSpanErr = -102 , bbInvalidScaleErr = -101 ,
  bbInvalidDetectorErr = -100 , bbInvalidFileSizeErr = -19 , bbLibusbError = -18 , bbNotSupportedErr = -17 ,
  bbTrackingGeneratorNotFound = -16 , bbUSBTimeoutErr = -15 , bbDeviceConnectionErr = -14 , bbPacketFramingErr = -13 ,
  bbGPSErr = -12 , bbGainNotSetErr = -11 , bbDeviceNotIdleErr = -10 , bbDeviceInvalidErr = -9 ,
  bbBufferTooSmallErr = -8 , bbNullPtrErr = -7 , bbAllocationLimitErr = -6 , bbDeviceAlreadyStreamingErr = -5 ,
  bbInvalidParameterErr = -4 , bbDeviceNotConfiguredErr = -3 , bbDeviceNotStreamingErr = -2 , bbDeviceNotOpenErr = -1 ,
  bbNoError = 0 , bbAdjustedParameter = 1 , bbADCOverflow = 2 , bbNoTriggerFound = 3 ,
  bbClampedToUpperLimit = 4 , bbClampedToLowerLimit = 5 , bbUncalibratedDevice = 6 , bbDataBreak = 7 ,
  bbUncalSweep = 8 , bbInvalidCalData = 9
}
 
enum  bbDataType { bbDataType32fc = 0 , bbDataType16sc = 1 }
 
enum  bbPowerState { bbPowerStateOn = 0 , bbPowerStateStandby = 1 }
 

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)
 

Detailed Description

API functions for the BB60 spectrum analyzers.

This is the main file for user accessible functions for controlling the BB60 spectrum analyzers.

Macro Definition Documentation

◆ BB_TRUE

#define BB_TRUE   (1)

Used for boolean true when integer parameters are being used.

◆ BB_FALSE

#define BB_FALSE   (0)

Used for boolean false when integer parameters are being used.

◆ BB_DEVICE_NONE

#define BB_DEVICE_NONE   (0)

Device type: No Device. See bbGetDeviceType.

◆ BB_DEVICE_BB60A

#define BB_DEVICE_BB60A   (1)

Device type: BB60A. See bbGetDeviceType.

◆ BB_DEVICE_BB60C

#define BB_DEVICE_BB60C   (2)

Device type: BB60C. See bbGetDeviceType.

◆ BB_DEVICE_BB60D

#define BB_DEVICE_BB60D   (3)

Device type: BB60D. See bbGetDeviceType.

◆ BB_MAX_DEVICES

#define BB_MAX_DEVICES   (8)

Maximum number of devices that can be interfaced in the API. See bbGetSerialNumberList, bbGetSerialNumberList2.

◆ BB_MIN_FREQ

#define BB_MIN_FREQ   (9.0e3)

Minimum frequency (Hz) for sweeps, and minimum center frequency for I/Q measurements. See bbConfigureCenterSpan, bbConfigureIQCenter.

◆ BB_MAX_FREQ

#define BB_MAX_FREQ   (6.4e9)

Maximum frequency (Hz) for sweeps, and maximum center frequency for I/Q measurements. See bbConfigureCenterSpan, bbConfigureIQCenter.

◆ BB_MIN_SPAN

#define BB_MIN_SPAN   (20.0)

Minimum span (Hz) for sweeps. See bbConfigureCenterSpan.

◆ BB_MAX_SPAN

#define BB_MAX_SPAN   (BB_MAX_FREQ - BB_MIN_FREQ)

Maximum span (Hz) for sweeps. See bbConfigureCenterSpan.

◆ BB_MIN_RBW

#define BB_MIN_RBW   (0.602006912)

Minimum RBW (Hz) for sweeps. See bbConfigureSweepCoupling.

◆ BB_MAX_RBW

#define BB_MAX_RBW   (10100000.0)

Maximum RBW (Hz) for sweeps. See bbConfigureSweepCoupling.

◆ BB_MIN_SWEEP_TIME

#define BB_MIN_SWEEP_TIME   (0.00001)

Minimum sweep time in seconds. See bbConfigureSweepCoupling.

◆ BB_MAX_SWEEP_TIME

#define BB_MAX_SWEEP_TIME   (1.0)

Maximum sweep time in seconds. See bbConfigureSweepCoupling.

◆ BB_MIN_RT_RBW

#define BB_MIN_RT_RBW   (2465.820313)

Minimum RBW (Hz) for device configured in real-time measurement mode. See bbConfigureSweepCoupling.

◆ BB_MAX_RT_RBW

#define BB_MAX_RT_RBW   (631250.0)

Maximum RBW (Hz) for device configured in real-time measurement mode. See bbConfigureSweepCoupling.

◆ BB_MIN_RT_SPAN

#define BB_MIN_RT_SPAN   (200.0e3)

Minimum span (Hz) for device configured in real-time measurement mode. See bbConfigureCenterSpan.

◆ BB60A_MAX_RT_SPAN

#define BB60A_MAX_RT_SPAN   (20.0e6)

Maximum span (Hz) for BB60A device configured in real-time measurement mode. See bbConfigureCenterSpan.

◆ BB60C_MAX_RT_SPAN

#define BB60C_MAX_RT_SPAN   (27.0e6)

Maximum span (Hz) for BB60C/D device configured in real-time measurement mode. See bbConfigureCenterSpan.

◆ BB_MIN_USB_VOLTAGE

#define BB_MIN_USB_VOLTAGE   (4.4)

Minimum USB voltage. See bbGetDeviceDiagnostics.

◆ BB_MAX_REFERENCE

#define BB_MAX_REFERENCE   (20.0)

Maximum reference level in dBm. See bbConfigureRefLevel.

◆ BB_AUTO_ATTEN

#define BB_AUTO_ATTEN   (-1)

Automatically choose attenuation based on reference level. See bbConfigureGainAtten.

◆ BB_MAX_ATTEN

#define BB_MAX_ATTEN   (3)

Maximum attentuation. Valid values [0,3] or -1 for auto. See bbConfigureGainAtten.

◆ BB_AUTO_GAIN

#define BB_AUTO_GAIN   (-1)

Automatically choose gain based on reference level. See bbConfigureGainAtten.

◆ BB_MAX_GAIN

#define BB_MAX_GAIN   (3)

Maximum gain. Valid values [0,3] or -1 for auto. See bbConfigureGainAtten.

◆ BB_MIN_DECIMATION

#define BB_MIN_DECIMATION   (1)

No decimation. See bbConfigureIQ.

◆ BB_MAX_DECIMATION

#define BB_MAX_DECIMATION   (8192)

Maimumx decimation for I/Q streaming. See bbConfigureIQ.

◆ BB_IDLE

#define BB_IDLE   (-1)

Measurement mode: Idle, no measurement. See bbInitiate.

◆ BB_SWEEPING

#define BB_SWEEPING   (0)

Measurement mode: Swept spectrum analysis. See bbInitiate.

◆ BB_REAL_TIME

#define BB_REAL_TIME   (1)

Measurement mode: Real-time spectrum analysis. See bbInitiate.

◆ BB_STREAMING

#define BB_STREAMING   (4)

Measurement mode: I/Q streaming. See bbInitiate.

◆ BB_AUDIO_DEMOD

#define BB_AUDIO_DEMOD   (7)

Measurement mode: Audio demod. See bbInitiate.

◆ BB_TG_SWEEPING

#define BB_TG_SWEEPING   (8)

Measurement mode: Tracking generator sweeps for scalar network analysis. See bbInitiate.

◆ BB_NO_SPUR_REJECT

#define BB_NO_SPUR_REJECT   (0)

Turn off spur rejection. See bbConfigureSweepCoupling.

◆ BB_SPUR_REJECT

#define BB_SPUR_REJECT   (1)

Turn on spur rejection. See bbConfigureSweepCoupling.

◆ BB_LOG_SCALE

#define BB_LOG_SCALE   (0)

Specifies dBm units of sweep and real-time spectrum analysis measurements. See bbConfigureAcquisition.

◆ BB_LIN_SCALE

#define BB_LIN_SCALE   (1)

Specifies mV units of sweep and real-time spectrum analysis measurements. See bbConfigureAcquisition.

◆ BB_LOG_FULL_SCALE

#define BB_LOG_FULL_SCALE   (2)

Specifies dBm units, with no corrections, of sweep and real-time spectrum analysis measurements. See bbConfigureAcquisition.

◆ BB_LIN_FULL_SCALE

#define BB_LIN_FULL_SCALE   (3)

Specifies mV units, with no corrections, of sweep and real-time spectrum analysis measurements. See bbConfigureAcquisition.

◆ BB_RBW_SHAPE_NUTTALL

#define BB_RBW_SHAPE_NUTTALL   (0)

Specifies the Nuttall window used for sweep and real-time analysis. See bbConfigureSweepCoupling.

◆ BB_RBW_SHAPE_FLATTOP

#define BB_RBW_SHAPE_FLATTOP   (1)

Specifies the Stanford flattop window used for sweep and real-time analysis. See bbConfigureSweepCoupling.

◆ BB_RBW_SHAPE_CISPR

#define BB_RBW_SHAPE_CISPR   (2)

Specifies a Gaussian window with 6dB cutoff used for sweep and real-time analysis. See bbConfigureSweepCoupling.

◆ BB_MIN_AND_MAX

#define BB_MIN_AND_MAX   (0)

Use min/max detector for sweep and real-time spectrum analysis. See bbConfigureAcquisition.

◆ BB_AVERAGE

#define BB_AVERAGE   (1)

Use average detector for sweep and real-time spectrum analysis. See bbConfigureAcquisition.

◆ BB_LOG

#define BB_LOG   (0)

VBW processing occurs in dBm. See bbConfigureProcUnits.

◆ BB_VOLTAGE

#define BB_VOLTAGE   (1)

VBW processing occurs in linear voltage units (mV). See bbConfigureProcUnits.

◆ BB_POWER

#define BB_POWER   (2)

VBW processing occurs in linear power units (mW). See bbConfigureProcUnits.

◆ BB_SAMPLE

#define BB_SAMPLE   (3)

No VBW processing. See bbConfigureProcUnits.

◆ BB_DEMOD_AM

#define BB_DEMOD_AM   (0)

Audio demodulation type: AM. See bbConfigureDemod.

◆ BB_DEMOD_FM

#define BB_DEMOD_FM   (1)

Audio demodulation type: FM. See bbConfigureDemod.

◆ BB_DEMOD_USB

#define BB_DEMOD_USB   (2)

Audio demodulation type: Upper side band. See bbConfigureDemod.

◆ BB_DEMOD_LSB

#define BB_DEMOD_LSB   (3)

Audio demodulation type: Lower side band. See bbConfigureDemod.

◆ BB_DEMOD_CW

#define BB_DEMOD_CW   (4)

Audio demodulation type: CW. See bbConfigureDemod.

◆ BB_STREAM_IQ

#define BB_STREAM_IQ   (0x0)

Default for BB_SWEEPING measurement mode. See bbInitiate.

◆ BB_DIRECT_RF

#define BB_DIRECT_RF   (0x2)

For BB60C/D devices. See bbInitiate.

◆ BB_TIME_STAMP

#define BB_TIME_STAMP   (0x10)

Time stamp data using an external GPS receiver. See Using a GPS Receiver to Time-Stamp Data and bbInitiate.

◆ BB60C_PORT1_AC_COUPLED

#define BB60C_PORT1_AC_COUPLED   (0x00)

Configure BB60A/C port 1 as AC coupled. This is the default. See bbConfigureIO.

◆ BB60C_PORT1_DC_COUPLED

#define BB60C_PORT1_DC_COUPLED   (0x04)

Configure BB60A/C port 1 as DC coupled. See bbConfigureIO.

◆ BB60C_PORT1_10MHZ_USE_INT

#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.

◆ BB60C_PORT1_10MHZ_REF_OUT

#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.

◆ BB60C_PORT1_10MHZ_REF_IN

#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.

◆ BB60C_PORT1_OUT_LOGIC_LOW

#define BB60C_PORT1_OUT_LOGIC_LOW   (0x14)

Output logic low on BB60A/C port 1. See bbConfigureIO.

◆ BB60C_PORT1_OUT_LOGIC_HIGH

#define BB60C_PORT1_OUT_LOGIC_HIGH   (0x1C)

Output logic high on BB60A/C port 1. See bbConfigureIO.

◆ BB60C_PORT2_OUT_LOGIC_LOW

#define BB60C_PORT2_OUT_LOGIC_LOW   (0x00)

Output logic low on BB60A/C port 2. See bbConfigureIO.

◆ BB60C_PORT2_OUT_LOGIC_HIGH

#define BB60C_PORT2_OUT_LOGIC_HIGH   (0x20)

Output logic high on BB60A/C port 2. See bbConfigureIO.

◆ BB60C_PORT2_IN_TRIG_RISING_EDGE

#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.

◆ BB60C_PORT2_IN_TRIG_FALLING_EDGE

#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.

◆ BB60D_PORT1_DISABLED

#define BB60D_PORT1_DISABLED   (0)

Disable BB60D port 1. See bbConfigureIO.

◆ BB60D_PORT1_10MHZ_REF_IN

#define BB60D_PORT1_10MHZ_REF_IN   (1)

Discipline BB60D to an externally generated 10 MHz reference on port 1. See bbConfigureIO.

◆ BB60D_PORT2_DISABLED

#define BB60D_PORT2_DISABLED   (0)

Disable BB60D port 2. See bbConfigureIO.

◆ BB60D_PORT2_10MHZ_REF_OUT

#define BB60D_PORT2_10MHZ_REF_OUT   (1)

Output B660D internal 10MHz reference on port 2. See bbConfigureIO.

◆ BB60D_PORT2_IN_TRIG_RISING_EDGE

#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.

◆ BB60D_PORT2_IN_TRIG_FALLING_EDGE

#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.

◆ BB60D_PORT2_OUT_LOGIC_LOW

#define BB60D_PORT2_OUT_LOGIC_LOW   (4)

Output logic low on BB60D port 2. See bbConfigureIO.

◆ BB60D_PORT2_OUT_LOGIC_HIGH

#define BB60D_PORT2_OUT_LOGIC_HIGH   (5)

Output logic high on BB60D port 2. See bbConfigureIO.

◆ BB60D_PORT2_OUT_UART

#define BB60D_PORT2_OUT_UART   (6)

Use when any BB60D UART output functionality is desired. See bbConfigureIO.

◆ BB60D_UART_BAUD_4_8K

#define BB60D_UART_BAUD_4_8K   (0)

Set 4800 baud rate for BB60D UART transmissions. See bbSetUARTRate.

◆ BB60D_UART_BAUD_9_6K

#define BB60D_UART_BAUD_9_6K   (1)

Set 9600 baud rate for BB60D UART transmissions. See bbSetUARTRate.

◆ BB60D_UART_BAUD_19_2K

#define BB60D_UART_BAUD_19_2K   (2)

Set 19200 baud rate for BB60D UART transmissions. See bbSetUARTRate.

◆ BB60D_UART_BAUD_38_4K

#define BB60D_UART_BAUD_38_4K   (3)

Set 38400 baud rate for BB60D UART transmissions. See bbSetUARTRate.

◆ BB60D_UART_BAUD_14_4K

#define BB60D_UART_BAUD_14_4K   (4)

Set 14400 baud rate for BB60D UART transmissions. See bbSetUARTRate.

◆ BB60D_UART_BAUD_28_8K

#define BB60D_UART_BAUD_28_8K   (5)

Set 28800 baud rate for BB60D UART transmissions. See bbSetUARTRate.

◆ BB60D_UART_BAUD_57_6K

#define BB60D_UART_BAUD_57_6K   (6)

Set 57600 baud rate for BB60D UART transmissions. See bbSetUARTRate.

◆ BB60D_UART_BAUD_115_2K

#define BB60D_UART_BAUD_115_2K   (7)

Set 115200 baud rate for BB60D UART transmissions. See bbSetUARTRate.

◆ BB60D_UART_BAUD_125K

#define BB60D_UART_BAUD_125K   (8)

Set 125000 baud rate for BB60D UART transmissions. See bbSetUARTRate.

◆ BB60D_UART_BAUD_250K

#define BB60D_UART_BAUD_250K   (9)

Set 250000 baud rate for BB60D UART transmissions. See bbSetUARTRate.

◆ BB60D_UART_BAUD_500K

#define BB60D_UART_BAUD_500K   (10)

Set 500000 baud rate for BB60D UART transmissions. See bbSetUARTRate.

◆ BB60D_UART_BAUD_1000K

#define BB60D_UART_BAUD_1000K   (11)

Set 1000000 baud rate for BB60D UART transmissions. See bbSetUARTRate.

◆ BB60D_MIN_UART_STATES

#define BB60D_MIN_UART_STATES   (2)

Minimum number of frequency/data pairs given in bbEnableUARTSweeping. See UART Antenna Switching.

◆ BB60D_MAX_UART_STATES

#define BB60D_MAX_UART_STATES   (8)

Maximum number of frequency/data pairs given in bbEnableUARTSweeping. See UART Antenna Switching.

◆ TG_THRU_0DB

#define TG_THRU_0DB   (0x1)

In scalar network analysis, use the next trace as a thru. See bbStoreTgThru.

◆ TG_THRU_20DB

#define TG_THRU_20DB   (0x2)

In scalar network analysis, improve accuracy with a second thru step. See bbStoreTgThru.

◆ TG_REF_UNUSED

#define TG_REF_UNUSED   (0)

Additional corrections are applied to tracking generator timebase. See bbSetTgReference.

◆ TG_REF_INTERNAL_OUT

#define TG_REF_INTERNAL_OUT   (1)

Use tracking generator timebase as frequency standard for system, and do not apply additional corrections. See bbSetTgReference.

◆ TG_REF_EXTERNAL_IN

#define TG_REF_EXTERNAL_IN   (2)

Use an external reference for TG124A, and do not apply additional corrections to timebase. See bbSetTgReference.

Enumeration Type Documentation

◆ bbStatus

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

◆ bbDataType

enum bbDataType

Specifies a data type for data returned from the API.

Enumerator
bbDataType32fc 

32-bit complex floats

bbDataType16sc 

16-bit complex shorts

◆ bbPowerState

Specifies device power state. See Power State for more information.

Enumerator
bbPowerStateOn 

On

bbPowerStateStandby 

Standby

Function Documentation

◆ bbGetSerialNumberList()

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.

Parameters
[out]serialNumbersA pointer to an array of integers. Can be NULL.
[out]deviceCountA pointer to an integer. Will be set to the number of devices found on the system.
Returns

◆ bbGetSerialNumberList2()

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.

Parameters
[out]serialNumbersA pointer to an array of integers. Can be NULL.
[out]deviceTypesA 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]deviceCountA pointer to an integer. Will be set to the number of devices found on the system.
Returns

◆ bbOpenDevice()

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.

Parameters
[out]devicePointer to an integer. If successful, a device handle is returned. This handle is used for all successive API function calls.
Returns

◆ bbOpenDeviceBySerialNumber()

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.

Parameters
[out]devicePointer 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]serialNumberUser-provided serial number.
Returns

◆ bbCloseDevice()

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.

Parameters
[in]deviceDevice handle.
Returns

◆ bbSetPowerState()

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.

Parameters
[in]deviceDevice handle.
[in]powerStateSpecify the on or standby power state.
Returns

◆ bbGetPowerState()

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.

Parameters
[in]deviceDevice handle.
[out]powerStatePointer to power state variable.
Returns

◆ bbPreset()

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.

Parameters
[in]deviceDevice handle.
Returns

◆ bbPresetFull()

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.

Parameters
[in]devicePointer to a valid device handle.
Returns

◆ bbSelfCal()

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.

Parameters
[in]deviceDevice handle.
Returns

◆ bbGetSerialNumber()

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.

Parameters
[in]deviceDevice handle.
[out]serialNumberReturns device serial number as unsigned integer.
Returns

◆ bbGetDeviceType()

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.

Parameters
[in]deviceDevice handle.
[out]deviceTypeReturns device type. Can be BB_DEVICE_NONE, BB_DEVICE_BB60A, BB_DEVICE_BB60C, BB_DEVICE_BB60D.
Returns

◆ bbGetFirmwareVersion()

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.

Parameters
[in]deviceDevice handle.
[out]versionReturns firmware version number as integer.
Returns

◆ bbGetDeviceDiagnostics()

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.

Parameters
[in]deviceDevice handle.
[out]temperatureReturns device temperature as float.
[out]usbVoltageReturns USB voltage as float.
[out]usbCurrentReturns usb current as float.
Returns

◆ bbConfigureIO()

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.

BB60A/C

Port 1

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

Port 2 can be configured as trigger input port or logic output port. Port 2 is always DC coupled and accepts the following values:

BB60D

Port 1

Port 1 can be configured for reference in. Port 1 is always AC coupled. The following values are accepted:

Port 2

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:

Parameters
[in]deviceDevice handle.
[in]port1See description.
[in]port2See description.
Returns

◆ bbSyncCPUtoGPS()

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.

Parameters
[in]comPortCOM port number for the NMEA data output from the GPS receiver.
[in]baudRateBaud Rate of the COM port.
Returns

◆ bbSetUARTRate()

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

Parameters
[in]deviceDevice handle.
[in]rateOne of any of the baud rate macros defined in the API header file. Macro names start with BB60D_UART_BAUD_.
Returns

◆ bbEnableUARTSweeping()

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.

Parameters
[in]deviceDevice handle.
[in]freqsArray of frequency thresholds at which to transmit a new UART byte. Size of array must be equal to the number of states.
[in]dataArray of UART bytes to transmit at the given frequency threshold. Size of array must be equal to the number of states.
[in]statesNumber of freq/data pairs. Alternatively, the size of the provided arrays. Must be between [2,8].
Returns

◆ bbDisableUARTSweeping()

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.

Parameters
[in]deviceDevice handle.
Returns

◆ bbEnableUARTStreaming()

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.

Parameters
[in]deviceDevice handle.
[in]dataArray of UART bytes to transmit.
[in]countsArray 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.
statesNumber of data/counts pairs. Alternatively, the size of the provided arrays. Must be between [2,8].
Returns

◆ bbDisableUARTStreaming()

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.

Parameters
[in]deviceDevice handle.
Returns

◆ bbWriteUARTImm()

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.

Parameters
[in]deviceDevice handle.
[in]dataByte to transmit.
Returns

◆ bbConfigureRefLevel()

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.

Parameters
[in]deviceDevice handle.
[in]refLevelReference level in dBm.
Returns

◆ bbConfigureGainAtten()

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
Parameters
[in]deviceDevice handle.
[in]gainGain should be between [-1,3] where -1 represents auto.
[in]attenAtten should be between [-1,3] where -1 represents auto.
Returns

◆ bbConfigureCenterSpan()

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.

  • start = center – (span / 2)
  • stop = center + (span / 2)

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.

Parameters
[in]deviceDevice handle.
[in]centerCenter frequency in Hz.
[in]spanSpan in Hz.
Returns

◆ bbConfigureSweepCoupling()

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.

Parameters
[in]deviceDevice handle.
[in]rbwResolution bandwidth in Hz. RBWs can be set to arbitrary values but may be limited by mode of operation and span.
[in]vbwVideo 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]sweepTimeSuggest 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]rbwShapeThe 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]rejectionThe possible values for rejection are BB_NO_SPUR_REJECT and BB_SPUR_REJECT.
Returns

◆ bbConfigureAcquisition()

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.

Parameters
[in]deviceDevice handle.
[in]detectorSpecifies the video detector. The two possible values for detector type are BB_AVERAGE and BB_MIN_AND_MAX.
[in]scaleSpecifies 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.
Returns

◆ bbConfigureProcUnits()

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
Parameters
[in]deviceDevice handle.
[in]unitsThe possible values are BB_LOG, BB_VOLTAGE, BB_POWER, BB_SAMPLE.
Returns

◆ bbConfigureRealTime()

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.

Parameters
[in]deviceDevice handle.
[in]frameScaleSpecifies 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]frameRateSpecifies 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.
Returns

◆ bbConfigureRealTimeOverlap()

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.

Parameters
[in]deviceDevice handle.
[in]advanceRateFFT advance rate.
Returns

◆ bbConfigureIQCenter()

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]

Parameters
[in]deviceDevice handle.
[in]centerFreqCenter frequency in Hz.
Returns

◆ bbConfigureIQ()

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.

Parameters
[in]deviceDevice handle.
[in]downsampleFactorSpecify a decimation rate for the 40MS/s I/Q stream.
[in]bandwidthSpecify a bandpass filter width for the I/Q stream.
Returns

◆ bbConfigureIQDataType()

BB_API bbStatus bbConfigureIQDataType ( int  device,
bbDataType  dataType 
)

See I/Q Data Types for more information.

Parameters
[in]deviceDevice handle.
[in]dataTypeData type can be specified either as 32-bit complex floats or 16-bit complex shorts.
Returns

◆ bbConfigureIQTriggerSentinel()

BB_API bbStatus bbConfigureIQTriggerSentinel ( int  sentinel)

See the I/Q Streaming for more information on triggering and how the trigger sentinel value is used.

Parameters
[in]sentinelValue 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.
Returns

◆ bbConfigureDemod()

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.

Parameters
[in]deviceDevice handle.
[in]modulationTypeSpecifies 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]freqCenter frequency. For best results, re-initiate the device if the center frequency changes +/- 8MHz from the initial value.
[in]IFBWIntermediate frequency bandwidth centered on freq. Filter takes place before demodulation. Specified in Hz. Should be between 500 Hz and 500 kHz.
[in]audioLowPassFreqPost demodulation filter in Hz. Should be between 1kHz and 12kHz Hz.
[in]audioHighPassFreqPost demodulation filter in Hz. Should be between 20 and 1000Hz.
[in]FMDeemphasisSpecified in micro-seconds. Should be between 1 and 100.
Returns

◆ bbInitiate()

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.

Parameters
[in]deviceDevice handle.
[in]modeThe possible values for mode are BB_SWEEPING, BB_REAL_TIME, BB_AUDIO_DEMOD, BB_STREAMING, BB_TG_SWEEPING.
[in]flagThe 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.
Returns

◆ bbAbort()

BB_API bbStatus bbAbort ( int  device)

Stops the device operation and places the device into an idle state.

Parameters
[in]deviceDevice handle.
Returns

◆ bbQueryTraceInfo()

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.

Parameters
[in]deviceDevice handle.
[out]traceLenPointer to uint32_t to contain the size of the sweeps returned from bbFetchTrace.
[out]binSizePointer to double, to contain the frequency delta between two sequential bins in the returned sweep.
[out]startPointer to double to contains the frequency of the first bin in the sweep.
Returns

◆ bbQueryRealTimeInfo()

BB_API bbStatus bbQueryRealTimeInfo ( int  device,
int *  frameWidth,
int *  frameHeight 
)

This function should be called after initializing the device for real-time mode.

Parameters
[in]deviceDevice handle.
[out]frameWidthPointer to uint32_t to contain the width of the real-time frame in bins.
[out]frameHeightPointer to uint32_t to contain the height of the real-time frame in bins.
Returns

◆ bbQueryRealTimePoi()

BB_API bbStatus bbQueryRealTimePoi ( int  device,
double *  poi 
)

The device must be configured for real-time spectrum analysis to call this function.

Parameters
[in]deviceDevice handle.
[out]poiPointer to double to contain the 100% probability of intercept duration in seconds.
Returns

◆ bbQueryIQParameters()

BB_API bbStatus bbQueryIQParameters ( int  device,
double *  sampleRate,
double *  bandwidth 
)

The device must be configured for I/Q streaming to call this function.

Parameters
[in]deviceDevice handle.
[out]sampleRatePointer to double to contain the I/Q streaming sample rate in Hz.
[out]bandwidthPointer to double to contain the I/Q streaming bandwidth.
Returns

◆ bbGetIQCorrection()

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.

Parameters
[in]deviceDevice handle.
[out]correctionPointer 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.
Returns

◆ bbFetchTrace_32f()

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.

Parameters
[in]deviceDevice handle.
[in]arraySizeThis parameter is deprecated and ignored.
[out]traceMinPointer 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]traceMaxPointer to a float array whose length should be equal to or greater than traceSize returned from bbQueryTraceInfo. Set to NULL to ignore this parameter.
Returns

◆ bbFetchTrace()

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.

Parameters
[in]deviceDevice handle.
[in]arraySizeThis parameter is deprecated and ignored.
[out]traceMinPointer 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]traceMaxPointer to a double array whose length should be equal to or greater than traceSize returned from bbQueryTraceInfo. Set to NULL to ignore this parameter.
Returns

◆ bbFetchRealTimeFrame()

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.

Parameters
[in]deviceDevice handle.
[out]traceMinIf 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]traceMaxIf 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]framePointer to a float array. If the function returns successfully, the contents of the array will contain a single real-time frame.
[out]alphaFramePointer 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.
Returns

◆ bbGetIQ()

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.

Parameters
[in]deviceDevice handle.
[out]pktPointer to a bbIQPacket structure.
Returns

◆ bbGetIQUnpacked()

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.

Parameters
[in]deviceDevice handle.
[out]iqDataPointer 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]iqCountNumber of I/Q data pairs to return.
[out]triggersPointer 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]triggerCountSize of the triggers array.
[in]purgeSpecifies 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]dataRemainingHow many I/Q samples are still left buffered in the API.
[out]sampleLossReturns 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]secSeconds since epoch representing the timestamp of the first sample in the returned array.
[out]nanoNanoseconds representing the timestamp of the first sample in the returned array.
Returns

◆ bbFetchAudio()

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.

Parameters
[in]deviceDevice handle.
[out]audioPointer to an array of 4096 32-bit floating point values.
Returns

◆ bbAttachTg()

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.

Parameters
[in]deviceDevice handle.
Returns

◆ bbIsTgAttached()

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.

Parameters
[in]deviceDevice handle.
[out]attachedPointer 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.
Returns

◆ bbConfigTgSweep()

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).

Parameters
[in]deviceDevice handle.
[in]sweepSizeSuggested sweep size.
[in]highDynamicRangeRequest the ability to perform two store throughs for an increased dynamic range sweep.
[in]passiveDeviceSpecify whether the device under test is a passive device (no gain).
Returns

◆ bbStoreTgThru()

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.

Parameters
[in]deviceDevice handle.
[in]flagSpecify the type of store thru. Possible values are TG_THRU_0DB, TG_THRU_20DB.
Returns

◆ bbSetTg()

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.

Parameters
[in]deviceDevice handle.
[in]frequencySet the frequency, in Hz, of the TG output.
[in]amplitudeSet the amplitude, in dBm, of the TG output.
Returns

◆ bbGetTgFreqAmpl()

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.

Parameters
[in]deviceDevice handle.
[out]frequencyPointer to a double that will contain the last set frequency of the TG output in Hz.
[out]amplitudePointer to a double that will contain the last set amplitude of the TG output in dBm.
Returns

◆ bbSetTgReference()

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.

Parameters
[in]deviceDevice handle.
[in]referenceA valid time base setting value. Possible values are TG_REF_UNUSED, TG_REF_INTERNAL_OUT, TG_REF_EXTERNAL_IN.
Returns

◆ bbGetAPIVersion()

BB_API const char * bbGetAPIVersion ( )

Get API version.

Returns
The returned string is of the form major.minor.revision. Ascii periods (“.”) separate positive integers. Major/Minor/Revision are not guaranteed to be a single decimal digit. The string is null terminated. An example string: [ ‘3’ | ‘.’ | ‘0’ | ‘.’ | ‘1’ | ‘1’ | ‘\0’ ] = “3.0.11”

◆ bbGetProductID()

BB_API const char * bbGetProductID ( )

Get product ID.

Returns
The returned string is of the form ####-####.

◆ bbGetErrorString()

BB_API const char * bbGetErrorString ( bbStatus  status)

Get an ascii string description of a provided status code.

Parameters
[in]statusA bbStatus value returned from an API call.
Returns
A pointer to a non-modifiable null terminated string. The memory should not be freed/deallocated.