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)
68
70#define SP_MIN_SWEEP_TIME (1.0e-6)
72#define SP_MAX_SWEEP_TIME (100.0)
73
75#define SP_REAL_TIME_MIN_SPAN (200.0e3)
77#define SP_REAL_TIME_MAX_SPAN (40.0e6)
79#define SP_REAL_TIME_MIN_RBW (2.0e3)
81#define SP_REAL_TIME_MAX_RBW (1.0e6)
82
84#define SP_MAX_IQ_DECIMATION (8192)
85
87#define SP_MAX_IQ_SWEEP_STEPS (1000)
88
90#define SP_MIN_FAN_SET_POINT (0.0)
92#define SP_MAX_FAN_SET_POINT (60.0)
93
99#define SP_MAX_SWEEP_QUEUE_SZ (16)
100
104typedef enum SpStatus {
109
154
157
180
185typedef enum SpBool {
189 spTrue = 1
191
195typedef enum SpPowerState {
201
205typedef enum SpMode {
218} SpMode;
219
223typedef enum SpDetector {
229
233typedef enum SpScale {
241
245typedef enum SpVideoUnits {
253 spVideoSample = 3
255
259typedef enum SpWindowType {
271 spWindowRect = 5
273
279typedef enum SpDataType {
285
289typedef enum SpTriggerEdge {
295
299typedef enum SpGPSState {
307
311typedef enum SpReference {
317
321typedef enum SpGPIOFunction {
341
345typedef enum SpAudioType {
355 spAudioTypeCW = 4
357
358#ifdef __cplusplus
359extern "C" {
360#endif
361
383SP_API SpStatus spGetDeviceList(int *serials, int *deviceCount);
384
398SP_API SpStatus spOpenDevice(int *device);
399
412SP_API SpStatus spOpenDeviceBySerial(int *device, int serialNumber);
413
426SP_API SpStatus spCloseDevice(int device);
427
439SP_API SpStatus spPresetDevice(int device);
440
451SP_API SpStatus spSetPowerState(int device, SpPowerState powerState);
452
462SP_API SpStatus spGetPowerState(int device, SpPowerState *powerState);
463
473SP_API SpStatus spGetSerialNumber(int device, int *serialNumber);
474
489SP_API SpStatus spGetFirmwareVersion(int device, int *major, int *minor, int *revision);
490
507SP_API SpStatus spGetDeviceDiagnostics(int device, float *voltage, float *current, float *temperature);
508
519SP_API SpStatus spGetCalDate(int device, uint32_t *lastCalDate);
520
534SP_API SpStatus spSetReference(int device, SpReference reference);
535
545SP_API SpStatus spGetReference(int device, SpReference *reference);
546
557SP_API SpStatus spSetGPIOPort(int device, SpGPIOFunction func);
558
568SP_API SpStatus spGetGPIOPort(int device, SpGPIOFunction *func);
569
582SP_API SpStatus spSetUARTBaudRate(int device, float rate);
583
593SP_API SpStatus spGetUARTBaudRate(int device, float *rate);
594
606SP_API SpStatus spWriteUARTDirect(int device, uint8_t data);
607
620SP_API SpStatus spSetGPSTimebaseUpdate(int device, SpBool enabled);
621
632SP_API SpStatus spGetGPSTimebaseUpdate(int device, SpBool *enabled);
633
651SP_API SpStatus spGetGPSHoldoverInfo(int device, SpBool *usingGPSHoldover, uint32_t *lastHoldoverTime);
652
664SP_API SpStatus spGetGPSState(int device, SpGPSState *GPSState);
665
679SP_API SpStatus spSetRefLevel(int device, double refLevel);
680
690SP_API SpStatus spGetRefLevel(int device, double *refLevel);
691
706SP_API SpStatus spSetAttenuator(int device, int atten);
707
718SP_API SpStatus spGetAttenuator(int device, int *atten);
719
731SP_API SpStatus spSetSweepCenterSpan(int device, double centerFreqHz, double spanHz);
732
744SP_API SpStatus spSetSweepStartStop(int device, double startFreqHz, double stopFreqHz);
745
761SP_API SpStatus spSetSweepCoupling(int device, double rbw, double vbw, double sweepTime);
762
774SP_API SpStatus spSetSweepDetector(int device, SpDetector detector, SpVideoUnits videoUnits);
775
785SP_API SpStatus spSetSweepScale(int device, SpScale scale);
786
796SP_API SpStatus spSetSweepWindow(int device, SpWindowType window);
797
816SP_API SpStatus spSetSweepGPIOSwitching(int device, double *freqs, uint8_t *data, int count);
817
828
840SP_API SpStatus spSetRealTimeCenterSpan(int device, double centerFreqHz, double spanHz);
841
851SP_API SpStatus spSetRealTimeRBW(int device, double rbw);
852
862SP_API SpStatus spSetRealTimeDetector(int device, SpDetector detector);
863
879SP_API SpStatus spSetRealTimeScale(int device, SpScale scale, double frameRef, double frameScale);
880
890SP_API SpStatus spSetRealTimeWindow(int device, SpWindowType window);
891
901SP_API SpStatus spSetIQDataType(int device, SpDataType dataType);
902
912SP_API SpStatus spSetIQCenterFreq(int device, double centerFreqHz);
913
923SP_API SpStatus spGetIQCenterFreq(int device, double *centerFreqHz);
924
935SP_API SpStatus spSetIQSampleRate(int device, int decimation);
936
946SP_API SpStatus spSetIQSoftwareFilter(int device, SpBool enabled);
947
958SP_API SpStatus spSetIQBandwidth(int device, double bandwidth);
959
970
981SP_API SpStatus spSetIQTriggerSentinel(double sentinelValue);
982
1002SP_API SpStatus spSetIQQueueSize(int device, int units);
1003
1013SP_API SpStatus spSetIQSweepListDataType(int device, SpDataType dataType);
1014
1027SP_API SpStatus spSetIQSweepListCorrected(int device, SpBool corrected);
1028
1038SP_API SpStatus spSetIQSweepListSteps(int device, int steps);
1039
1049SP_API SpStatus spGetIQSweepListSteps(int device, int *steps);
1050
1065SP_API SpStatus spSetIQSweepListFreq(int device, int step, double freq);
1066
1081SP_API SpStatus spSetIQSweepListRef(int device, int step, double level);
1082
1099SP_API SpStatus spSetIQSweepListAtten(int device, int step, int atten);
1100
1117SP_API SpStatus spSetIQSweepListSampleCount(int device, int step, uint32_t samples);
1118
1128SP_API SpStatus spSetAudioCenterFreq(int device, double centerFreqHz);
1129
1139SP_API SpStatus spSetAudioType(int device, SpAudioType audioType);
1140
1154SP_API SpStatus spSetAudioFilters(int device,
1155 double ifBandwidth,
1156 double audioLpf,
1157 double audioHpf);
1158
1168SP_API SpStatus spSetAudioFMDeemphasis(int device, double deemphasis);
1169
1184SP_API SpStatus spConfigure(int device, SpMode mode);
1185
1195SP_API SpStatus spGetCurrentMode(int device, SpMode *mode);
1196
1206SP_API SpStatus spAbort(int device);
1207
1230SP_API SpStatus spGetSweepParameters(int device, double *actualRBW, double *actualVBW,
1231 double *actualStartFreq, double *binSize, int *sweepSize);
1232
1259SP_API SpStatus spGetRealTimeParameters(int device, double *actualRBW, int *sweepSize, double *actualStartFreq,
1260 double *binSize, int *frameWidth, int *frameHeight, double *poi);
1261
1274SP_API SpStatus spGetIQParameters(int device, double *sampleRate, double *bandwidth);
1275
1276
1289SP_API SpStatus spGetIQCorrection(int device, float *scale);
1290
1306SP_API SpStatus spIQSweepListGetCorrections(int device, float *corrections);
1307
1322SP_API SpStatus spGetSweep(int device, float *sweepMin, float *sweepMax, int64_t *nsSinceEpoch);
1323
1350SP_API SpStatus spGetRealTimeFrame(int device, float *colorFrame, float *alphaFrame, float *sweepMin,
1351 float *sweepMax, int *frameCount, int64_t *nsSinceEpoch);
1352
1392SP_API SpStatus spGetIQ(int device, void *iqBuf, int iqBufSize, double *triggers, int triggerBufSize,
1393 int64_t *nsSinceEpoch, SpBool purge, int *sampleLoss, int *samplesRemaining);
1394
1419SP_API SpStatus spIQSweepListGetSweep(int device, void *dst, int64_t *timestamps);
1420
1446SP_API SpStatus spIQSweepListStartSweep(int device, int pos, void *dst, int64_t *timestamps);
1447
1458SP_API SpStatus spIQSweepListFinishSweep(int device, int pos);
1459
1475SP_API SpStatus spGetAudio(int device, float *audio);
1476
1518SP_API SpStatus spGetGPSInfo(int device, SpBool refresh, SpBool *updated, int64_t *secSinceEpoch,
1519 double *latitude, double *longitude, double *altitude, char *nmea, int *nmeaLen);
1520
1534SP_API SpStatus spWriteToGPS(int device, const uint8_t *mem, int len);
1535
1550SP_API SpStatus spSetFanSetPoint(int device, float setPoint);
1551
1563SP_API SpStatus spGetFanSettings(int device, float *setPoint, float *voltage);
1564
1573SP_API const char* spGetErrorString(SpStatus status);
1574
1590SP_API const char* spGetAPIVersion();
1591
1592#ifdef __cplusplus
1593} // extern "C"
1594#endif
1595
1596#endif // #ifndef SP_API_H
SpTriggerEdge
Definition: sp_api.h:289
@ spTriggerEdgeFalling
Definition: sp_api.h:293
@ spTriggerEdgeRising
Definition: sp_api.h:291
SP_API SpStatus spWriteToGPS(int device, const uint8_t *mem, int len)
SpReference
Definition: sp_api.h:311
@ spReferenceUseExternal
Definition: sp_api.h:315
@ spReferenceUseInternal
Definition: sp_api.h:313
SP_API SpStatus spIQSweepListStartSweep(int device, int pos, void *dst, int64_t *timestamps)
SpStatus
Definition: sp_api.h:104
@ spInternalFlashErr
Definition: sp_api.h:106
@ spDeviceNotFoundErr
Definition: sp_api.h:153
@ spFramingErr
Definition: sp_api.h:136
@ spTempDrift
Definition: sp_api.h:165
@ spInternalFileIOErr
Definition: sp_api.h:108
@ spMaxDevicesConnectedErr
Definition: sp_api.h:115
@ spUncalData
Definition: sp_api.h:169
@ spADCOverflow
Definition: sp_api.h:167
@ spBootErr
Definition: sp_api.h:131
@ spNoError
Definition: sp_api.h:156
@ spConnectionLostErr
Definition: sp_api.h:142
@ spNullPtrErr
Definition: sp_api.h:146
@ spSettingClamped
Definition: sp_api.h:159
@ spInvalidDeviceErr
Definition: sp_api.h:144
@ spInvalidCalData
Definition: sp_api.h:178
@ spAllocationErr
Definition: sp_api.h:113
@ spSweepAlreadyActiveErr
Definition: sp_api.h:129
@ spCPULimited
Definition: sp_api.h:171
@ spInvalidConfigurationErr
Definition: sp_api.h:122
@ spInvalidParameterErr
Definition: sp_api.h:148
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:279
@ spDataType16sc
Definition: sp_api.h:283
@ spDataType32fc
Definition: sp_api.h:281
SpMode
Definition: sp_api.h:205
@ spModeRealTime
Definition: sp_api.h:211
@ spModeAudio
Definition: sp_api.h:217
@ spModeIdle
Definition: sp_api.h:207
@ spModeIQStreaming
Definition: sp_api.h:213
@ spModeIQSweepList
Definition: sp_api.h:215
@ spModeSweeping
Definition: sp_api.h:209
SP_API SpStatus spSetSweepWindow(int device, SpWindowType window)
SpPowerState
Definition: sp_api.h:195
@ spPowerStateStandby
Definition: sp_api.h:199
@ spPowerStateOn
Definition: sp_api.h:197
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)
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:321
@ SpGPIOFunctionUARTSweep
Definition: sp_api.h:337
@ SpGPIOFunctionLogicOutLow
Definition: sp_api.h:331
@ SpGPIOFunctionUARTDirect
Definition: sp_api.h:335
@ SpGPIOFunctionLogicOutHigh
Definition: sp_api.h:333
@ SpGPIOFunctionUARTDoppler
Definition: sp_api.h:339
@ SpGPIOFunctionTrigIn
Definition: sp_api.h:327
@ SpGPIOFunctionPPSOut
Definition: sp_api.h:329
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:259
@ spWindowBlackman
Definition: sp_api.h:265
@ spWindowRect
Definition: sp_api.h:271
@ spWindowHamming
Definition: sp_api.h:267
@ spWindowFlatTop
Definition: sp_api.h:261
@ spWindowNutall
Definition: sp_api.h:263
@ spWindowGaussian6dB
Definition: sp_api.h:269
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:223
@ spDetectorMinMax
Definition: sp_api.h:227
@ spDetectorAverage
Definition: sp_api.h:225
SpAudioType
Definition: sp_api.h:345
@ spAudioTypeFM
Definition: sp_api.h:349
@ spAudioTypeLSB
Definition: sp_api.h:353
@ spAudioTypeCW
Definition: sp_api.h:355
@ spAudioTypeUSB
Definition: sp_api.h:351
@ spAudioTypeAM
Definition: sp_api.h:347
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:233
@ spScaleFullScale
Definition: sp_api.h:239
@ spScaleLin
Definition: sp_api.h:237
@ spScaleLog
Definition: sp_api.h:235
SP_API SpStatus spSetPowerState(int device, SpPowerState powerState)
SpGPSState
Definition: sp_api.h:299
@ spGPSStateLocked
Definition: sp_api.h:303
@ spGPSStateDisciplined
Definition: sp_api.h:305
@ spGPSStateNotPresent
Definition: sp_api.h:301
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:245
@ spVideoPower
Definition: sp_api.h:251
@ spVideoLog
Definition: sp_api.h:247
@ spVideoSample
Definition: sp_api.h:253
@ spVideoVoltage
Definition: sp_api.h:249
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:185
@ spTrue
Definition: sp_api.h:189
@ spFalse
Definition: sp_api.h:187
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 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)