JD2022-TU1/main/extern/Hue/libhuestream/huestream/connect/DefaultBridgeSearcher.cpp

62 lines
No EOL
1.8 KiB
C++

/*******************************************************************************
Copyright © 2017 Philips Lighting Holding B.V.
All Rights Reserved.
********************************************************************************/
#include "DefaultBridgeSearcher.h"
using huesdk::BridgeDiscoveryReturnCode;
using huesdk::BridgeDiscoveryResult;
using huesdk::BridgeDiscovery;
using huesdk::BridgeDiscoveryOption;
namespace huestream {
namespace connectionflow {
void DefaultBridgeSearcher::operator()(huesdk_lib::UniqueVectorPtr<const BridgeDiscoveryResult *> results,
BridgeDiscoveryReturnCode return_code) {
if (!_searcher)
return;
auto bridges = make_shared<BridgeList>();
if (return_code == BridgeDiscoveryReturnCode::BRIDGE_DISCOVERY_RETURN_CODE_SUCCESS) {
for (auto result: results) {
auto bridge = make_shared<Bridge>();
bridge->SetId(result->get_unique_id());
bridge->SetIpAddress(result->get_ip());
bridge->SetIsValidIp(true);
bridge->SetApiversion(result->get_api_version());
bridges->push_back(bridge);
}
}
_cb(bridges);
}
void DefaultBridgeSearcher::SearchNew(SearchCallbackHandler cb) {
SearchNew(false, cb);
}
void DefaultBridgeSearcher::SearchNew(bool bruteForce, SearchCallbackHandler cb) {
if (_searcher)
return;
_cb = cb;
_searcher = make_shared<BridgeDiscovery>();
if (bruteForce) {
_searcher->search(BridgeDiscoveryOption::DISCOVERY_OPTION_UPNP |
BridgeDiscoveryOption::DISCOVERY_OPTION_NUPNP |
BridgeDiscoveryOption::DISCOVERY_OPTION_IPSCAN, this);
}
else {
_searcher->search(this);
}
}
void DefaultBridgeSearcher::Abort() {
if (!_searcher)
return;
_searcher->stop();
_searcher = nullptr;
}
DefaultBridgeSearcher::DefaultBridgeSearcher() {}
}
}