mirror of
https://github.com/letscontrolit/ESPEasy.git
synced 2026-07-28 04:07:47 +00:00
139 lines
2.9 KiB
C++
139 lines
2.9 KiB
C++
#include "Port_ESPEasySerial_I2C_SC16IS752.h"
|
|
|
|
|
|
#if USES_I2C_SC16IS752
|
|
|
|
|
|
Port_ESPEasySerial_I2C_SC16IS752_t::Port_ESPEasySerial_I2C_SC16IS752_t(const ESPEasySerialConfig& config)
|
|
{
|
|
if (config.port == ESPEasySerialPort::sc16is752) {
|
|
ESPEasySC16IS752_Serial::I2C_address addr;
|
|
ESPEasySC16IS752_Serial::SC16IS752_channel ch;
|
|
|
|
if (config.getI2C_SC16IS752_Parameters(addr, ch)) {
|
|
_config = config;
|
|
_config.rxBuffSize = 64; // Fixed size
|
|
_config.txBuffSize = 64; // Fixed size
|
|
_i2cserial = new (std::nothrow) ESPEasySC16IS752_Serial(addr, ch);
|
|
}
|
|
}
|
|
}
|
|
|
|
Port_ESPEasySerial_I2C_SC16IS752_t::~Port_ESPEasySerial_I2C_SC16IS752_t()
|
|
{
|
|
if (_i2cserial != nullptr) {
|
|
delete _i2cserial;
|
|
_i2cserial = nullptr;
|
|
}
|
|
}
|
|
|
|
void Port_ESPEasySerial_I2C_SC16IS752_t::begin(unsigned long baud)
|
|
{
|
|
if (_i2cserial != nullptr) {
|
|
_config.baud = baud;
|
|
_i2cserial->begin(baud);
|
|
}
|
|
}
|
|
|
|
void Port_ESPEasySerial_I2C_SC16IS752_t::end() {
|
|
if (_i2cserial != nullptr) {
|
|
_i2cserial->end();
|
|
}
|
|
}
|
|
|
|
int Port_ESPEasySerial_I2C_SC16IS752_t::available(void)
|
|
{
|
|
if (_i2cserial != nullptr) {
|
|
return _i2cserial->available();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int Port_ESPEasySerial_I2C_SC16IS752_t::availableForWrite(void)
|
|
{
|
|
if (_i2cserial != nullptr) {
|
|
// FIXME TD-er: Implement availableForWrite
|
|
return 4; // _i2cserial->availableForWrite();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int Port_ESPEasySerial_I2C_SC16IS752_t::peek(void)
|
|
{
|
|
if (_i2cserial != nullptr) {
|
|
return _i2cserial->peek();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int Port_ESPEasySerial_I2C_SC16IS752_t::read(void)
|
|
{
|
|
if (_i2cserial != nullptr) {
|
|
return _i2cserial->read();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
size_t Port_ESPEasySerial_I2C_SC16IS752_t::read(uint8_t *buffer,
|
|
size_t size)
|
|
{
|
|
if (_i2cserial != nullptr) {
|
|
return _i2cserial->readBytes((char *)buffer, size);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void Port_ESPEasySerial_I2C_SC16IS752_t::flush(void)
|
|
{
|
|
if (_i2cserial != nullptr) {
|
|
return _i2cserial->flush();
|
|
}
|
|
}
|
|
|
|
void Port_ESPEasySerial_I2C_SC16IS752_t::flush(bool txOnly)
|
|
{
|
|
flush();
|
|
}
|
|
|
|
size_t Port_ESPEasySerial_I2C_SC16IS752_t::write(uint8_t value)
|
|
{
|
|
if (_i2cserial != nullptr) {
|
|
return _i2cserial->write(value);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
size_t Port_ESPEasySerial_I2C_SC16IS752_t::write(const uint8_t *buffer,
|
|
size_t size)
|
|
{
|
|
if (_i2cserial != nullptr) {
|
|
return _i2cserial->write(buffer, size);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
Port_ESPEasySerial_I2C_SC16IS752_t::operator bool() const
|
|
{
|
|
return _i2cserial != nullptr;
|
|
}
|
|
|
|
void Port_ESPEasySerial_I2C_SC16IS752_t::setDebugOutput(bool) {}
|
|
|
|
size_t Port_ESPEasySerial_I2C_SC16IS752_t::setRxBufferSize(size_t new_size)
|
|
{
|
|
if (_i2cserial != nullptr) {
|
|
return 64;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
size_t Port_ESPEasySerial_I2C_SC16IS752_t::setTxBufferSize(size_t new_size)
|
|
{
|
|
if (_i2cserial != nullptr) {
|
|
return 64;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
#endif // ifndef DISABLE_SC16IS752_Serial
|