From f7b547171e541524c590308928dcabf33ebeda00 Mon Sep 17 00:00:00 2001 From: Alistair Delva Date: Fri, 6 Nov 2020 16:35:44 -0800 Subject: Expose EthernetDevice to custom UIs Make it possible to build a custom UI which uses EthernetRecoveryUI. Since EthernetRecoveryUI must be used with EthernetDevice, but the make_device() function is the only place a custom UI can be specified, we need to move the common EthernetDevice to the recovery_ui core and make a new "default_ethernet_device" which looks like the other default device library stubs, for backwards compatibility. This makes it possible to use EthernetRecoveryUI on cuttlefish. Bug: 172693524 Change-Id: I6a66bb949ef97d06f532adb286d2db4c002d2924 --- recovery_ui/Android.bp | 3 +- recovery_ui/default_ethernet_device.cpp | 23 +++++++++++++ recovery_ui/ethernet_device.cpp | 21 +----------- recovery_ui/include/recovery_ui/ethernet_device.h | 42 +++++++++++++++++++++++ 4 files changed, 68 insertions(+), 21 deletions(-) create mode 100644 recovery_ui/default_ethernet_device.cpp create mode 100644 recovery_ui/include/recovery_ui/ethernet_device.h diff --git a/recovery_ui/Android.bp b/recovery_ui/Android.bp index 9dfee5fd5..c9616ec15 100644 --- a/recovery_ui/Android.bp +++ b/recovery_ui/Android.bp @@ -22,6 +22,7 @@ cc_library { srcs: [ "device.cpp", + "ethernet_device.cpp", "ethernet_ui.cpp", "screen_ui.cpp", "stub_ui.cpp", @@ -102,7 +103,7 @@ cc_library_static { ], srcs: [ - "ethernet_device.cpp", + "default_ethernet_device.cpp", ], shared_libs: [ diff --git a/recovery_ui/default_ethernet_device.cpp b/recovery_ui/default_ethernet_device.cpp new file mode 100644 index 000000000..1fdff0d86 --- /dev/null +++ b/recovery_ui/default_ethernet_device.cpp @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2020 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. + */ + +#include "recovery_ui/device.h" +#include "recovery_ui/ethernet_device.h" +#include "recovery_ui/ethernet_ui.h" + +Device* make_device() { + return new EthernetDevice(new EthernetRecoveryUI); +} diff --git a/recovery_ui/ethernet_device.cpp b/recovery_ui/ethernet_device.cpp index 39ec65dc4..d79f41dec 100644 --- a/recovery_ui/ethernet_device.cpp +++ b/recovery_ui/ethernet_device.cpp @@ -27,23 +27,9 @@ #include #include "recovery_ui/device.h" +#include "recovery_ui/ethernet_device.h" #include "recovery_ui/ethernet_ui.h" -class EthernetDevice : public Device { - public: - explicit EthernetDevice(EthernetRecoveryUI* ui); - - void PreRecovery() override; - void PreFastboot() override; - - private: - int SetInterfaceFlags(const unsigned set, const unsigned clr); - void SetTitleIPv6LinkLocalAddress(const bool interface_up); - - android::base::unique_fd ctl_sock_; - static const std::string interface; -}; - const std::string EthernetDevice::interface = "eth0"; EthernetDevice::EthernetDevice(EthernetRecoveryUI* ui) @@ -129,8 +115,3 @@ void EthernetDevice::SetTitleIPv6LinkLocalAddress(const bool interface_up) { recovery_ui->SetIPv6LinkLocalAddress(); } - -// ----------------------------------------------------------------------------------------- -Device* make_device() { - return new EthernetDevice(new EthernetRecoveryUI); -} diff --git a/recovery_ui/include/recovery_ui/ethernet_device.h b/recovery_ui/include/recovery_ui/ethernet_device.h new file mode 100644 index 000000000..ea710ab93 --- /dev/null +++ b/recovery_ui/include/recovery_ui/ethernet_device.h @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2020 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. + */ + +#ifndef _ETHERNET_RECOVERY_DEVICE_H +#define _ETHERNET_RECOVERY_DEVICE_H + +#include "device.h" + +#include + +// Forward declaration to avoid including "ethernet_ui.h". +class EthernetRecoveryUI; + +class EthernetDevice : public Device { + public: + explicit EthernetDevice(EthernetRecoveryUI* ui); + + void PreRecovery() override; + void PreFastboot() override; + + private: + int SetInterfaceFlags(const unsigned set, const unsigned clr); + void SetTitleIPv6LinkLocalAddress(const bool interface_up); + + android::base::unique_fd ctl_sock_; + static const std::string interface; +}; + +#endif // _ETHERNET_RECOVERY_DEVICE_H -- cgit v1.2.3