From: GiWoong Kim Date: Tue, 12 Nov 2013 03:07:59 +0000 (+0900) Subject: communication: added protocol for the host keyboard state X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~604 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ee9ce414742da39ea129eeb67ee821f3d96d7930;p=sdk%2Femulator%2Fqemu.git communication: added protocol for the host keyboard state The Qemu-Skin protocol has been extended to share the host keyboard state between ECP and right-click popup menu. Change-Id: I50e239047b5fda6337f8505b84298643c2efb4ed Signed-off-by: GiWoong Kim --- diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java index 7cee18b994..f694bfa338 100755 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java @@ -1248,6 +1248,18 @@ public class EmulatorSkin { }); } + public void updateHostKbdMenu(final boolean on) { + isOnKbd = on; + + getShell().getDisplay().asyncExec(new Runnable() { + @Override + public void run() { + getPopupMenu().kbdOnItem.setSelection(isOnKbd); + getPopupMenu().kbdOffItem.setSelection(!isOnKbd); + } + }); + } + protected void displayOn() { logger.info("display on"); diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/ICommunicator.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/ICommunicator.java index 9b96120d1e..a69445d43d 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/ICommunicator.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/ICommunicator.java @@ -267,6 +267,7 @@ public interface ICommunicator extends Runnable { RECV_BOOTING_PROGRESS((short) 5), RECV_BRIGHTNESS_STATE((short) 6), RECV_ECP_PORT_DATA((short) 7), + RECV_HOST_KBD_STATE((short) 8), RECV_SENSORD_STARTED((short) 800), RECV_SDBD_STARTED((short) 801), diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/sock/SocketCommunicator.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/sock/SocketCommunicator.java index e79b9656be..2d571058ad 100755 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/sock/SocketCommunicator.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/sock/SocketCommunicator.java @@ -379,6 +379,32 @@ public class SocketCommunicator implements ICommunicator { break; } + case RECV_HOST_KBD_STATE: { + logger.info("received HOST_KBD_STATE from QEMU"); + + resetDataTransfer(miscDataTransfer); + receiveData(miscDataTransfer, length); + + byte[] receivedData = getReceivedData(miscDataTransfer); + if (null != receivedData) { + String strValue = new String(receivedData, 0, length - 1); + + int value = 1; + try { + value = Integer.parseInt(strValue); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + + if (value == 0) { + skin.updateHostKbdMenu(false); + } else { + skin.updateHostKbdMenu(true); + } + } + + break; + } case RECV_SENSORD_STARTED: { logger.info("received SENSORD_STARTED from QEMU"); diff --git a/tizen/src/skin/maruskin_server.c b/tizen/src/skin/maruskin_server.c index 2db5538e72..8025f5d1b2 100644 --- a/tizen/src/skin/maruskin_server.c +++ b/tizen/src/skin/maruskin_server.c @@ -100,6 +100,7 @@ enum { in Skin process */ RECV_SKIN_OPENED = 1, + RECV_MOUSE_EVENT = 10, RECV_KEYBOARD_KEY_EVENT = 11, RECV_HW_KEY_EVENT = 12, @@ -111,6 +112,7 @@ enum { RECV_RAM_DUMP = 18, RECV_GUESTMEMORY_DUMP = 19, RECV_ECP_PORT_REQ = 20, + RECV_RESPONSE_HEART_BEAT = 900, RECV_RESPONSE_DRAW_FRAME = 901, RECV_CLOSE_REQ = 998, @@ -129,6 +131,7 @@ enum { SEND_BRIGHTNESS_STATE = 6, SEND_ECP_PORT_DATA = 7, SEND_HOST_KBD_STATE = 8, + SEND_SENSORD_STARTED = 800, SEND_SDBD_STARTED = 801, SEND_ECS_STARTED = 802, @@ -425,6 +428,31 @@ void notify_brightness_state(bool on) } } +void notify_host_kbd_state(bool on) +{ +#define HOSTKBD_DATA_LENGTH 2 + char kbd_state_data[HOSTKBD_DATA_LENGTH] = { 0, }; + + if (on == false) { + snprintf(kbd_state_data, HOSTKBD_DATA_LENGTH, "0"); + } else { + snprintf(kbd_state_data, HOSTKBD_DATA_LENGTH, "1"); + } + + TRACE("notify host kbd state : %s\n", kbd_state_data); + + if (client_sock) { + if (0 > send_skin_data(client_sock, + SEND_HOST_KBD_STATE, + (unsigned char *)kbd_state_data, HOSTKBD_DATA_LENGTH, 0)) { + + ERR("fail to send SEND_HOST_KBD_STATE to skin\n"); + } + } else { + INFO("skin client socket is not connected yet\n"); + } +} + int is_ready_skin_server(void) { return ready_server; diff --git a/tizen/src/skin/maruskin_server.h b/tizen/src/skin/maruskin_server.h index 1b1743a285..3e492a33f6 100644 --- a/tizen/src/skin/maruskin_server.h +++ b/tizen/src/skin/maruskin_server.h @@ -41,6 +41,7 @@ void notify_sensor_daemon_start(void); void notify_ramdump_completed(void); void notify_booting_progress(unsigned int layer, int progress_value); void notify_brightness_state(bool on); +void notify_host_kbd_state(bool on); int is_ready_skin_server(void); int get_skin_server_port(void);