Mesh ID table stores IDs of received packets, to prevent receiving same packet multiple times. Size of table can be defined using template like this:
More...
|
| MeshIDTable (const uint32_t rowLife) |
| Constructor. More...
|
|
bool | set (uint16_t index, uint8_t id, uint8_t source, int16_t valid=-1) |
| Sets row values in table. More...
|
|
bool | add (uint8_t id, uint8_t source) |
| Adds or overwrites data in row. If row already exists, it will be overwritten, else new row is added. If buffer is full, oldest row will be overwritten. More...
|
|
bool | add (const MeshIDTableRow &val) |
| Adds or overwrites data in row. If row already exists, it will be overwritten, else new row is added. If buffer is full, oldest row will be overwritten. More...
|
|
void | operator+= (const MeshIDTableRow &val) |
|
bool | removeByIDAndSource (uint8_t ID, uint8_t source) |
| Removes row data by source and ID. More...
|
|
int16_t | getIndexOfIDAndSource (uint8_t id, uint8_t source) const |
| Gets index of row with specified ID and Source in table. More...
|
|
bool | exists (uint8_t id, uint8_t source) const |
| Checks if row with specified ID and Source exists in table. More...
|
|
| MicroTable (const uint32_t rowLife) |
| Constructor. More...
|
|
const MeshIDTableRow & | get (int16_t index) const |
| Gets row from table by index. More...
|
|
MeshIDTableRow | get (int16_t index) |
| Gets row from table by index. More...
|
|
const MeshIDTableRow & | operator[] (int16_t index) const |
| Gets row from table by index. More...
|
|
MeshIDTableRow | operator[] (int16_t index) |
| Gets row from table by index. More...
|
|
bool | set (int16_t index, const MeshIDTableRow &row) |
| Sets row values in table. Row life time is set to maximum. More...
|
|
bool | set (int16_t index, const MeshIDTableRow &row, int16_t rawLifeTime_) |
| Sets row values in table. More...
|
|
bool | remove (const MeshIDTableRow &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 MeshIDTableRow &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 MeshIDTableRow &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...
|
|
|
virtual void | onCreate (int16_t index, const MeshIDTableRow &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 MeshIDTableRow &oldValue, uint8_t oldRawLifeTime, const MeshIDTableRow &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 MeshIDTableRow &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...
|
|
virtual void | onRowLifeChanged (int16_t index, uint8_t old_raw, uint8_t new_raw) |
| This method is called when table is cleared. It is called after cleaning is done, so all variables are fresh. More...
|
|
MeshIDTableRow | buffer [RowsCount] |
|
uint8_t | lifeTime [RowsCount] |
|
uint32_t | lastValidationTime |
|
int16_t | usedBufferSize |
|
int16_t | realUsedSize |
|
const uint32_t | ValidationInterval |
|
const uint32_t | RowLife |
|
template<int16_t BufferSize>
class MeshIDTable< BufferSize >
Mesh ID table stores IDs of received packets, to prevent receiving same packet multiple times. Size of table can be defined using template like this:
Size of ID table in this example is 255 rows and lifetime of one row is 60 seconds.
How data are stored:
index (not physically stored) | ID [uint8_t] | Source [uint8_t] | Valid [uint8_t] |
0 | XXX | XXX | XXX |
1 | XXX | XXX | XXX |
... | ... | ... | ... |
XXX - depends on BufferSize | XXX | XXX | XXX |