001/*----------------------------------------------------------------------------*/
002/* Copyright (c) FIRST 2016-2017. All Rights Reserved.                        */
003/* Open Source Software - may be modified and shared by FRC teams. The code   */
004/* must be accompanied by the FIRST BSD license file in the root directory of */
005/* the project.                                                               */
006/*----------------------------------------------------------------------------*/
007
008package edu.wpi.first.wpilibj.hal;
009
010import java.nio.ByteBuffer;
011import java.nio.LongBuffer;
012
013@SuppressWarnings("AbbreviationAsWordInName")
014public class SPIJNI extends JNIWrapper {
015  public static native void spiInitialize(byte port);
016
017  public static native int spiTransaction(byte port, ByteBuffer dataToSend,
018                                          ByteBuffer dataReceived, byte size);
019
020  public static native int spiWrite(byte port, ByteBuffer dataToSend, byte sendSize);
021
022  public static native int spiRead(byte port, ByteBuffer dataReceived, byte size);
023
024  public static native void spiClose(byte port);
025
026  public static native void spiSetSpeed(byte port, int speed);
027
028  public static native void spiSetOpts(byte port, int msbFirst, int sampleOnTrailing,
029                                       int clkIdleHigh);
030
031  public static native void spiSetChipSelectActiveHigh(byte port);
032
033  public static native void spiSetChipSelectActiveLow(byte port);
034
035  public static native void spiInitAccumulator(byte port, int period, int cmd, byte xferSize,
036                                               int validMask, int validValue, byte dataShift,
037                                               byte dataSize, boolean isSigned, boolean bigEndian);
038
039  public static native void spiFreeAccumulator(byte port);
040
041  public static native void spiResetAccumulator(byte port);
042
043  public static native void spiSetAccumulatorCenter(byte port, int center);
044
045  public static native void spiSetAccumulatorDeadband(byte port, int deadband);
046
047  public static native int spiGetAccumulatorLastValue(byte port);
048
049  public static native long spiGetAccumulatorValue(byte port);
050
051  public static native int spiGetAccumulatorCount(byte port);
052
053  public static native double spiGetAccumulatorAverage(byte port);
054
055  public static native void spiGetAccumulatorOutput(byte port, LongBuffer value,
056                                                    LongBuffer count);
057}