blob: 9cd96a930de9fe0fa6dfbbc39908fe3328c2e4b5 [file] [log] [blame]
// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "hermes/daemon.h"
#include <memory>
#include <utility>
#include <base/message_loop/message_loop.h>
#include <chromeos/dbus/service_constants.h>
#include <google-lpa/lpa/core/lpa.h>
#include "hermes/card_qrtr.h"
#include "hermes/dbus_bindings/org.chromium.Hermes.h"
#include "hermes/socket_qrtr.h"
namespace hermes {
Daemon::Daemon()
: DBusServiceDaemon(kHermesServiceName),
executor_(base::MessageLoop::current()),
smdp_(&logger_, &executor_) {
card_ =
CardQrtr::Create(std::make_unique<SocketQrtr>(), &logger_, &executor_);
lpa::core::Lpa::Builder b;
b.SetEuiccCard(card_.get())
.SetSmdpClientFactory(&smdp_)
.SetSmdsClientFactory(&smds_)
.SetLogger(&logger_);
lpa_ = b.Build();
}
void Daemon::RegisterDBusObjectsAsync(
brillo::dbus_utils::AsyncEventSequencer* sequencer) {
dbus_object_ = std::make_unique<brillo::dbus_utils::DBusObject>(
nullptr, bus_, org::chromium::HermesAdaptor::GetObjectPath());
dbus_adaptor_ = std::make_unique<DBusAdaptor>(lpa_.get(), &executor_);
dbus_adaptor_->RegisterWithDBusObject(dbus_object_.get());
dbus_object_->RegisterAsync(
sequencer->GetHandler("RegisterAsync() failed.", true));
}
} // namespace hermes