blob: e573ba6fc4b5e90bbdceae0f8f2ccb7f5c4acf20 [file] [log] [blame]
/*
*
* Copyright (c) 2020 Project CHIP Authors
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <controller/AbstractDnssdDiscoveryController.h>
#include <lib/support/logging/CHIPLogging.h>
#include <platform/CHIPDeviceConfig.h>
namespace chip {
namespace Controller {
/**
* @brief
* CHIPCommissionableNodeController is a Controller class that
* centralizes (acts as facade) discovery of commissioners, sending User
* Directed Commissioning requests, Commissionable Node advertisement and
* Commissioning of the node
*/
class DLL_EXPORT CommissionableNodeController : public AbstractDnssdDiscoveryController
{
public:
CommissionableNodeController(chip::Dnssd::Resolver * resolver = nullptr) : mResolver(resolver) {}
~CommissionableNodeController() override;
void RegisterDeviceDiscoveryDelegate(DeviceDiscoveryDelegate * delegate) { mDeviceDiscoveryDelegate = delegate; }
CHIP_ERROR DiscoverCommissioners(Dnssd::DiscoveryFilter discoveryFilter = Dnssd::DiscoveryFilter());
CHIP_ERROR StopDiscovery();
/**
* @return
* Pointer to DiscoveredNodeData at index idx in the list of commissioners discovered
* by the CHIPCommissionableNodeController, if the node is a valid node.
* Otherwise, returns nullptr
* See Resolver.h IsValid()
*/
const Dnssd::DiscoveredNodeData * GetDiscoveredCommissioner(int idx);
protected:
DiscoveredNodeList GetDiscoveredNodes() override { return DiscoveredNodeList(mDiscoveredCommissioners); }
private:
Dnssd::Resolver * mResolver = nullptr;
Dnssd::DiscoveredNodeData mDiscoveredCommissioners[CHIP_DEVICE_CONFIG_MAX_DISCOVERED_NODES];
};
} // namespace Controller
} // namespace chip