tarask
6 days ago 532005c6573d95199ce0ffbc33df4c7a0a4c3ef9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#ifndef EEPROMPARAMS_H
#define EEPROMPARAMS_H
 
#include <Arduino.h>
#include <EEPROM.h>
#include <map>
#include <utility>
#include <modules/my_mutex/Mutex.h>
#include <vector>
#include <queue>
class EepromParams
{
public:
    static void TaskEeprom(void *pvParameters);
    void Init(std::vector<float> p);
    std::vector<float> GetParams(){return mParams;}
    void WriteParam(uint16_t idx);
    void WriteParam(uint16_t idx,float val);
private:
    static void TaskReboot(void *pvParameters);
    bool GetIdxFromQueue(uint16_t &idx);
    void WriteToEeeprom(uint16_t idx,float val);
    void CalcAndWriteCrc();
    unsigned char crc8(unsigned char crc, unsigned char * dat, unsigned int len);
    Mutex mMutex;
    std::vector<float> mParams;
    uint8_t mCrc=0xFF;
    std::queue<uint16_t> mWriteQueue;
    uint16_t EEPROM_SIZE;
    uint64_t r2d2 = 0xFFFFFFFFFFFFFFFF;
    uint64_t c3po = 0xFFFFFFFFFFFFFFFF;
};
 
#endif