Implement asynchronous data send over 'event' socket.
Change-Id: Ifce399aec98540fca4e1cca8c3599142d9ff6887
diff --git a/android/android-device.h b/android/android-device.h
index 769ba66..6825819 100644
--- a/android/android-device.h
+++ b/android/android-device.h
@@ -108,6 +108,17 @@
/* Definis infinite timeout. */
#define AD_INFINITE_WAIT -1
+/* Enumerates results of asynchronous data transfer.
+ */
+typedef enum ATResult {
+ /* Data transfer has been completed. */
+ ATR_SUCCESS,
+ /* Socket got disconnected while data transfer has been in progress. */
+ ATR_DISCONNECT,
+ /* An I/O error has occured. 'errno' contains error value. */
+ ATR_IO_ERROR,
+} ATResult;
+
/* Android device descriptor. */
typedef struct AndroidDevice AndroidDevice;
@@ -149,6 +160,20 @@
*/
typedef void (*io_failure_cb)(void* opaque, AndroidDevice* ad, int failure);
+/* Callback routine that is invoked when an asynchronous data send has been
+ * completed.
+ * Param:
+ * opaque - An opaque pointer associated with the data.
+ * res - Result of data transfer.
+ * data, size - Transferred data buffer.
+ * sent - Number of sent bytes.
+ */
+typedef void (*async_send_cb)(void* opaque,
+ ATResult res,
+ void* data,
+ int size,
+ int sent);
+
/********************************************************************************
* Android Device API.
*******************************************************************************/
@@ -277,4 +302,20 @@
int buffsize,
event_cb on_event);
+/* Asynchronously sends data to the android device.
+ * Param:
+ * ad - Android device descriptor, returned from android_device_init API.
+ * data, size - Buffer containing data to send.
+ * free_on_close - A boolean flag indicating whether the data buffer should be
+ * freed upon data transfer completion.
+ * cb - Callback to invoke when data transfer is completed.
+ * opaque - An opaque pointer to pass to the transfer completion callback.
+ */
+extern int android_device_send_async(AndroidDevice* ad,
+ void* data,
+ int size,
+ int free_on_close,
+ async_send_cb cb,
+ void* opaque);
+
#endif /* ANDROID_ANDROID_DEVICE_H_ */