Support fastboot reboot
Supports fastboot command `fastboot reboot*`. Only normal mode reboot is
implemented.
Because the reboot bakcend does not return if successful. It is up to
the backend implementation to send a fastboot OKAY message. Otherwise
the remote host may block waiting for a reply. In order to accomodate
this, the CL re-designs the FastbootUtils trait passed to backends and
divides it into a number of traits for sending specific kind of message.
Depending on the type of commands, the library will pass different
combination of traits for backend to send needed messages. This also
solves an existing limitation where fetch/get_staged backend can't send
INFO messages before uploading.
Bug: 365543281
Change-Id: Ic525d380304d9cede458d8ee5eef59643e1b817c
8 files changed