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
611PCR_API PCRStatus pcrSetFanEnabled(int handle, PCRBool enabled);
612
622PCR_API PCRStatus pcrGetFanEnabled(int handle, PCRBool *enabled);
623
634PCR_API PCRStatus pcrSetFanSetPoint(int handle, float setPoint);
635
645PCR_API PCRStatus pcrGetFanSetPoint(int handle, float *setPoint);
646
657PCR_API PCRStatus pcrGetChannelCount(int handle, int *channelCount);
658
682PCR_API PCRStatus pcrSetChannelConfig(int handle, int *enabled, int sweepChannel);
683
700PCR_API PCRStatus pcrGetChannelConfig(int handle, int *enabled, int *sweepChannel);
701
716PCR_API PCRStatus pcrSetChannelShared(int handle, int channel, PCRBool useSharedLO);
717
730PCR_API PCRStatus pcrGetChannelShared(int handle, int channel, PCRBool *useSharedLO);
731
745PCR_API PCRStatus pcrSetChannelFreq(int handle, int channel, double freqHz);
746
759PCR_API PCRStatus pcrGetChannelFreq(int handle, int channel, double *freqHz);
760
779PCR_API PCRStatus pcrSetChannelPhaseOffset(int handle, int channel, double phaseOffset);
780
795PCR_API PCRStatus pcrGetChannelPhaseOffset(int handle, int channel, double *phaseOffset);
796
813PCR_API PCRStatus pcrSetChannelDelay(int handle, int channel, double delay);
814
828PCR_API PCRStatus pcrGetChannelDelay(int handle, int channel, double *delay);
829
841PCR_API PCRStatus pcrSetSharedFreq(int handle, double freqHz);
842
852PCR_API PCRStatus pcrGetSharedFreq(int handle, double *freqHz);
853
863PCR_API PCRStatus pcrSetStreamDataType(int handle, PCRDataType dataType);
864
876PCR_API PCRStatus pcrSetStreamFullScale(int handle, PCRBool fullScale);
877
889PCR_API PCRStatus pcrSetStreamRefLevel(int handle, double refLevel);
890
902PCR_API PCRStatus pcrSetStreamAtten(int handle, int atten);
903
915PCR_API PCRStatus pcrSetStreamSampleRate(int handle, int decimation);
916
927PCR_API PCRStatus pcrSetStreamBandwidth(int handle, double bandwidth);
928
940
950PCR_API PCRStatus pcrSetStreamMode(int handle, PCRStreamMode mode);
951
972PCR_API PCRStatus pcrSetStreamLocalAddr(int handle, uint16_t port);
973
992PCR_API PCRStatus pcrSetStreamVrtAddr(int handle, int channel, const char *dstAddr, uint16_t dstPort, uint64_t dstMACAddr);
993
1006PCR_API PCRStatus pcrSetStreamVrtChannelID(int handle, int channel, int streamID);
1007
1020PCR_API PCRStatus pcrSetStreamVrtCntxInterval(int handle, PCRBool enabled, int interval);
1021
1033PCR_API PCRStatus pcrSetStreamVrtEndianness(int handle, PCREndianness endianness);
1034
1049PCR_API PCRStatus pcrSetSweepRefLevel(int handle, double refLevel);
1050
1068PCR_API PCRStatus pcrSetSweepAtten(int handle, int atten);
1069
1083PCR_API PCRStatus pcrSetSweepCenterSpan(int handle, double centerHz, double spanHz);
1084
1098PCR_API PCRStatus pcrSetSweepStartStop(int handle, double startHz, double stopHz);
1099
1115PCR_API PCRStatus pcrSetSweepCoupling(int handle, double rbw, double vbw, double sweepTime);
1116
1128PCR_API PCRStatus pcrSetSweepDetector(int handle, PCRSweepDetector detector, PCRSweepVideoUnits videoUnits);
1129
1139PCR_API PCRStatus pcrSetSweepScale(int handle, PCRSweepScale scale);
1140
1150PCR_API PCRStatus pcrSetSweepWindow(int handle, PCRSweepWindow window);
1151
1161PCR_API PCRStatus pcrSetVSGEnabled(int handle, PCRBool enabled);
1162
1172PCR_API PCRStatus pcrSetVSGLevel(int handle, double level);
1173
1190PCR_API PCRStatus pcrSetVSGPattern(int handle, void *iq, int len, PCRDataType dataType);
1191
1204PCR_API PCRStatus pcrInitiate(int handle);
1205
1215PCR_API PCRStatus pcrAbort(int handle);
1216
1231PCR_API PCRStatus pcrStreamParameters(int handle, int *channelCount, double *sampleRate, double *bandwidth);
1232
1247PCR_API PCRStatus pcrStreamCorrection(int handle, int channel, float *correction);
1248
1290PCR_API PCRStatus pcrStreamRecv(int handle,
1291 void **buffers,
1292 int samples,
1293 int64_t *nsSinceEpoch,
1294 PCRBool purge,
1295 int *sampleLoss,
1296 int *samplesRemaining,
1297 double *triggers,
1298 int triggerBufSize);
1299
1322 double *actualRBW,
1323 double *actualVBW,
1324 double *actualStartFreq,
1325 double *binSize,
1326 int *sweepSize);
1327
1340PCR_API PCRStatus pcrGetSweep(int handle, float *sweep);
1341
1349PCR_API PCRStatus pcrSweepStart(int handle);
1350
1360PCR_API PCRStatus pcrSweepFinish(int handle, float *sweep);
1361
1376PCR_API PCRStatus pcrNetworkConfigGetDeviceList(int *serials, int *deviceCount);
1377
1393PCR_API PCRStatus pcrNetworkConfigOpenDevice(int *handle, int serialNumber);
1394
1408
1424PCR_API PCRStatus pcrNetworkConfigGetMAC(int handle, char *mac);
1425
1445PCR_API PCRStatus pcrNetworkConfigSetIP(int handle, const char *addr, PCRBool nonVolatile);
1446
1463PCR_API PCRStatus pcrNetworkConfigGetIP(int handle, char *addr);
1464
1481PCR_API PCRStatus pcrNetworkConfigSetPort(int handle, int port, PCRBool nonVolatile);
1482
1496PCR_API PCRStatus pcrNetworkConfigGetPort(int handle, int *port);
1497
1513PCR_API const char* pcrGetAPIVersion();
1514
1523PCR_API const char* pcrGetErrorString(PCRStatus status);
1524
1538PCR_API PCRStatus pcrWriteMessageToGPS(int handle, uint32_t key, uint64_t value, int valueSizeBytes);
1539
1540#ifdef __cplusplus
1541} // Extern "C"
1542#endif
1543
1544#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