1 #ifndef MERGMEMORYMANAGEMENT_H
2 #define MERGMEMORYMANAGEMENT_H
17 #define EVENT_VARS_SIZE 2
20 #define EMPTY_BYTE 0x00
22 #define FAILED_INDEX 255
25 #define MERG_MEMORY_MODEL MERG_MEMPOS+1
26 #define CAN_ID_MEMPOS MERG_MEMORY_MODEL+1
27 #define NN_MEMPOS CAN_ID_MEMPOS+1
28 #define FLAGS_MEMPOS NN_MEMPOS+NNDD_SIZE
29 #define NUM_VARS_MEMPOS FLAGS_MEMPOS+FLAG_SIZE
30 #define NUM_EVENTS_MEMPOS NUM_VARS_MEMPOS+1
31 #define NUM_EVENTS_VARS_MEMPOS NUM_EVENTS_MEMPOS+1
32 #define VARS_MEMPOS NUM_EVENTS_VARS_MEMPOS+1
46 MergMemoryManagement(byte num_node_vars,byte num_events,byte num_events_vars,byte max_device_numbers);
50 bool hasEventVars(
unsigned int eventIdx);
52 byte
getVar(
unsigned int index);
53 byte
getEventVar(
unsigned int eventIdx,
unsigned int index);
54 byte *
getEventVars(
unsigned int eventIdx,
unsigned int *len);
65 unsigned int eraseEvent(
unsigned int eventIdx);
67 unsigned int eraseEvent(
unsigned int nn,
unsigned int ev);
70 void setVar(
unsigned int index,byte val);
76 byte getNumDeviceNumber(){
return MAX_NUM_DEVICE_NUMBERS;};
79 byte getCanId(){
return can_ID;};
83 unsigned int setEvent(byte *event,
unsigned int eventIdx);
85 unsigned int setEventVar(
unsigned int eventIdx,
unsigned int varIdx,byte val);
87 unsigned int getEventIndex(byte ev1,byte ev2,byte ev3,byte ev4);
89 bool hasEvent(byte ev1,byte ev2,byte ev3,byte ev4);
100 byte *return_eventVars;
104 byte numDeviceNumbers;
107 byte MAX_VAR_PER_EVENT;
109 byte MAX_NUM_DEVICE_NUMBERS;
115 byte
event[EVENT_SIZE];
119 byte nodeVariablesSize;
120 byte eventVarsPerEvent;
121 byte amountSuportedEvents;
122 unsigned int resolveEvVarArrayPos(byte evidx,byte varidx);
123 unsigned int incEventPos(
unsigned int val);
124 unsigned int resolveEventPos(byte evidx);
125 void copyEvent(
unsigned int fromIndex,
unsigned int toIndex);
130 #endif // MERGMEMORYMANAGEMENT_H
unsigned int getNodeNumber()
Get the node number.
Definition: MergMemoryManagement.cpp:476
unsigned int setEventVar(unsigned int eventIdx, unsigned int varIdx, byte val)
Update the variable of an event.
Definition: MergMemoryManagement.cpp:404
void setNodeFlag(byte val)
Set the node mode retrieved from the flags.
Definition: MergMemoryManagement.cpp:493
byte * getEvent(unsigned int index)
Return the event pointed by the index If index out of bounds return empty event '0000'.
Definition: MergMemoryManagement.cpp:65
void setNodeNumber(unsigned int val)
Set the node number.
Definition: MergMemoryManagement.cpp:436
unsigned int getDeviceNumber(byte port)
Get the device number.
Definition: MergMemoryManagement.cpp:463
unsigned int eraseEvent(unsigned int eventIdx)
Erase a specific event by the event index. Has to reorganize the memory: events and events vars to av...
Definition: MergMemoryManagement.cpp:325
byte getVar(unsigned int index)
Return the node variable pointed by the index.
Definition: MergMemoryManagement.cpp:190
byte getEventVar(unsigned int eventIdx, unsigned int index)
Return the event variable for a specific event.
Definition: MergMemoryManagement.cpp:201
bool hasEvents()
Check if there is some learned event.
Definition: MergMemoryManagement.h:49
byte getNodeFlag()
Get the node mode retrieved from the flags.
Definition: MergMemoryManagement.cpp:486
void dumpMemory()
Print all memory to serial. Used for debug.
Definition: MergMemoryManagement.cpp:500
bool hasEvent(byte ev1, byte ev2, byte ev3, byte ev4)
Check if the given event is present in the memory.
Definition: MergMemoryManagement.cpp:176
void setCanId(byte canId)
Set the can id.
Definition: MergMemoryManagement.cpp:426
void setUpNewMemory()
Clear the EEPROM memory and the internal events. Should be called just in the first setup of the node...
Definition: MergMemoryManagement.cpp:34
void setVar(unsigned int index, byte val)
Set the value of a node variable.
Definition: MergMemoryManagement.cpp:387
byte * getEventVars(unsigned int eventIdx, unsigned int *len)
Get all variables of an specific event.
Definition: MergMemoryManagement.cpp:222
MergMemoryManagement()
Constructor: clear array and reads the EEPROM.
Definition: MergMemoryManagement.cpp:6
byte getNumEventVars()
Return the number of learned events variables.
Definition: MergMemoryManagement.h:60
unsigned int setEvent(byte *event)
Put a new event in the memory and return the index.
Definition: MergMemoryManagement.cpp:92
void read()
Read all data from eprom memory and put in the internal arrays.
Definition: MergMemoryManagement.cpp:254
void eraseAllEvents()
Erase all events and their variables.
Definition: MergMemoryManagement.cpp:310
byte getNumVars()
Return the number of set node variables.
Definition: MergMemoryManagement.h:56
void setDeviceNumber(unsigned int val, byte port)
Set the device number.
Definition: MergMemoryManagement.cpp:449
byte getNumEvents()
Return the number of learned events.
Definition: MergMemoryManagement.h:58
Definition: MergMemoryManagement.h:42
unsigned int getEventIndex(byte ev1, byte ev2, byte ev3, byte ev4)
Return the internal index of an event using 4 bytes as parameters. The first 2 bytes are supposed to ...
Definition: MergMemoryManagement.cpp:157