001// Copyright (c) FIRST and other WPILib contributors.
002// Open Source Software; you can modify and/or share it under the terms of
003// the WPILib BSD license file in the root directory of this project.
004
005package edu.wpi.first.hal;
006
007import java.nio.ByteBuffer;
008
009@SuppressWarnings("AbbreviationAsWordInName")
010public class SPIJNI extends JNIWrapper {
011  public static native void spiInitialize(int port);
012
013  public static native int spiTransaction(
014      int port, ByteBuffer dataToSend, ByteBuffer dataReceived, byte size);
015
016  public static native int spiTransactionB(
017      int port, byte[] dataToSend, byte[] dataReceived, byte size);
018
019  public static native int spiWrite(int port, ByteBuffer dataToSend, byte sendSize);
020
021  public static native int spiWriteB(int port, byte[] dataToSend, byte sendSize);
022
023  public static native int spiRead(int port, boolean initiate, ByteBuffer dataReceived, byte size);
024
025  public static native int spiReadB(int port, boolean initiate, byte[] dataReceived, byte size);
026
027  public static native void spiClose(int port);
028
029  public static native void spiSetSpeed(int port, int speed);
030
031  public static native void spiSetOpts(
032      int port, int msbFirst, int sampleOnTrailing, int clkIdleHigh);
033
034  public static native void spiSetChipSelectActiveHigh(int port);
035
036  public static native void spiSetChipSelectActiveLow(int port);
037
038  public static native void spiInitAuto(int port, int bufferSize);
039
040  public static native void spiFreeAuto(int port);
041
042  public static native void spiStartAutoRate(int port, double period);
043
044  public static native void spiStartAutoTrigger(
045      int port,
046      int digitalSourceHandle,
047      int analogTriggerType,
048      boolean triggerRising,
049      boolean triggerFalling);
050
051  public static native void spiStopAuto(int port);
052
053  public static native void spiSetAutoTransmitData(int port, byte[] dataToSend, int zeroSize);
054
055  public static native void spiForceAutoRead(int port);
056
057  public static native int spiReadAutoReceivedData(
058      int port, ByteBuffer buffer, int numToRead, double timeout);
059
060  public static native int spiReadAutoReceivedData(
061      int port, int[] buffer, int numToRead, double timeout);
062
063  public static native int spiGetAutoDroppedCount(int port);
064
065  public static native void spiConfigureAutoStall(
066      int port, int csToSclkTicks, int stallTicks, int pow2BytesPerRead);
067}