001package com.pi4j.io.spi; 002 003/* 004 * #%L 005 * ********************************************************************** 006 * ORGANIZATION : Pi4J 007 * PROJECT : Pi4J :: Java Library (Core) 008 * FILENAME : SpiDevice.java 009 * 010 * This file is part of the Pi4J project. More information about 011 * this project can be found here: https://www.pi4j.com/ 012 * ********************************************************************** 013 * %% 014 * Copyright (C) 2012 - 2021 Pi4J 015 * %% 016 * This program is free software: you can redistribute it and/or modify 017 * it under the terms of the GNU Lesser General Public License as 018 * published by the Free Software Foundation, either version 3 of the 019 * License, or (at your option) any later version. 020 * 021 * This program is distributed in the hope that it will be useful, 022 * but WITHOUT ANY WARRANTY; without even the implied warranty of 023 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 024 * GNU General Lesser Public License for more details. 025 * 026 * You should have received a copy of the GNU General Lesser Public 027 * License along with this program. If not, see 028 * <http://www.gnu.org/licenses/lgpl-3.0.html>. 029 * #L% 030 */ 031 032 033import java.io.*; 034import java.nio.ByteBuffer; 035import java.nio.charset.Charset; 036 037public interface SpiDevice { 038 039 public static final SpiMode DEFAULT_SPI_MODE = SpiMode.MODE_0; 040 public static final int DEFAULT_SPI_SPEED = 1000000; // 1MHz (range is 500kHz - 32MHz) 041 public static final int MAX_SUPPORTED_BYTES = 2048; 042 043 /** 044 * Attempts to read/write data through this SPI device 045 * 046 * @param data 047 * bytes (encoded in string) to write to the SPI device 048 * @param charset 049 * character encoding for bytes in string 050 * @return resulting bytes read from the SPI device after the write operation 051 */ 052 public String write(String data, Charset charset) throws IOException; 053 054 /** 055 * Attempts to read/write data through this SPI device 056 * 057 * @param data 058 * bytes (encoded in string) to write to the SPI device 059 * @param charset 060 * character encoding for bytes in string 061 * @return resulting bytes read from the SPI device after the write operation 062 */ 063 public String write(String data, String charset) throws IOException; 064 065 /** 066 * Attempts to read/write data through this SPI device 067 * 068 * @param data 069 * bytes to write to the SPI device 070 * @return resulting bytes read from the SPI device after the write operation 071 */ 072 public ByteBuffer write(ByteBuffer data) throws IOException; 073 074 /** 075 * Attempts to read/write data through this SPI device 076 * 077 * @param input 078 * input stream to read from to get 079 * bytes to write to the SPI device 080 * @return resulting bytes read from the SPI device after the write operation 081 */ 082 public byte[] write(InputStream input) throws IOException; 083 084 /** 085 * Attempts to read/write data through this SPI device 086 * 087 * @param input 088 * input stream to read from to get 089 * bytes to write to the SPI device 090 * @param output 091 * output stream to write bytes 092 * read from the SPI device 093 * @return number of resulting bytes read from the SPI device and written to the output stream 094 */ 095 public int write(InputStream input, OutputStream output) throws IOException; 096 097 /** 098 * Attempts to read/write data through this SPI device 099 * 100 * @param data 101 * bytes to write to the SPI device 102 * @param start 103 * start index position in the data buffer to start writing from 104 * @param length 105 * length of bytes to write from the data buffer 106 * @return resulting bytes read from the SPI device after the write operation 107 */ 108 public byte[] write(byte[] data, int start, int length) throws IOException; 109 110 /** 111 * Attempts to read/write data through this SPI device 112 * 113 * @param data 114 * bytes to write to the SPI device 115 * @return resulting bytes read from the SPI device after the write operation 116 */ 117 public byte[] write(byte ... data) throws IOException; 118 119 /** 120 * Attempts to read/write data through this SPI device 121 * 122 * @param data 123 * bytes to write to the SPI device 124 * @param start 125 * start index position in the data buffer to start writing from 126 * @param length 127 * length of bytes to write from the data buffer 128 * @return resulting bytes read from the SPI device after the write operation 129 */ 130 public short[] write(short[] data, int start, int length) throws IOException; 131 132 /** 133 * Attempts to read/write data through this SPI device 134 * 135 * @param data 136 * bytes to write to the SPI device (Note: short value should not exceed 255.) 137 * @return resulting bytes read from the SPI device after the write operation 138 */ 139 public short[] write(short ... data) throws IOException; 140 141}