PF1550 Driver
API reference
Loading...
Searching...
No Matches
pf1550_i2c_interface.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include <cstddef>
9#include <cstdint>
10
11namespace pf1550 {
12
23enum class CtrlPin : uint8_t {
24 Standby = 0,
25 UsbVbusEn = 1,
26 UsbOtgEn = 2,
27 PmicInt = 3,
28};
29
30enum class GpioSignal : uint8_t {
31 Inactive = 0,
32 Active = 1,
33};
34
35enum class PowerMode : uint8_t {
36 Run = 0,
37 Standby = 1,
38};
39
44template <typename Derived>
46public:
47 bool Write(uint8_t addr, uint8_t reg, const uint8_t* data, size_t len) noexcept {
48 return static_cast<Derived*>(this)->Write(addr, reg, data, len);
49 }
50
51 bool Read(uint8_t addr, uint8_t reg, uint8_t* data, size_t len) noexcept {
52 return static_cast<Derived*>(this)->Read(addr, reg, data, len);
53 }
54
55 bool EnsureInitialized() noexcept {
56 return static_cast<Derived*>(this)->EnsureInitialized();
57 }
58
59 void GpioSet(CtrlPin pin, GpioSignal signal) noexcept {
60 static_cast<Derived*>(this)->GpioSet(pin, signal);
61 }
62
63 void GpioSetActive(CtrlPin pin) noexcept { GpioSet(pin, GpioSignal::Active); }
64
66
68 void DelayUs(uint32_t us) noexcept {
69 (void)us;
70 }
71
72 BusInterface(const BusInterface&) = delete;
76
77protected:
78 BusInterface() = default;
79 ~BusInterface() = default;
80};
81
82} // namespace pf1550
CRTP template interface for PF1550 bus and strap pins.
Definition pf1550_i2c_interface.hpp:45
BusInterface(BusInterface &&)=delete
BusInterface(const BusInterface &)=delete
BusInterface & operator=(BusInterface &&)=delete
bool Write(uint8_t addr, uint8_t reg, const uint8_t *data, size_t len) noexcept
Definition pf1550_i2c_interface.hpp:47
void GpioSetInactive(CtrlPin pin) noexcept
Definition pf1550_i2c_interface.hpp:65
void GpioSetActive(CtrlPin pin) noexcept
Definition pf1550_i2c_interface.hpp:63
bool EnsureInitialized() noexcept
Definition pf1550_i2c_interface.hpp:55
bool Read(uint8_t addr, uint8_t reg, uint8_t *data, size_t len) noexcept
Definition pf1550_i2c_interface.hpp:51
void GpioSet(CtrlPin pin, GpioSignal signal) noexcept
Definition pf1550_i2c_interface.hpp:59
void DelayUs(uint32_t us) noexcept
Optional delay hook — override in derived bus for profile pacing.
Definition pf1550_i2c_interface.hpp:68
BusInterface & operator=(const BusInterface &)=delete
Definition pf1550.hpp:40
CtrlPin
Platform-wired PF1550 control signals (beyond I2C).
Definition pf1550_i2c_interface.hpp:23
GpioSignal
Definition pf1550_i2c_interface.hpp:30
PowerMode
Definition pf1550_i2c_interface.hpp:35