mirror of
https://github.com/lumapu/ahoy.git
synced 2025-06-30 00:07:03 +02:00
* new structure
* slim definitions of fields and units * prepared multi inverter setup (not finished now)
This commit is contained in:
parent
58d79beb8c
commit
d0731f7065
17 changed files with 813 additions and 672 deletions
|
@ -2,29 +2,132 @@
|
|||
#define __EEP_H__
|
||||
|
||||
#include "Arduino.h"
|
||||
#include <EEPROM.h>
|
||||
|
||||
class eep {
|
||||
public:
|
||||
eep();
|
||||
~eep();
|
||||
eep() {
|
||||
EEPROM.begin(500);
|
||||
}
|
||||
~eep() {
|
||||
EEPROM.end();
|
||||
}
|
||||
|
||||
void read(uint32_t addr, char *str, uint8_t length);
|
||||
void read(uint32_t addr, float *value);
|
||||
void read(uint32_t addr, bool *value);
|
||||
void read(uint32_t addr, uint8_t *value);
|
||||
void read(uint32_t addr, uint8_t data[], uint8_t length);
|
||||
void read(uint32_t addr, uint16_t *value);
|
||||
void read(uint32_t addr, uint32_t *value);
|
||||
void write(uint32_t addr, const char *str, uint8_t length);
|
||||
void write(uint32_t addr, uint8_t data[], uint8_t length);
|
||||
void write(uint32_t addr, float value);
|
||||
void write(uint32_t addr, bool value);
|
||||
void write(uint32_t addr, uint8_t value);
|
||||
void write(uint32_t addr, uint16_t value);
|
||||
void write(uint32_t addr, uint32_t value);
|
||||
void read(uint32_t addr, char *str, uint8_t length) {
|
||||
for(uint8_t i = 0; i < length; i ++) {
|
||||
*(str++) = (char)EEPROM.read(addr++);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
void read(uint32_t addr, float *value) {
|
||||
uint8_t *p = (uint8_t*)value;
|
||||
for(uint8_t i = 0; i < 4; i ++) {
|
||||
*(p++) = (uint8_t)EEPROM.read(addr++);
|
||||
}
|
||||
}
|
||||
|
||||
void read(uint32_t addr, bool *value) {
|
||||
uint8_t intVal = 0x00;
|
||||
intVal = EEPROM.read(addr++);
|
||||
*value = (intVal == 0x01);
|
||||
}
|
||||
|
||||
void read(uint32_t addr, uint8_t *value) {
|
||||
*value = (EEPROM.read(addr++));
|
||||
}
|
||||
|
||||
void read(uint32_t addr, uint8_t data[], uint8_t length) {
|
||||
for(uint8_t i = 0; i < length; i ++) {
|
||||
*(data++) = EEPROM.read(addr++);
|
||||
}
|
||||
}
|
||||
|
||||
void read(uint32_t addr, uint16_t *value) {
|
||||
*value = (EEPROM.read(addr++) << 8);
|
||||
*value |= (EEPROM.read(addr++));
|
||||
}
|
||||
|
||||
void read(uint32_t addr, uint32_t *value) {
|
||||
*value = (EEPROM.read(addr++) << 24);
|
||||
*value |= (EEPROM.read(addr++) << 16);
|
||||
*value |= (EEPROM.read(addr++) << 8);
|
||||
*value |= (EEPROM.read(addr++));
|
||||
}
|
||||
|
||||
void read(uint32_t addr, uint64_t *value) {
|
||||
read(addr, (uint32_t *)value);
|
||||
*value <<= 32;
|
||||
uint32_t tmp;
|
||||
read(addr+4, &tmp);
|
||||
*value |= tmp;
|
||||
/**value = (EEPROM.read(addr++) << 56);
|
||||
*value |= (EEPROM.read(addr++) << 48);
|
||||
*value |= (EEPROM.read(addr++) << 40);
|
||||
*value |= (EEPROM.read(addr++) << 32);
|
||||
*value |= (EEPROM.read(addr++) << 24);
|
||||
*value |= (EEPROM.read(addr++) << 16);
|
||||
*value |= (EEPROM.read(addr++) << 8);
|
||||
*value |= (EEPROM.read(addr++));*/
|
||||
}
|
||||
|
||||
void write(uint32_t addr, const char *str, uint8_t length) {
|
||||
for(uint8_t i = 0; i < length; i ++) {
|
||||
EEPROM.write(addr++, str[i]);
|
||||
}
|
||||
EEPROM.commit();
|
||||
}
|
||||
|
||||
void write(uint32_t addr, uint8_t data[], uint8_t length) {
|
||||
for(uint8_t i = 0; i < length; i ++) {
|
||||
EEPROM.write(addr++, data[i]);
|
||||
}
|
||||
EEPROM.commit();
|
||||
}
|
||||
|
||||
void write(uint32_t addr, float value) {
|
||||
uint8_t *p = (uint8_t*)&value;
|
||||
for(uint8_t i = 0; i < 4; i ++) {
|
||||
EEPROM.write(addr++, p[i]);
|
||||
}
|
||||
EEPROM.commit();
|
||||
}
|
||||
|
||||
void write(uint32_t addr, bool value) {
|
||||
uint8_t intVal = (value) ? 0x01 : 0x00;
|
||||
EEPROM.write(addr++, intVal);
|
||||
EEPROM.commit();
|
||||
}
|
||||
|
||||
void write(uint32_t addr, uint8_t value) {
|
||||
EEPROM.write(addr++, value);
|
||||
EEPROM.commit();
|
||||
}
|
||||
|
||||
void write(uint32_t addr, uint16_t value) {
|
||||
EEPROM.write(addr++, (value >> 8) & 0xff);
|
||||
EEPROM.write(addr++, (value ) & 0xff);
|
||||
EEPROM.commit();
|
||||
}
|
||||
|
||||
void write(uint32_t addr, uint32_t value) {
|
||||
EEPROM.write(addr++, (value >> 24) & 0xff);
|
||||
EEPROM.write(addr++, (value >> 16) & 0xff);
|
||||
EEPROM.write(addr++, (value >> 8) & 0xff);
|
||||
EEPROM.write(addr++, (value ) & 0xff);
|
||||
EEPROM.commit();
|
||||
}
|
||||
|
||||
void write(uint64_t addr, uint64_t value) {
|
||||
EEPROM.write(addr++, (value >> 56) & 0xff);
|
||||
EEPROM.write(addr++, (value >> 48) & 0xff);
|
||||
EEPROM.write(addr++, (value >> 40) & 0xff);
|
||||
EEPROM.write(addr++, (value >> 32) & 0xff);
|
||||
EEPROM.write(addr++, (value >> 24) & 0xff);
|
||||
EEPROM.write(addr++, (value >> 16) & 0xff);
|
||||
EEPROM.write(addr++, (value >> 8) & 0xff);
|
||||
EEPROM.write(addr++, (value ) & 0xff);
|
||||
EEPROM.commit();
|
||||
}
|
||||
};
|
||||
|
||||
#endif /*__EEP_H__*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue