[TITLE] add daemon
authorwonhyoung2.park <wonhyoung2.park@samsung.com>
Wed, 9 Nov 2011 08:24:24 +0000 (17:24 +0900)
committerwonhyoung2.park <wonhyoung2.park@samsung.com>
Wed, 9 Nov 2011 08:24:24 +0000 (17:24 +0900)
[Type]
[Module]
[Priority]
[CQ#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase]

com.samsung.dynamicanalyzer.workbench/DynamicAnalyzer/tools/da_daemon [new file with mode: 0755]
com.samsung.dynamicanalyzer/src/com/samsung/dynamicanalyzer/SDBManager.java

diff --git a/com.samsung.dynamicanalyzer.workbench/DynamicAnalyzer/tools/da_daemon b/com.samsung.dynamicanalyzer.workbench/DynamicAnalyzer/tools/da_daemon
new file mode 100755 (executable)
index 0000000..83bd1d6
Binary files /dev/null and b/com.samsung.dynamicanalyzer.workbench/DynamicAnalyzer/tools/da_daemon differ
index f4b86fe..e1609a7 100644 (file)
@@ -35,6 +35,48 @@ public class SDBManager {
        private static boolean isAppRunning = false;
        private static String appName = null;
 
+       public static void runDaemon() {
+               if (null == serial) {
+                       return;
+               }
+               if (!loadDaemon()) {
+                       return;
+               }
+               if (!isDaemonRunning()) {
+                       if (null == homePath)
+                               getHomeEvn();
+                       try {
+                               Runtime rt = Runtime.getRuntime();
+                               rt.exec(getSDBPathWithSerial()
+                                               + " shell /home/root/.DA_preload/da_daemon &");
+                       } catch (Exception e) {
+                               e.printStackTrace();
+                       }
+               }
+       }
+
+       private static boolean isDaemonRunning() {
+
+               if (null == homePath)
+                       getHomeEvn();
+               try {
+                       Runtime rt = Runtime.getRuntime();
+                       Process ps = rt.exec(getSDBPathWithSerial()
+                                       + " shell ps -All |  grep da_daemon");
+
+                       BufferedReader br = new BufferedReader(new InputStreamReader(
+                                       ps.getInputStream()));
+                       // String app = null;
+                       while (null != br.readLine()) {
+                               return true;
+                       }
+                       br.close();
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
+               return false;
+       }
+
        public static String getAppName() {
                return appName;
        }
@@ -65,6 +107,7 @@ public class SDBManager {
 
        public static void setSerial(String serial) {
                SDBManager.serial = serial;
+               runDaemon();
        }
 
        // TODO remove comment
@@ -78,6 +121,7 @@ public class SDBManager {
 
        public static ArrayList<String> getDevices() {
                ArrayList<String> deviceList = new ArrayList<String>();
+
                if (null == homePath)
                        getHomeEvn();
                int cnt = 0;
@@ -103,6 +147,7 @@ public class SDBManager {
                } catch (Exception e) {
                        e.printStackTrace();
                }
+
                return deviceList;
        }
 
@@ -186,6 +231,49 @@ public class SDBManager {
                return false;
        }
 
+       private static boolean loadDaemon() {
+               Runtime rt = Runtime.getRuntime();
+               Process ps = null;
+               StringBuilder command = new StringBuilder();
+               command.append(getSDBPathWithSerial());
+               command.append(" push ");
+               command.append(homePath);
+               String baseCommand = command.toString();
+               String loadDaemonCommand = baseCommand
+                               + "/samsung-sdk/DynamicAnalyzer/tools/da_daemon /home/root/.DA_preload/";
+               String makePreloadDirCmd = " shell mkdir /home/root/.DA_preload";
+               // rt.exec(getSDBPathWithSerial() +
+               // " shell mkdir /home/root/.DynamicAnalyzer");
+               try {
+                       ps = rt.exec(getSDBPathWithSerial() + makePreloadDirCmd);
+                       BufferedReader br = new BufferedReader(new InputStreamReader(
+                                       ps.getInputStream()));
+                       if (null != (br.readLine())) {
+                               // System.out.println(">> load memory : " + message);
+                       }
+
+                       ps = rt.exec(loadDaemonCommand);
+                       BufferedReader ebr = new BufferedReader(new InputStreamReader(
+                                       ps.getErrorStream()));
+                       br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
+                       if (null == ebr.readLine()) {
+                               // System.out.println(">>>> no device (load memory so)) !! ");
+                               serial = null;
+                               return false;
+                       }
+                       if (null != (br.readLine())) {
+                               // System.out.println(">> load memory : " + message);
+                       }
+                       ebr.close();
+               } catch (IOException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+
+               return true;
+
+       }
+
        private static boolean loadSo() {
                boolean isLoaded = isSoLoaded();
                if (null == serial) {