11#include "core/hf-core-drivers/external/hf-at25040-driver/inc/at25040.hpp"
12#include "base/BaseSpi.h"
13#include "base/BaseGpio.h"
35 bool transfer(
const uint8_t* tx, uint8_t* rx, std::size_t len,
36 uint32_t timeout_ms) {
37 return spi_.Transfer(tx, rx,
static_cast<uint16_t
>(len), timeout_ms) ==
38 hf_spi_err_t::SPI_SUCCESS;
81 bool Read(uint16_t addr, uint8_t* dst, uint16_t len)
noexcept;
91 bool Write(uint16_t addr,
const uint8_t* src, uint16_t len)
noexcept;
Shared utility functions for handler CRTP communication adapters.
Thread-safe AT25040B EEPROM façade (BaseSpi + optional /WP GPIO).
Definition At25040Handler.h:54
ProbeResult
Result of a non-destructive presence probe.
Definition At25040Handler.h:57
@ NotBound
SPI not attached / constructor-only state.
@ Present
RDSR / identity bytes look like AT25040.
@ Absent
Bus answered with no device.
at25040::Device< At25040SpiAdapter > device_
Definition At25040Handler.h:99
At25040Handler(BaseSpi &spi, BaseGpio *wp=nullptr) noexcept
Definition At25040Handler.h:67
void ParkWriteProtect() noexcept
Drive /WP active (protect) after a write burst.
Definition At25040Handler.cpp:35
BaseGpio * wp_
Definition At25040Handler.h:100
ProbeResult Probe() noexcept
SPI probe; does not parse product identity.
Definition At25040Handler.cpp:14
RtosMutex mutex_
Definition At25040Handler.h:101
bool Read(uint16_t addr, uint8_t *dst, uint16_t len) noexcept
Read len bytes starting at addr.
Definition At25040Handler.cpp:24
void ReleaseWriteProtect() noexcept
Drive /WP inactive so page writes can proceed.
Definition At25040Handler.cpp:4
uint8_t LastRdsr() const noexcept
Definition At25040Handler.h:73
bool Write(uint16_t addr, const uint8_t *src, uint16_t len) noexcept
Page-loop write. Caller owns identity / calibration policy.
Definition At25040Handler.cpp:42
At25040SpiAdapter adapter_
Definition At25040Handler.h:98
CRTP adapter mapping BaseSpi::Transfer onto at25040::SpiInterface.
Definition At25040Handler.h:22
At25040SpiAdapter(BaseSpi &spi) noexcept
Definition At25040Handler.h:25
void delay_us(uint32_t us) noexcept
Optional driver hook: sleep between RDSR polls of the write cycle.
Definition At25040Handler.h:45
BaseSpi & spi_
Definition At25040Handler.h:48
bool transfer(const uint8_t *tx, uint8_t *rx, std::size_t len, uint32_t timeout_ms)
Full-duplex transfer used by the AT25040 driver.
Definition At25040Handler.h:35
void DelayUs(uint32_t us) noexcept
Microsecond delay with automatic fallback to RTOS delay for large values.
Definition HandlerCommon.h:117