001/*----------------------------------------------------------------------------*/
002/* Copyright (c) 2016-2018 FIRST. 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;
011
012@SuppressWarnings("AbbreviationAsWordInName")
013public class SPIJNI extends JNIWrapper {
014  public static native void spiInitialize(int port);
015
016  public static native int spiTransaction(int port, ByteBuffer dataToSend,
017                                          ByteBuffer dataReceived, byte size);
018
019  public static native int spiTransactionB(int port, byte[] dataToSend,
020                                           byte[] dataReceived, byte size);
021
022  public static native int spiWrite(int port, ByteBuffer dataToSend, byte sendSize);
023
024  public static native int spiWriteB(int port, byte[] dataToSend, byte sendSize);
025
026  public static native int spiRead(int port, boolean initiate, ByteBuffer dataReceived, byte size);
027
028  public static native int spiReadB(int port, boolean initiate, byte[] dataReceived, byte size);
029
030  public static native void spiClose(int port);
031
032  public static native void spiSetSpeed(int port, int speed);
033
034  public static native void spiSetOpts(int port, int msbFirst, int sampleOnTrailing,
035                                       int clkIdleHigh);
036
037  public static native void spiSetChipSelectActiveHigh(int port);
038
039  public static native void spiSetChipSelectActiveLow(int port);
040
041  public static native void spiInitAuto(int port, int bufferSize);
042
043  public static native void spiFreeAuto(int port);
044
045  public static native void spiStartAutoRate(int port, double period);
046
047  public static native void spiStartAutoTrigger(int port, int digitalSourceHandle,
048                                                int analogTriggerType, 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(int port, ByteBuffer buffer, int numToRead,
058                                                   double timeout);
059
060  public static native int spiReadAutoReceivedData(int port, byte[] buffer, int numToRead,
061                                                   double timeout);
062
063  public static native int spiGetAutoDroppedCount(int port);
064}