Mesh MAC table, is lookup table for node address and MAC address. It acts as DHCP table. Size of table can be defined using template like this:
More...
|
| MeshMACTable (const uint32_t rowLife) |
| Constructor. More...
|
|
bool | set (uint8_t address, MeshMAC MAC, int16_t valid=-1) |
| Sets row values in table. More...
|
|
int16_t | add (MeshMAC mac, bool isGateway=false) |
| Adds MAC address to table at first free index. More...
|
|
int16_t | getAddressFromMAC (MeshMAC mac, int16_t startPos=0) const |
| Searches for node address, which is assinged to node MAC address. More...
|
|
MeshMAC | getMACFromAddress (uint8_t address) const |
| Gets node MAC address assigned to node address. More...
|
|
bool | addressExists (uint8_t address) const |
| Checks if node address exists in table. More...
|
|
bool | MACExists (MeshMAC mac) const |
| Checks if node MAC address exists in table. More...
|
|
int16_t | getFreeAddress (uint8_t startFrom=MESH_GATEWAY_MAX_ADDRESS+1) |
| Gets first available address. More...
|
|
void | setValidityChangeCallback (void(*callback)(MeshMACTable< BufferSize > *, int16_t, const MeshMACTableRow &, bool, bool)) |
| Sets callback function, which is called when row validity has changed. There can be 3 states of validity: More...
|
|
| MicroTable (const uint32_t rowLife) |
| Constructor. More...
|
|
const MeshMACTableRow & | get (int16_t index) const |
| Gets row from table by index. More...
|
|
MeshMACTableRow | get (int16_t index) |
| Gets row from table by index. More...
|
|
const MeshMACTableRow & | operator[] (int16_t index) const |
| Gets row from table by index. More...
|
|
MeshMACTableRow | operator[] (int16_t index) |
| Gets row from table by index. More...
|
|
bool | set (int16_t index, const MeshMACTableRow &row) |
| Sets row values in table. Row life time is set to maximum. More...
|
|
bool | set (int16_t index, const MeshMACTableRow &row, int16_t rawLifeTime_) |
| Sets row values in table. More...
|
|
bool | remove (const MeshMACTableRow &rowRef) |
| Removes first row, which is equal to rowRef. More...
|
|
bool | remove (int16_t index) |
| Removes row at index. More...
|
|
void | clear () |
| Removes all rows data. More...
|
|
void | validate () |
| Decreases all valid column values in specified interval (row lifetime). If valid value is 0, row will not be longer valid. More...
|
|
bool | setRawRemainingLifeTime (int16_t index, uint8_t rawLifeTime_=255) |
| Sets row life time. Valid counter for this rowcan be changed, only when row is still valid. More...
|
|
virtual int16_t | getIndexOf (const MeshMACTableRow &rowRef) const |
| Gets index of row which is equal to rowRef. More...
|
|
int16_t | getFirstBlankRowIndex (int16_t startPos=0) const |
| Gets index of first blank row. More...
|
|
int16_t | getOldestRowIndex () const |
| Gets index of first oldest row. More...
|
|
bool | exists (int16_t index) const |
| Checks if row at specified index exists in table. More...
|
|
bool | exists (const MeshMACTableRow &rowRef) const |
| Checks if any row, which is equal to rowRef exists in table. More...
|
|
bool | isRowBlank (int16_t index) const |
| Checks if row is blank or not. Row, that is not valid is blank. More...
|
|
int16_t | size () const |
| Gets capacity of table in rows. More...
|
|
int16_t | count () const |
| Gets number of used rows in buffer. More...
|
|
uint8_t | getMaxRowLifeTime () const |
| Gets the maximum row life time in millisseconds. More...
|
|
int16_t | getRealUsedSize () const |
| Gets real used count of rows in table. This value is calculated like this: last_used_row_index + 1. More...
|
|
uint8_t | getFragmentation () const |
| Calculates fragmentation in %. Fragmentation is calculated like this: (getRealUsedSize() - count())/getRealUsedSize() More...
|
|
void | defragment () |
| Removes blank spaces between rows. Call this to speed up searching when buffer is fragmented. More...
|
|
uint32_t | getRowRemainingLifeTime (int16_t index) const |
| Gets selected row's remaining life time in milliseconds. More...
|
|
uint8_t | getRawRowRemainingLifeTime (int16_t index) const |
| Gets selected row's raw remaining life time. More...
|
|
uint32_t | getLifeTimeResolution () const |
| Gets life time resolution in milliseconds. More...
|
|
uint8_t | convertLifeTimeToRaw (uint32_t lifeTime) const |
| Converts life time in milliseconds to raw life time value. Value is rounded up. More...
|
|
uint32_t | convertRawToLifeTime (uint8_t rawLifeTime) const |
| Converts raw life time value to life time in milliseconds. Value is aproximate. To get accurate result, use getRowRemainingLifeTime() method. More...
|
|
virtual size_t | getRawDataSize () const |
| Calculates, how many bytes will be printed, when using command printRaw. More...
|
|
virtual size_t | printRaw (OSTREAM &stream, const char tableIdentifier[4]) const |
| Prints raw table data through stream. Those data can be decoded in PC or in another MCU. More...
|
|
size_t | print (OSTREAM &stream, bool showIndexes=true, bool doNotPrintBlank=true, bool showRemainingRowLifetime=true) const |
| Prints items from table to stream. More...
|
|
size_t | printTo (Print &p) const override |
| Makes this class printable. More...
|
|
|
void | onRowLifeChanged (int16_t index, uint8_t old_raw, uint8_t new_raw) override |
| This method is called when table is cleared. It is called after cleaning is done, so all variables are fresh. More...
|
|
virtual void | onCreate (int16_t index, const MeshMACTableRow &newValue, uint8_t newRawLifeTime) |
| This method is called when valid row is set to blank space. It is called after count calculation is done, but before buffer is updated. More...
|
|
virtual void | onSet (int16_t index, const MeshMACTableRow &oldValue, uint8_t oldRawLifeTime, const MeshMACTableRow &newValue, uint8_t newRawLifeTime) |
| This method is called when valid row is set to new value. It is called after count calculation is done, but before buffer is updated. More...
|
|
virtual void | onRemove (int16_t index, const MeshMACTableRow &oldValue, uint8_t oldRawLifeTime, bool removedByValidation=false) |
| This method is called when valid row is removed. It is called after count calculation is done, but before buffer is updated. More...
|
|
virtual void | onClear () |
| This method is called when table is cleared. It is called after cleaning is done, so all variables are fresh. More...
|
|
template<int16_t BufferSize>
class MeshMACTable< BufferSize >
Mesh MAC table, is lookup table for node address and MAC address. It acts as DHCP table. Size of table can be defined using template like this:
Size of route table in example is 255 rows and lifetime of one row is 60 seconds.
Difference between Static and Dynamic mesh route table
- Static MRT takes up less bytes in RAM, because it uses only 3 columns, instead of 4
- Static MRT is way more fasted than dynamic MRT.
- Source in static MRT has to be lower than BufferSize, because BufferSize sets limit for number of nodes.
How data are stored:
Node address - as index (not physically stored) | Node MAC [MeshMAC] | Valid [uint8_t] |
0 | XXX | XXX |
1 | XXX | XXX |
... | ... | ... |
x - depends on BufferSize | XXX | XXX |