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

Commit b0c18026 authored by Josh Gao's avatar Josh Gao
Browse files

adb: add track-devices-l service.

Add a way to get the full `devices -l` output on a continuous basis.

Test: manual
Change-Id: I2270cc0a0d7e1384ce19631724ddf2462d963ade
parent b122b175
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -441,7 +441,9 @@ static void connect_service(int fd, void* data) {
#if ADB_HOST
asocket* host_service_to_socket(const char* name, const char* serial, TransportId transport_id) {
    if (!strcmp(name,"track-devices")) {
        return create_device_tracker();
        return create_device_tracker(false);
    } else if (!strcmp(name, "track-devices-l")) {
        return create_device_tracker(true);
    } else if (android::base::StartsWith(name, "wait-for-")) {
        name += strlen("wait-for-");

+8 −6
Original line number Diff line number Diff line
@@ -329,7 +329,8 @@ static fdevent transport_registration_fde;
 */
struct device_tracker {
    asocket socket;
    int update_needed;
    bool update_needed;
    bool long_output;
    device_tracker* next;
};

@@ -386,15 +387,15 @@ static void device_tracker_ready(asocket* socket) {

    // We want to send the device list when the tracker connects
    // for the first time, even if no update occurred.
    if (tracker->update_needed > 0) {
        tracker->update_needed = 0;
    if (tracker->update_needed) {
        tracker->update_needed = false;

        std::string transports = list_transports(false);
        std::string transports = list_transports(tracker->long_output);
        device_tracker_send(tracker, transports);
    }
}

asocket* create_device_tracker(void) {
asocket* create_device_tracker(bool long_output) {
    device_tracker* tracker = reinterpret_cast<device_tracker*>(calloc(1, sizeof(*tracker)));
    if (tracker == nullptr) fatal("cannot allocate device tracker");

@@ -403,7 +404,8 @@ asocket* create_device_tracker(void) {
    tracker->socket.enqueue = device_tracker_enqueue;
    tracker->socket.ready = device_tracker_ready;
    tracker->socket.close = device_tracker_close;
    tracker->update_needed = 1;
    tracker->update_needed = true;
    tracker->long_output = long_output;

    tracker->next = device_tracker_list;
    device_tracker_list = tracker;
+1 −1
Original line number Diff line number Diff line
@@ -233,6 +233,6 @@ void close_usb_devices(std::function<bool(const atransport*)> predicate);

void send_packet(apacket* p, atransport* t);

asocket* create_device_tracker(void);
asocket* create_device_tracker(bool long_output);

#endif   /* __TRANSPORT_H */