Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e058d973 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Add connectability module"

parents 78722a2f 3c9a9b50
Loading
Loading
Loading
Loading
+104 −0
Original line number Diff line number Diff line
/*
 * Copyright 2019 The Android Open Source Project
 *
 * 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.
 */
#define LOG_TAG "neighbor2"

#include <memory>

#include "hci/hci_layer.h"
#include "hci/hci_packets.h"
#include "module.h"
#include "neighbor/connectability.h"
#include "neighbor/scan.h"
#include "os/handler.h"
#include "os/log.h"

namespace bluetooth {
namespace neighbor {

struct ConnectabilityModule::impl {
  void StartConnectability();
  void StopConnectability();
  bool IsConnectable() const;

  void Start();
  void Stop();

  impl(ConnectabilityModule& connectability_module);

 private:
  ConnectabilityModule& module_;

  neighbor::ScanModule* scan_module_;
};

const ModuleFactory neighbor::ConnectabilityModule::Factory =
    ModuleFactory([]() { return new ConnectabilityModule(); });

neighbor::ConnectabilityModule::impl::impl(neighbor::ConnectabilityModule& module) : module_(module) {}

void neighbor::ConnectabilityModule::impl::StartConnectability() {
  scan_module_->SetPageScan();
}

void neighbor::ConnectabilityModule::impl::StopConnectability() {
  scan_module_->ClearPageScan();
}

bool neighbor::ConnectabilityModule::impl::IsConnectable() const {
  return scan_module_->IsPageEnabled();
}

void neighbor::ConnectabilityModule::impl::Start() {
  scan_module_ = module_.GetDependency<neighbor::ScanModule>();
}

void neighbor::ConnectabilityModule::impl::Stop() {}

neighbor::ConnectabilityModule::ConnectabilityModule() : pimpl_(std::make_unique<impl>(*this)) {}

neighbor::ConnectabilityModule::~ConnectabilityModule() {
  pimpl_.reset();
}

void neighbor::ConnectabilityModule::StartConnectability() {
  pimpl_->StartConnectability();
}

void neighbor::ConnectabilityModule::StopConnectability() {
  pimpl_->StopConnectability();
}

bool neighbor::ConnectabilityModule::IsConnectable() const {
  return pimpl_->IsConnectable();
}

/**
 * Module stuff
 */
void neighbor::ConnectabilityModule::ListDependencies(ModuleList* list) {
  list->add<neighbor::ScanModule>();
}

void neighbor::ConnectabilityModule::Start() {
  pimpl_->Start();
}

void neighbor::ConnectabilityModule::Stop() {
  pimpl_->Stop();
}

}  // namespace neighbor
}  // namespace bluetooth
+49 −0
Original line number Diff line number Diff line
/*
 * Copyright 2019 The Android Open Source Project
 *
 * 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 <memory>

#include "module.h"

namespace bluetooth {
namespace neighbor {

class ConnectabilityModule : public bluetooth::Module {
 public:
  void StartConnectability();
  void StopConnectability();
  bool IsConnectable() const;

  ConnectabilityModule();
  ~ConnectabilityModule();

  static const ModuleFactory Factory;

 protected:
  void ListDependencies(ModuleList* list) override;
  void Start() override;
  void Stop() override;

 private:
  struct impl;
  std::unique_ptr<impl> pimpl_;

  DISALLOW_COPY_AND_ASSIGN(ConnectabilityModule);
};

}  // namespace neighbor
}  // namespace bluetooth