SP API
sp_api.h
Go to the documentation of this file.
1// Copyright (c).2023, Signal Hound, Inc.
2// For licensing information, please see the API license in the software_licenses folder
3
13#ifndef SP_API_H
14#define SP_API_H
15
16#if defined(_WIN32) // Windows
17 #ifdef SP_EXPORTS
18 #define SP_API __declspec(dllexport)
19 #else
20 #define SP_API
21 #endif
22
23 // bare minimum stdint typedef support
24 #if _MSC_VER < 1700 // For VS2010 or earlier
25 typedef signed char int8_t;
26 typedef short int16_t;
27 typedef int int32_t;
28 typedef long long int64_t;
29 typedef unsigned char uint8_t;
30 typedef unsigned short uint16_t;
31 typedef unsigned int uint32_t;
32 typedef unsigned long long uint64_t;
33 #else
34 #include <stdint.h>
35 #endif
36
37 #define SP_DEPRECATED(comment) __declspec(deprecated(comment))
38#else // Linux
39 #include <stdint.h>
40 #define SP_API __attribute__((visibility("default")))
41
42 #if defined(__GNUC__)
43 #define SP_DEPRECATED(comment) __attribute__((deprecated))
44 #else
45 #define SP_DEPRECATED(comment) comment
46 #endif
47#endif
48
50#define SP_TRUE (1)
52#define SP_FALSE (0)
53
55#define SP_MAX_DEVICES (9)
56
58#define SP_MAX_REF_LEVEL (20.0)
60#define SP_AUTO_ATTEN (-1)
62#define SP_MAX_ATTEN (6)
63
65#define SP_MIN_FREQ (9.0e3)
67#define SP_MAX_FREQ (15.0e9)
69#define SP_MAX_RBW (10.0e6)
71#define SP_MIN_SWEEP_TIME (1.0e-6)
73#define SP_MAX_SWEEP_TIME (100.0)
74
76#define SP_REAL_TIME_MIN_SPAN (200.0e3)
78#define SP_REAL_TIME_MAX_SPAN (40.0e6)
80#define SP_REAL_TIME_MIN_RBW (2.0e3)
82#define SP_REAL_TIME_MAX_RBW (1.0e6)
83
85#define SP_MAX_IQ_DECIMATION (8192)
86
88#define SP_MAX_IQ_SWEEP_STEPS (1000)
89
91#define SP_MIN_FAN_SET_POINT (0.0)
93#define SP_MAX_FAN_SET_POINT (60.0)
94
100#define SP_MAX_SWEEP_QUEUE_SZ (16)
101
105typedef enum SpStatus {
110
112 spGPSErr = -12,
157
160
183
188typedef enum SpBool {
192 spTrue = 1
194
198typedef enum SpPowerState {
204
208typedef enum SpMode {
221} SpMode;
222
226typedef enum SpDetector {
232
236typedef enum SpScale {
244
248typedef enum SpVideoUnits {
256 spVideoSample = 3
258
262typedef enum SpWindowType {
274 spWindowRect = 5
276
282typedef enum SpDataType {
288
292typedef enum SpTriggerEdge {
298
302typedef enum SpGPSState {
310
314typedef enum SpReference {
320
324typedef enum SpGPIOFunction {
344
348typedef enum SpAudioType {
358 spAudioTypeCW = 4
360
364typedef enum SpGPSPlatformModel {
402
403#ifdef __cplusplus
404extern "C" {
405#endif
406
428SP_API SpStatus spGetDeviceList(int *serials, int *deviceCount);
429
443SP_API SpStatus spOpenDevice(int *device);
444
457SP_API SpStatus spOpenDeviceBySerial(int *device, int serialNumber);
458
471SP_API SpStatus spCloseDevice(int device);
472
484SP_API SpStatus spPresetDevice(int device);
485
496SP_API SpStatus spSetPowerState(int device, SpPowerState powerState);
497
507SP_API SpStatus spGetPowerState(int device, SpPowerState *powerState);
508
518SP_API SpStatus spGetSerialNumber(int device, int *serialNumber);
519
534SP_API SpStatus spGetFirmwareVersion(int device, int *major, int *minor, int *revision);
535
552SP_API SpStatus spGetDeviceDiagnostics(int device, float *voltage, float *current, float *temperature);
553
564SP_API SpStatus spGetCalDate(int device, uint32_t *lastCalDate);
565
579SP_API SpStatus spSetReference(int device, SpReference reference);
580
590SP_API SpStatus spGetReference(int device, SpReference *reference);
591
602SP_API SpStatus spSetGPIOPort(int device, SpGPIOFunction func);
603
613SP_API SpStatus spGetGPIOPort(int device, SpGPIOFunction *func);
614
627SP_API SpStatus spSetUARTBaudRate(int device, float rate);
628
638SP_API SpStatus spGetUARTBaudRate(int device, float *rate);
639
651SP_API SpStatus spWriteUARTDirect(int device, uint8_t data);
652
665SP_API SpStatus spSetGPSTimebaseUpdate(int device, SpBool enabled);
666
677SP_API SpStatus spGetGPSTimebaseUpdate(int device, SpBool *enabled);
678
696SP_API SpStatus spGetGPSHoldoverInfo(int device, SpBool *usingGPSHoldover, uint32_t *lastHoldoverTime);
697
709SP_API SpStatus spGetGPSState(int device, SpGPSState *GPSState);
710
724SP_API SpStatus spSetRefLevel(int device, double refLevel);
725
735SP_API SpStatus spGetRefLevel(int device, double *refLevel);
736
751SP_API SpStatus spSetAttenuator(int device, int atten);
752
763SP_API SpStatus spGetAttenuator(int device, int *atten);
764
776SP_API SpStatus spSetSweepCenterSpan(int device, double centerFreqHz, double spanHz);
777
789SP_API SpStatus spSetSweepStartStop(int device, double startFreqHz, double stopFreqHz);
790
806SP_API SpStatus spSetSweepCoupling(int device, double rbw, double vbw, double sweepTime);
807
819SP_API SpStatus spSetSweepDetector(int device, SpDetector detector, SpVideoUnits videoUnits);
820
830SP_API SpStatus spSetSweepScale(int device, SpScale scale);
831
841SP_API SpStatus spSetSweepWindow(int device, SpWindowType window);
842
861SP_API SpStatus spSetSweepGPIOSwitching(int device, double *freqs, uint8_t *data, int count);
862
873
885SP_API SpStatus spSetRealTimeCenterSpan(int device, double centerFreqHz, double spanHz);
886
896SP_API SpStatus spSetRealTimeRBW(int device, double rbw);
897
907SP_API SpStatus spSetRealTimeDetector(int device, SpDetector detector);
908
924SP_API SpStatus spSetRealTimeScale(int device, SpScale scale, double frameRef, double frameScale);
925
935SP_API SpStatus spSetRealTimeWindow(int device, SpWindowType window);
936
946SP_API SpStatus spSetIQDataType(int device, SpDataType dataType);
947
957SP_API SpStatus spSetIQCenterFreq(int device, double centerFreqHz);
958
968SP_API SpStatus spGetIQCenterFreq(int device, double *centerFreqHz);
969
980SP_API SpStatus spSetIQSampleRate(int device, int decimation);
981
991SP_API SpStatus spSetIQSoftwareFilter(int device, SpBool enabled);
992
1003SP_API SpStatus spSetIQBandwidth(int device, double bandwidth);
1004
1015
1026SP_API SpStatus spSetIQTriggerSentinel(double sentinelValue);
1027
1047SP_API SpStatus spSetIQQueueSize(int device, int units);
1048
1058SP_API SpStatus spSetIQSweepListDataType(int device, SpDataType dataType);
1059
1072SP_API SpStatus spSetIQSweepListCorrected(int device, SpBool corrected);
1073
1083SP_API SpStatus spSetIQSweepListSteps(int device, int steps);
1084
1094SP_API SpStatus spGetIQSweepListSteps(int device, int *steps);
1095
1110SP_API SpStatus spSetIQSweepListFreq(int device, int step, double freq);
1111
1126SP_API SpStatus spSetIQSweepListRef(int device, int step, double level);
1127
1144SP_API SpStatus spSetIQSweepListAtten(int device, int step, int atten);
1145
1162SP_API SpStatus spSetIQSweepListSampleCount(int device, int step, uint32_t samples);
1163
1173SP_API SpStatus spSetAudioCenterFreq(int device, double centerFreqHz);
1174
1184SP_API SpStatus spSetAudioType(int device, SpAudioType audioType);
1185
1199SP_API SpStatus spSetAudioFilters(int device,
1200 double ifBandwidth,
1201 double audioLpf,
1202 double audioHpf);
1203
1213SP_API SpStatus spSetAudioFMDeemphasis(int device, double deemphasis);
1214
1229SP_API SpStatus spConfigure(int device, SpMode mode);
1230
1240SP_API SpStatus spGetCurrentMode(int device, SpMode *mode);
1241
1251SP_API SpStatus spAbort(int device);
1252
1275SP_API SpStatus spGetSweepParameters(int device, double *actualRBW, double *actualVBW,
1276 double *actualStartFreq, double *binSize, int *sweepSize);
1277
1304SP_API SpStatus spGetRealTimeParameters(int device, double *actualRBW, int *sweepSize, double *actualStartFreq,
1305 double *binSize, int *frameWidth, int *frameHeight, double *poi);
1306
1319SP_API SpStatus spGetIQParameters(int device, double *sampleRate, double *bandwidth);
1320
1321
1334SP_API SpStatus spGetIQCorrection(int device, float *scale);
1335
1351SP_API SpStatus spIQSweepListGetCorrections(int device, float *corrections);
1352
1367SP_API SpStatus spGetSweep(int device, float *sweepMin, float *sweepMax, int64_t *nsSinceEpoch);
1368
1395SP_API SpStatus spGetRealTimeFrame(int device, float *colorFrame, float *alphaFrame, float *sweepMin,
1396 float *sweepMax, int *frameCount, int64_t *nsSinceEpoch);
1397
1437SP_API SpStatus spGetIQ(int device, void *iqBuf, int iqBufSize, double *triggers, int triggerBufSize,
1438 int64_t *nsSinceEpoch, SpBool purge, int *sampleLoss, int *samplesRemaining);
1439
1464SP_API SpStatus spIQSweepListGetSweep(int device, void *dst, int64_t *timestamps);
1465
1491SP_API SpStatus spIQSweepListStartSweep(int device, int pos, void *dst, int64_t *timestamps);
1492
1503SP_API SpStatus spIQSweepListFinishSweep(int device, int pos);
1504
1520SP_API SpStatus spGetAudio(int device, float *audio);
1521
1563SP_API SpStatus spGetGPSInfo(int device, SpBool refresh, SpBool *updated, int64_t *secSinceEpoch,
1564 double *latitude, double *longitude, double *altitude, char *nmea, int *nmeaLen);
1565
1579SP_API SpStatus spWriteToGPS(int device, const uint8_t *mem, int len);
1580
1581
1603SP_API SpStatus spSetGPSPlatformModel(int device, SpGPSPlatformModel platformModel);
1604
1619SP_API SpStatus spSetFanSetPoint(int device, float setPoint);
1620
1632SP_API SpStatus spGetFanSettings(int device, float *setPoint, float *voltage);
1633
1642SP_API const char* spGetErrorString(SpStatus status);
1643
1659SP_API const char* spGetAPIVersion();
1660
1661#ifdef __cplusplus
1662} // extern "C"
1663#endif
1664
1665#endif // #ifndef SP_API_H
SpTriggerEdge
Definition: sp_api.h:292
@ spTriggerEdgeFalling
Definition: sp_api.h:296
@ spTriggerEdgeRising
Definition: sp_api.h:294
SP_API SpStatus spWriteToGPS(int device, const uint8_t *mem, int len)
SpReference
Definition: sp_api.h:314
@ spReferenceUseExternal
Definition: sp_api.h:318
@ spReferenceUseInternal
Definition: sp_api.h:316
SP_API SpStatus spIQSweepListStartSweep(int device, int pos, void *dst, int64_t *timestamps)
SpStatus
Definition: sp_api.h:105
@ spInternalFlashErr
Definition: sp_api.h:107
@ spDeviceNotFoundErr
Definition: sp_api.h:156
@ spFramingErr
Definition: sp_api.h:139
@ spTempDrift
Definition: sp_api.h:168
@ spInternalFileIOErr
Definition: sp_api.h:109
@ spMaxDevicesConnectedErr
Definition: sp_api.h:118
@ spUncalData
Definition: sp_api.h:172
@ spADCOverflow
Definition: sp_api.h:170
@ spBootErr
Definition: sp_api.h:134
@ spNoError
Definition: sp_api.h:159
@ spGPSErr
Definition: sp_api.h:112
@ spConnectionLostErr
Definition: sp_api.h:145
@ spNullPtrErr
Definition: sp_api.h:149
@ spSettingClamped
Definition: sp_api.h:162
@ spInvalidDeviceErr
Definition: sp_api.h:147
@ spInvalidCalData
Definition: sp_api.h:181
@ spAllocationErr
Definition: sp_api.h:116
@ spSweepAlreadyActiveErr
Definition: sp_api.h:132
@ spCPULimited
Definition: sp_api.h:174
@ spInvalidConfigurationErr
Definition: sp_api.h:125
@ spInvalidParameterErr
Definition: sp_api.h:151
SP_API SpStatus spGetCalDate(int device, uint32_t *lastCalDate)
SP_API SpStatus spSetRealTimeCenterSpan(int device, double centerFreqHz, double spanHz)
SP_API SpStatus spSetRealTimeScale(int device, SpScale scale, double frameRef, double frameScale)
SP_API SpStatus spSetIQQueueSize(int device, int units)
SP_API SpStatus spSetIQSoftwareFilter(int device, SpBool enabled)
SP_API SpStatus spCloseDevice(int device)
SpDataType
Definition: sp_api.h:282
@ spDataType16sc
Definition: sp_api.h:286
@ spDataType32fc
Definition: sp_api.h:284
SpMode
Definition: sp_api.h:208
@ spModeRealTime
Definition: sp_api.h:214
@ spModeAudio
Definition: sp_api.h:220
@ spModeIdle
Definition: sp_api.h:210
@ spModeIQStreaming
Definition: sp_api.h:216
@ spModeIQSweepList
Definition: sp_api.h:218
@ spModeSweeping
Definition: sp_api.h:212
SP_API SpStatus spSetSweepWindow(int device, SpWindowType window)
SpPowerState
Definition: sp_api.h:198
@ spPowerStateStandby
Definition: sp_api.h:202
@ spPowerStateOn
Definition: sp_api.h:200
SP_API SpStatus spGetGPSInfo(int device, SpBool refresh, SpBool *updated, int64_t *secSinceEpoch, double *latitude, double *longitude, double *altitude, char *nmea, int *nmeaLen)
SP_API SpStatus spSetGPSTimebaseUpdate(int device, SpBool enabled)
SP_API SpStatus spWriteUARTDirect(int device, uint8_t data)
SP_API SpStatus spSetSweepScale(int device, SpScale scale)
SP_API SpStatus spSetIQSweepListSampleCount(int device, int step, uint32_t samples)
SpGPSPlatformModel
Definition: sp_api.h:364
@ SpGPSPlatformModelPedestrian
Definition: sp_api.h:380
@ SpGPSPlatformModelAutomotive
Definition: sp_api.h:385
@ SpGPSPlatformModelAtSea
Definition: sp_api.h:390
@ SpGPSPlatformModelAirborne_2g
Definition: sp_api.h:400
@ SpGPSPlatformModelStationary
Definition: sp_api.h:375
@ SpGPSPlatformModelAirborne_1g
Definition: sp_api.h:395
@ SpGPSPlatformModelPortable
Definition: sp_api.h:369
SP_API SpStatus spSetReference(int device, SpReference reference)
SP_API SpStatus spSetIQSampleRate(int device, int decimation)
SP_API SpStatus spIQSweepListFinishSweep(int device, int pos)
SP_API SpStatus spSetFanSetPoint(int device, float setPoint)
SP_API const char * spGetErrorString(SpStatus status)
SP_API SpStatus spGetIQ(int device, void *iqBuf, int iqBufSize, double *triggers, int triggerBufSize, int64_t *nsSinceEpoch, SpBool purge, int *sampleLoss, int *samplesRemaining)
SP_API SpStatus spSetIQExtTriggerEdge(int device, SpTriggerEdge edge)
SP_API SpStatus spGetReference(int device, SpReference *reference)
SP_API SpStatus spGetGPSState(int device, SpGPSState *GPSState)
SP_API SpStatus spSetIQTriggerSentinel(double sentinelValue)
SP_API SpStatus spSetAudioCenterFreq(int device, double centerFreqHz)
SpGPIOFunction
Definition: sp_api.h:324
@ SpGPIOFunctionUARTSweep
Definition: sp_api.h:340
@ SpGPIOFunctionLogicOutLow
Definition: sp_api.h:334
@ SpGPIOFunctionUARTDirect
Definition: sp_api.h:338
@ SpGPIOFunctionLogicOutHigh
Definition: sp_api.h:336
@ SpGPIOFunctionUARTDoppler
Definition: sp_api.h:342
@ SpGPIOFunctionTrigIn
Definition: sp_api.h:330
@ SpGPIOFunctionPPSOut
Definition: sp_api.h:332
SP_API SpStatus spAbort(int device)
SP_API SpStatus spOpenDevice(int *device)
SP_API SpStatus spSetAudioFilters(int device, double ifBandwidth, double audioLpf, double audioHpf)
SP_API SpStatus spSetRefLevel(int device, double refLevel)
SP_API SpStatus spSetSweepCenterSpan(int device, double centerFreqHz, double spanHz)
SP_API SpStatus spGetDeviceList(int *serials, int *deviceCount)
SP_API SpStatus spGetRealTimeParameters(int device, double *actualRBW, int *sweepSize, double *actualStartFreq, double *binSize, int *frameWidth, int *frameHeight, double *poi)
SP_API SpStatus spIQSweepListGetSweep(int device, void *dst, int64_t *timestamps)
SP_API SpStatus spGetFanSettings(int device, float *setPoint, float *voltage)
SP_API SpStatus spGetFirmwareVersion(int device, int *major, int *minor, int *revision)
SpWindowType
Definition: sp_api.h:262
@ spWindowBlackman
Definition: sp_api.h:268
@ spWindowRect
Definition: sp_api.h:274
@ spWindowHamming
Definition: sp_api.h:270
@ spWindowFlatTop
Definition: sp_api.h:264
@ spWindowNutall
Definition: sp_api.h:266
@ spWindowGaussian6dB
Definition: sp_api.h:272
SP_API SpStatus spGetGPSHoldoverInfo(int device, SpBool *usingGPSHoldover, uint32_t *lastHoldoverTime)
SP_API SpStatus spSetSweepDetector(int device, SpDetector detector, SpVideoUnits videoUnits)
SP_API SpStatus spSetIQDataType(int device, SpDataType dataType)
SP_API SpStatus spSetRealTimeRBW(int device, double rbw)
SP_API SpStatus spGetUARTBaudRate(int device, float *rate)
SpDetector
Definition: sp_api.h:226
@ spDetectorMinMax
Definition: sp_api.h:230
@ spDetectorAverage
Definition: sp_api.h:228
SpAudioType
Definition: sp_api.h:348
@ spAudioTypeFM
Definition: sp_api.h:352
@ spAudioTypeLSB
Definition: sp_api.h:356
@ spAudioTypeCW
Definition: sp_api.h:358
@ spAudioTypeUSB
Definition: sp_api.h:354
@ spAudioTypeAM
Definition: sp_api.h:350
SP_API SpStatus spGetIQCenterFreq(int device, double *centerFreqHz)
SP_API SpStatus spGetCurrentMode(int device, SpMode *mode)
SP_API SpStatus spOpenDeviceBySerial(int *device, int serialNumber)
SP_API SpStatus spSetIQSweepListSteps(int device, int steps)
SP_API SpStatus spSetIQSweepListRef(int device, int step, double level)
SP_API SpStatus spGetSweep(int device, float *sweepMin, float *sweepMax, int64_t *nsSinceEpoch)
SP_API const char * spGetAPIVersion()
SP_API SpStatus spSetAudioFMDeemphasis(int device, double deemphasis)
SP_API SpStatus spGetIQSweepListSteps(int device, int *steps)
SP_API SpStatus spGetIQParameters(int device, double *sampleRate, double *bandwidth)
SP_API SpStatus spSetSweepGPIOSwitchingDisabled(int device)
SP_API SpStatus spGetRefLevel(int device, double *refLevel)
SP_API SpStatus spSetUARTBaudRate(int device, float rate)
SP_API SpStatus spSetIQBandwidth(int device, double bandwidth)
SP_API SpStatus spSetAudioType(int device, SpAudioType audioType)
SP_API SpStatus spGetSerialNumber(int device, int *serialNumber)
SP_API SpStatus spSetIQSweepListAtten(int device, int step, int atten)
SP_API SpStatus spSetIQSweepListCorrected(int device, SpBool corrected)
SP_API SpStatus spConfigure(int device, SpMode mode)
SpScale
Definition: sp_api.h:236
@ spScaleFullScale
Definition: sp_api.h:242
@ spScaleLin
Definition: sp_api.h:240
@ spScaleLog
Definition: sp_api.h:238
SP_API SpStatus spSetPowerState(int device, SpPowerState powerState)
SpGPSState
Definition: sp_api.h:302
@ spGPSStateLocked
Definition: sp_api.h:306
@ spGPSStateDisciplined
Definition: sp_api.h:308
@ spGPSStateNotPresent
Definition: sp_api.h:304
SP_API SpStatus spSetIQCenterFreq(int device, double centerFreqHz)
SP_API SpStatus spGetAttenuator(int device, int *atten)
SP_API SpStatus spGetSweepParameters(int device, double *actualRBW, double *actualVBW, double *actualStartFreq, double *binSize, int *sweepSize)
SpVideoUnits
Definition: sp_api.h:248
@ spVideoPower
Definition: sp_api.h:254
@ spVideoLog
Definition: sp_api.h:250
@ spVideoSample
Definition: sp_api.h:256
@ spVideoVoltage
Definition: sp_api.h:252
SP_API SpStatus spSetRealTimeDetector(int device, SpDetector detector)
SP_API SpStatus spGetRealTimeFrame(int device, float *colorFrame, float *alphaFrame, float *sweepMin, float *sweepMax, int *frameCount, int64_t *nsSinceEpoch)
SP_API SpStatus spSetIQSweepListDataType(int device, SpDataType dataType)
SP_API SpStatus spSetSweepCoupling(int device, double rbw, double vbw, double sweepTime)
SP_API SpStatus spSetIQSweepListFreq(int device, int step, double freq)
SP_API SpStatus spSetSweepStartStop(int device, double startFreqHz, double stopFreqHz)
SP_API SpStatus spIQSweepListGetCorrections(int device, float *corrections)
SP_API SpStatus spGetPowerState(int device, SpPowerState *powerState)
SpBool
Definition: sp_api.h:188
@ spTrue
Definition: sp_api.h:192
@ spFalse
Definition: sp_api.h:190
SP_API SpStatus spSetAttenuator(int device, int atten)
SP_API SpStatus spGetDeviceDiagnostics(int device, float *voltage, float *current, float *temperature)
SP_API SpStatus spGetAudio(int device, float *audio)
SP_API SpStatus spGetGPSTimebaseUpdate(int device, SpBool *enabled)
SP_API SpStatus spSetRealTimeWindow(int device, SpWindowType window)
SP_API SpStatus spSetSweepGPIOSwitching(int device, double *freqs, uint8_t *data, int count)
SP_API SpStatus spSetGPSPlatformModel(int device, SpGPSPlatformModel platformModel)
SP_API SpStatus spGetGPIOPort(int device, SpGPIOFunction *func)
SP_API SpStatus spPresetDevice(int device)
SP_API SpStatus spSetGPIOPort(int device, SpGPIOFunction func)
SP_API SpStatus spGetIQCorrection(int device, float *scale)