SA API
sa_api.h
Go to the documentation of this file.
1// Copyright (c) 2022 Signal Hound
2// For licensing information, please see the API license in the software_licenses folder
3
13#ifndef __SA_API_H__
14#define __SA_API_H__
15
16#if defined(_WIN32)
17 #ifdef SA_EXPORTS
18 #define SA_API __declspec(dllexport)
19 #else
20 #define SA_API __declspec(dllimport)
21 #endif
22#else // Linux
23 #define SA_API
24#endif
25
26#if defined(_WIN32)
27 #define SA_DEPRECATED(msg) __declspec(deprecated(msg))
28#elif defined(__GNUC__)
29 #define SA_DEPRECATED(msg) __attribute__((deprecated))
30#else
31 #define SA_DEPRECATED(msg) msg
32#endif
33
35#define SA_TRUE (1)
37#define SA_FALSE (0)
38
43#define SA_MAX_DEVICES 8
44
48typedef enum saDeviceType {
60
65#define SA44_MIN_FREQ (1.0)
70#define SA124_MIN_FREQ (100.0e3)
75#define SA44_MAX_FREQ (4.4e9)
80#define SA124_MAX_FREQ (13.0e9)
82#define SA_MIN_SPAN (1.0)
84#define SA_MAX_REF (20)
86#define SA_MAX_ATTEN (3)
88#define SA_MAX_GAIN (2)
90#define SA_MIN_RBW (0.1)
92#define SA_MAX_RBW (6.0e6)
94#define SA_MIN_RT_RBW (100.0)
96#define SA_MAX_RT_RBW (10000.0)
98#define SA_MIN_IQ_BANDWIDTH (100.0)
100#define SA_MAX_IQ_DECIMATION (128)
101
103#define SA_IQ_SAMPLE_RATE (486111.111)
104
106#define SA_IDLE (-1)
108#define SA_SWEEPING (0x0)
110#define SA_REAL_TIME (0x1)
112#define SA_IQ (0x2)
114#define SA_AUDIO (0x3)
116#define SA_TG_SWEEP (0x4)
117
119#define SA_RBW_SHAPE_FLATTOP (0x1)
121#define SA_RBW_SHAPE_CISPR (0x2)
122
124#define SA_MIN_MAX (0x0)
126#define SA_AVERAGE (0x1)
127
129#define SA_LOG_SCALE (0x0)
131#define SA_LIN_SCALE (0x1)
133#define SA_LOG_FULL_SCALE (0x2) // N/A
135#define SA_LIN_FULL_SCALE (0x3) // N/A
136
138#define SA_AUTO_ATTEN (-1)
140#define SA_AUTO_GAIN (-1)
141
143#define SA_LOG_UNITS (0x0)
145#define SA_VOLT_UNITS (0x1)
147#define SA_POWER_UNITS (0x2)
149#define SA_BYPASS (0x3)
150
152#define SA_AUDIO_AM (0x0)
154#define SA_AUDIO_FM (0x1)
156#define SA_AUDIO_USB (0x2)
158#define SA_AUDIO_LSB (0x3)
160#define SA_AUDIO_CW (0x4)
161
163#define TG_THRU_0DB (0x1)
165#define TG_THRU_20DB (0x2)
166
168#define SA_REF_UNUSED (0)
170#define SA_REF_INTERNAL_OUT (1)
172#define SA_REF_EXTERNAL_IN (2)
173
177typedef struct saSelfTestResults {
179 bool highBandMixer, lowBandMixer;
181 bool attenuator, secondIF, preamplifier;
183 double highBandMixerValue, lowBandMixerValue;
185 double attenuatorValue, secondIFValue, preamplifierValue;
187
191typedef struct saIQPacket {
197 float *iqData;
207 int purge;
224 int sec;
229 int milli;
230} saIQPacket;
231
237typedef enum saStatus {
240
241 // Setting specific error codes
242
253
254 // Device-specific errors
255
257 saLNAErr = -21,
260
261 // Data errors
262
273
274 // General configuration errors
275
296
299
300 // Warnings
301
315} saStatus;
316
317#ifdef __cplusplus
318extern "C" {
319#endif
320
338SA_API saStatus saGetSerialNumberList(int serialNumbers[8], int *deviceCount);
339
353SA_API saStatus saOpenDeviceBySerialNumber(int *device, int serialNumber);
354
372SA_API saStatus saOpenDevice(int *device);
373
385SA_API saStatus saCloseDevice(int device);
386
419SA_API saStatus saPreset(int device);
420
453SA_API saStatus saSetCalFilePath(const char *path);
454
466SA_API saStatus saGetSerialNumber(int device, int *serial);
467
478SA_API saStatus saGetFirmwareString(int device, char firmwareString[16]);
479
492SA_API saStatus saGetDeviceType(int device, saDeviceType *device_type);
493
520SA_API saStatus saConfigAcquisition(int device, int detector, int scale);
521
548SA_API saStatus saConfigCenterSpan(int device, double center, double span);
549
567SA_API saStatus saConfigLevel(int device, double ref);
568
609SA_API saStatus saConfigGainAtten(int device, int atten, int gain, bool preAmp);
610
660SA_API saStatus saConfigSweepCoupling(int device, double rbw, double vbw, bool reject);
661
676SA_API saStatus saConfigRBWShape(int device, int rbwShape);
677
702SA_API saStatus saConfigProcUnits(int device, int units);
703
742SA_API saStatus saConfigIQ(int device, int decimation, double bandwidth);
743
775SA_API saStatus saConfigAudio(int device, int audioType, double centerFreq,
776 double bandwidth, double audioLowPassFreq,
777 double audioHighPassFreq, double fmDeemphasis);
778
795SA_API saStatus saConfigRealTime(int device, double frameScale, int frameRate);
796
815SA_API saStatus saConfigRealTimeOverlap(int device, double advanceRate);
816
834SA_API saStatus saSetTimebase(int device, int timebase);
835
853SA_API saStatus saInitiate(int device, int mode, int flag);
854
864SA_API saStatus saAbort(int device);
865
886SA_API saStatus saQuerySweepInfo(int device, int *sweepLength, double *startFreq, double *binSize);
887
907SA_API saStatus saQueryStreamInfo(int device, int *returnLen, double *bandwidth, double *samplesPerSecond);
908
923SA_API saStatus saQueryRealTimeFrameInfo(int device, int *frameWidth, int *frameHeight);
924
938SA_API saStatus saQueryRealTimePoi(int device, double *poi);
939
959SA_API saStatus saGetSweep_32f(int device, float *min, float *max);
960
976SA_API saStatus saGetSweep_64f(int device, double *min, double *max);
977
1018SA_API saStatus saGetPartialSweep_32f(int device, float *min, float *max, int *start, int *stop);
1019
1041SA_API saStatus saGetPartialSweep_64f(int device, double *min, double *max, int *start, int *stop);
1042
1073SA_API saStatus saGetRealTimeFrame(int device, float *minSweep, float *maxSweep, float *colorFrame, float *alphaFrame);
1074
1096SA_API saStatus saGetIQ_32f(int device, float *iq);
1097
1108SA_API saStatus saGetIQ_64f(int device, double *iq);
1109
1120SA_API saStatus saGetIQData(int device, saIQPacket *pkt);
1121
1152SA_API saStatus saGetIQDataUnpacked(int device, float *iqData, int iqCount, int purge,
1153 int *dataRemaining, int *sampleLoss, int *sec, int *milli);
1154
1171SA_API saStatus saGetAudio(int device, float *audio);
1172
1188SA_API saStatus saQueryTemperature(int device, float *temp);
1189
1202SA_API saStatus saQueryDiagnostics(int device, float *voltage);
1203
1212SA_API saStatus saAttachTg(int device);
1213
1227SA_API saStatus saIsTgAttached(int device, bool *attached);
1228
1252SA_API saStatus saConfigTgSweep(int device, int sweepSize, bool highDynamicRange, bool passiveDevice);
1253
1275SA_API saStatus saStoreTgThru(int device, int flag);
1276
1291SA_API saStatus saSetTg(int device, double frequency, double amplitude);
1292
1308SA_API saStatus saSetTgReference(int device, int reference);
1309
1332SA_API saStatus saGetTgFreqAmpl(int device, double *frequency, double *amplitude);
1333
1365SA_API saStatus saConfigIFOutput(int device, double inputFreq, double outputFreq,
1366 int inputAtten, int outputGain);
1367
1378SA_API saStatus saSelfTest(int device, saSelfTestResults *results);
1379
1393SA_API const char* saGetAPIVersion();
1394
1400SA_API const char* saGetProductID();
1401
1410SA_API const char* saGetErrorString(saStatus code);
1411
1412#ifdef __cplusplus
1413} // extern "C"
1414#endif
1415
1416#endif // SA_API_H
SA_API saStatus saQueryTemperature(int device, float *temp)
SA_API saStatus saIsTgAttached(int device, bool *attached)
SA_API saStatus saGetSweep_32f(int device, float *min, float *max)
SA_API const char * saGetAPIVersion()
SA_API saStatus saQueryRealTimePoi(int device, double *poi)
SA_API saStatus saGetRealTimeFrame(int device, float *minSweep, float *maxSweep, float *colorFrame, float *alphaFrame)
SA_API saStatus saGetDeviceType(int device, saDeviceType *device_type)
SA_API saStatus saConfigRealTime(int device, double frameScale, int frameRate)
SA_API saStatus saConfigIQ(int device, int decimation, double bandwidth)
SA_API saStatus saConfigProcUnits(int device, int units)
SA_API saStatus saSetTg(int device, double frequency, double amplitude)
SA_API saStatus saQueryRealTimeFrameInfo(int device, int *frameWidth, int *frameHeight)
SA_API saStatus saConfigCenterSpan(int device, double center, double span)
saDeviceType
Definition: sa_api.h:48
@ saDeviceTypeSA124B
Definition: sa_api.h:58
@ saDeviceTypeNone
Definition: sa_api.h:50
@ saDeviceTypeSA44
Definition: sa_api.h:52
@ saDeviceTypeSA124A
Definition: sa_api.h:56
@ saDeviceTypeSA44B
Definition: sa_api.h:54
SA_API saStatus saStoreTgThru(int device, int flag)
SA_API saStatus saGetIQData(int device, saIQPacket *pkt)
SA_API saStatus saConfigSweepCoupling(int device, double rbw, double vbw, bool reject)
SA_API saStatus saConfigIFOutput(int device, double inputFreq, double outputFreq, int inputAtten, int outputGain)
SA_API saStatus saConfigAudio(int device, int audioType, double centerFreq, double bandwidth, double audioLowPassFreq, double audioHighPassFreq, double fmDeemphasis)
SA_API saStatus saConfigRealTimeOverlap(int device, double advanceRate)
SA_API saStatus saGetSerialNumber(int device, int *serial)
SA_API saStatus saConfigLevel(int device, double ref)
SA_API saStatus saQueryDiagnostics(int device, float *voltage)
SA_API saStatus saGetIQ_32f(int device, float *iq)
SA_API saStatus saGetIQ_64f(int device, double *iq)
SA_API saStatus saSetTimebase(int device, int timebase)
SA_API saStatus saOpenDevice(int *device)
SA_API saStatus saConfigAcquisition(int device, int detector, int scale)
SA_API saStatus saOpenDeviceBySerialNumber(int *device, int serialNumber)
saStatus
Definition: sa_api.h:237
@ saInvalidParameterErr
Definition: sa_api.h:289
@ saFrequencyRangeErr
Definition: sa_api.h:244
@ saUSBCommErr
Definition: sa_api.h:272
@ saDeviceNotOpenErr
Definition: sa_api.h:291
@ saInternetErr
Definition: sa_api.h:270
@ saExternalReferenceNotFound
Definition: sa_api.h:252
@ saNullPtrErr
Definition: sa_api.h:295
@ saNoError
Definition: sa_api.h:298
@ saInvalidScaleErr
Definition: sa_api.h:248
@ saTrackingGeneratorNotFound
Definition: sa_api.h:277
@ saDeviceNotIdleErr
Definition: sa_api.h:279
@ saTooManyDevicesErr
Definition: sa_api.h:287
@ saNoCorrections
Definition: sa_api.h:303
@ saLNAErr
Definition: sa_api.h:257
@ saUnknownErr
Definition: sa_api.h:239
@ saParameterClamped
Definition: sa_api.h:310
@ saNotConfiguredErr
Definition: sa_api.h:285
@ saInvalidDetectorErr
Definition: sa_api.h:246
@ saInvalidModeErr
Definition: sa_api.h:283
@ saCompressionWarning
Definition: sa_api.h:305
@ saBandwidthErr
Definition: sa_api.h:250
@ saOvenColdErr
Definition: sa_api.h:259
@ saCalFilePermissions
Definition: sa_api.h:314
@ saDeviceNotFoundErr
Definition: sa_api.h:281
@ saInvalidDeviceErr
Definition: sa_api.h:293
@ saBandwidthClamped
Definition: sa_api.h:312
SA_API saStatus saSetTgReference(int device, int reference)
SA_API saStatus saGetAudio(int device, float *audio)
SA_API saStatus saConfigGainAtten(int device, int atten, int gain, bool preAmp)
SA_API saStatus saSelfTest(int device, saSelfTestResults *results)
SA_API saStatus saAttachTg(int device)
SA_API const char * saGetProductID()
SA_API saStatus saAbort(int device)
SA_API saStatus saConfigRBWShape(int device, int rbwShape)
SA_API saStatus saQuerySweepInfo(int device, int *sweepLength, double *startFreq, double *binSize)
SA_API const char * saGetErrorString(saStatus code)
SA_API saStatus saPreset(int device)
SA_API saStatus saGetPartialSweep_32f(int device, float *min, float *max, int *start, int *stop)
SA_API saStatus saConfigTgSweep(int device, int sweepSize, bool highDynamicRange, bool passiveDevice)
SA_API saStatus saGetSerialNumberList(int serialNumbers[8], int *deviceCount)
SA_API saStatus saSetCalFilePath(const char *path)
SA_API saStatus saCloseDevice(int device)
SA_API saStatus saGetPartialSweep_64f(int device, double *min, double *max, int *start, int *stop)
SA_API saStatus saQueryStreamInfo(int device, int *returnLen, double *bandwidth, double *samplesPerSecond)
SA_API saStatus saGetTgFreqAmpl(int device, double *frequency, double *amplitude)
SA_API saStatus saGetFirmwareString(int device, char firmwareString[16])
SA_API saStatus saGetSweep_64f(int device, double *min, double *max)
SA_API saStatus saInitiate(int device, int mode, int flag)
SA_API saStatus saGetIQDataUnpacked(int device, float *iqData, int iqCount, int purge, int *dataRemaining, int *sampleLoss, int *sec, int *milli)
Definition: sa_api.h:191
int iqCount
Definition: sa_api.h:199
int dataRemaining
Definition: sa_api.h:209
int sec
Definition: sa_api.h:224
int sampleLoss
Definition: sa_api.h:219
int milli
Definition: sa_api.h:229
int purge
Definition: sa_api.h:207
float * iqData
Definition: sa_api.h:197
Definition: sa_api.h:177
bool attenuator
Definition: sa_api.h:181
double highBandMixerValue
Definition: sa_api.h:183
bool highBandMixer
Definition: sa_api.h:179
double attenuatorValue
Definition: sa_api.h:185