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
117#define PCR_MIN_CHANNEL_DELAY (-25.0e-9)
119#define PCR_MAX_CHANNEL_DELAY (25.0e-9)
120
124typedef enum PCRBool {
128 PCRBoolTrue = 1
130
134typedef enum PCRDataType {
140
144typedef enum PCRReference {
150
154typedef enum PCRGPSState {
164
168typedef enum PCREndianness {
174
178typedef enum PCRSweepDetector {
186
190typedef enum PCRSweepVideoUnits {
200
204typedef enum PCRSweepScale {
212
216typedef enum PCRSweepWindow {
224
228typedef enum PCRTriggerEdge {
234
238typedef enum PCRStreamMode {
239 PCRStreamModeLocal = 0,
240 PCRStreamModeVRT = 1
242
246typedef enum PCRStatus {
293
296
318
320
322typedef struct PCRDeviceDiagnostics {
324 float voltage;
332 float tempFPGA;
334 float tempMB;
340 float sfpTemp;
346
347#ifdef __cplusplus
348extern "C" {
349#endif
350
377PCR_API PCRStatus pcrConnectDevice(int *handle,
378 const char *hostAddr,
379 const char *deviceAddr,
380 uint16_t port);
381
404PCR_API PCRStatus pcrPairDevice(int handle,
405 const char *hostAddr,
406 const char *deviceAddr,
407 uint16_t port);
408
423PCR_API PCRStatus pcrCloseDevice(int handle);
424
435PCR_API PCRStatus pcrGetSerialNumber(int handle, int *serialNumber);
436
452PCR_API PCRStatus pcrGetFirmwareVersion(int handle, int *major, int *minor, int *revision);
453
464PCR_API PCRStatus pcrGetCalDate(int handle, uint32_t *lastCalDate);
465
479PCR_API PCRStatus pcrGetDeviceDiagnostics(int handle, float *voltage, float *current, float *temperature);
480
491
505PCR_API PCRStatus pcrSetLowPowerState(int handle);
506
520PCR_API PCRStatus pcrSetReference(int handle, PCRReference reference);
521
530PCR_API PCRStatus pcrGetReference(int handle, PCRReference *reference);
531
543PCR_API PCRStatus pcrSetGPSTimebaseUpdate(int handle, PCRBool enabled);
544
554PCR_API PCRStatus pcrGetGPSTimebaseUpdate(int handle, PCRBool *enabled);
555
573PCR_API PCRStatus pcrGetGPSHoldoverInfo(int handle, PCRBool *usingGPSHoldover, uint64_t *lastHoldoverTime);
574
582PCR_API PCRStatus pcrGetGPSState(int handle, PCRGPSState *state);
583
612PCR_API PCRStatus pcrGetGPSInfo(int handle, PCRBool refresh, PCRBool *updated, int64_t *secSinceEpoch,
613 double *latitude, double *longitude, double *altitude);
614
628PCR_API PCRStatus pcrWriteMessageToGPS(int handle, uint32_t key, uint64_t value, int valueSizeBytes);
629
639PCR_API PCRStatus pcrSetFanEnabled(int handle, PCRBool enabled);
640
650PCR_API PCRStatus pcrGetFanEnabled(int handle, PCRBool *enabled);
651
662PCR_API PCRStatus pcrSetFanSetPoint(int handle, float setPoint);
663
673PCR_API PCRStatus pcrGetFanSetPoint(int handle, float *setPoint);
674
685PCR_API PCRStatus pcrGetChannelCount(int handle, int *channelCount);
686
710PCR_API PCRStatus pcrSetChannelConfig(int handle, const int *enabled, int sweepChannel);
711
728PCR_API PCRStatus pcrGetChannelConfig(int handle, int *enabled, int *sweepChannel);
729
744PCR_API PCRStatus pcrSetChannelShared(int handle, int channel, PCRBool useSharedLO);
745
758PCR_API PCRStatus pcrGetChannelShared(int handle, int channel, PCRBool *useSharedLO);
759
773PCR_API PCRStatus pcrSetChannelFreq(int handle, int channel, double freqHz);
774
787PCR_API PCRStatus pcrGetChannelFreq(int handle, int channel, double *freqHz);
788
807PCR_API PCRStatus pcrSetChannelPhaseOffset(int handle, int channel, double phaseOffset);
808
823PCR_API PCRStatus pcrGetChannelPhaseOffset(int handle, int channel, double *phaseOffset);
824
842PCR_API PCRStatus pcrSetChannelDelay(int handle, int channel, double delay);
843
857PCR_API PCRStatus pcrGetChannelDelay(int handle, int channel, double *delay);
858
870PCR_API PCRStatus pcrSetSharedFreq(int handle, double freqHz);
871
881PCR_API PCRStatus pcrGetSharedFreq(int handle, double *freqHz);
882
892PCR_API PCRStatus pcrSetStreamDataType(int handle, PCRDataType dataType);
893
905PCR_API PCRStatus pcrSetStreamFullScale(int handle, PCRBool fullScale);
906
918PCR_API PCRStatus pcrSetStreamRefLevel(int handle, double refLevel);
919
931PCR_API PCRStatus pcrSetStreamAtten(int handle, int atten);
932
944PCR_API PCRStatus pcrSetStreamSampleRate(int handle, int decimation);
945
956PCR_API PCRStatus pcrSetStreamBandwidth(int handle, double bandwidth);
957
969
979PCR_API PCRStatus pcrSetStreamMode(int handle, PCRStreamMode mode);
980
1007 int handle,
1008 int deviceIndex,
1009 uint16_t port);
1010
1030 int handle,
1031 int channel,
1032 const char *dstAddr,
1033 uint16_t dstPort,
1034 uint64_t dstMACAddr);
1035
1048PCR_API PCRStatus pcrSetStreamVrtChannelID(int handle, int channel, int streamID);
1049
1062PCR_API PCRStatus pcrSetStreamVrtCntxInterval(int handle, PCRBool enabled, int interval);
1063
1075PCR_API PCRStatus pcrSetStreamVrtEndianness(int handle, PCREndianness endianness);
1076
1091PCR_API PCRStatus pcrSetSweepRefLevel(int handle, double refLevel);
1092
1110PCR_API PCRStatus pcrSetSweepAtten(int handle, int atten);
1111
1125PCR_API PCRStatus pcrSetSweepCenterSpan(int handle, double centerHz, double spanHz);
1126
1140PCR_API PCRStatus pcrSetSweepStartStop(int handle, double startHz, double stopHz);
1141
1157PCR_API PCRStatus pcrSetSweepCoupling(int handle, double rbw, double vbw, double sweepTime);
1158
1170PCR_API PCRStatus pcrSetSweepDetector(int handle, PCRSweepDetector detector, PCRSweepVideoUnits videoUnits);
1171
1181PCR_API PCRStatus pcrSetSweepScale(int handle, PCRSweepScale scale);
1182
1192PCR_API PCRStatus pcrSetSweepWindow(int handle, PCRSweepWindow window);
1193
1206PCR_API PCRStatus pcrSetVSGEnabled(int handle, PCRBool enabled);
1207
1222PCR_API PCRStatus pcrSetVSGLevel(int handle, double level);
1223
1244PCR_API PCRStatus pcrSetVSGPattern(int handle, void *iq, int len, PCRDataType dataType);
1245
1258PCR_API PCRStatus pcrInitiate(int handle);
1259
1269PCR_API PCRStatus pcrAbort(int handle);
1270
1285PCR_API PCRStatus pcrStreamParameters(int handle, int *channelCount, double *sampleRate, double *bandwidth);
1286
1301PCR_API PCRStatus pcrStreamCorrection(int handle, int channel, float *correction);
1302
1344PCR_API PCRStatus pcrStreamRecv(int handle,
1345 void **buffers,
1346 int samples,
1347 int64_t *nsSinceEpoch,
1348 PCRBool purge,
1349 int *sampleLoss,
1350 int *samplesRemaining,
1351 double *triggers,
1352 int triggerBufSize);
1353
1376 double *actualRBW,
1377 double *actualVBW,
1378 double *actualStartFreq,
1379 double *binSize,
1380 int *sweepSize);
1381
1394PCR_API PCRStatus pcrGetSweep(int handle, float *sweep);
1395
1403PCR_API PCRStatus pcrSweepStart(int handle);
1404
1415PCR_API PCRStatus pcrSweepFinish(int handle, float *sweep);
1416
1431PCR_API PCRStatus pcrNetworkConfigGetDeviceList(int *serials, int *deviceCount);
1432
1448PCR_API PCRStatus pcrNetworkConfigOpenDevice(int *handle, int serialNumber);
1449
1463
1479PCR_API PCRStatus pcrNetworkConfigGetMAC(int handle, char *mac);
1480
1500PCR_API PCRStatus pcrNetworkConfigSetIP(int handle, const char *addr, PCRBool nonVolatile);
1501
1518PCR_API PCRStatus pcrNetworkConfigGetIP(int handle, char *addr);
1519
1536PCR_API PCRStatus pcrNetworkConfigSetPort(int handle, int port, PCRBool nonVolatile);
1537
1551PCR_API PCRStatus pcrNetworkConfigGetPort(int handle, int *port);
1552
1568PCR_API const char* pcrGetAPIVersion();
1569
1578PCR_API const char* pcrGetErrorString(PCRStatus status);
1579
1580#ifdef __cplusplus
1581} // Extern "C"
1582#endif
1583
1584#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:228
@ PCRTriggerEdgeFalling
Definition: pcr_api.h:232
@ PCRTriggerEdgeRising
Definition: pcr_api.h:230
PCR_API PCRStatus pcrGetChannelCount(int handle, int *channelCount)
PCR_API PCRStatus pcrSetSweepRefLevel(int handle, double refLevel)
PCR_API PCRStatus pcrSetStreamLocalAddr(int handle, int deviceIndex, uint16_t port)
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:124
@ PCRBoolFalse
Definition: pcr_api.h:126
@ PCRBoolTrue
Definition: pcr_api.h:128
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:134
@ PCRDataType32fc
Definition: pcr_api.h:138
@ PCRDataType16sc
Definition: pcr_api.h:136
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:190
@ PCRSweepVideoUnitsVoltage
Definition: pcr_api.h:194
@ PCRSweepVideoUnitsPower
Definition: pcr_api.h:196
@ PCRSweepVideoUnitsLog
Definition: pcr_api.h:192
@ PCRSweepVideoUnitsSample
Definition: pcr_api.h:198
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:168
@ PCREndiannessLittle
Definition: pcr_api.h:172
@ PCREndiannessBig
Definition: pcr_api.h:170
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:246
@ PCRStatusDeviceConnectionLostErr
Definition: pcr_api.h:290
@ PCRStatusInvalidConfigurationErr
Definition: pcr_api.h:277
@ PCRStatusTempDriftWarning
Definition: pcr_api.h:308
@ PCRStatusMemoryErr
Definition: pcr_api.h:279
@ PCRStatusBufferOverflow
Definition: pcr_api.h:313
@ PCRStatusADCErr
Definition: pcr_api.h:259
@ PCRStatusSyncErr
Definition: pcr_api.h:267
@ PCRStatusIOErr
Definition: pcr_api.h:269
@ PCRStatusSweepActiveErr
Definition: pcr_api.h:254
@ PCRStatusUncalData
Definition: pcr_api.h:302
@ PCRStatusInvalidDeviceErr
Definition: pcr_api.h:286
@ PCRStatusPairedErr
Definition: pcr_api.h:261
@ PCRStatusMaxDevicesConnectedErr
Definition: pcr_api.h:284
@ PCRStatusSettingClamped
Definition: pcr_api.h:298
@ PCRStatusInvalidParameterErr
Definition: pcr_api.h:271
@ PCRStatusDeviceNotFoundErr
Definition: pcr_api.h:292
@ PCRStatusNoError
Definition: pcr_api.h:295
@ PCRStatusSweepNotActiveErr
Definition: pcr_api.h:250
@ PCRStatusNullPtrErr
Definition: pcr_api.h:288
@ PCRStatusInvalidCalData
Definition: pcr_api.h:317
@ PCRStatusADCOverflow
Definition: pcr_api.h:300
PCRSweepDetector
Definition: pcr_api.h:178
@ PCRSweepDetectorMax
Definition: pcr_api.h:184
@ PCRSweepDetectorMin
Definition: pcr_api.h:182
@ PCRSweepDetectorAvg
Definition: pcr_api.h:180
PCR_API PCRStatus pcrSweepStart(int handle)
PCRSweepScale
Definition: pcr_api.h:204
@ PCRSweepScaleLin
Definition: pcr_api.h:208
@ PCRSweepScaleFullScale
Definition: pcr_api.h:210
@ PCRSweepScaleLog
Definition: pcr_api.h:206
PCRSweepWindow
Definition: pcr_api.h:216
@ PCRSweepWindowGaussian6dB
Definition: pcr_api.h:222
@ PCRSweepWindowNutall
Definition: pcr_api.h:220
@ PCRSweepWindowFlattop
Definition: pcr_api.h:218
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 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:154
@ PCRGPSStateNotPresent
Definition: pcr_api.h:156
@ PCRGPSStateLocked
Definition: pcr_api.h:158
@ PCRGPSStateDisciplined
Definition: pcr_api.h:162
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 pcrSetChannelConfig(int handle, const int *enabled, int sweepChannel)
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:144
@ PCRReferenceExternal
Definition: pcr_api.h:148
@ PCRReferenceInternal
Definition: pcr_api.h:146
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:238
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 pcrSetSharedFreq(int handle, double freqHz)
Definition: pcr_api.h:322
float sfpTxPower
Definition: pcr_api.h:342
float sfpRxPower
Definition: pcr_api.h:344
float tempRFBoard1
Definition: pcr_api.h:336
float voltage
Definition: pcr_api.h:324
float currentInput
Definition: pcr_api.h:326
float tempMB
Definition: pcr_api.h:334
float sfpTemp
Definition: pcr_api.h:340
float tempFPGA
Definition: pcr_api.h:332
float currentOCXO
Definition: pcr_api.h:328
float current58
Definition: pcr_api.h:330
float tempRFBoard2
Definition: pcr_api.h:338