62 lines
No EOL
1.8 KiB
C++
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() {}
|
|
}
|
|
} |