graph LR
Connect["Connect"]
Open["Open"]
Send["Send"]
Read["Read"]
Pack["Pack"]
Unpack["Unpack"]
Write["Write"]
Close["Close"]
Connect -- "calls" --> Send
Connect -- "calls" --> Read
Open -- "calls" --> Send
Open -- "calls" --> Read
Send -- "calls" --> Pack
Read -- "calls" --> Unpack
Write -- "calls" --> Send
Write -- "calls" --> Read
Close -- "calls" --> Send
Close -- "calls" --> Read
The adb.adb_protocol subsystem forms the backbone of ADB communication, abstracting the complexities of message framing and transmission. At its core, AdbMessage handles the fundamental Pack and Unpack operations for message serialization and deserialization, respectively. The Send and Read components, part of AdbMessage, act as the primary interfaces for sending and receiving raw ADB messages over the USB connection, leveraging Pack and Unpack for data preparation and interpretation. Higher-level components like Connect and Open orchestrate the initial connection handshake and stream establishment by utilizing Send and Read. Similarly, Write and Close manage data flow and stream termination, relying on Send and Read for their underlying message exchange. This layered architecture ensures a clear separation of concerns, from low-level byte manipulation to high-level protocol interactions.
Initiates the ADB protocol handshake, establishing the initial connection with the Android device. This involves sending connection requests and handling authentication challenges.
Related Classes/Methods:
Opens new service-specific streams over an established ADB connection, allowing for concurrent operations. It sends an OPEN message to the device to request a new stream.
Related Classes/Methods:
Orchestrates the transmission of raw ADB messages. It serializes the message header and then writes both the header and the data payload to the underlying USB communication channel.
Related Classes/Methods:
Manages the reception of raw ADB messages. It reads incoming bytes from the USB channel, deserializes the message header, and then reads the associated data payload, performing checksum validation.
Related Classes/Methods:
Formats and serializes Python objects into the byte-level ADB message header structure, ensuring compliance with the ADB protocol's framing.
Related Classes/Methods:
Deserializes received byte streams into structured ADB message header objects, making them usable by higher-level components.
Related Classes/Methods:
Writes data to an active ADB stream, typically used for sending service-specific payloads or commands, and expects an acknowledgment.
Related Classes/Methods:
Terminates an active ADB stream, signaling the end of a service-specific communication session.
Related Classes/Methods: