diff options
Diffstat (limited to 'fastboot/engine.cpp')
-rw-r--r-- | fastboot/engine.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/fastboot/engine.cpp b/fastboot/engine.cpp index 4cf89ca85..56ee81637 100644 --- a/fastboot/engine.cpp +++ b/fastboot/engine.cpp @@ -45,6 +45,7 @@ #define OP_DOWNLOAD_SPARSE 5 #define OP_WAIT_FOR_DISCONNECT 6 #define OP_DOWNLOAD_FD 7 +#define OP_UPLOAD 8 typedef struct Action Action; @@ -341,6 +342,13 @@ void fb_queue_download_fd(const char *name, int fd, uint32_t sz) a->msg = mkmsg("sending '%s' (%d KB)", name, sz / 1024); } +void fb_queue_upload(char *outfile) +{ + Action *a = queue_action(OP_UPLOAD, ""); + a->data = outfile; + a->msg = mkmsg("uploading '%s'", outfile); +} + void fb_queue_notice(const char *notice) { Action *a = queue_action(OP_NOTICE, ""); @@ -395,6 +403,9 @@ int64_t fb_execute_queue(Transport* transport) if (status) break; } else if (a->op == OP_WAIT_FOR_DISCONNECT) { transport->WaitForDisconnect(); + } else if (a->op == OP_UPLOAD) { + status = fb_upload_data(transport, reinterpret_cast<char*>(a->data)); + status = a->func(a, status, status ? fb_get_error().c_str() : ""); } else { die("bogus action"); } |