summaryrefslogtreecommitdiffstats
path: root/fastboot/engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fastboot/engine.cpp')
-rw-r--r--fastboot/engine.cpp11
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");
}