40#include <sparse/sparse.h>
50 std::function<void(
const std::string&)>
prolog = [](
const std::string&) {};
51 std::function<void(
int)>
epilog = [](int) {};
52 std::function<void(
const std::string&)>
info = [](
const std::string&) {};
53 std::function<void(
const std::string&)>
text = [](
const std::string&) {};
65 bool no_checks =
false);
68 RetCode Boot(std::string* response =
nullptr, std::vector<std::string>*
info =
nullptr);
69 RetCode Continue(std::string* response =
nullptr, std::vector<std::string>*
info =
nullptr);
73 std::string* response =
nullptr,
74 std::vector<std::string>*
info =
nullptr)
override;
76 std::vector<std::string>*
info =
nullptr);
78 std::string* response =
nullptr, std::vector<std::string>*
info =
nullptr);
79 RetCode Download(
const std::vector<char>& buf, std::string* response =
nullptr,
80 std::vector<std::string>*
info =
nullptr);
81 RetCode Download(
const std::string& partition,
struct sparse_file* s, uint32_t sz,
82 size_t current,
size_t total,
bool use_crc, std::string* response =
nullptr,
83 std::vector<std::string>*
info =
nullptr);
84 RetCode Download(sparse_file* s,
bool use_crc =
false, std::string* response =
nullptr,
85 std::vector<std::string>*
info =
nullptr);
86 RetCode Erase(
const std::string& partition, std::string* response =
nullptr,
87 std::vector<std::string>*
info =
nullptr)
override;
88 RetCode Flash(
const std::string& partition, std::string* response =
nullptr,
89 std::vector<std::string>*
info =
nullptr);
91 std::vector<std::string>*
info =
nullptr)
override;
94 std::vector<std::string>*
info =
nullptr)
override;
96 std::vector<std::string>*
info =
nullptr)
override;
99 std::vector<std::string>*
info =
nullptr);
100 RetCode Upload(
const std::string& outfile, std::string* response =
nullptr,
101 std::vector<std::string>*
info =
nullptr);
103 std::vector<std::string>*
info =
nullptr);
105 int64_t offset = -1, int64_t
size = -1, std::string* response =
nullptr,
106 std::vector<std::string>*
info =
nullptr)
override;
111 uint32_t sz)
override;
113 size_t current,
size_t total);
116 RetCode Require(
const std::string& var,
const std::vector<std::string>& allowed,
bool* reqmet,
117 bool invert =
false);
128 std::string* response =
nullptr, std::vector<std::string>*
info =
nullptr,
129 int* dsize =
nullptr);
132 std::vector<std::string>*
info =
nullptr,
int* dsize =
nullptr);
136 std::vector<std::string>*
info =
nullptr);
138 std::vector<std::string>*
info =
nullptr,
int* dsize =
nullptr);
140 std::string
ErrnoStr(
const std::string& msg);
152 std::vector<std::string>*
info =
nullptr);
154 std::vector<std::string>*
info,
155 const std::function<
RetCode(
const char*, uint64_t)>& write_fn);
160 std::function<void(
const std::string&)>
prolog_;
162 std::function<void(
const std::string&)>
info_;
163 std::function<void(
const std::string&)>
text_;
Definition: transport.h:23
Definition: fastboot_driver.h:56
FastBootDriver(std::unique_ptr< Transport > transport, DriverCallbacks driver_callbacks={}, bool no_checks=false)
Definition: fastboot_driver.cpp:61
static constexpr uint32_t MAX_DOWNLOAD_SIZE
Definition: fastboot_driver.h:61
RetCode ReadBuffer(void *buf, size_t size)
Definition: fastboot_driver.cpp:583
void set_transport(std::unique_ptr< Transport > transport)
Definition: fastboot_driver.cpp:631
RetCode SetActive(const std::string &slot, std::string *response=nullptr, std::vector< std::string > *info=nullptr)
Definition: fastboot_driver.cpp:125
friend class FastBootTest
Definition: fastboot_driver.h:57
std::string Error()
Definition: fastboot_driver.cpp:419
RetCode HandleResponse(std::string *response=nullptr, std::vector< std::string > *info=nullptr, int *dsize=nullptr)
Definition: fastboot_driver.cpp:464
RetCode ResizePartition(const std::string &partition, const std::string &size) override
Definition: fastboot_driver.cpp:120
std::function< void(int)> epilog_
Definition: fastboot_driver.h:161
RetCode GetVarAll(std::vector< std::string > *response)
Definition: fastboot_driver.cpp:106
RetCode Continue(std::string *response=nullptr, std::vector< std::string > *info=nullptr)
Definition: fastboot_driver.cpp:78
std::function< void(const std::string &)> prolog_
Definition: fastboot_driver.h:160
bool disable_checks_
Definition: fastboot_driver.h:164
RetCode Require(const std::string &var, const std::vector< std::string > &allowed, bool *reqmet, bool invert=false)
int SparseWriteCallback(std::vector< char > &tpbuf, const char *data, size_t len)
Definition: fastboot_driver.cpp:598
RetCode Download(const std::string &name, android::base::borrowed_fd fd, size_t size, std::string *response=nullptr, std::vector< std::string > *info=nullptr) override
Definition: fastboot_driver.cpp:188
RetCode RunAndReadBuffer(const std::string &cmd, std::string *response, std::vector< std::string > *info, const std::function< RetCode(const char *, uint64_t)> &write_fn)
Definition: fastboot_driver.cpp:311
std::function< void(const std::string &)> text_
Definition: fastboot_driver.h:163
RetCode Boot(std::string *response=nullptr, std::vector< std::string > *info=nullptr)
Definition: fastboot_driver.cpp:74
RetCode DeletePartition(const std::string &partition) override
Definition: fastboot_driver.cpp:87
static constexpr int RESP_TIMEOUT
Definition: fastboot_driver.h:60
RetCode FlashPartition(const std::string &partition, const std::vector< char > &data)
Definition: fastboot_driver.cpp:140
RetCode Reboot(std::string *response=nullptr, std::vector< std::string > *info=nullptr) override
Definition: fastboot_driver.cpp:111
std::function< void(const std::string &)> info_
Definition: fastboot_driver.h:162
void SetInfoCallback(std::function< void(const std::string &)> info)
Definition: fastboot_driver.cpp:390
static const std::string RCString(RetCode rc)
Definition: fastboot_driver.cpp:394
RetCode Upload(const std::string &outfile, std::string *response=nullptr, std::vector< std::string > *info=nullptr)
Definition: fastboot_driver.cpp:300
RetCode CreatePartition(const std::string &partition, const std::string &size)
Definition: fastboot_driver.cpp:82
RetCode SnapshotUpdateCommand(const std::string &command, std::string *response=nullptr, std::vector< std::string > *info=nullptr)
Definition: fastboot_driver.cpp:131
RetCode SendBuffer(android::base::borrowed_fd fd, size_t size)
Definition: fastboot_driver.cpp:532
~FastBootDriver()
Definition: fastboot_driver.cpp:71
RetCode Partitions(std::vector< std::tuple< std::string, uint64_t > > *partitions)
Definition: fastboot_driver.cpp:167
static constexpr size_t TRANSPORT_CHUNK_SIZE
Definition: fastboot_driver.h:62
RetCode DownloadCommand(uint32_t size, std::string *response=nullptr, std::vector< std::string > *info=nullptr)
Definition: fastboot_driver.cpp:454
RetCode Erase(const std::string &partition, std::string *response=nullptr, std::vector< std::string > *info=nullptr) override
Definition: fastboot_driver.cpp:91
RetCode Flash(const std::string &partition, std::string *response=nullptr, std::vector< std::string > *info=nullptr)
Definition: fastboot_driver.cpp:96
RetCode GetVar(const std::string &key, std::string *val, std::vector< std::string > *info=nullptr) override
Definition: fastboot_driver.cpp:101
RetCode WaitForDisconnect() override
Definition: fastboot_driver.cpp:423
RetCode RebootTo(std::string target, std::string *response=nullptr, std::vector< std::string > *info=nullptr) override
Definition: fastboot_driver.cpp:115
RetCode FetchToFd(const std::string &partition, android::base::borrowed_fd fd, int64_t offset=-1, int64_t size=-1, std::string *response=nullptr, std::vector< std::string > *info=nullptr) override
Definition: fastboot_driver.cpp:366
RetCode RawCommand(const std::string &cmd, const std::string &message, std::string *response=nullptr, std::vector< std::string > *info=nullptr, int *dsize=nullptr)
Definition: fastboot_driver.cpp:428
std::string ErrnoStr(const std::string &msg)
Definition: fastboot_driver.cpp:527
std::string error_
Definition: fastboot_driver.h:159
RetCode UploadInner(const std::string &outfile, std::string *response=nullptr, std::vector< std::string > *info=nullptr)
Definition: fastboot_driver.cpp:345
std::unique_ptr< Transport > transport_
Definition: fastboot_driver.h:142
Definition: fastboot_driver_interface.h:35
struct fs_info info
Definition: ext4_utils.cpp:42
char data[Size]
Definition: incremental_server.cpp:1
uint32_t size
Definition: io.h:2
Definition: fastboot_driver.cpp:58
RetCode
Definition: fastboot_driver_interface.h:26
Definition: unique_fd.h:292
Definition: fastboot_driver.h:49
std::function< void(int)> epilog
Definition: fastboot_driver.h:51
std::function< void(const std::string &)> text
Definition: fastboot_driver.h:53
std::function< void(const std::string &)> prolog
Definition: fastboot_driver.h:50
std::function< void(const std::string &)> info
Definition: fastboot_driver.h:52