IoAbstraction
Toggle main menu visibility
Loading...
Searching...
No Matches
src
ArduinoEEPROMAbstraction.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2018 https://www.thecoderscorner.com (Dave Cherry).
3
* This product is licensed under an Apache license, see the LICENSE file in the top-level directory.
4
*/
5
6
#if !defined(_ARDUNIO_EEPROM_ABS_H) && !defined(__MBED__) && !defined(BUILD_FOR_PICO_CMAKE)
7
#define _ARDUNIO_EEPROM_ABS_H
8
9
#include <Arduino.h>
10
#include "EEPROM.h"
11
#include "
EepromAbstraction.h
"
12
17
30
class
ArduinoEEPROMAbstraction :
public
EepromAbstraction
{
31
private
:
32
EEPROMClass* eepromProxy;
33
public
:
34
ArduinoEEPROMAbstraction(EEPROMClass* proxy) {
35
this->eepromProxy = proxy;
36
}
37
38
uint8_t
read8
(
EepromPosition
position)
override
{
39
return
eepromProxy->read(position);
40
}
41
42
uint16_t
read16
(
EepromPosition
pos)
override
{
43
return
eepromProxy->read(pos + 1) << 8 | eepromProxy->read(pos);
44
}
45
46
uint32_t
read32
(
EepromPosition
pos)
override
{
47
return
(uint32_t)eepromProxy->read(pos + 3) << 24 | (uint32_t)eepromProxy->read(pos + 2) << 16 |
48
(uint32_t)eepromProxy->read(pos + 1) << 8 | (uint32_t)eepromProxy->read(pos + 0);
49
}
50
51
void
write8
(
EepromPosition
pos, uint8_t val)
override
{
52
eepromProxy->write(pos, val);
53
}
54
55
void
write16
(
EepromPosition
pos, uint16_t val)
override
{
56
eepromProxy->write(pos, val);
57
val >>= 8;
58
eepromProxy->write(pos + 1, (uint8_t)val);
59
}
60
61
void
write32
(
EepromPosition
pos, uint32_t val)
override
{
62
eepromProxy->write(pos, (uint8_t)val);
63
val >>= 8;
64
eepromProxy->write(pos + 1, (uint8_t)val);
65
val >>= 8;
66
eepromProxy->write(pos + 2, (uint8_t)val);
67
val >>= 8;
68
eepromProxy->write(pos + 3, (uint8_t)val);
69
}
70
71
void
readIntoMemArray
(uint8_t* memDest,
EepromPosition
romSrc, uint8_t len)
override
{
72
for
(
int
i=0;i<len;i++) {
73
*memDest = eepromProxy->read(romSrc + i);
74
memDest++;
75
}
76
}
77
78
void
writeArrayToRom
(
EepromPosition
romDest,
const
uint8_t* memSrc, uint8_t len)
override
{
79
for
(
int
i=0;i<len;i++) {
80
eepromProxy->write(romDest + i, *memSrc);
81
memSrc++;
82
}
83
}
84
};
85
86
#endif
// !defined(_ARDUNIO_EEPROM_ABS_H) && !defined(_NO_EEPROM_CLASS_)
EepromAbstraction.h
Wraps up EEPROM support in a way that is compatible between implementations. For example presently th...
EepromPosition
uint16_t EepromPosition
Definition
EepromAbstraction.h:26
ArduinoEEPROMAbstraction::read32
uint32_t read32(EepromPosition pos) override
Definition
ArduinoEEPROMAbstraction.h:46
ArduinoEEPROMAbstraction::write32
void write32(EepromPosition pos, uint32_t val) override
Definition
ArduinoEEPROMAbstraction.h:61
ArduinoEEPROMAbstraction::read16
uint16_t read16(EepromPosition pos) override
Definition
ArduinoEEPROMAbstraction.h:42
ArduinoEEPROMAbstraction::write8
void write8(EepromPosition pos, uint8_t val) override
Definition
ArduinoEEPROMAbstraction.h:51
ArduinoEEPROMAbstraction::read8
uint8_t read8(EepromPosition position) override
Definition
ArduinoEEPROMAbstraction.h:38
ArduinoEEPROMAbstraction::readIntoMemArray
void readIntoMemArray(uint8_t *memDest, EepromPosition romSrc, uint8_t len) override
Definition
ArduinoEEPROMAbstraction.h:71
ArduinoEEPROMAbstraction::writeArrayToRom
void writeArrayToRom(EepromPosition romDest, const uint8_t *memSrc, uint8_t len) override
Definition
ArduinoEEPROMAbstraction.h:78
ArduinoEEPROMAbstraction::write16
void write16(EepromPosition pos, uint16_t val) override
Definition
ArduinoEEPROMAbstraction.h:55
EepromAbstraction
Definition
EepromAbstraction.h:33