aboutsummaryrefslogtreecommitdiff
path: root/src/download.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/download.c')
-rw-r--r--src/download.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/download.c b/src/download.c
index b810a91..21df17d 100644
--- a/src/download.c
+++ b/src/download.c
@@ -195,6 +195,32 @@ int download_ready_read(struct context *context, off_t address, size_t length)
return 0;
}
+int download_write_async(struct context *context, void *buffer, size_t length)
+{
+ struct download_write_async_request request;
+ struct download_response response;
+ int rc;
+
+ memset(&request, 0, sizeof(request));
+ request.command = DOWNLOAD_WRITE_ASYNC;
+ request.total_length = htole32(length);
+ request.length = htole32(length);
+
+ rc = hdlc_send(context, &request, sizeof(request));
+ if (rc < 0)
+ return -1;
+
+ rc = download_response(context);
+ if (rc < 0)
+ return -1;
+
+ rc = usb_send(context, buffer, length);
+ if (rc < 0)
+ return -1;
+
+ return 0;
+}
+
int download_reset(struct context *context)
{
int rc;