Bluenet
5.7.0
Bluenet, firmware for nRF52 smart home devices
|
Class that takes care of synchronizing the asset filters between crownstones. More...
#include <cs_AssetFilterSyncer.h>
Public Member Functions | |
cs_ret_code_t | init () |
Init the class: More... | |
void | handleEvent (event_t &evt) |
Internal usage. More... | |
![]() | |
EventListener () | |
virtual | ~EventListener () |
unregisters the listener. More... | |
virtual void | handleEvent (event_t &event)=0 |
Handle events. More... | |
void | listen () |
Registers this with the EventDispatcher. More... | |
![]() | |
template<class T > | |
T * | getComponent (Component *requester=nullptr) |
Returns a component of type T* from _parent->children(), If not found try again with ancestors: _parent-> ... ->_parent->children(). More... | |
virtual cs_ret_code_t | init () |
Components can implement this if they need to get references to sibling or if they need to do specific initialization. More... | |
void | parentAllChildren () |
utility that loops over all elements of getChildren() and setParent on the non-nullptr ones. More... | |
virtual | ~Component ()=default |
Static Public Attributes | |
static constexpr uint16_t | VERSION_BROADCAST_NORMAL_INTERVAL_SECONDS = 5 * 60 |
Interval at which the master version is broadcasted. More... | |
static constexpr uint16_t | VERSION_BROADCAST_LOW_INTERVAL_SECONDS = 1 |
static constexpr uint16_t | VERSION_BROADCAST_INTERVAL_RESET_SECONDS = 60 |
How long the low interval will be used after setting it to low interval. More... | |
Private Types | |
enum class | SyncStep { NONE , CONNECT , GET_FILTER_SUMMARIES , REMOVE_FILTERS , UPLOAD_FILTERS , COMMIT , DISCONNECT } |
Async steps that are taken when synchronizing filters to another crownstone. More... | |
enum class | VersionCompare { UNKOWN , OLDER , EQUAL , NEWER } |
Results of comparing master version with another crownstone. More... | |
Private Member Functions | |
void | sendVersion (bool reliable) |
Sends the master version and CRC over the mesh. More... | |
void | sendVersionAtLowInterval () |
Send version at a low interval for some time. More... | |
void | setStep (SyncStep step) |
Set the current step of the sync process. More... | |
void | reset () |
Abort the sync process. More... | |
VersionCompare | compareToMyVersion (asset_filter_cmd_protocol_t protocol, uint16_t masterVersion, uint32_t masterCrc) |
Compare given master version with the master version of this crownstone. More... | |
void | syncFilters (stone_id_t stoneId) |
Start updating filters of another crownstone. More... | |
void | connect (stone_id_t stoneId) |
Steps of the sync process. More... | |
void | removeNextFilter () |
void | uploadNextFilter () |
void | commit () |
void | disconnect () |
void | done () |
When the whole sync process to a stone was successful, call done(). More... | |
cs_ret_code_t | onVersion (stone_id_t stoneId, cs_mesh_model_msg_asset_filter_version_t &packet) |
Handle a received version mesh message. More... | |
void | onModificationInProgress (bool inProgress) |
Handle a possible change of "filter modification in progress". More... | |
void | onConnectResult (cs_ret_code_t retCode) |
Handle steps of the sync process. More... | |
void | onDisconnect () |
void | onWriteResult (cs_central_write_result_t &result) |
void | onFilterSummaries (cs_data_t &payload) |
void | onTick (uint32_t tickCount) |
Handle the tick event. More... | |
Private Attributes | |
AssetFilterStore * | _store = nullptr |
Pointer to the (intialized) filter store. More... | |
SyncStep | _step = SyncStep::NONE |
Current step. More... | |
uint8_t | _nextFilterIndex |
Next index of filter IDs to upload/remove array. More... | |
uint16_t | _nextChunkIndex |
Next chunk index to upload. More... | |
uint8_t | _filterIdsToUpload [AssetFilterStore::MAX_FILTER_IDS] |
Filter IDs that should be uploaded. More... | |
uint8_t | _filterUploadCount |
uint8_t | _filterIdsToRemove [AssetFilterStore::MAX_FILTER_IDS] |
Filter IDs that should be removed. More... | |
uint8_t | _filterRemoveCount |
uint16_t | _sendVersionAtLowIntervalCountdown = 0 |
Countdown counter that keeps track when the send version interval should go back to normal again. More... | |
uint16_t | _sendVersionCountdown = 0 |
Countdown counter that keeps track when to call sendVersion again. More... | |
Additional Inherited Members | |
![]() | |
virtual std::vector< Component * > | getChildren () |
Components with children can override this method to return them. More... | |
cs_ret_code_t | initChildren () |
void | setParent (Component *p) |
Children that are instantiated later can also be added individually. More... | |
Class that takes care of synchronizing the asset filters between crownstones.
|
strongprivate |
|
strongprivate |
|
private |
|
private |
Compare given master version with the master version of this crownstone.
|
private |
Steps of the sync process.
|
private |
|
private |
When the whole sync process to a stone was successful, call done().
|
virtual |
Internal usage.
Implements EventListener.
|
virtual |
|
private |
Handle steps of the sync process.
|
private |
|
private |
|
private |
Handle a possible change of "filter modification in progress".
|
private |
Handle the tick event.
|
private |
Handle a received version mesh message.
|
private |
|
private |
|
private |
Abort the sync process.
|
private |
Sends the master version and CRC over the mesh.
|
private |
Send version at a low interval for some time.
|
private |
Set the current step of the sync process.
|
private |
Start updating filters of another crownstone.
|
private |
|
private |
Filter IDs that should be removed.
|
private |
Filter IDs that should be uploaded.
|
private |
|
private |
|
private |
Next chunk index to upload.
|
private |
Next index of filter IDs to upload/remove array.
|
private |
Countdown counter that keeps track when the send version interval should go back to normal again.
|
private |
Countdown counter that keeps track when to call sendVersion again.
|
private |
Current step.
|
private |
Pointer to the (intialized) filter store.
|
staticconstexpr |
How long the low interval will be used after setting it to low interval.
|
staticconstexpr |
|
staticconstexpr |
Interval at which the master version is broadcasted.