Skip to content

Commit a2b5105

Browse files
committed
feaz(zigbee): Move function to private and add set method
1 parent 267c042 commit a2b5105

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

Diff for: libraries/Zigbee/src/ZigbeeCore.cpp

+13-9
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ bool ZigbeeCore::begin(esp_zb_cfg_t *role_cfg, bool erase_nvs) {
5050
if (xSemaphoreTake(lock, _begin_timeout) != pdTRUE) {
5151
log_e("ZigbeeCore begin failed or timeout");
5252
if(_role != ZIGBEE_COORDINATOR) { // Only End Device and Router can rejoin
53-
resetChannelMask();
53+
resetNVRAMChannelMask();
5454
}
5555
}
5656
return started();
@@ -85,7 +85,7 @@ bool ZigbeeCore::begin(zigbee_role_t role, bool erase_nvs) {
8585
if (!status || xSemaphoreTake(lock, _begin_timeout) != pdTRUE) {
8686
log_e("ZigbeeCore begin failed or timeout");
8787
if(_role != ZIGBEE_COORDINATOR) { // Only End Device and Router can rejoin
88-
resetChannelMask();
88+
resetNVRAMChannelMask();
8989
}
9090
}
9191
return started();
@@ -261,9 +261,7 @@ void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) {
261261
esp_zb_bdb_open_network(Zigbee._open_network);
262262
} else {
263263
// Save the channel mask to NVRAM in case of reboot which may be on a different channel after a change in the network
264-
Zigbee.setPrimaryChannelMask(1 << esp_zb_get_current_channel());
265-
esp_zb_set_channel_mask(1 << esp_zb_get_current_channel());
266-
zb_nvram_write_dataset(ZB_NVRAM_COMMON_DATA);
264+
Zigbee.setNVRAMChannelMask(1 << esp_zb_get_current_channel());
267265
Zigbee._connected = true;
268266
}
269267
Zigbee.searchBindings();
@@ -309,9 +307,7 @@ void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) {
309307
);
310308
Zigbee._connected = true;
311309
// Set channel mask and write to NVRAM, so that the device will re-join the network faster after reboot (scan only on the current channel)
312-
Zigbee.setPrimaryChannelMask(1 << esp_zb_get_current_channel());
313-
esp_zb_set_channel_mask(1 << esp_zb_get_current_channel());
314-
zb_nvram_write_dataset(ZB_NVRAM_COMMON_DATA);
310+
Zigbee.setNVRAMChannelMask(1 << esp_zb_get_current_channel());
315311
} else {
316312
log_i("Network steering was not successful (status: %s)", esp_err_to_name(err_status));
317313
esp_zb_scheduler_alarm((esp_zb_callback_t)bdb_start_top_level_commissioning_cb, ESP_ZB_BDB_MODE_NETWORK_STEERING, 1000);
@@ -506,12 +502,20 @@ void ZigbeeCore::searchBindings() {
506502
esp_zb_zdo_binding_table_req(mb_req, bindingTableCb, (void *)mb_req);
507503
}
508504

509-
void ZigbeeCore::resetChannelMask() {
505+
void ZigbeeCore::resetNVRAMChannelMask() {
510506
_primary_channel_mask = ESP_ZB_TRANSCEIVER_ALL_CHANNELS_MASK;
511507
esp_zb_set_channel_mask(_primary_channel_mask);
512508
zb_nvram_write_dataset(ZB_NVRAM_COMMON_DATA);
513509
log_v("Channel mask reset to all channels");
514510
}
511+
512+
void ZigbeeCore::setNVRAMChannelMask(uint32_t mask) {
513+
_primary_channel_mask = mask;
514+
esp_zb_set_channel_mask(_primary_channel_mask);
515+
zb_nvram_write_dataset(ZB_NVRAM_COMMON_DATA);
516+
log_v("Channel mask set to 0x%08x", mask);
517+
}
518+
515519
// Function to convert enum value to string
516520
const char *ZigbeeCore::getDeviceTypeString(esp_zb_ha_standard_devices_t deviceId) {
517521
switch (deviceId) {

Diff for: libraries/Zigbee/src/ZigbeeCore.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ class ZigbeeCore {
106106
const char *getDeviceTypeString(esp_zb_ha_standard_devices_t deviceId);
107107
void searchBindings();
108108
static void bindingTableCb(const esp_zb_zdo_binding_table_info_t *table_info, void *user_ctx);
109+
void resetNVRAMChannelMask(); // Reset to default mask also in NVRAM
110+
void setNVRAMChannelMask(uint32_t mask); // Set channel mask in NVRAM
109111

110112
public:
111113
ZigbeeCore();
@@ -137,7 +139,6 @@ class ZigbeeCore {
137139
esp_zb_host_config_t getHostConfig();
138140

139141
void setPrimaryChannelMask(uint32_t mask); // By default all channels are scanned (11-26) -> mask 0x07FFF800
140-
void resetChannelMask(); // Reset to default mask also in NVRAM
141142

142143
void setScanDuration(uint8_t duration); // Can be set from 1 - 4. 1 is fastest, 4 is slowest
143144
uint8_t getScanDuration() {

0 commit comments

Comments
 (0)