/* * Copyright (c) 2023 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 #if CHIP_DEVICE_LAYER_TARGET_DARWIN #include #include #include #include #include #if CONFIG_NETWORK_LAYER_BLE #include #endif // CONFIG_NETWORK_LAYER_BLE struct DeviceScannerResult { chip::Controller::SetUpCodePairerParameters mParams; chip::VendorId mVendorId; uint16_t mProductId; uint16_t mDiscriminator; chip::Optional mResolutionData; }; class DeviceScanner : public chip::Dnssd::DiscoverNodeDelegate, public chip::Dnssd::DnssdBrowseDelegate #if CONFIG_NETWORK_LAYER_BLE , public chip::DeviceLayer::BleScannerDelegate #endif // CONFIG_NETWORK_LAYER_BLE { public: CHIP_ERROR Start(); CHIP_ERROR Stop(); CHIP_ERROR Get(uint16_t index, chip::RendezvousParameters & params); CHIP_ERROR Get(uint16_t index, chip::Dnssd::CommonResolutionData & resolutionData); void Log() const; /////////// DiscoverNodeDelegate Interface ///////// void OnNodeDiscovered(const chip::Dnssd::DiscoveredNodeData & nodeData) override; /////////// DnssdBrowseDelegate Interface ///////// void OnBrowseAdd(chip::Dnssd::DnssdService service) override; void OnBrowseRemove(chip::Dnssd::DnssdService service) override; void OnBrowseStop(CHIP_ERROR error) override; #if CONFIG_NETWORK_LAYER_BLE /////////// BleScannerDelegate Interface ///////// void OnBleScanAdd(BLE_CONNECTION_OBJECT connObj, const chip::Ble::ChipBLEDeviceIdentificationInfo & info) override; void OnBleScanRemove(BLE_CONNECTION_OBJECT connObj) override; #endif // CONFIG_NETWORK_LAYER_BLE private: std::unordered_map>> mDiscoveredResults; }; DeviceScanner & GetDeviceScanner(); #endif // CHIP_DEVICE_LAYER_TARGET_DARWIN