001package com.pi4j.io.i2c;
002
003/*
004 * #%L
005 * **********************************************************************
006 * ORGANIZATION  :  Pi4J
007 * PROJECT       :  Pi4J :: Java Library (Core)
008 * FILENAME      :  I2CBus.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
032import java.io.IOException;
033
034/**
035 * This is abstraction of i2c bus. This interface allows the bus to return i2c device.
036 *
037 * @author Daniel Sendula, refactored by <a href="http://raspelikan.blogspot.co.at">RasPelikan</a>
038 */
039public interface I2CBus {
040
041    int BUS_0 = 0;
042    int BUS_1 = 1;
043    int BUS_2 = 2;
044    int BUS_3 = 3;
045    int BUS_4 = 4;
046    int BUS_5 = 5;
047    int BUS_6 = 6;
048    int BUS_7 = 7;
049    int BUS_8 = 8;
050    int BUS_9 = 9;
051    int BUS_10 = 10;
052    int BUS_11 = 11;
053    int BUS_12 = 12;
054    int BUS_13 = 13;
055    int BUS_14 = 14;
056    int BUS_15 = 15;
057    int BUS_16 = 16;
058    int BUS_17 = 17;
059
060    /**
061     * Returns i2c device.
062     * @param address i2c device's address
063     * @return i2c device
064     *
065     * @throws IOException thrown in case this bus cannot return i2c device.
066     */
067    I2CDevice getDevice(int address) throws IOException;
068
069    /**
070     * @return The bus' number
071     */
072    int getBusNumber();
073
074    /**
075     * Closes this bus. This usually means closing underlying file.
076     *
077     * @throws IOException thrown in case there are problems closing this i2c bus.
078     */
079    void close() throws IOException;
080}