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:  http://www.pi4j.com/
012 * **********************************************************************
013 * %%
014 * Copyright (C) 2012 - 2016 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_10 = 10;
047    int BUS_11 = 11;
048    int BUS_12 = 12;
049    int BUS_13 = 13;
050    int BUS_14 = 14;
051    int BUS_15 = 15;
052    int BUS_16 = 16;
053    int BUS_17 = 17;
054
055    /**
056     * Returns i2c device.
057     * @param address i2c device's address
058     * @return i2c device
059     *
060     * @throws IOException thrown in case this bus cannot return i2c device.
061     */
062    I2CDevice getDevice(int address) throws IOException;
063
064    /**
065     * @return The bus' number
066     */
067    int getBusNumber();
068
069    /**
070     * Closes this bus. This usually means closing underlying file.
071     *
072     * @throws IOException thrown in case there are problems closing this i2c bus.
073     */
074    void close() throws IOException;
075}