// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #ifndef PUREPHONE_RT1051DRIVERI2C_HPP #define PUREPHONE_RT1051DRIVERI2C_HPP #include "drivers/i2c/DriverI2C.hpp" #include #include #include "board/clock_config.h" #include "mutex.hpp" namespace drivers { class RT1051DriverI2C : public DriverI2C { public: RT1051DriverI2C(const I2CInstances inst, const DriverI2CParams ¶ms); ~RT1051DriverI2C(); void ReInit(void) override final; ssize_t Write(const I2CAddress &addr, const uint8_t *txBuff, const size_t size) override final; ssize_t Read(const I2CAddress &addr, uint8_t *rxBuff, const size_t size) override final; ssize_t Modify(const I2CAddress &addr, const uint32_t mask, bool setClr, const size_t size) override final; private: status_t BOARD_LPI2C_Receive(LPI2C_Type *base, uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize); status_t BOARD_LPI2C_Send(LPI2C_Type *base, uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *txBuff, uint8_t txBuffSize); LPI2C_Type *base; cpp_freertos::MutexStandard mutex; }; } // namespace drivers #endif // PUREPHONE_RT1051DRIVERI2C_HPP