PCR4200 API
pcr_api.h
Go to the documentation of this file.
1// Copyright (c).2025, Signal Hound, Inc.
2// For licensing information, please see the API license in the software_licenses folder
3
12#ifndef PCR_API_H
13#define PCR_API_H
14
15#if defined(_WIN32) // Windows
16 #ifdef PCR_EXPORTS
17 #define PCR_API __declspec(dllexport)
18 #else
19 #define PCR_API
20 #endif
21
22 // bare minimum stdint typedef support
23 #if _MSC_VER < 1700 // For VS2010 or earlier
24 typedef signed char int8_t;
25 typedef short int16_t;
26 typedef int int32_t;
27 typedef long long int64_t;
28 typedef unsigned char uint8_t;
29 typedef unsigned short uint16_t;
30 typedef unsigned int uint32_t;
31 typedef unsigned long long uint64_t;
32 #else
33 #include <stdint.h>
34 #endif
35
36 #define PCR_DEPRECATED(comment) __declspec(deprecated(comment))
37#else // Linux
38 #include <stdint.h>
39 #define PCR_API __attribute__((visibility("default")))
40
41 #if defined(__GNUC__)
42 #define PCR_DEPRECATED(comment) __attribute__((deprecated))
43 #else
44 #define PCR_DEPRECATED(comment) comment
45 #endif
46#endif
47
49#define PCR_MAX_DEVICES (4)
50
52#define PCR_DEFAULT_HOST_ADDR ("192.168.2.2")
54#define PCR_DEFAULT_DEVICE_ADDR ("192.168.2.10")
56#define PCR_DEFAULT_PORT (51665)
58#define PCR_DEFAULT_STREAM_PORT (4991)
59
61#define PCR_SWEEP_CHANNEL_DISABLED (-1)
62
64#define PCR_AUTO_ATTEN (-1)
66#define PCR_MAX_ATTEN (6)
67
69#define PCR_MIN_FREQ (100.0e3)
71#define PCR_MAX_FREQ (20.0e9)
73#define PCR_SWEEP_MIN_SPAN (100.0)
75#define PCR_SWEEP_MIN_RBW (100.0)
77#define PCR_SWEEP_MAX_RBW (10.0e6)
79#define PCR_MIN_SWEEP_TIME (1.0e-6)
81#define PCR_MAX_SWEEP_TIME (1.0)
82
84#define PCR_MIN_REF_LVL (-130.0)
86#define PCR_MAX_REF_LVL (20.0)
87
89#define PCR_STREAM_SR (50.0e6)
91#define PCR_STREAM_MIN_DECIMATION (1)
93#define PCR_STREAM_MAX_DECIMATION (256)
95#define PCR_STREAM_MIN_BW (20.0e3)
97#define PCR_STREAM_MAX_BW (40.0e6)
98
100#define PCR_MIN_CNTX_INTERVAL (3)
102#define PCR_MAX_CNTX_INTERVAL (4095)
103
105#define PCR_VSG_MIN_LEVEL (-80.0)
107#define PCR_VSG_MAX_LEVEL (10.0)
109#define PCR_VSG_MAX_BUF_LEN (4096)
110
112#define PCR_MIN_FAN_SETPOINT (5.0)
114#define PCR_MAX_FAN_SETPOINT (60.0)
115
119typedef enum PCRBool {
123 PCRBoolTrue = 1
125
129typedef enum PCRDataType {
135
139typedef enum PCRReference {
145
149typedef enum PCRGPSState {
159
163typedef enum PCREndianness {
169
173typedef enum PCRSweepDetector {
181
185typedef enum PCRSweepVideoUnits {
195
199typedef enum PCRSweepScale {
207
211typedef enum PCRSweepWindow {
219
223typedef enum PCRTriggerEdge {
229
233typedef enum PCRStreamMode {
234 PCRStreamModeLocal = 0,
235 PCRStreamModeVRT = 1
237
241typedef enum PCRStatus {
280
283
305
307
309typedef struct PCRDeviceDiagnostics {
311 float voltage;
319 float tempFPGA;
321 float tempMB;
327 float sfpTemp;
333
334#ifdef __cplusplus
335extern "C" {
336#endif
337
364PCR_API PCRStatus pcrConnectDevice(int *handle,
365 const char *hostAddr,
366 const char *deviceAddr,
367 uint16_t port);
368
391PCR_API PCRStatus pcrPairDevice(int handle,
392 const char *hostAddr,
393 const char *deviceAddr,
394 uint16_t port);
395
410PCR_API PCRStatus pcrCloseDevice(int handle);
411
422PCR_API PCRStatus pcrGetSerialNumber(int handle, int *serialNumber);
423
439PCR_API PCRStatus pcrGetFirmwareVersion(int handle, int *major, int *minor, int *revision);
440
451PCR_API PCRStatus pcrGetCalDate(int handle, uint32_t *lastCalDate);
452
466PCR_API PCRStatus pcrGetDeviceDiagnostics(int handle, float *voltage, float *current, float *temperature);
467
478
492PCR_API PCRStatus pcrSetLowPowerState(int handle);
493
507PCR_API PCRStatus pcrSetReference(int handle, PCRReference reference);
508
517PCR_API PCRStatus pcrGetReference(int handle, PCRReference *reference);
518
530PCR_API PCRStatus pcrSetGPSTimebaseUpdate(int handle, PCRBool enabled);
531
541PCR_API PCRStatus pcrGetGPSTimebaseUpdate(int handle, PCRBool *enabled);
542
560PCR_API PCRStatus pcrGetGPSHoldoverInfo(int handle, PCRBool *usingGPSHoldover, uint64_t *lastHoldoverTime);
561
569PCR_API PCRStatus pcrGetGPSState(int handle, PCRGPSState *state);
570
599PCR_API PCRStatus pcrGetGPSInfo(int handle, PCRBool refresh, PCRBool *updated, int64_t *secSinceEpoch,
600 double *latitude, double *longitude, double *altitude);
601
615PCR_API PCRStatus pcrWriteMessageToGPS(int handle, uint32_t key, uint64_t value, int valueSizeBytes);
616
626PCR_API PCRStatus pcrSetFanEnabled(int handle, PCRBool enabled);
627
637PCR_API PCRStatus pcrGetFanEnabled(int handle, PCRBool *enabled);
638
649PCR_API PCRStatus pcrSetFanSetPoint(int handle, float setPoint);
650
660PCR_API PCRStatus pcrGetFanSetPoint(int handle, float *setPoint);
661
672PCR_API PCRStatus pcrGetChannelCount(int handle, int *channelCount);
673
697PCR_API PCRStatus pcrSetChannelConfig(int handle, int *enabled, int sweepChannel);
698
715PCR_API PCRStatus pcrGetChannelConfig(int handle, int *enabled, int *sweepChannel);
716
731PCR_API PCRStatus pcrSetChannelShared(int handle, int channel, PCRBool useSharedLO);
732
745PCR_API PCRStatus pcrGetChannelShared(int handle, int channel, PCRBool *useSharedLO);
746
760PCR_API PCRStatus pcrSetChannelFreq(int handle, int channel, double freqHz);
761
774PCR_API PCRStatus pcrGetChannelFreq(int handle, int channel, double *freqHz);
775
794PCR_API PCRStatus pcrSetChannelPhaseOffset(int handle, int channel, double phaseOffset);
795
810PCR_API PCRStatus pcrGetChannelPhaseOffset(int handle, int channel, double *phaseOffset);
811
828PCR_API PCRStatus pcrSetChannelDelay(int handle, int channel, double delay);
829
843PCR_API PCRStatus pcrGetChannelDelay(int handle, int channel, double *delay);
844
856PCR_API PCRStatus pcrSetSharedFreq(int handle, double freqHz);
857
867PCR_API PCRStatus pcrGetSharedFreq(int handle, double *freqHz);
868
878PCR_API PCRStatus pcrSetStreamDataType(int handle, PCRDataType dataType);
879
891PCR_API PCRStatus pcrSetStreamFullScale(int handle, PCRBool fullScale);
892
904PCR_API PCRStatus pcrSetStreamRefLevel(int handle, double refLevel);
905
917PCR_API PCRStatus pcrSetStreamAtten(int handle, int atten);
918
930PCR_API PCRStatus pcrSetStreamSampleRate(int handle, int decimation);
931
942PCR_API PCRStatus pcrSetStreamBandwidth(int handle, double bandwidth);
943
955
965PCR_API PCRStatus pcrSetStreamMode(int handle, PCRStreamMode mode);
966
987PCR_API PCRStatus pcrSetStreamLocalAddr(int handle, uint16_t port);
988
1007PCR_API PCRStatus pcrSetStreamVrtAddr(int handle, int channel, const char *dstAddr, uint16_t dstPort, uint64_t dstMACAddr);
1008
1021PCR_API PCRStatus pcrSetStreamVrtChannelID(int handle, int channel, int streamID);
1022
1035PCR_API PCRStatus pcrSetStreamVrtCntxInterval(int handle, PCRBool enabled, int interval);
1036
1048PCR_API PCRStatus pcrSetStreamVrtEndianness(int handle, PCREndianness endianness);
1049
1064PCR_API PCRStatus pcrSetSweepRefLevel(int handle, double refLevel);
1065
1083PCR_API PCRStatus pcrSetSweepAtten(int handle, int atten);
1084
1098PCR_API PCRStatus pcrSetSweepCenterSpan(int handle, double centerHz, double spanHz);
1099
1113PCR_API PCRStatus pcrSetSweepStartStop(int handle, double startHz, double stopHz);
1114
1130PCR_API PCRStatus pcrSetSweepCoupling(int handle, double rbw, double vbw, double sweepTime);
1131
1143PCR_API PCRStatus pcrSetSweepDetector(int handle, PCRSweepDetector detector, PCRSweepVideoUnits videoUnits);
1144
1154PCR_API PCRStatus pcrSetSweepScale(int handle, PCRSweepScale scale);
1155
1165PCR_API PCRStatus pcrSetSweepWindow(int handle, PCRSweepWindow window);
1166
1179PCR_API PCRStatus pcrSetVSGEnabled(int handle, PCRBool enabled);
1180
1195PCR_API PCRStatus pcrSetVSGLevel(int handle, double level);
1196
1217PCR_API PCRStatus pcrSetVSGPattern(int handle, void *iq, int len, PCRDataType dataType);
1218
1231PCR_API PCRStatus pcrInitiate(int handle);
1232
1242PCR_API PCRStatus pcrAbort(int handle);
1243
1258PCR_API PCRStatus pcrStreamParameters(int handle, int *channelCount, double *sampleRate, double *bandwidth);
1259
1274PCR_API PCRStatus pcrStreamCorrection(int handle, int channel, float *correction);
1275
1317PCR_API PCRStatus pcrStreamRecv(int handle,
1318 void **buffers,
1319 int samples,
1320 int64_t *nsSinceEpoch,
1321 PCRBool purge,
1322 int *sampleLoss,
1323 int *samplesRemaining,
1324 double *triggers,
1325 int triggerBufSize);
1326
1349 double *actualRBW,
1350 double *actualVBW,
1351 double *actualStartFreq,
1352 double *binSize,
1353 int *sweepSize);
1354
1367PCR_API PCRStatus pcrGetSweep(int handle, float *sweep);
1368
1376PCR_API PCRStatus pcrSweepStart(int handle);
1377
1387PCR_API PCRStatus pcrSweepFinish(int handle, float *sweep);
1388
1403PCR_API PCRStatus pcrNetworkConfigGetDeviceList(int *serials, int *deviceCount);
1404
1420PCR_API PCRStatus pcrNetworkConfigOpenDevice(int *handle, int serialNumber);
1421
1435
1451PCR_API PCRStatus pcrNetworkConfigGetMAC(int handle, char *mac);
1452
1472PCR_API PCRStatus pcrNetworkConfigSetIP(int handle, const char *addr, PCRBool nonVolatile);
1473
1490PCR_API PCRStatus pcrNetworkConfigGetIP(int handle, char *addr);
1491
1508PCR_API PCRStatus pcrNetworkConfigSetPort(int handle, int port, PCRBool nonVolatile);
1509
1523PCR_API PCRStatus pcrNetworkConfigGetPort(int handle, int *port);
1524
1540PCR_API const char* pcrGetAPIVersion();
1541
1550PCR_API const char* pcrGetErrorString(PCRStatus status);
1551
1552#ifdef __cplusplus
1553} // Extern "C"
1554#endif
1555
1556#endif // PCR_API_H
PCR_API PCRStatus pcrSetStreamFullScale(int handle, PCRBool fullScale)
PCR_API PCRStatus pcrGetGPSInfo(int handle, PCRBool refresh, PCRBool *updated, int64_t *secSinceEpoch, double *latitude, double *longitude, double *altitude)
PCR_API PCRStatus pcrSetSweepWindow(int handle, PCRSweepWindow window)
PCR_API PCRStatus pcrGetFanSetPoint(int handle, float *setPoint)
PCR_API PCRStatus pcrSetStreamVrtCntxInterval(int handle, PCRBool enabled, int interval)
PCR_API PCRStatus pcrSetStreamAtten(int handle, int atten)
PCR_API PCRStatus pcrGetChannelPhaseOffset(int handle, int channel, double *phaseOffset)
PCR_API PCRStatus pcrSetVSGLevel(int handle, double level)
PCR_API PCRStatus pcrSetChannelFreq(int handle, int channel, double freqHz)
PCR_API PCRStatus pcrGetGPSState(int handle, PCRGPSState *state)
pcrGetGPSState Determine the GPS lock state of the PCR4200.
PCR_API PCRStatus pcrGetFanEnabled(int handle, PCRBool *enabled)
PCR_API PCRStatus pcrSetStreamVrtAddr(int handle, int channel, const char *dstAddr, uint16_t dstPort, uint64_t dstMACAddr)
PCR_API PCRStatus pcrNetworkConfigCloseDevice(int handle)
PCR_API PCRStatus pcrSetSweepAtten(int handle, int atten)
PCRTriggerEdge
Definition: pcr_api.h:223
@ PCRTriggerEdgeFalling
Definition: pcr_api.h:227
@ PCRTriggerEdgeRising
Definition: pcr_api.h:225
PCR_API PCRStatus pcrGetChannelCount(int handle, int *channelCount)
PCR_API PCRStatus pcrSetSweepRefLevel(int handle, double refLevel)
PCR_API PCRStatus pcrSetStreamVrtChannelID(int handle, int channel, int streamID)
PCR_API PCRStatus pcrSetGPSTimebaseUpdate(int handle, PCRBool enabled)
PCR_API PCRStatus pcrGetChannelFreq(int handle, int channel, double *freqHz)
PCR_API PCRStatus pcrSetStreamBandwidth(int handle, double bandwidth)
PCR_API const char * pcrGetErrorString(PCRStatus status)
PCRBool
Definition: pcr_api.h:119
@ PCRBoolFalse
Definition: pcr_api.h:121
@ PCRBoolTrue
Definition: pcr_api.h:123
PCR_API PCRStatus pcrNetworkConfigSetIP(int handle, const char *addr, PCRBool nonVolatile)
PCR_API PCRStatus pcrSetStreamDataType(int handle, PCRDataType dataType)
PCR_API PCRStatus pcrGetFullDeviceDiagnostics(int handle, PCRDeviceDiagnostics *diagnostics)
PCR_API PCRStatus pcrSetVSGEnabled(int handle, PCRBool enabled)
PCR_API PCRStatus pcrSetStreamRefLevel(int handle, double refLevel)
PCR_API PCRStatus pcrSetSweepCoupling(int handle, double rbw, double vbw, double sweepTime)
PCR_API PCRStatus pcrSetFanEnabled(int handle, PCRBool enabled)
PCRDataType
Definition: pcr_api.h:129
@ PCRDataType32fc
Definition: pcr_api.h:133
@ PCRDataType16sc
Definition: pcr_api.h:131
PCR_API PCRStatus pcrSetFanSetPoint(int handle, float setPoint)
PCR_API PCRStatus pcrSweepGetParameters(int handle, double *actualRBW, double *actualVBW, double *actualStartFreq, double *binSize, int *sweepSize)
PCR_API PCRStatus pcrSweepFinish(int handle, float *sweep)
PCRSweepVideoUnits
Definition: pcr_api.h:185
@ PCRSweepVideoUnitsVoltage
Definition: pcr_api.h:189
@ PCRSweepVideoUnitsPower
Definition: pcr_api.h:191
@ PCRSweepVideoUnitsLog
Definition: pcr_api.h:187
@ PCRSweepVideoUnitsSample
Definition: pcr_api.h:193
PCR_API PCRStatus pcrGetChannelDelay(int handle, int channel, double *delay)
PCR_API PCRStatus pcrStreamRecv(int handle, void **buffers, int samples, int64_t *nsSinceEpoch, PCRBool purge, int *sampleLoss, int *samplesRemaining, double *triggers, int triggerBufSize)
PCR_API PCRStatus pcrGetGPSHoldoverInfo(int handle, PCRBool *usingGPSHoldover, uint64_t *lastHoldoverTime)
PCR_API PCRStatus pcrGetReference(int handle, PCRReference *reference)
PCR_API PCRStatus pcrGetSweep(int handle, float *sweep)
PCR_API PCRStatus pcrNetworkConfigSetPort(int handle, int port, PCRBool nonVolatile)
PCR_API const char * pcrGetAPIVersion()
PCR_API PCRStatus pcrGetFirmwareVersion(int handle, int *major, int *minor, int *revision)
PCR_API PCRStatus pcrSetReference(int handle, PCRReference reference)
PCR_API PCRStatus pcrSetStreamMode(int handle, PCRStreamMode mode)
PCR_API PCRStatus pcrSetStreamSampleRate(int handle, int decimation)
PCR_API PCRStatus pcrAbort(int handle)
PCR_API PCRStatus pcrGetDeviceDiagnostics(int handle, float *voltage, float *current, float *temperature)
PCREndianness
Definition: pcr_api.h:163
@ PCREndiannessLittle
Definition: pcr_api.h:167
@ PCREndiannessBig
Definition: pcr_api.h:165
PCR_API PCRStatus pcrStreamCorrection(int handle, int channel, float *correction)
PCR_API PCRStatus pcrSetStreamTriggerEdge(int handle, PCRTriggerEdge edge)
PCR_API PCRStatus pcrSetSweepDetector(int handle, PCRSweepDetector detector, PCRSweepVideoUnits videoUnits)
PCRStatus
Definition: pcr_api.h:241
@ PCRStatusDeviceConnectionLostErr
Definition: pcr_api.h:277
@ PCRStatusInvalidConfigurationErr
Definition: pcr_api.h:264
@ PCRStatusTempDriftWarning
Definition: pcr_api.h:295
@ PCRStatusMemoryErr
Definition: pcr_api.h:266
@ PCRStatusBufferOverflow
Definition: pcr_api.h:300
@ PCRStatusADCErr
Definition: pcr_api.h:246
@ PCRStatusSyncErr
Definition: pcr_api.h:254
@ PCRStatusIOErr
Definition: pcr_api.h:256
@ PCRStatusUncalData
Definition: pcr_api.h:289
@ PCRStatusInvalidDeviceErr
Definition: pcr_api.h:273
@ PCRStatusPairedErr
Definition: pcr_api.h:248
@ PCRStatusMaxDevicesConnectedErr
Definition: pcr_api.h:271
@ PCRStatusSettingClamped
Definition: pcr_api.h:285
@ PCRStatusInvalidParameterErr
Definition: pcr_api.h:258
@ PCRStatusDeviceNotFoundErr
Definition: pcr_api.h:279
@ PCRStatusNoError
Definition: pcr_api.h:282
@ PCRStatusNullPtrErr
Definition: pcr_api.h:275
@ PCRStatusInvalidCalData
Definition: pcr_api.h:304
@ PCRStatusADCOverflow
Definition: pcr_api.h:287
PCRSweepDetector
Definition: pcr_api.h:173
@ PCRSweepDetectorMax
Definition: pcr_api.h:179
@ PCRSweepDetectorMin
Definition: pcr_api.h:177
@ PCRSweepDetectorAvg
Definition: pcr_api.h:175
PCR_API PCRStatus pcrSweepStart(int handle)
PCRSweepScale
Definition: pcr_api.h:199
@ PCRSweepScaleLin
Definition: pcr_api.h:203
@ PCRSweepScaleFullScale
Definition: pcr_api.h:205
@ PCRSweepScaleLog
Definition: pcr_api.h:201
PCRSweepWindow
Definition: pcr_api.h:211
@ PCRSweepWindowGaussian6dB
Definition: pcr_api.h:217
@ PCRSweepWindowNutall
Definition: pcr_api.h:215
@ PCRSweepWindowFlattop
Definition: pcr_api.h:213
PCR_API PCRStatus pcrNetworkConfigGetPort(int handle, int *port)
PCR_API PCRStatus pcrSetSweepScale(int handle, PCRSweepScale scale)
PCR_API PCRStatus pcrGetSerialNumber(int handle, int *serialNumber)
PCR_API PCRStatus pcrSetChannelPhaseOffset(int handle, int channel, double phaseOffset)
PCR_API PCRStatus pcrGetGPSTimebaseUpdate(int handle, PCRBool *enabled)
PCR_API PCRStatus pcrGetChannelConfig(int handle, int *enabled, int *sweepChannel)
PCR_API PCRStatus pcrSetChannelConfig(int handle, int *enabled, int sweepChannel)
PCR_API PCRStatus pcrNetworkConfigOpenDevice(int *handle, int serialNumber)
PCR_API PCRStatus pcrNetworkConfigGetMAC(int handle, char *mac)
PCR_API PCRStatus pcrGetChannelShared(int handle, int channel, PCRBool *useSharedLO)
PCR_API PCRStatus pcrSetChannelShared(int handle, int channel, PCRBool useSharedLO)
PCR_API PCRStatus pcrSetSweepStartStop(int handle, double startHz, double stopHz)
PCR_API PCRStatus pcrCloseDevice(int handle)
PCRGPSState
Definition: pcr_api.h:149
@ PCRGPSStateNotPresent
Definition: pcr_api.h:151
@ PCRGPSStateLocked
Definition: pcr_api.h:153
@ PCRGPSStateDisciplined
Definition: pcr_api.h:157
PCR_API PCRStatus pcrPairDevice(int handle, const char *hostAddr, const char *deviceAddr, uint16_t port)
PCR_API PCRStatus pcrNetworkConfigGetDeviceList(int *serials, int *deviceCount)
PCR_API PCRStatus pcrConnectDevice(int *handle, const char *hostAddr, const char *deviceAddr, uint16_t port)
PCR_API PCRStatus pcrGetSharedFreq(int handle, double *freqHz)
PCR_API PCRStatus pcrGetCalDate(int handle, uint32_t *lastCalDate)
PCR_API PCRStatus pcrStreamParameters(int handle, int *channelCount, double *sampleRate, double *bandwidth)
PCR_API PCRStatus pcrSetStreamVrtEndianness(int handle, PCREndianness endianness)
PCRReference
Definition: pcr_api.h:139
@ PCRReferenceExternal
Definition: pcr_api.h:143
@ PCRReferenceInternal
Definition: pcr_api.h:141
PCR_API PCRStatus pcrSetLowPowerState(int handle)
PCR_API PCRStatus pcrWriteMessageToGPS(int handle, uint32_t key, uint64_t value, int valueSizeBytes)
PCR_API PCRStatus pcrInitiate(int handle)
PCR_API PCRStatus pcrNetworkConfigGetIP(int handle, char *addr)
PCRStreamMode
Definition: pcr_api.h:233
PCR_API PCRStatus pcrSetVSGPattern(int handle, void *iq, int len, PCRDataType dataType)
PCR_API PCRStatus pcrSetSweepCenterSpan(int handle, double centerHz, double spanHz)
PCR_API PCRStatus pcrSetChannelDelay(int handle, int channel, double delay)
PCR_API PCRStatus pcrSetStreamLocalAddr(int handle, uint16_t port)
PCR_API PCRStatus pcrSetSharedFreq(int handle, double freqHz)
Definition: pcr_api.h:309
float sfpTxPower
Definition: pcr_api.h:329
float sfpRxPower
Definition: pcr_api.h:331
float tempRFBoard1
Definition: pcr_api.h:323
float voltage
Definition: pcr_api.h:311
float currentInput
Definition: pcr_api.h:313
float tempMB
Definition: pcr_api.h:321
float sfpTemp
Definition: pcr_api.h:327
float tempFPGA
Definition: pcr_api.h:319
float currentOCXO
Definition: pcr_api.h:315
float current58
Definition: pcr_api.h:317
float tempRFBoard2
Definition: pcr_api.h:325