28 unsigned int storageStartingOffset = 0)
29 :
Storage(storageStartingOffset), fram(clk, miso, mosi, framCs) {
30 setStateSavePeriod(SUPLA_FRAM_WRITING_PERIOD);
33 explicit FramSpi(int8_t framCs,
unsigned int storageStartingOffset = 0)
34 :
Storage(storageStartingOffset), fram(framCs) {
35 setStateSavePeriod(SUPLA_FRAM_WRITING_PERIOD);
40 SUPLA_LOG_INFO(
"Storage: FRAM found");
42 SUPLA_LOG_INFO(
"Storage: FRAM not found");
45 return Storage::init();
52 int readStorage(
unsigned int offset,
56 for (
int i = 0; i < size; i++) {
57 buf[i] = fram.read8(offset + i);
60 static constexpr uint8_t MaxLogBytes = 32;
61 static constexpr uint16_t LogBufferSize = MaxLogBytes * 3 + 1;
63 uint8_t sizeMax = (size > MaxLogBytes) ? MaxLogBytes : size;
65 char logBuffer[LogBufferSize] = {};
68 for (uint8_t i = 0; i < sizeMax && logSize < LogBufferSize - 1; i++) {
70 logBuffer + logSize, LogBufferSize - logSize,
"%02X ", buf[i]);
74 "FRAM: Read %d bytes [%s] (offset %d)", size, logBuffer, offset);
80 int writeStorage(
unsigned int offset,
81 const unsigned char *buf,
83 fram.writeEnable(
true);
84 fram.write(offset,
const_cast<uint8_t *
>(buf), size);
85 fram.writeEnable(
false);
87 SUPLA_LOG_INFO(
"FRAM: Wrote %d bytes (offset %d)", size, offset);
92 Adafruit_FRAM_SPI fram;