knx
ETS configurable knx-stack
samd_platform.h
Go to the documentation of this file.
1 #ifdef ARDUINO
2 #include "arduino_platform.h"
3 
4 #include "Arduino.h"
5 
6 #ifdef ARDUINO_ARCH_SAMD
7 
8 #define PAGES_PER_ROW 4
9 
11 {
12  public:
13  SamdPlatform();
14  SamdPlatform( HardwareSerial* s);
15 
16  // unique serial number
17  uint32_t uniqueSerialNumber() override;
18 
19  void restart();
20 #ifdef USE_SAMD_EEPROM_EMULATION
21  uint8_t* getEepromBuffer(uint32_t size);
22  void commitToEeprom();
23 #else
24  // size of one EraseBlock in pages
25  virtual size_t flashEraseBlockSize();
26  // size of one flash page in bytes
27  virtual size_t flashPageSize();
28  // start of user flash aligned to start of an erase block
29  virtual uint8_t* userFlashStart();
30  // size of the user flash in EraseBlocks
31  virtual size_t userFlashSizeEraseBlocks();
32  // relativ to userFlashStart
33  virtual void flashErase(uint16_t eraseBlockNum);
34  // write a single page to flash (pageNumber relative to userFashStart
35  virtual void flashWritePage(uint16_t pageNumber, uint8_t* data);
36 
37  // writes _eraseblockBuffer to flash - overrides Plattform::writeBufferedEraseBlock() for performance optimization only
39 
40  private:
41  void init();
42  uint32_t _MemoryEnd = 0;
43  uint32_t _MemoryStart = 0;
44  uint32_t _pageSize;
45  uint32_t _rowSize;
46  uint32_t _pageCnt;
47 
48  uint32_t getRowAddr(uint32_t flasAddr);
49  void write(const volatile void* flash_ptr, const void* data, uint32_t size);
50  void erase(const volatile void* flash_ptr, uint32_t size);
51  void eraseRow(const volatile void* flash_ptr);
52 
53 #endif
54 };
55 
56 #endif
57 #endif // ARDUINO
virtual uint8_t * userFlashStart()
uint8_t * getEepromBuffer(uint32_t size)
virtual size_t userFlashSizeEraseBlocks()
virtual void flashErase(uint16_t eraseBlockNum)
void commitToEeprom()
uint32_t uniqueSerialNumber() override
virtual size_t flashEraseBlockSize()
SamdPlatform(HardwareSerial *s)
void writeBufferedEraseBlock()
virtual size_t flashPageSize()
virtual void flashWritePage(uint16_t pageNumber, uint8_t *data)