Program Listing for File table_object.h
↰ Return to documentation for file (src/knx/table_object.h)
#pragma once
#include "interface_object.h"
class Memory;
typedef void (*BeforeTablesUnloadCallback)();
class TableObject: public InterfaceObject
{
friend class Memory;
public:
TableObject(Memory& memory, uint32_t staticTableAdr = 0, uint32_t staticTableSize = 0);
virtual ~TableObject();
LoadState loadState();
uint8_t* save(uint8_t* buffer) override;
const uint8_t* restore(const uint8_t* buffer) override;
uint16_t saveSize() override;
static void beforeTablesUnloadCallback(BeforeTablesUnloadCallback func);
static BeforeTablesUnloadCallback beforeTablesUnloadCallback();
protected:
virtual void beforeStateChange(LoadState& newState);
uint8_t* data();
void errorCode(ErrorCode errorCode);
void initializeProperties(size_t propertiesSize, Property** properties) override;
static BeforeTablesUnloadCallback _beforeTablesUnload;
Memory& _memory;
private:
uint32_t tableReference();
bool allocTable(uint32_t size, bool doFill, uint8_t fillByte);
void allocTableStatic();
void initializeDynTableProperties(size_t propertiesSize, Property** properties);
void loadEvent(const uint8_t* data);
void loadEventUnloaded(const uint8_t* data);
void loadEventLoading(const uint8_t* data);
void loadEventLoaded(const uint8_t* data);
void loadEventError(const uint8_t* data);
void additionalLoadControls(const uint8_t* data);
void loadState(LoadState newState);
LoadState _state = LS_UNLOADED;
uint8_t* _data = 0;
static uint8_t _tableUnloadCount;
uint32_t _staticTableAdr;
uint32_t _staticTableSize;
uint32_t _size = 0;
};