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

Unverified Commit 25a27de3 authored by Yumi Yukimura's avatar Yumi Yukimura Committed by Michael Bestas
Browse files

minadbd: Setup ADB over network (TCP/IP and VirtIO VSOCK)

* Adds alternative way to use ADB sideload on devices without USB gadget mode
* Code taken from android-15.0.0_r5 packages/modules/adb/daemon/main.cpp

Change-Id: Ibef04214de79c991a863daef727979598050cc46
parent fbafc0e7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -101,6 +101,7 @@ cc_binary {
        "android.hardware.health-V4-ndk", // from librecovery_utils
        "libbase",
        "libcrypto",
        "libssl",
    ],

    static_libs: [
+23 −0
Original line number Diff line number Diff line
@@ -23,9 +23,12 @@

#include <android-base/logging.h>
#include <android-base/parseint.h>
#include <android-base/properties.h>
#include <android-base/strings.h>

#include "adb.h"
#include "adb_auth.h"
#include "daemon/transport_daemon.h"
#include "transport.h"

#include "minadbd/types.h"
@@ -33,6 +36,24 @@

using namespace std::string_literals;

static void minadbd_net_init() {
  std::string prop_port = android::base::GetProperty("service.adb.tcp.port", "");

  int port;
  if (sscanf(prop_port.c_str(), "%d", &port) == 1 && port > 0) {
    LOG(DEBUG) << "using tcp port=" << std::to_string(port);
    // Listen on TCP and VSOCK port specified by service.adb.tcp.port property.
    init_transport_socket_server(android::base::StringPrintf("tcp:%d", port));
    init_transport_socket_server(android::base::StringPrintf("vsock:%d", port));
  } else {
    // Listen on default port.
    init_transport_socket_server(
        android::base::StringPrintf("tcp:%d", DEFAULT_ADB_LOCAL_TRANSPORT_PORT));
    init_transport_socket_server(
        android::base::StringPrintf("vsock:%d", DEFAULT_ADB_LOCAL_TRANSPORT_PORT));
  }
}

int main(int argc, char** argv) {
  android::base::InitLogging(argv, &android::base::StderrLogger);
  // TODO(xunchang) implement a command parser
@@ -68,6 +89,8 @@ int main(int argc, char** argv) {

  usb_init();

  minadbd_net_init();

  VLOG(ADB) << "Event loop starting";
  fdevent_loop();