Mesh ID table stores IDs of transmitted messages, check status of sent messages. Size of table can be defined using template like this:
More...
|
| MeshOIDTable (const uint32_t rowLife) |
| Constructor. More...
|
|
bool | set (uint8_t index, uint8_t id, uint8_t destination, SystemPacketType type, int16_t valid=-1) |
| Sets row values in table. More...
|
|
bool | add (uint8_t id, uint8_t destination, SystemPacketType type, uint8_t rawLifeTime=255) |
| 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 MeshOIDTableRow &val, uint8_t rawLifeTime=255) |
| 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 | removeID (uint8_t ID) |
| Removes row data by ID. More...
|
|
int16_t | removeByDestination (uint8_t destination) |
| Removes row data by it's destination address. More...
|
|
int16_t | getIndexOfID (uint8_t id) const |
| Gets index of row with specified ID in table. More...
|
|
bool | existsID (uint8_t id) const |
| Checks if row with specified ID exists in table. More...
|
|
bool | existsDestAndSysPacketType (uint8_t destination, SystemPacketType type) const |
| Checks if row with specified destination address and system packet type exists. More...
|
|
void | setOnRemoveCallback (void(*callback)(MeshOIDTable< BufferSize > *, int16_t, const MeshOIDTableRow &, uint8_t, MeshOIDTableRemoveReason)) |
| Sets callback function, which is called when any item is removed from this table. If table is cleared, this callback function is not called. More...
|
|
| MicroTable (const uint32_t rowLife) |
| Constructor. More...
|
|
const MeshOIDTableRow & | get (int16_t index) const |
| Gets row from table by index. More...
|
|
MeshOIDTableRow | get (int16_t index) |
| Gets row from table by index. More...
|
|
const MeshOIDTableRow & | operator[] (int16_t index) const |
| Gets row from table by index. More...
|
|
MeshOIDTableRow | operator[] (int16_t index) |
| Gets row from table by index. More...
|
|
bool | set (int16_t index, const MeshOIDTableRow &row) |
| Sets row values in table. Row life time is set to maximum. More...
|
|
bool | set (int16_t index, const MeshOIDTableRow &row, int16_t rawLifeTime_) |
| Sets row values in table. More...
|
|
bool | remove (const MeshOIDTableRow &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 MeshOIDTableRow &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 MeshOIDTableRow &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 | onSet (int16_t index, const MeshOIDTableRow &oldValue, uint8_t oldRawLifeTime, const MeshOIDTableRow &newValue, uint8_t newRawLifeTime) override |
| 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...
|
|
void | onRemove (int16_t index, const MeshOIDTableRow &oldValue, uint8_t oldRawLifeTime, bool removedByValidation=false) override |
| 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 | onCreate (int16_t index, const MeshOIDTableRow &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 | 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...
|
|
template<int16_t BufferSize>
class MeshOIDTable< BufferSize >
Mesh ID table stores IDs of transmitted messages, check status of sent messages. 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] | Destination [uint8_t] | Type [SystemPacketType] | Valid [uint8_t] |
0 | XXX | XXX | XXX | XXX |
1 | XXX | XXX | XXX | XXX |
... | ... | ... | ... | ... |
XXX - depends on BufferSize | XXX | XXX | XXX | XXX |
- Note
- SystemPacketType can contain type ACK and ACK_ERR, which cannot be used here. If you set SystemPacketType to 0, it means, that data was sent.