001/*
002 * Copyright (C) Cross The Road Electronics.  All rights reserved.
003 * License information can be found in CTRE_LICENSE.txt
004 * For support and suggestions contact support@ctr-electronics.com or file
005 * an issue tracker at https://github.com/CrossTheRoadElec/Phoenix-Releases
006 */
007package com.ctre.phoenix6.jni;
008
009public class StatusSignalJNI extends CtreJniWrapper implements Cloneable {
010    public String network = ""; // don't let this be null
011    public int deviceHash;
012    public int spn;
013    public double value;
014    public double hwtimeStampSeconds;
015    public double swtimeStampSeconds;
016    public double ecutimeStampSeconds;
017    public int statusCode;
018
019    public native String JNI_GetUnits();
020
021    public native int JNI_RefreshSignal(double timeoutSeconds);
022
023    public native int JNI_WaitForSignal(double timeoutSeconds);
024
025    public static native int JNI_WaitForAll(String network, double timeoutSeconds,
026            StatusSignalJNI[] signals);
027
028    public native int JNI_SetUpdateFrequency(double frequencyHz, double timeoutSeconds);
029    public static native int JNI_SetUpdateFrequencyForAll(double frequencyHz, StatusSignalJNI[] signals, double timeoutSeconds);
030    public native double JNI_GetAppliedUpdateFrequency();
031    public static native int JNI_OptimizeUpdateFrequencies(String network, int deviceHash, double optimizedFreqHz, double timeoutSeconds);
032
033    @Override
034    public StatusSignalJNI clone() {
035        var retval = new StatusSignalJNI();
036        retval.network = network;
037        retval.deviceHash = deviceHash;
038        retval.spn = spn;
039        return retval;
040    }
041}