Files
2024-07-20 22:09:06 +08:00

123 lines
3.3 KiB
C++

/**
* @file TCA9548A_Soft.cpp
* @brief The source file of the Arduino library for the I²C Multiplexer TCA9548A_Soft.
* @author Jonas Merkle [JJM] <a href="mailto:jonas.merkle@tam-onestone.net">jonas.merkle@tam-onestone.net</a>
* @author Dominik Authaler <a href="mailto:dominik.authaler@team-onestone.net">dominik.authaler@team-onestone.net</a>
* @author
* This library is maintained by <a href="https://team-onestone.net">Team Onestone</a>.
* E-Mail: <a href="mailto:info@team-onestone.net">info@team-onestone.net</a>
* @version 1.0.2
* @date 30 October 2019
* @copyright This project is released under the GNU General Public License v3.0
*/
/**
* @mainpage Arduino library for the I²C Multiplexer TCA9548A_Soft
*
* @section intro_sec Introduction
*
* ...
*
* @section dependencies Dependencies
*
* This library depends on the <a href="https://www.arduino.cc/en/Reference/Wire">
* Wire Library</a> being present on your system. Please make sure you have
* installed the latest version before using this library.
*
* @section author Author
*
* Written by:
* - Jonas Merkle [JJM] <a href="mailto:jonas.merkle@tam-onestone.net">jonas.merkle@tam-onestone.net</a>
* - Dominik Authaler <a href="mailto:dominik.authaler@team-onestone.net">dominik.authaler@team-onestone.net</a>
*
* This library is maintained by <a href="https://team-onestone.net">Team Onestone</a>.
* E-Mail: <a href="mailto:info@team-onestone.net">info@team-onestone.net</a>
*
* @section license License
*
* This project is released under the GNU General Public License v3.0
*
*/
/////////////
// include //
/////////////
#include "TCA9548A_Soft.h"
#include <SoftwareWire.h>
/////////////
// defines //
/////////////
//////////////////
// constructors //
//////////////////
/**
* @brief Main construcor of the TCA9548A_Soft class.
*/
TCA9548A_Soft::TCA9548A_Soft() {
}
///////////////////
// init function //
///////////////////
/**
* @brief Initialize the TCA9548A_Soft Multiplexer.
*/
void TCA9548A_Soft::init(uint8_t address, SoftwareWire *theWire) {
_wire = theWire;
_addressTCA9548A_Soft = address;
_portTCA9548A_Soft = 255;
_wire->begin();
}
///////////////
// functions //
///////////////
/**
* @brief Disable the TCA9548A_Soft Multiplexer.
*/
void TCA9548A_Soft::disable() {
_portTCA9548A_Soft = 255;
// disable all ports
_wire->beginTransmission(_addressTCA9548A_Soft);
_wire->write(0);
_wire->endTransmission();
}
/**
* @brief Select the port on which the TCA9548A_Soft Multiplexer will operate.
*
* @param port the port on which the TCA9548A_Soft Multiplexer will operate.
*/
void TCA9548A_Soft::set_port(uint8_t port) {
// check if selected port is valid
if (port > 7) return;
_portTCA9548A_Soft = port;
// select port
_wire->beginTransmission(_addressTCA9548A_Soft);
_wire->write(1 << _portTCA9548A_Soft);
_wire->endTransmission();
}
/**
* @brief Get the current port on which the TCA9548A_Soft Multiplexer operates.
*
* @return the current selected port on which the TCA9548A_Soft Multiplexer operates.
*/
uint8_t TCA9548A_Soft::get_port() {
return _portTCA9548A_Soft;
}
/**
* @brief Get the version of the library.
*
* @return the current version of the library.
*/
uint16_t TCA9548A_Soft::get_version() {
return _TCA9548A_Soft_LIB_VERSION;
}