[Title] ramdump notification
authorgiwoong.kim <giwoong.kim@samsung.com>
Thu, 30 Aug 2012 12:07:31 +0000 (21:07 +0900)
committergiwoong.kim <giwoong.kim@samsung.com>
Thu, 30 Aug 2012 12:50:26 +0000 (21:50 +0900)
[Type] feature
[Module] Emualtor / menu
[Priority] major
[Jira#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase]

tizen/src/skin/client/src/org/tizen/emulator/skin/comm/ICommunicator.java
tizen/src/skin/client/src/org/tizen/emulator/skin/comm/sock/SocketCommunicator.java
tizen/src/skin/maruskin_operation.c
tizen/src/skin/maruskin_server.c
tizen/src/skin/maruskin_server.h

index b2cac8434cdc5790c65f29307e2f4db4a0f73f6d..d3d18c2b65039fb1be9ce192847cc4b8eddb377f 100644 (file)
@@ -208,6 +208,7 @@ public interface ICommunicator extends Runnable {
                HEART_BEAT( (short)1 ),
                SCREEN_SHOT_DATA( (short)2 ),
                DETAIL_INFO_DATA( (short)3 ),
+               RAMDUMP_COMPLETE( (short)4 ),
                SENSOR_DAEMON_START( (short)800 ),
                SHUTDOWN( (short)999 );
                
index 46b2508d04074a0a75d26bc6d245902c696d6e9d..f6fec2b3a19ae98946525bcce1086bb408375acf 100644 (file)
@@ -48,6 +48,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import org.eclipse.swt.SWT;
 import org.tizen.emulator.skin.EmulatorSkin;
 import org.tizen.emulator.skin.comm.ICommunicator;
 import org.tizen.emulator.skin.comm.ICommunicator.SendCommand;
@@ -111,6 +112,7 @@ public class SocketCommunicator implements ICommunicator {
        private AtomicInteger heartbeatCount;
        private boolean isTerminated;
        private boolean isSensorDaemonStarted;
+       private boolean isRamdumpCompleted;
        private ScheduledExecutorService heartbeatExecutor;
 
        private DataTranfer screenShotDataTransfer;
@@ -296,6 +298,13 @@ public class SocketCommunicator implements ICommunicator {
 
                                        break;
                                }
+                               case RAMDUMP_COMPLETE: {
+                                       logger.info("received RAMDUMP_COMPLETE from QEMU.");
+                                       synchronized ( this ) {
+                                               isRamdumpCompleted = true;
+                                       }
+                                       break;
+                               }
                                case SENSOR_DAEMON_START: {
                                        logger.info( "received SENSOR_DAEMON_START from QEMU." );
                                        synchronized ( this ) {
@@ -554,6 +563,10 @@ public class SocketCommunicator implements ICommunicator {
                return isSensorDaemonStarted;
        }
 
+       public synchronized boolean isRamdumpCompleted() {
+               return isRamdumpCompleted;
+       }
+
        private void increaseHeartbeatCount() {
                int count = heartbeatCount.incrementAndGet();
                if ( logger.isLoggable( Level.FINE ) ) {
index 6d6f9c061b9d44b07de68ca0c2a85c0a1e4c2ef2..7805d053ed6e3ebf608dfd22b81f6e5e6004e70b 100644 (file)
@@ -82,7 +82,7 @@ void start_display(uint64 handle_id, int lcd_size_width, int lcd_size_height, do
 
 void do_mouse_event( int event_type, int origin_x, int origin_y, int x, int y, int z )
 {
-    if( brightness_off ) {
+    if ( brightness_off ) {
         TRACE( "reject mouse touch in lcd off : %d, x:%d, y:%d, z:%d\n", event_type, x, y, z );
         return;
     }
@@ -426,6 +426,8 @@ void ram_dump(void) {
     INFO("ram dump!\n");
 
     dump_ram();
+
+    notify_ramdump_complete();
 }
 
 void request_close( void )
index 6ecc726850fcd3385c77ffe34fd275d3d1e14d13..0f82ce88495b3932d057838a25b38052a4242762 100644 (file)
@@ -112,6 +112,7 @@ enum {
     SEND_HEART_BEAT = 1,
     SEND_SCREEN_SHOT = 2,
     SEND_DETAIL_INFO = 3,
+    SEND_RAMDUMP_COMPLETE = 4,
     SEND_SENSOR_DAEMON_START = 800,
     SEND_SHUTDOWN = 999,
 };
@@ -194,7 +195,7 @@ void shutdown_skin_server( void ) {
         }
     }
 
-    if( success_send ) {
+    if ( success_send ) {
 
         int count = 0;
         int max_sleep_count = 10;
@@ -254,6 +255,17 @@ void notify_sensor_daemon_start( void ) {
     }
 }
 
+void notify_ramdump_complete(void) {
+    INFO("notify_ramdump_complete\n");
+
+    if (client_sock) {
+        if (0 > send_skin_header_only( client_sock, SEND_RAMDUMP_COMPLETE, 1)) {
+            ERR("fail to send SEND_RAMDUMP_COMPLETE to skin.\n");
+        }
+    }
+}
+
+
 int is_ready_skin_server( void ) {
     return ready_server;
 }
@@ -355,12 +367,12 @@ static void parse_skinconfig_prop( void ) {
 static void parse_skin_args( void ) {
 
     int i;
-    for( i = 0; i < skin_argc; i++ ) {
+    for ( i = 0; i < skin_argc; i++ ) {
 
         char* arg = NULL;
         arg = strdup( skin_argv[i] );
 
-        if( arg ) {
+        if ( arg ) {
 
             char* key = strtok( arg, "=" );
             char* value = strtok( NULL, "=" );
index aa31e95ee07c2b962cd43302da7ef572a68acce0..3ef909fb8a0adba28967d22a5cf6614bd8a2dc57 100644 (file)
 #ifndef MARUSKIN_SERVER_H_
 #define MARUSKIN_SERVER_H_
 
-int start_skin_server( int argc, char** argv, int qemu_argc, char** qemu_argv );
-void shutdown_skin_server( void );
-void notify_sensor_daemon_start( void );
-int is_ready_skin_server( void );
-int get_skin_server_port( void );
+int start_skin_server(int argc, char** argv, int qemu_argc, char** qemu_argv);
+void shutdown_skin_server(void);
+void notify_sensor_daemon_start(void);
+void notify_ramdump_complete(void);
+int is_ready_skin_server(void);
+int get_skin_server_port(void);
 
 #endif /* MARUSKIN_SERVER_H_ */