diff --git a/device/device.cpp b/device/device.cpp index 16501f3..92386fc 100644 --- a/device/device.cpp +++ b/device/device.cpp @@ -563,24 +563,27 @@ bool Device::goOnline() { if(supportsNetworkMutex()) { assignedClientId = com->getClientIDSync(); if(assignedClientId) { + std::set nets; + for(auto&& net : getSupportedTXNetworks()) { + nets.insert(net.getNetID()); + } // firmware supports clientid/mutex - networkMutexCallbackHandle = lockAllNetworks(std::numeric_limits::max(), std::numeric_limits::max(), NetworkMutexType::Shared, [this](std::shared_ptr message) { - auto netMutexMsg = std::static_pointer_cast(message); - if(netMutexMsg->networks.size() && netMutexMsg->event.has_value()) { - switch(*netMutexMsg->event) { - case NetworkMutexEvent::Acquired: - lockedNetworks.emplace(*netMutexMsg->networks.begin()); - break; - case NetworkMutexEvent::Released: { - auto it = lockedNetworks.find(*netMutexMsg->networks.begin()); - if (it != lockedNetworks.end()) - lockedNetworks.erase(it); - break; - } + networkMutexCallbackHandle = lockNetworks(nets, std::numeric_limits::max(), std::numeric_limits::max(), NetworkMutexType::Shared, [this](std::shared_ptr message) { + auto netMutexMsg = std::static_pointer_cast(message); + if(netMutexMsg->networks.size() && netMutexMsg->event.has_value()) { + switch(*netMutexMsg->event) { + case NetworkMutexEvent::Acquired: + lockedNetworks.emplace(*netMutexMsg->networks.begin()); + break; + case NetworkMutexEvent::Released: { + auto it = lockedNetworks.find(*netMutexMsg->networks.begin()); + if (it != lockedNetworks.end()) + lockedNetworks.erase(it); + break; } } } - ); + }); } }