Refactor the framebuffer service

Change-Id: I8ac4580af65b8d58976c97b77b309dd202e75003
diff --git a/android/protocol/fb-updates.h b/android/protocol/fb-updates.h
new file mode 100644
index 0000000..c4f9779
--- /dev/null
+++ b/android/protocol/fb-updates.h
@@ -0,0 +1,45 @@
+/* Copyright (C) 2010 The Android Open Source Project
+**
+** This software is licensed under the terms of the GNU General Public
+** License version 2, as published by the Free Software Foundation, and
+** may be copied, distributed, and modified under those terms.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+*/
+
+/*
+ * Contains the API for calling into the UI with Core's framebuffer updates.
+ */
+
+#ifndef _ANDROID_PROTOCOL_FB_UPDATES_H
+#define _ANDROID_PROTOCOL_FB_UPDATES_H
+
+#include "sysemu.h"
+
+/* Requests the Core to refresh framebuffer.
+ * This message is sent by the UI to the Core right after the UI is initialized.
+ * This message forces the Core to send a full display update back to the UI. */
+#define AFB_REQUEST_REFRESH     1
+
+/* Header of framebuffer update message sent from the core to the UI. */
+typedef struct FBUpdateMessage {
+    /* x, y, w, and h identify the rectangle that is being updated. */
+    uint16_t    x;
+    uint16_t    y;
+    uint16_t    w;
+    uint16_t    h;
+
+    /* Contains updating rectangle copied over from the framebuffer's pixels. */
+    uint8_t rect[0];
+} FBUpdateMessage;
+
+/* Header for framebuffer requests sent from the UI to the Core. */
+typedef struct FBRequestHeader {
+    /* Request type. See AFB_REQUEST_XXX for the values. */
+    uint8_t request_type;
+} FBRequestHeader;
+
+#endif /* _ANDROID_PROTOCOL_FB_UPDATES_H */