feat: added eeprom service
This commit is contained in:
parent
0c06d2a56e
commit
1065b42a16
3
program/SVET/.vscode/settings.json
vendored
3
program/SVET/.vscode/settings.json
vendored
@ -51,6 +51,7 @@
|
||||
"streambuf": "cpp",
|
||||
"cinttypes": "cpp",
|
||||
"typeinfo": "cpp",
|
||||
"variant": "cpp"
|
||||
"variant": "cpp",
|
||||
"hash_map": "cpp"
|
||||
}
|
||||
}
|
12
program/SVET/lib/SVET/Flash/FlashMapping.h
Normal file
12
program/SVET/lib/SVET/Flash/FlashMapping.h
Normal file
@ -0,0 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
class FlashMapping{
|
||||
public:
|
||||
char* key;
|
||||
short size;
|
||||
|
||||
FlashMapping(char* key, short size){
|
||||
this->key = key;
|
||||
this->size = size;
|
||||
}
|
||||
};
|
43
program/SVET/lib/SVET/Flash/FlashService.cpp
Normal file
43
program/SVET/lib/SVET/Flash/FlashService.cpp
Normal file
@ -0,0 +1,43 @@
|
||||
#include "FlashService.h"
|
||||
#include <EEPROM.h>
|
||||
|
||||
/*
|
||||
* Implementation of Flash service. Docs on header file.
|
||||
* Writed on 21.10.2024 17:11
|
||||
* By Lisoveliy
|
||||
*/
|
||||
|
||||
FlashService::FlashService(int allocSize)
|
||||
{
|
||||
EEPROM.begin(allocSize);
|
||||
}
|
||||
|
||||
bool FlashService::WriteData(char *key, void *object, size_t size)
|
||||
{
|
||||
try
|
||||
{
|
||||
flashMap.insert(flashHashMap::value_type(FlashMapping(key, size), this->addressPointer));
|
||||
EEPROM.put(addressPointer, object);
|
||||
addressPointer += size;
|
||||
return true;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool FlashService::WriteData(char *key, char data)
|
||||
{
|
||||
try
|
||||
{
|
||||
flashMap.insert(flashHashMap::value_type(FlashMapping(key, 1), this->addressPointer));
|
||||
EEPROM.write(addressPointer, data);
|
||||
addressPointer++;
|
||||
return true;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
47
program/SVET/lib/SVET/Flash/FlashService.h
Normal file
47
program/SVET/lib/SVET/Flash/FlashService.h
Normal file
@ -0,0 +1,47 @@
|
||||
#pragma once
|
||||
#include "FlashMapping.h"
|
||||
#include <unordered_map>
|
||||
/*
|
||||
* Definition of Flash service.
|
||||
* Writed on 21.10.2024 17:11
|
||||
* By Lisoveliy
|
||||
*/
|
||||
typedef std::unordered_map<FlashMapping, int> flashHashMap;
|
||||
class FlashService{
|
||||
private:
|
||||
flashHashMap flashMap;
|
||||
int addressPointer = 0;
|
||||
|
||||
public:
|
||||
/// @brief Flash Service constructor
|
||||
/// @param allocSize Size of Flash Allocation (in bytes) (default - 128kb)
|
||||
FlashService(int allocSize = 0x20000);
|
||||
|
||||
/// @brief Write data object by key
|
||||
/// @param key string key for hash
|
||||
/// @param object any type of object casted to void*
|
||||
/// @return true on success, false on failure (IDKWhat kind of failure)
|
||||
bool WriteData(char* key, void* object, size_t size);
|
||||
|
||||
/// @brief Write byte data by key
|
||||
/// @param key string key for hash
|
||||
/// @param data byte of data
|
||||
/// @return
|
||||
bool WriteData(char* key, char data);
|
||||
|
||||
/// @brief Update data object by key
|
||||
/// @param key
|
||||
/// @param object
|
||||
/// @return true on success, false on failure (for example not same size of object)
|
||||
bool UpdateData(char* key, void* object);
|
||||
|
||||
/// @brief Remove data object by key
|
||||
/// @param key string key for hash
|
||||
/// @return true on success, false on failure (IDKWhat kind of failure)
|
||||
bool RemoveData(char* key);
|
||||
|
||||
/// @brief Read data object by key
|
||||
/// @param key string key for hash
|
||||
/// @return data object
|
||||
void* ReadData(char* key);
|
||||
};
|
@ -14,4 +14,5 @@ board = nodemcuv2
|
||||
framework = arduino
|
||||
monitor_rts = 0
|
||||
upload_speed = 378000
|
||||
monitor_speed = 19200
|
||||
monitor_speed = 19200
|
||||
lib_deps = eeprom
|
Loading…
x
Reference in New Issue
Block a user