public static final String TARGET_FOLDER_NAME = "target"; //$NON-NLS-1$\r
public static final String DYNAMIC_ANALYZER_FOLDER_NAME = "dynamic-analyzer"; //$NON-NLS-1$\r
public static final String SAVE_FOLDER_NAME = "save"; //$NON-NLS-1$\r
+ public static final String SETTING_FOLDER_NAME = "setting"; //$NON-NLS-1$\r
public static final String PLATFORM_FOLDER_NAME = "platforms"; //$NON-NLS-1$\r
public static final String LOGS_FOLDER_NAME = "logs"; //$NON-NLS-1$\r
public static final String TEMP_FOLDER_NAME = "temp"; //$NON-NLS-1$\r
public static final int APP_INFO_SIZE = 21;\r
\r
/* app type */\r
- public static final int APP_TYPE_TIZEN = 0;\r
- public static final int APP_TYPE_OSP = 1;\r
+ public static final int APP_TYPE_TIZEN = 1;\r
+ public static final int APP_TYPE_OSP = 4;\r
\r
/* Source Line errors */\r
public static final int SOURCELINE_NOERROR = 0;\r
public final static int MSG_STOP_SWAP = 0x0003;\r
public final static int MSG_CONFIG = 0x0004;\r
public final static int MSG_BINARY_INFO = 0x0005;\r
- public final static int MSG_SWAP_INST = 0x0006;\r
public final static int MSG_TARGET_INFO = 0x0007;\r
+ public final static int MSG_SWAP_INST_ADD = 0x0008;\r
+ public final static int MSG_SWAP_INST_REMOVE = 0x0009;\r
\r
public final static int MSG_KEEP_ALIVE_ACK = 0x1001;\r
public final static int MSG_START_ACK = 0x1002;\r
public final static int MSG_STOP_ACK = 0x1003;\r
public final static int MSG_CONFIG_ACK = 0x1004;\r
public final static int MSG_BINARY_INFO_ACK = 0x1005;\r
- public final static int MSG_SWAP_INST_ACK = 0x1006;\r
public final static int MSG_TARGET_INFO_ACK = 0x1007;\r
+ public final static int MSG_SWAP_INST_ADD_ACK = 0x1008;\r
+ public final static int MSG_SWAP_INST_REMOVE_ACK = 0x1009;\r
public final static int MSG_WAIT_ACK = 0x1010;\r
\r
/*** data channel messages */\r
- public final static int MSG_DATA_PROCESS_INFO = 0x2002;\r
- public final static int MSG_DATA_TERMINATE = 0x2004;\r
- public final static int MSG_DATA_ERROR = 0x2005;\r
- public final static int MSG_DATA_SAMPLE = 0x2006;\r
- public final static int MSG_DATA_SYSTEM = 0x2007;\r
- public final static int MSG_DATA_RECORD = 0x2009;\r
- public final static int MSG_FUNCTION_ENTRY = 0x2010;\r
- public final static int MSG_FUNCTION_EXIT = 0x2011;\r
- public final static int MSG_CONTEXT_SWITCH_ENTRY = 0x2012;\r
- public final static int MSG_CONTEXT_SWITCH_EXIT = 0x2013;\r
-\r
- public final static int MSG_PROBE_MEMORY = 0x3001;\r
- public final static int MSG_PROBE_UICONTROL = 0x3002;\r
- public final static int MSG_PROBE_UIEVENT = 0x3003;\r
- public final static int MSG_PROBE_FILE = 0x3004;\r
- public final static int MSG_PROBE_LIFECYCLE = 0x3005;\r
- public final static int MSG_PROBE_SCREENSHOT = 0x3006;\r
- public final static int MSG_PROBE_SCENE = 0x3007;\r
- public final static int MSG_PROBE_THREAD = 0x3008;\r
- public final static int MSG_PROBE_CUSTOM = 0x3009;\r
- public final static int MSG_PROBE_SYNC = 0x3010;\r
- public final static int MSG_PROBE_NETWORK = 0x3011;\r
- public final static int MSG_PROBE_GLES20 = 0x3012;\r
+// public final static int MSG_DATA_PROCESS_INFO = 0x0001;\r
+// public final static int MSG_DATA_TERMINATE = 0x0002;\r
+// public final static int MSG_DATA_ERROR = 0x0003;\r
+// public final static int MSG_DATA_SAMPLE = 0x0004;\r
+// public final static int MSG_DATA_SYSTEM = 0x0005;\r
+// public final static int MSG_DATA_RECORD = 0x0006;\r
+// public final static int MSG_FUNCTION_ENTRY = 0x0008;\r
+// public final static int MSG_FUNCTION_EXIT = 0x0009;\r
+// public final static int MSG_CONTEXT_SWITCH_ENTRY = 0x0010;\r
+// public final static int MSG_CONTEXT_SWITCH_EXIT = 0x0011;\r
+//\r
+// public final static int MSG_PROBE_MEMORY = 0x0101;\r
+// public final static int MSG_PROBE_UICONTROL = 0x0102;\r
+// public final static int MSG_PROBE_UIEVENT = 0x0103;\r
+// public final static int MSG_PROBE_FILE = 0x0104;\r
+// public final static int MSG_PROBE_LIFECYCLE = 0x0105;\r
+// public final static int MSG_PROBE_SCREENSHOT = 0x0106;\r
+// public final static int MSG_PROBE_SCENE = 0x0107;\r
+// public final static int MSG_PROBE_THREAD = 0x0108;\r
+// public final static int MSG_PROBE_CUSTOM = 0x0109;\r
+// public final static int MSG_PROBE_SYNC = 0x0110;\r
+// public final static int MSG_PROBE_NETWORK = 0x0111;\r
+// public final static int MSG_PROBE_GLES20 = 0x0112;\r
\r
}\r
}
public static boolean isOsp() {
- int type = getProject().getApplicationType();
- if (type == AnalyzerConstants.APP_TYPE_OSP) {
- return true;
- }
+ // FIXME
+ // if (AnalyzerUtil.isPieBuild(pid)) {
+ // return true;
+ // }
return false;
}
public static void setLogParsingComplete(boolean complete) {
isLogParsingComplete = complete;
}
+
}
.getInstallPath();
public static final String DYNAMIC_ANALYZER_SAVE_PATH = PathManager
.getSavePath();
+ public static final String DYNAMIC_ANALYZER_SETTING_PATH = PathManager
+ .getBinarySettingPath();
public static final String DYNAMIC_ANALYZER_AUTOTEST_PATH = TIZEN_SDK_DATA_PATH
- + File.separator + "test" + File.separator
+ + File.separator
+ + "test"
+ + File.separator
+ AnalyzerConstants.DYNAMIC_ANALYZER_FOLDER_NAME;
public static final String TOOL_FOLDER_PATH = DYNAMIC_ANALYZER_INSTALL_PATH
+ File.separator + AnalyzerConstants.TOOLS_FOLDER_NAME;
public static final String APPLICATION_LIST_PATH = "/opt/share/applications/"; //$NON-NLS-1$
public static final String DA_DAEMON_LOG_PATH = "/tmp/daemonlog.da"; //$NON-NLS-1$
- public static final String DA_API_MAP_PATH = "/home/developer/api_map"; //$NON-NLS-1$
-// public static final String DA_API_MAP_PATH = "/usr/lib/da_api_map"; //$NON-NLS-1$
+ public static final String DA_API_MAP_PATH = "/usr/lib/da_api_map"; //$NON-NLS-1$
+ // public static final String DA_API_MAP_PATH = "/usr/lib/da_api_map"; //$NON-NLS-1$
+ public static final String SBI_COMMAND = TIZEN_ROOT_PATH + File.separator
+ + AnalyzerConstants.TOOLS_FOLDER_NAME + File.separator
+ + "smart-build-interface" + File.separator + "bin" + File.separator
+ + "sbi";
}
package org.tizen.dynamicanalyzer.common;
+
public class AnalyzerShellCommands {
/* Commands */
return savePath;
}
+ public static String getBinarySettingPath() {
+ String savePath = AnalyzerPaths.TIZEN_SDK_DATA_PATH;
+ if (null != savePath) {
+ savePath += File.separator
+ + AnalyzerConstants.DYNAMIC_ANALYZER_FOLDER_NAME
+ + File.separator + AnalyzerConstants.SETTING_FOLDER_NAME;
+ }
+ return savePath;
+ }
+
public static String getLogPath() {
String logPath = AnalyzerPaths.TIZEN_SDK_DATA_PATH;
if (null != logPath) {
public static void setSelectedDevice(DeviceInfo device) {
currentDevice = device;
-// if (null != currentDevice) {
-// String version = currentDevice.getTargetVersion();
-// if (version.equals(DA_VERSION_OLD)) {
-// communicator = communicator_211;
-// } else if (version.equals(DA_VERSION_SWAP)) {
-// communicator = communicator_30;
-// } else {
-// // error
-// System.out.println("not supported version");
-// }
-// }
+ // if (null != currentDevice) {
+ // String version = currentDevice.getTargetVersion();
+ // if (version.equals(DA_VERSION_OLD)) {
+ // communicator = communicator_211;
+ // } else if (version.equals(DA_VERSION_SWAP)) {
+ // communicator = communicator_30;
+ // } else {
+ // // error
+ // System.out.println("not supported version");
+ // }
+ // }
}
public static PackageInfo getSelectedApp() {
return null;
}
List<PackageInfo> appInfoList = currentDevice.getAppInfoList();
- HashMap<String, PackageInfo> appInfoHash = currentDevice.getAppInfoHash();
+ HashMap<String, PackageInfo> appInfoHash = currentDevice
+ .getAppInfoHash();
List<PackageInfo> backList = new ArrayList<PackageInfo>();
backList.addAll(appInfoHash.values());
}
if (!backList.isEmpty()) {
for (PackageInfo pkg : backList) {
+ String pkgId = pkg.getInfo(PackageInfo.PACKAGE_INDEX);
appInfoList.remove(pkg);
- appInfoHash.remove(pkg);
+ appInfoHash.remove(pkgId);
}
}
return appInfoList;
return communicator.handleControlMessage(msg);
}
+ public static HostResult sendBinaryInfoMessageForLib() {
+ if (isSWAPVersion()) {
+ return communicator_30.sendBinaryInfoMessageForLib();
+ }
+ return null;
+ }
+
+ public static HostResult sendSWAPMessage(int messageId) {
+ if (isSWAPVersion()) {
+ return communicator_30.sendSWAPMessage(messageId);
+ }
+ return null;
+ }
+
public static HostResult sendKeepAliveMessage(DeviceInfo device) {
return communicator.sendKeepAliveMessage(device);
}
import org.tizen.dynamicanalyzer.swap.model.DATime;\r
import org.tizen.dynamicanalyzer.swap.model.control.TargetInfo;\r
import org.tizen.dynamicanalyzer.swap.model.data.ApiNameManager;\r
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;\r
import org.tizen.dynamicanalyzer.swap.model.data.LibraryObject;\r
import org.tizen.dynamicanalyzer.swap.model.data.ProcessInfo;\r
import org.tizen.dynamicanalyzer.swap.model.probe2.FailedData2;\r
import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;\r
import org.tizen.dynamicanalyzer.widgets.combo.DACustomCombo;\r
\r
-\r
public class OpenTraceHandler extends AbstractHandler {\r
\r
public static final String ID = OpenTraceHandler.class.getName();\r
.split(CommonConstants.CMD_SPLIT_READ);\r
try {\r
p.setLastLogNum(Long.parseLong(splitLastNum[0]),\r
- AnalyzerConstants.MSG_PROBE_FILE);\r
+ DataChannelConstants.MSG_PROBE_FILE);\r
p.setLastLogNum(Long.parseLong(splitLastNum[1]),\r
- AnalyzerConstants.MSG_DATA_SYSTEM);\r
+ DataChannelConstants.MSG_DATA_SYSTEM);\r
p.setLastLogNum(Long.parseLong(splitLastNum[2]),\r
- AnalyzerConstants.MSG_DATA_SAMPLE);\r
+ DataChannelConstants.MSG_DATA_SAMPLE);\r
} catch (NumberFormatException e) {\r
invalidProgress();\r
return null;\r
ToolbarArea.getInstance().setAppComboText(p.getAppName());\r
ToolbarArea.getInstance().checkStartButtonAndAppListEnablement();\r
ToolbarArea.getInstance().setRepalyButtonEnable(true);\r
- if (AnalyzerManager.getProject().getBinaryPath().isEmpty()) {\r
+ if (AnalyzerManager.getProject().getProcessInfoHash().isEmpty()) {\r
ToolbarArea.getInstance().setSourceViewEnable(false);\r
ToolbarArea.getInstance().setSourceViewTooltip(\r
AnalyzerLabels.MESSAGE_PROCESS_PG_WARNING);\r
List<String> pInfo = dbInfo.get(i);\r
long addr = Long.parseLong(pInfo.get(0));\r
String api = pInfo.get(1);\r
- CallStackUnit csa = new CallStackUnit(addr, api);\r
+ int pid = Integer.parseInt(pInfo.get(2));\r
+ CallStackUnit csa = new CallStackUnit(addr, api, pid);\r
apiHash.put(addr, csa);\r
\r
}\r
\r
dbInfo.clear();\r
dbInfo = SqlManager.getInstance().loadProcessInfo();\r
+ HashMap<Integer, ProcessInfo> processMap = AnalyzerManager\r
+ .getProject().getProcessInfoHash();\r
if (null == dbInfo) {\r
System.out.println("failed - load Process Info");\r
isSuccess = false;\r
} else {\r
- List<String> info = dbInfo.get(0);\r
- ProcessInfo process = new ProcessInfo();\r
- process.setPid(Integer.parseInt(info.get(0)));\r
- DATime startTime = new DATime();\r
- startTime.setSec(Integer.parseInt(info.get(1)));\r
- startTime.setNano(Integer.parseInt(info.get(2)));\r
- process.setStartTime(startTime);\r
- process.setLowestAddress(Long.parseLong(info.get(3)));\r
- process.setHighestAddress(Long.parseLong(info.get(4)));\r
- process.setAppType(Integer.parseInt(info.get(5)));\r
- process.setBinaryType(Integer.parseInt(info.get(6)));\r
- process.setBinaryPath(info.get(7));\r
- process.setDepLibCount(Integer.parseInt(info.get(8)));\r
- AnalyzerManager.getProject().setProcessInfo(process);\r
+ for (int i = 0; i < dbInfo.size(); i++) {\r
+ List<String> info = dbInfo.get(i);\r
+ ProcessInfo process = new ProcessInfo();\r
+ process.setPid(Integer.parseInt(info.get(0)));\r
+ DATime startTime = new DATime();\r
+ startTime.setSec(Integer.parseInt(info.get(1)));\r
+ startTime.setNano(Integer.parseInt(info.get(2)));\r
+ process.setStartTime(startTime);\r
+ process.setLowestAddress(Long.parseLong(info.get(3)));\r
+ process.setHighestAddress(Long.parseLong(info.get(4)));\r
+ process.setBinaryPath(info.get(7));\r
+ process.setDepLibCount(Integer.parseInt(info.get(8)));\r
+ processMap.put(process.getPid(), process);\r
+ }\r
}\r
\r
dbInfo.clear();\r
System.out.println("failed - load Lib Object");\r
isSuccess = false;\r
} else {\r
- List<LibraryObject> libObjs = AnalyzerManager.getProject()\r
- .getProcessInfo().getLibObjs();\r
for (List<String> info : dbInfo) {\r
LibraryObject libObj = new LibraryObject();\r
libObj.setLowestAddress(Long.parseLong(info.get(0)));\r
libObj.setHighestAddress(Long.parseLong(info.get(1)));\r
libObj.setLibPath(info.get(2));\r
- libObjs.add(libObj);\r
+ int pid = Integer.parseInt(info.get(3));\r
+ libObj.setPid(pid);\r
+ processMap.get(pid).getLibObjs().add(libObj);\r
}\r
}\r
\r
// possibility of extensions - network, efl, db, etc...\r
int id = Integer.parseInt(pInfo\r
.get(LogCenterConstants.ID_INDEX));\r
- if (id == AnalyzerConstants.MSG_PROBE_FILE) {\r
+ if (id == DataChannelConstants.MSG_PROBE_FILE) {\r
// if file failed api data is skip - file chart make it!\r
int type = Integer.parseInt(pInfo\r
.get(LogCenterConstants.RESOURCE_FDTYPE_INDEX));\r
}\r
addr = AnalyzerManager.getCallstackManager().getPCAddrBySeq(seqNum);\r
}\r
- boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();\r
- String baseAddr = Long.toString(AnalyzerManager.getProject().getBaseAddress());\r
- String path = AnalyzerManager.getProject().getBinaryPath();\r
+ \r
+ \r
+ boolean isPieBuild = AnalyzerUtil.isPieBuild(data.getPid());\r
+ String baseAddr = Long.toString(AnalyzerManager.getProject().getBaseAddress(data.getPid()));\r
+ String path = AnalyzerUtil.getBinaryPath(data.getPid());\r
SourceLine sl = SymbolManager.addr2line(path, addr, isPieBuild,\r
baseAddr);\r
return sl;\r
package org.tizen.dynamicanalyzer.logparser;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
public class LogCenterConstants {
public static final int LOG_MEMORY = 1;
public static final int LOG_CONTROL = 2;
public static final int LOG_UI_EVENT = 3;
- public static final int LOG_USER_FUNCTION = 4;
- public static final int LOG_RESOURCE = 5;
+ // FIXME :
+ public static final int LOG_USER_FUNCTION = 44;
+ public static final int LOG_RESOURCE = 55;
public static final int LOG_LIFECYCLE = 6;
public static final int LOG_SCREENSHOT = 7;
public static final int LOG_SCENE = 8;
public static final int COMMON_COLUMN_SIZE_ERROR = 0;
public static String getLogCenterNameFromId(int id) {
- if (id == AnalyzerConstants.MSG_PROBE_MEMORY) {
+ if (id == DataChannelConstants.MSG_PROBE_MEMORY) {
return "memory"; //$NON-NLS-1$
} else if (id == LOG_USER_FUNCTION) {
return "user function"; //$NON-NLS-1$
- } else if (id == AnalyzerConstants.MSG_PROBE_FILE) {
+ } else if (id == DataChannelConstants.MSG_PROBE_FILE) {
return "resource"; //$NON-NLS-1$
- } else if (id == AnalyzerConstants.MSG_PROBE_THREAD) {
+ } else if (id == DataChannelConstants.MSG_PROBE_THREAD) {
return "thread"; //$NON-NLS-1$
} else if (id == LOG_GLES20) {
return "graphics"; //$NON-NLS-1$
import org.tizen.dynamicanalyzer.sql.SqlManager;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
-import org.tizen.dynamicanalyzer.swap.model.data.BasicDataMessage;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory;
logPackage.clear();
}
- private LogPackage getLogPackage() {
- if (null == logPackage) {
- logPackage = new LogPackage();
- }
- return logPackage;
- }
-
@Override
public void run() {
List<Integer> logIds = LogDataFactory.getLogList();
}
private void setFuncName(UserFunctionData input) {
- boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
+ boolean isPieBuild = AnalyzerUtil.isPieBuild(input.getPid());
String baseAddr = Long.toString(AnalyzerManager.getProject()
- .getBaseAddress());
+ .getBaseAddress(input.getPid()));
// String path = AnalyzerManager.getProject().getBinaryPath();
- String path = DACommunicator.getSelectedApp().getBinInfo().getPath();
+ String path = DACommunicator.getSelectedApp().getBinInfo().getLocalBinaryPath();
String pcAddr = Long.toString(input.getPcAddr());
String functionName = SymbolManager.addr2func(path, pcAddr, isPieBuild,
baseAddr);
}
private void processAppInfo(String message) {
- String[] data = message.split(AnalyzerConstants.DATA_PARSING_TOKEN);
-
- Project project = AnalyzerManager.getProject();
- TargetInfo tInfo = project.getTargetInfo();
- ProcessInfo pInfo = project.getProcessInfo();
-
- tInfo.setSystemMemorySize(Integer
- .parseInt(data[AnalyzerConstants.APP_INFO_SYSTEM_MEMORY_SIZE]));
- tInfo.setStorageSize(Integer
- .parseInt(data[AnalyzerConstants.APP_INFO_STORAGE_SIZE]));
- tInfo.setBluetoothSupport(Integer
- .parseInt(data[AnalyzerConstants.APP_INFO_BLUETOOTH_SUPPORT]));
- tInfo.setGpsSupport(Integer
- .parseInt(data[AnalyzerConstants.APP_INFO_GPS_SUPPORT]));
- tInfo.setWifiSupport(Integer
- .parseInt(data[AnalyzerConstants.APP_INFO_WIFI_SUPPORT]));
- tInfo.setCameraCount(Integer
- .parseInt(data[AnalyzerConstants.APP_INFO_CAMERA_COUNT]));
- tInfo.setNetworkType(data[AnalyzerConstants.APP_INFO_NETWORK_TYPE]);
- tInfo.setMaxBrightness(Integer
- .parseInt(data[AnalyzerConstants.APP_INFO_MAX_BRIGHTNESS]));
-
- pInfo.setPid(Integer.parseInt(data[AnalyzerConstants.APP_INFO_PID]));
- // pInfo.setTime(Integer
- // .parseInt(data[AnalyzerConstants.APP_INFO_START_TIME]) * 100);
- pInfo.setBinaryType(Integer
- .parseInt(data[AnalyzerConstants.APP_INFO_PIE_BUILD]));
- pInfo.setLowestAddress(Long
- .parseLong(data[AnalyzerConstants.APP_INFO_BASE_ADDRESS]));
- pInfo.setAppType(Integer
- .parseInt(data[AnalyzerConstants.APP_INFO_APP_TYPE]));
- pInfo.setBinaryPath(data[AnalyzerConstants.APP_INFO_BINARY_PATH]);
-
- if (null == pInfo.getBinaryPath() || pInfo.getBinaryPath().isEmpty()) {
- ToolbarArea.getInstance().setSourceViewEnable(false);
- ToolbarArea.getInstance().setSourceViewTooltip(
- AnalyzerLabels.MESSAGE_PROCESS_PG_WARNING);
- } else {
- ToolbarArea.getInstance().setSourceViewEnable(true);
- ToolbarArea.getInstance().setSourceViewTooltip(
- AnalyzerLabels.MESSAGE_PROCESS_VIEW_SOURCE);
- }
-
- // User Call Trace : App is Tizen C++ or Tizen native
- if (pInfo.getAppType() == AnalyzerConstants.APP_TYPE_OSP) {
- LogParser.setDropCallTraceLog(true);
- }
+// String[] data = message.split(AnalyzerConstants.DATA_PARSING_TOKEN);
+//
+// Project project = AnalyzerManager.getProject();
+// TargetInfo tInfo = project.getTargetInfo();
+// ProcessInfo pInfo = project.getProcessInfo();
+//
+// tInfo.setSystemMemorySize(Integer
+// .parseInt(data[AnalyzerConstants.APP_INFO_SYSTEM_MEMORY_SIZE]));
+// tInfo.setStorageSize(Integer
+// .parseInt(data[AnalyzerConstants.APP_INFO_STORAGE_SIZE]));
+// tInfo.setBluetoothSupport(Integer
+// .parseInt(data[AnalyzerConstants.APP_INFO_BLUETOOTH_SUPPORT]));
+// tInfo.setGpsSupport(Integer
+// .parseInt(data[AnalyzerConstants.APP_INFO_GPS_SUPPORT]));
+// tInfo.setWifiSupport(Integer
+// .parseInt(data[AnalyzerConstants.APP_INFO_WIFI_SUPPORT]));
+// tInfo.setCameraCount(Integer
+// .parseInt(data[AnalyzerConstants.APP_INFO_CAMERA_COUNT]));
+// tInfo.setNetworkType(data[AnalyzerConstants.APP_INFO_NETWORK_TYPE]);
+// tInfo.setMaxBrightness(Integer
+// .parseInt(data[AnalyzerConstants.APP_INFO_MAX_BRIGHTNESS]));
+//
+// pInfo.setPid(Integer.parseInt(data[AnalyzerConstants.APP_INFO_PID]));
+// // pInfo.setTime(Integer
+// // .parseInt(data[AnalyzerConstants.APP_INFO_START_TIME]) * 100);
+// pInfo.setBinaryType(Integer
+// .parseInt(data[AnalyzerConstants.APP_INFO_PIE_BUILD]));
+// pInfo.setLowestAddress(Long
+// .parseLong(data[AnalyzerConstants.APP_INFO_BASE_ADDRESS]));
+// pInfo.setAppType(Integer
+// .parseInt(data[AnalyzerConstants.APP_INFO_APP_TYPE]));
+// pInfo.setBinaryPath(data[AnalyzerConstants.APP_INFO_BINARY_PATH]);
+//
+// if (null == pInfo.getBinaryPath() || pInfo.getBinaryPath().isEmpty()) {
+// ToolbarArea.getInstance().setSourceViewEnable(false);
+// ToolbarArea.getInstance().setSourceViewTooltip(
+// AnalyzerLabels.MESSAGE_PROCESS_PG_WARNING);
+// } else {
+// ToolbarArea.getInstance().setSourceViewEnable(true);
+// ToolbarArea.getInstance().setSourceViewTooltip(
+// AnalyzerLabels.MESSAGE_PROCESS_VIEW_SOURCE);
+// }
+//
+// // User Call Trace : App is Tizen C++ or Tizen native
+// if (pInfo.getAppType() == AnalyzerConstants.APP_TYPE_OSP) {
+// LogParser.setDropCallTraceLog(true);
+// }
}
// private String getImageName(String fullPath) {
package org.tizen.dynamicanalyzer.project;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import org.tizen.dynamicanalyzer.common.CommonConstants;
public static final String FLAG_ONE = "1";//$NON-NLS-1$
private BinaryInfo binInfo = null;
+ private HashMap<String, BinaryInfo> binaryInfoMap = new HashMap<String, BinaryInfo>();
private String installTime = null;
private String execFileName = null;
return null;
}
symbolExtractor.clear();
- symbolExtractor.makeSymbol(binInfo.getPath());
+ symbolExtractor.makeSymbol(binInfo.getLocalBinaryPath());
return symbolExtractor.getAddrSymbolPairs();
}
}
return execFileName;
}
+
+ public HashMap<String, BinaryInfo> getBinaryInfoMap() {
+ return binaryInfoMap;
+ }
+
}
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.HashMap;
import java.util.Locale;
import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.swap.model.ByteUtils;
import org.tizen.dynamicanalyzer.swap.model.DATime;
import org.tizen.dynamicanalyzer.swap.model.control.TargetInfo;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.data.ProcessInfo;
import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;
private String device = null;
private long lastTime = 0;
private long stopTime = -1;
+ private DATime profilingStartTime = new DATime();
private byte[] replayEvent = null;
- // private TargetInfo targetInfo = new TargetInfo();
- private ProcessInfo processInfo = new ProcessInfo();
+ // private ProcessInfo processInfo = new ProcessInfo();
+ private HashMap<Integer, ProcessInfo> processInfoHash = new HashMap<Integer, ProcessInfo>();
public TargetInfo getTargetInfo() {
TargetInfo targetInfo = DACommunicator.getSelectedDevice()
DACommunicator.getSelectedDevice().setTargetInfo(targetInfo);
}
- public ProcessInfo getProcessInfo() {
+ public ProcessInfo getProcessInfo(int pid) {
+ ProcessInfo processInfo = processInfoHash.get(pid);
return processInfo;
}
- public void setProcessInfo(ProcessInfo processInfo) {
- this.processInfo = processInfo;
- }
+ // public void setProcessInfo(ProcessInfo processInfo) {
+ // this.processInfo = processInfo;
+ // }
public void setCoreCount(int count) {
getTargetInfo().setCpuCount(count);
}
public DATime getStartTime() {
- return processInfo.getStartTime();
+ return profilingStartTime;
}
public void setStartTime(DATime time) {
- processInfo.setStartTime(time);
+ profilingStartTime = time;
}
public long getSystemMemorySize() {
return getTargetInfo().getSystemMemorySize();
}
- public int getPID() {
- return processInfo.getPid();
- }
-
public long getLastTime() {
return lastTime;
}
public String getVersion() {
return version;
}
-
+
public long getLastLogNum(int type) {
- if (type == AnalyzerConstants.MSG_DATA_SYSTEM) {
+ if (type == DataChannelConstants.MSG_DATA_SYSTEM) {
return lastDeviceLogNum;
- } else if (type == AnalyzerConstants.MSG_DATA_SAMPLE) {
+ } else if (type == DataChannelConstants.MSG_DATA_SAMPLE) {
return lastProfileLogNum;
} else {
return lastLogNum;
}
public void setLastLogNum(long last, int type) {
- if (type == AnalyzerConstants.MSG_DATA_SYSTEM) {
+ if (type == DataChannelConstants.MSG_DATA_SYSTEM) {
if (last > lastDeviceLogNum) {
lastDeviceLogNum = last;
}
- } else if (type == AnalyzerConstants.MSG_DATA_SAMPLE) {
+ } else if (type == DataChannelConstants.MSG_DATA_SAMPLE) {
if (last > lastProfileLogNum) {
lastProfileLogNum = last;
}
}
public void init() {
- appName = DACommunicator.getSelectedApp().getInfo(PackageInfo.LABEL_INDEX);
- pkgId = DACommunicator.getSelectedApp().getInfo(PackageInfo.PACKAGE_INDEX);
+ appName = DACommunicator.getSelectedApp().getInfo(
+ PackageInfo.LABEL_INDEX);
+ pkgId = DACommunicator.getSelectedApp().getInfo(
+ PackageInfo.PACKAGE_INDEX);
DeviceInfo deviceName = DACommunicator.getSelectedDevice();
if (null != deviceName
&& null != deviceName.getIDevice().getSerialNumber()
return true;
}
- public String getBinaryPath() {
- return processInfo.getBinaryPath();
- }
-
- public boolean isPieBuild() {
- if (processInfo.getBinaryType() == 1) {
- return true;
- }
- return false;
- }
-
- public long getBaseAddress() {
+ public long getBaseAddress(int pid) {
+ ProcessInfo processInfo = processInfoHash.get(pid);
return processInfo.getLowestAddress();
}
- public long getHighestAddress() {
+ public long getHighestAddress(int pid) {
+ ProcessInfo processInfo = processInfoHash.get(pid);
return processInfo.getHighestAddress();
}
- public int getApplicationType() {
- return processInfo.getAppType();
- }
-
public void setTotalProfilingSampleCount(int count) {
FunctionUsageProfiler.getInstance().getProfileDataMaker()
.setTotalSampleCount(count);
return replayEvent;
}
+ public HashMap<Integer, ProcessInfo> getProcessInfoHash() {
+ return processInfoHash;
+ }
}
public static final Image REPLAY_HOVER = getPngImage("toolbar_replay_hover"); //$NON-NLS-1$\r
public static final Image REPLAY_DISABLE = getPngImage("toolbar_replay_disable"); //$NON-NLS-1$\r
\r
- public static final Image SETTINGS = getPngImage("toolbar_settings_nor"); //$NON-NLS-1$\r
+ public static final Image SETTINGS_NORMAL = getPngImage("toolbar_settings_nor"); //$NON-NLS-1$\r
public static final Image SETTINGS_PUSH = getPngImage("toolbar_settings_push"); //$NON-NLS-1$\r
public static final Image SETTINGS_HOVER = getPngImage("toolbar_settings_hover"); //$NON-NLS-1$\r
public static final Image SETTINGS_DISABLE = getPngImage("toolbar_settings_disable"); //$NON-NLS-1$\r
public static final Image CHECKBOX_UNSELECTED_HOVER = getPngImage("checkbox_unselected_hover"); //$NON-NLS-1$\r
public static final Image CHECKBOX_UNSELECTED_DISABLE = getPngImage("checkbox_unselected_disable"); //$NON-NLS-1$\r
public static final Image CHECKBOX_SELECTED_DISABLE = getPngImage("checkbox_selected_disable"); //$NON-NLS-1$\r
- \r
+\r
// Failed API icon in table\r
public static final Image FAILED_API_ICON_TABLE = getPngImage("fail_api"); //$NON-NLS-1$\r
\r
public static final Image UI_EVENT = getPngImage("time_line_icon_UI_events"); //$NON-NLS-1$\r
public static final Image CHART_CUSTOM = getPngImage("time_line_icon_custom"); //$NON-NLS-1$\r
public static final Image CHART_NETWORK = getPngImage("time_line_icon_traffic"); //$NON-NLS-1$\r
- \r
+\r
/* Resource */\r
public static final Image TYPE_FILE = getPngImage("resource/resource_file"); //$NON-NLS-1$\r
public static final Image TYPE_SOCKET = getPngImage("resource/resource_socket"); //$NON-NLS-1$\r
public static final Image TAB_ICON_UI = getPngImage("tab_icon_userinterface"); //$NON-NLS-1$\r
public static final Image TAB_ICON_SUMMARY = getPngImage("tab_icon_summary"); //$NON-NLS-1$\r
public static final Image TAB_ICON_RANGE = getPngImage("tab_icon_range"); //$NON-NLS-1$\r
- \r
+\r
/* gl */\r
public static final Image GL_DROP_LEFT_ARROW = getPngImage("arrow_full_left"); //$NON-NLS-1$\r
public static final Image GL_DROP_DOWN_ARROW = getPngImage("arrow_full_down"); //$NON-NLS-1$\r
\r
+ public static final Image ICON_FILE = getGifImage("file"); //$NON-NLS-1$\r
+ public static final Image ICON_FILE_LINK = getGifImage("file_link"); //$NON-NLS-1$\r
+ public static final Image ICON_DIR = getGifImage("directory"); //$NON-NLS-1$\r
+ public static final Image ICON_DIR_LINK = getGifImage("directory_link"); //$NON-NLS-1$\r
+ public static final Image ICON_EMULATOR = getGifImage("emulator"); //$NON-NLS-1$\r
+ public static final Image ICON_DEVICE = getGifImage("device"); //$NON-NLS-1$\r
+ public static final Image ICON_OTHER = getGifImage("file"); //$NON-NLS-1$\r
+\r
private static Image getImage(String pluginId, String folderName,\r
String imageName, String extension) {\r
if (null == imageRegistry.get(imageName)\r
return getImage(imageName, CommonConstants.EXTENSION_PNG_IMAGE);\r
}\r
\r
+ private static Image getGifImage(String imageName) {\r
+ return getImage(imageName, CommonConstants.EXTENSION_GIF_IMAGE);\r
+ }\r
}\r
.isButtonEnabled()) {
Shell shell = AnalyzerUtil.getWorkbenchWindow().getShell();
SaveAsDialog dialog = new SaveAsDialog(shell);
- int result = dialog.open();
- if (AnalyzerConstants.SUCCESS == result) {
+ Object result = dialog.open();
+ if (result != null) {
ToolbarArea.getInstance()
.getButton(ToolbarArea.SAVE_BUTTON)
.setButtonEnabled(false);
public static final String TARGET_INFO_CPU_CORE_COUNT = "CoreCount";
public static final String PROCESS_INFO_PID = "pid";//$NON-NLS-1$
+ public static final String PROCESS_INFO_PPID = "ppid";//$NON-NLS-1$
public static final String PROCESS_INFO_START_TIME_SEC = "StartTimeSec";
public static final String PROCESS_INFO_START_TIME_NANO = "StartTimeNano";
public static final String PROCESS_INFO_LOW_ADDR = "LowAddr";
public static final String PROCESS_INFO_HIGH_ADDR = "HighAddr";
- public static final String PROCESS_INFO_APP_TYPE = "AppType";
- public static final String PROCESS_INFO_BINARY_TYPE = "BinaryType";
public static final String PROCESS_INFO_BINARY_PATH = "BinaryPath";
public static final String PROCESS_INFO_DEPLIB_COUNT = "DepLibCount";
// "callstack units" table info block
{
- String[] names = { CUSTOM_COLUMN_ADDR, CUSTOM_COLUMN_API };
- String[] options = { "not null",
+ String[] names = { CUSTOM_COLUMN_ADDR, CUSTOM_COLUMN_API,
+ COMMON_COLUMN_PID };
+ String[] options = { "not null", EMPTY,
",PRIMARY KEY(" + CUSTOM_COLUMN_ADDR + ")" };
- String[] types = { TEXT, "VARCHAR(512)" };
+ String[] types = { TEXT, INTEGER, "VARCHAR(512)" };
DBTableInfo callstackUnitsTableInfo = new DBTableInfo(
TABLE_NAME_CALLSTACK_UNITS, names, options, types);
tableInfos
// process info
{
- String[] names = { PROCESS_INFO_PID, PROCESS_INFO_START_TIME_SEC,
- PROCESS_INFO_START_TIME_NANO, PROCESS_INFO_LOW_ADDR,
- PROCESS_INFO_HIGH_ADDR, PROCESS_INFO_APP_TYPE,
- PROCESS_INFO_BINARY_TYPE, PROCESS_INFO_BINARY_PATH,
- PROCESS_INFO_DEPLIB_COUNT };
+ String[] names = { PROCESS_INFO_PID, PROCESS_INFO_PPID,
+ PROCESS_INFO_START_TIME_SEC, PROCESS_INFO_START_TIME_NANO,
+ PROCESS_INFO_LOW_ADDR, PROCESS_INFO_HIGH_ADDR,
+ PROCESS_INFO_BINARY_PATH, PROCESS_INFO_DEPLIB_COUNT };
String[] options = { EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
- EMPTY, EMPTY, EMPTY };
- String[] types = { TEXT, TEXT, TEXT, TEXT, TEXT, TEXT, TEXT, TEXT,
- TEXT };
+ EMPTY, EMPTY };
+ String[] types = { TEXT, TEXT, TEXT, TEXT, TEXT, TEXT, TEXT, TEXT };
DBTableInfo processInfoTableInfo = new DBTableInfo(
TABLE_NAME_PROCESS_INFO, names, options, types);
tableInfos.set(TABLE_INDEX_PROCESS_INFO, processInfoTableInfo);
// library object
{
String[] names = { LIBRARY_OBJECT_LOW_ADDR,
- LIBRARY_OBJECT_HIGH_ADDR, LIBRARY_OBJECT_PATH };
- String[] options = { EMPTY, EMPTY, EMPTY };
- String[] types = { TEXT, TEXT, TEXT };
+ LIBRARY_OBJECT_HIGH_ADDR, LIBRARY_OBJECT_PATH,
+ COMMON_COLUMN_PID };
+ String[] options = { EMPTY, EMPTY, EMPTY, EMPTY };
+ String[] types = { TEXT, TEXT, TEXT, TEXT };
DBTableInfo libObjTableInfo = new DBTableInfo(TABLE_NAME_LIB_OBJ,
names, options, types);
tableInfos.set(TABLE_INDEX_LIB_OBJ, libObjTableInfo);
options, types);
tableInfos.set(TABLE_INDEX_APINAME, apiName);
}
-
+
{
// gles20 context data table info
GLContextDBEnum[] glContextDBEnum = GLContextDBEnum.values();
TABLE_NAME_GLES20_CONTEXT_DATA, names, options, types);
tableInfos.set(TABLE_INDEX_GLES20_CONTEXT_DATA,
Gles20ContextTableInfo);
-
-// // gles20 context change info
-// DBTableInfo Gles20ChangeInfoTableInfo = new DBTableInfo(
-// TABLE_NAME_GLES20_CAHNGE_INFO, names, options, types);
-// tableInfos.set(TABLE_INDEX_GLES20_CHANGE_INFO,
-// Gles20ChangeInfoTableInfo);
+
+ // // gles20 context change info
+ // DBTableInfo Gles20ChangeInfoTableInfo = new DBTableInfo(
+ // TABLE_NAME_GLES20_CAHNGE_INFO, names, options, types);
+ // tableInfos.set(TABLE_INDEX_GLES20_CHANGE_INFO,
+ // Gles20ChangeInfoTableInfo);
}
}
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
+import java.util.Set;
import java.util.concurrent.Semaphore;
import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.swap.model.RecordEventObject;
import org.tizen.dynamicanalyzer.swap.model.control.TargetInfo;
import org.tizen.dynamicanalyzer.swap.model.data.ApiNameManager;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.data.LibraryObject;
import org.tizen.dynamicanalyzer.swap.model.data.ProcessInfo;
import org.tizen.dynamicanalyzer.swap.model.probe.LogFormat;
int dataRowSize = input.size();
for (int i = 0; i < dataRowSize; i++) {
logData = input.get(i);
- if (logData.getId() != AnalyzerConstants.MSG_DATA_RECORD) {
+ if (logData.getId() != DataChannelConstants.MSG_DATA_RECORD) {
logData.makePreparedStatement(prep);
prep.addBatch();
} else {
public void insertProcessInfo() {
DBTableInfo info = DBTableManager.getInstance().getTableInfo(
DBTableManager.TABLE_INDEX_PROCESS_INFO);
- String insertQuery = "insert into " + info.getTableName() + " values ( ?, ?, ?, ?, ?, ?, ?, ?, ? );"; //$NON-NLS-1$
-
- ProcessInfo pInfo = AnalyzerManager.getProject().getProcessInfo();
- List<String> insetRowData = new ArrayList<String>();
-
- insetRowData.add(Integer.toString(pInfo.getPid()));
- insetRowData.add(Long.toString(pInfo.getStartTime().getSec()));
- insetRowData.add(Long.toString(pInfo.getStartTime().getNano()));
- insetRowData.add(Long.toString(pInfo.getLowestAddress()));
- insetRowData.add(Long.toString(pInfo.getHighestAddress()));
- insetRowData.add(Integer.toString(pInfo.getAppType()));
- insetRowData.add(Integer.toString(pInfo.getBinaryType()));
- insetRowData.add(pInfo.getBinaryPath());
- insetRowData.add(Integer.toString(pInfo.getDepLibCount()));
-
- List<List<String>> insetData = new ArrayList<List<String>>();
- insetData.add(insetRowData);
+ String insertQuery = "insert into " + info.getTableName() + " values ( ?, ?, ?, ?, ?, ?, ?, ? );"; //$NON-NLS-1$
+
+ HashMap<Integer, ProcessInfo> processMap = AnalyzerManager.getProject()
+ .getProcessInfoHash();
+ Set<Integer> keysSet = AnalyzerManager.getProject()
+ .getProcessInfoHash().keySet();
+ List<Integer> keys = new ArrayList<Integer>();
+ keys.addAll(keysSet);
+ for (int i = 0; i < keys.size(); i++) {
+ ProcessInfo pInfo = processMap.get(keys.get(i));
+ List<String> insetRowData = new ArrayList<String>();
+ insetRowData.add(Integer.toString(pInfo.getPid()));
+ insetRowData.add(Integer.toString(pInfo.getPpid()));
+ insetRowData.add(Long.toString(pInfo.getStartTime().getSec()));
+ insetRowData.add(Long.toString(pInfo.getStartTime().getNano()));
+ insetRowData.add(Long.toString(pInfo.getLowestAddress()));
+ insetRowData.add(Long.toString(pInfo.getHighestAddress()));
+ insetRowData.add(pInfo.getBinaryPath());
+ insetRowData.add(Integer.toString(pInfo.getDepLibCount()));
+
+ List<List<String>> insetData = new ArrayList<List<String>>();
+ insetData.add(insetRowData);
- insertQuery(insertQuery, insetData);
- insertLibObj(pInfo.getLibObjs());
+ insertQuery(insertQuery, insetData);
+ insertLibObj(pInfo.getLibObjs());
+ }
}
private void insertLibObj(List<LibraryObject> libs) {
DBTableInfo info = DBTableManager.getInstance().getTableInfo(
DBTableManager.TABLE_INDEX_LIB_OBJ);
- String insertQuery = "insert into " + info.getTableName() + " values ( ?, ?, ?);"; //$NON-NLS-1$
+ String insertQuery = "insert into " + info.getTableName() + " values ( ?, ?, ?, ?);"; //$NON-NLS-1$
List<List<String>> insetData = new ArrayList<List<String>>();
for (LibraryObject lib : libs) {
package org.tizen.dynamicanalyzer.swap.callstack;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_ENTRY;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_EXIT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_ENTRY;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_EXIT;
import java.util.ArrayList;
import java.util.HashMap;
import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackData;
import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackUnit;
import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfileDataMaker;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
public class SWAPCallStackManager extends BaseCallstackManager {
public void makeUserCallstack(LogData input, ProfileDataMaker profiler) {
ProfileData log = (ProfileData) input;
HashMap<Long, CallStackUnit> addrMap = getCallStackApiByAddrMap();
- boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
+ boolean isPieBuild = AnalyzerUtil.isPieBuild(log.getPid());
String baseAddr = Long.toString(AnalyzerManager.getProject()
- .getBaseAddress());
-// String binPath = AnalyzerManager.getProject().getBinaryPath();
- String binPath = DACommunicator.getSelectedApp().getBinInfo().getPath();
+ .getBaseAddress(log.getPid()));
+ // String binPath = AnalyzerManager.getProject().getBinaryPath();
+ String binPath = DACommunicator.getSelectedApp().getBinInfo()
+ .getLocalBinaryPath();
if (null == binPath || binPath.isEmpty()) {
return;
}
String strSelfSymbol = getUserFunctionPosition()
+ AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
+ strSelfFuncName;
- selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol);
+ selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol,
+ log.getPid());
addrMap.put(selfAddr, selfCallstackUnit);
}
String strCallerSymbol = getUserFunctionPosition()
+ AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
+ strCallerFuncName;
- callerCallstackUnit = new CallStackUnit(callerAddr, strCallerSymbol);
+ callerCallstackUnit = new CallStackUnit(callerAddr,
+ strCallerSymbol, log.getPid());
addrMap.put(callerAddr, callerCallstackUnit);
}
if (!AnalyzerManager.isInBinaryRange(callerAddr)) {
CallStackUnit callbackApi = new CallStackUnit(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
- LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+ LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+ log.getPid());
userCallstack.add(callbackApi);
if (addrMap
.get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) {
CallStackUnit defaultCallstackUnit = new CallStackUnit(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
- LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+ LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+ log.getPid());
addrMap.put(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
defaultCallstackUnit);
AnalyzerConstants.VIRTUAL_THUNK)) {
CallStackUnit callbackApi = new CallStackUnit(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
- LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+ LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+ log.getPid());
userCallstack.add(callbackApi);
if (addrMap
.get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) {
CallStackUnit defaultCallstackUnit = new CallStackUnit(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
- LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+ LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+ log.getPid());
addrMap.put(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
defaultCallstackUnit);
}
public void makeCallstackWithoutBacktrace(LogData inputData) {
+ ProbeCommonData log = (ProbeCommonData) inputData;
HashMap<Long, CallStackUnit> addrMap = getCallStackApiByAddrMap();
- boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
+ boolean isPieBuild = AnalyzerUtil.isPieBuild(log.getPid());
String baseAddr = Long.toString(AnalyzerManager.getProject()
- .getBaseAddress());
- String binPath = AnalyzerManager.getProject().getBinaryPath();
+ .getBaseAddress(log.getPid()));
+ String binPath = AnalyzerUtil.getBinaryPath(log.getPid());
if (null == binPath || binPath.isEmpty()) {
return;
}
- ProbeCommonData log = (ProbeCommonData) inputData;
int seq = log.getSeq();
int tid = log.getTid();
long callerAddr = log.getCallerPcAddr();
if ((size == 0) || (!AnalyzerManager.isInBinaryRange(callerAddr))) {
CallStackUnit callbackApi = new CallStackUnit(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
- LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+ LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+ log.getPid());
probeCallstack.add(callbackApi);
if (addrMap
.get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) {
CallStackUnit defaultCallstackUnit = new CallStackUnit(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
- LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+ LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+ log.getPid());
addrMap.put(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
defaultCallstackUnit);
+ AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
+ strCallerFuncName;
callerCallstackUnit = new CallStackUnit(callerAddr,
- strCallerSymbol);
+ strCallerSymbol, log.getPid());
addrMap.put(callerAddr, callerCallstackUnit);
}
HashMap<Long, CallStackUnit> addrMap = getCallStackApiByAddrMap();
HashMap<Integer, DuplicateUserCall> dupUserCallMap = getDupUserCallByTidMap();
- boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
+ boolean isPieBuild = AnalyzerUtil.isPieBuild(input.getPid());
String baseAddr = Long.toString(AnalyzerManager.getProject()
- .getBaseAddress());
+ .getBaseAddress(input.getPid()));
// String binPath = AnalyzerManager.getProject().getBinaryPath();
- String binPath = DACommunicator.getSelectedApp().getBinInfo().getPath();
+ String binPath = DACommunicator.getSelectedApp().getBinInfo()
+ .getLocalBinaryPath();
if (null == binPath || binPath.isEmpty()) {
return false;
}
String strSelfSymbol = getUserFunctionPosition()
+ AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
+ strSelfFuncName;
- selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol);
+ selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol,
+ log.getPid());
addrMap.put(selfAddr, selfCallstackUnit);
}
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.AnalyzerManager;
+import org.tizen.dynamicanalyzer.common.AnalyzerPaths;
import org.tizen.dynamicanalyzer.common.AnalyzerShellCommands;
import org.tizen.dynamicanalyzer.common.CommonConstants;
+import org.tizen.dynamicanalyzer.common.ElfSymbolExtracter;
import org.tizen.dynamicanalyzer.common.ErrorCode;
import org.tizen.dynamicanalyzer.common.HostResult;
import org.tizen.dynamicanalyzer.communicator.BaseCommunicator;
import org.tizen.dynamicanalyzer.project.PackageInfo;
import org.tizen.dynamicanalyzer.swap.logparser.SWAPLogParser;
import org.tizen.dynamicanalyzer.swap.model.ByteUtils;
+import org.tizen.dynamicanalyzer.swap.model.DATime;
import org.tizen.dynamicanalyzer.swap.model.control.ApplicationInfo;
import org.tizen.dynamicanalyzer.swap.model.control.ApplicationInst;
import org.tizen.dynamicanalyzer.swap.model.control.BinaryInfo;
import org.tizen.dynamicanalyzer.swap.model.control.RunTimeConfiguration;
import org.tizen.dynamicanalyzer.swap.model.control.TargetInfo;
import org.tizen.dynamicanalyzer.swap.model.control.UserSpaceInst;
+import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataUtils;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingData;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager;
import org.tizen.dynamicanalyzer.ui.file.FileChartManager;
import org.tizen.dynamicanalyzer.ui.network.NetworkChartManager;
import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;
import org.tizen.dynamicanalyzer.uirecorder.UIRecorderTool;
import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
import org.tizen.dynamicanalyzer.utils.UpdateViewTimer;
-import org.tizen.sdblib.receiver.MultiLineReceiver;
+import org.tizen.sdblib.exception.SdbCommandRejectedException;
+import org.tizen.sdblib.exception.TimeoutException;
+import org.tizen.sdblib.service.SyncResult;
public class Communicator30 extends BaseCommunicator {
private boolean isInit = false;
- private static List<String> binaryHashMultiLines = new ArrayList<String>();
@Override
public HostResult init() {
removeList.clear();
}
+ for (DeviceInfo devInfo : devices) {
+ HostResult result = sendRuntimeMessage(0, null);
+ if (!result.isSuccess()) {
+ System.out.println(result.toString());
+ removeList.add(devInfo);
+ }
+ }
+
if (devices.isEmpty()) {
System.out.println("device init faiiled...");
// TODO: close da
appInfo.setExecPath(selectedApp.getInfo(PackageInfo.EXEC_INDEX)
+ ".exe");
- RunTimeConfiguration rt = new RunTimeConfiguration();
- rt.setFeatures(ConfigureManager.getInstance().getConfiguration());
+ UserSpaceInst userSpaceInst = getUserSpaceInst(appInfo);
byte[] replayData = AnalyzerManager.getProject().getReplayEvent();
- UserSpaceInst userSpaceInst = getUserSpaceInst(appInfo);
- byte[] rear = ByteUtils.getByte(appInfo.getByteValue(),
- rt.getByteValue(), userSpaceInst.getByteValue(), replayData);
+ byte[] rear = ByteUtils.getByte(userSpaceInst.getByteValue(),
+ replayData);
int length = rear.length;
byte[] ret = ByteUtils.getByte(AnalyzerConstants.MSG_START_SWAP,
return result;
}
+ // success start trace!!
+ byte[] payload = getMessagePayload(result.getRet());
+ DATime profilingStartTime = new DATime();
+ int index = 0;
+ int sec = ByteUtils.toInt(payload, index);
+ index += INT_SIZE;
+ int nano = ByteUtils.toInt(payload, index);
+ index += INT_SIZE;
+ profilingStartTime.setSec(sec);
+ profilingStartTime.setNano(nano);
+
UIRecorderTool.getInstance().startRecorder();
ToolbarArea.getInstance().startTimer();
SWAPLogParser.startLogParser();
System.out.println();
}
appInst.setFunctionCount(size - exSize);
- appInst.setLibcount(0);
- appInst.setLibraryInstList(null);
output.getAppInstList().add(appInst);
return output;
}
// send config message
byte[] msgBinInfo = ByteUtils
.toBytes(AnalyzerConstants.MSG_BINARY_INFO);
- ApplicationInfo appInfo = new ApplicationInfo();
- String appType = selectedApp.getInfo(PackageInfo.APPTYPE_INDEX);
- if (appType.contains(PackageInfo.APPTYPE_CPP)) {
- appInfo.setAppType(ApplicationInfo.APPTYPE_TIZEN);
- } else {
- appInfo.setAppType(ApplicationInfo.APPTYPE_COMMON_EXEC);
+
+ int binCount = 1; // FIXME
+ String targetPath = selectedApp.getInfo(PackageInfo.EXEC_INDEX);
+ String type = selectedApp.getInfo(PackageInfo.APPTYPE_INDEX);
+ int appType = ApplicationInfo.APPTYPE_TIZEN;
+ if (type.contains(PackageInfo.APPTYPE_CPP)) {
+ targetPath += CommonConstants.EXTENSION_EXEC_FILE;
}
- appInfo.setAppId(selectedApp.getInfo(PackageInfo.APPID_INDEX));
- appInfo.setExecPath(selectedApp.getInfo(PackageInfo.EXEC_INDEX));
- int length = appInfo.getByteValue().length;
- byte[] msg = ByteUtils.getByte(msgBinInfo, length,
- appInfo.getByteValue());
+ byte[] preMsg = ByteUtils.getByte(binCount, targetPath);
+
+ int length = preMsg.length;
+ byte[] msg = ByteUtils.getByte(msgBinInfo, length, preMsg);
HostResult result = handleControlMessage(
DACommunicator.getSelectedDevice(), msg);
// parse binary info
byte[] payload = getMessagePayload(result.getRet());
BinaryInfo binInfo = new BinaryInfo();
+ binInfo.setTargetBinaryPath(targetPath);
selectedApp.setBinInfo(binInfo);
- int binaryType = ByteUtils.toInt(payload, 0);
+ int index = 0;
+ int count = ByteUtils.toInt(payload, index);
+ index += INT_SIZE;
+ String localBinaryPath = null;
+ // FIXME
+ for (int i = 0; i < count; i++) {
+ int binaryType = ByteUtils.toInt(payload, index);
+ index += INT_SIZE;
+ localBinaryPath = ByteUtils.getString(payload, index).trim();
+ String[] splitLocalBinaryPath = localBinaryPath
+ .split(CommonConstants.SLASH);
+ if (null == splitLocalBinaryPath[0]
+ || splitLocalBinaryPath[0].isEmpty()) {
+ localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH
+ + File.separator + getFileName(targetPath);
+ result = pullTheFile(targetPath, localBinaryPath);
+ if (result.isSuccess()) {
+ binInfo.setLocalBinaryPath(localBinaryPath);
+ }
+ index += ByteUtils.getStringLength(payload, index);
+ String md5sum = ByteUtils.getString(payload, index);
+ binInfo.setType(binaryType);
+ binInfo.setLocalBinaryPath(localBinaryPath);
+ binInfo.setMd5sumValue(md5sum);
+ return result;
+ } else {
+ index += ByteUtils.getStringLength(payload, index);
+ String md5sum = ByteUtils.getString(payload, index);
+ binInfo.setType(binaryType);
+ binInfo.setLocalBinaryPath(localBinaryPath);
+ binInfo.setMd5sumValue(md5sum);
+ }
- String targetPath = selectedApp.getInfo(PackageInfo.EXEC_INDEX);
- if (appInfo.getAppType() == ApplicationInfo.APPTYPE_TIZEN) {
- targetPath += CommonConstants.EXTENSION_EXEC_FILE;
- }
- String binaryDir = ByteUtils.getString(payload, INT_SIZE).trim();
- String binaryPath = null;
- if (null == binaryDir) {
- // return HostResult.ERR_BIN_INFO_GET_FAIL;
- binaryPath = CommonConstants.EMPTY;
- }
-
- StringBuffer strBuf = new StringBuffer();
- strBuf.append(binaryDir).append(File.separator)
- .append(selectedApp.getExecFileName(appInfo.getAppType()));
- binaryPath = strBuf.toString();
- binInfo.setType(binaryType);
- binInfo.setPath(binaryPath);
-
- // host has no binary file - pull binary file from target
- // change binary file path of host
- File binFile = new File(binaryPath);
- if (!binFile.exists()) {
- // binaryPath = AnalyzerPaths.TEMP_FOLDER_PATH + File.separator
- // + selectedApp.getExecFileName(appInfo.getAppType());
- // try {
- // DACommunicator.getSelectedDevice().getIDevice()
- // .becomeSuperUser(true);
- // } catch (TimeoutException e) {
- // // TODO Auto-generated catch block
- // e.printStackTrace();
- // } catch (SdbCommandRejectedException e) {
- // // TODO Auto-generated catch block
- // e.printStackTrace();
- // } catch (IOException e) {
- // // TODO Auto-generated catch block
- // e.printStackTrace();
- // }
- //
- // SyncResult res = CommunicatorUtils.pull(targetPath, binaryPath);
- // if (null != res && res.isOk()) {
- // System.out.println("binary copy success!!");//$NON-NLS-1$
- // } else {
- // System.out.println("Failed to get " + targetPath); //$NON-NLS-1$
- // return HostResult.ERR_BIN_INFO_GET_FAIL;
- // }
- // binInfo.setPath(binaryPath);
- // return result;
- }
-
- // host has binary then compare binary hash target and local
- String command = AnalyzerShellCommands.CMD_DA_MD_5_SUM + targetPath;
-
- CommunicatorUtils.execHostCommand(command, new MultiLineReceiver() {
- @Override
- public void processNewLines(String[] appLines) {
- binaryHashMultiLines.clear();
- for (int i = 0; i < appLines.length; i++) {
- binaryHashMultiLines.add(appLines[i]);
+ // host has no binary file - pull binary file from target
+ // change binary file path of host
+ File binFile = new File(localBinaryPath);
+ if (!binFile.exists()) {
+ localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH
+ + File.separator + getFileName(targetPath);
+ result = pullTheFile(targetPath, localBinaryPath);
+ if (result.isSuccess()) {
+ binInfo.setLocalBinaryPath(localBinaryPath);
}
+ return result;
}
- });
-
- String commandResult = binaryHashMultiLines.get(0);
- String[] splitResult = commandResult.trim()
- .split(CommonConstants.SPACE);
- String targetHashCode = new String(splitResult[0]);
- String localHashCode = null;
- command = AnalyzerShellCommands.CMD_MD_5_SUM + "\"" + binaryPath + "\"";
- try {
- Runtime rt = Runtime.getRuntime();
- Process process = rt.exec(new String[] {
- AnalyzerShellCommands.CMD_MD_5_SUM, binaryPath });
- process.waitFor();
- BufferedReader reader = new BufferedReader(new InputStreamReader(
- process.getInputStream()));
- BufferedReader error = new BufferedReader(new InputStreamReader(
- process.getErrorStream()));
- String line = reader.readLine();
- String errorStr = error.readLine();
- if (null == line) {
- System.out.println("host md5sum get failed : " + errorStr);
+
+ String localHashCode = null;
+ try {
+ Runtime rt = Runtime.getRuntime();
+ Process process = rt.exec(new String[] {
+ AnalyzerShellCommands.CMD_MD_5_SUM, localBinaryPath });
+ process.waitFor();
+ BufferedReader reader = new BufferedReader(
+ new InputStreamReader(process.getInputStream()));
+ BufferedReader error = new BufferedReader(
+ new InputStreamReader(process.getErrorStream()));
+ String line = reader.readLine();
+ String errorStr = error.readLine();
+ if (null == line) {
+ System.out.println("host md5sum get failed : " + errorStr);
+ return HostResult.ERR_BIN_INFO_GET_FAIL;
+ }
+ String[] splitResult = line.trim().split(CommonConstants.SPACE);
+ localHashCode = new String(splitResult[0]);
+ } catch (IOException e) {
+ e.printStackTrace();
return HostResult.ERR_BIN_INFO_GET_FAIL;
+ } catch (InterruptedException e) {
+ e.printStackTrace();
}
- splitResult = line.trim().split(CommonConstants.SPACE);
- localHashCode = new String(splitResult[0]);
- } catch (IOException e) {
+ String targetHashCode = binInfo.getMd5sumValue();
+ if (!targetHashCode.equals(localHashCode)) {
+ localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH
+ + File.separator + getFileName(targetPath);
+ result = pullTheFile(targetPath, localBinaryPath);
+ if (result.isSuccess()) {
+ binInfo.setLocalBinaryPath(localBinaryPath);
+ }
+ return result;
+ }
+ }
+ return result;
+ }
+
+ private String getFileName(String fullPath) {
+ if (null == fullPath || fullPath.isEmpty()) {
+ return null;
+ }
+ String[] splitPath = fullPath.split(CommonConstants.SLASH);
+ return new String(splitPath[splitPath.length - 1]);
+ }
+
+ private HostResult pullTheFile(String from, String to) {
+
+ try {
+ DACommunicator.getSelectedDevice().getIDevice().setRootUser(true);
+ } catch (TimeoutException e) {
+ // TODO Auto-generated catch block
e.printStackTrace();
- return HostResult.ERR_BIN_INFO_GET_FAIL;
- } catch (InterruptedException e) {
+ } catch (SdbCommandRejectedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
e.printStackTrace();
}
- // hash code is not same - get binary from target
- // change binary file path of host
-
- // FIXME: permission denied problem
-
- if (!targetHashCode.equals(localHashCode)) {
- // String destFilePath = AnalyzerPaths.TEMP_FOLDER_PATH
- // + File.separator
- // + selectedApp.getExecFileName(appInfo.getAppType());
- // try {
- // DACommunicator.getSelectedDevice().getIDevice()
- // .becomeSuperUser(true);
- // } catch (TimeoutException e) {
- // // TODO Auto-generated catch block
- // e.printStackTrace();
- // } catch (SdbCommandRejectedException e) {
- // // TODO Auto-generated catch block
- // e.printStackTrace();
- // } catch (IOException e) {
- // // TODO Auto-generated catch block
- // e.printStackTrace();
- // }
- //
- // SyncResult res = CommunicatorUtils.pull(targetPath,
- // destFilePath);
- // if (null != res && res.isOk()) {
- // System.out.println("binary copy success!!");//$NON-NLS-1$
- // } else {
- // System.out.println("Failed to get " + targetPath + " step 2"); //$NON-NLS-1$
- // return HostResult.ERR_BIN_INFO_GET_FAIL;
- // }
- // String[] splitName = binaryPath.split(CommonConstants.SLASH);
- // binaryPath = AnalyzerPaths.TEMP_FOLDER_PATH + File.separator
- // + new String(splitName[splitName.length - 1]);
- // binInfo.setPath(binaryPath);
- }
- binInfo.setPath(binaryPath);
-
- return result;
+ SyncResult res = CommunicatorUtils.pull(from, to);
+ if (null != res && res.isOk()) {
+ System.out.println("binary copy success!!");//$NON-NLS-1$
+ } else {
+ System.out.println("Failed to get " + from); //$NON-NLS-1$
+ return HostResult.ERR_BIN_INFO_GET_FAIL;
+ }
+ // binInfo.setLocalBinaryPath(localBinaryPath);
+ return HostResult.SUCCESS;
}
@Override
int msgId = ByteUtils.toInt(message);
System.out.println("wait for ack... [send message : " + msgId
+ " ]");
-
+
int readsize = -1;
// read buffer size is sufficient??
byte[] cbuf = new byte[DACommunicator.READ_BUFFER_SIZE * 2];
String networkType = null;
int maxBrightness = 0;
int numberOfCPU = 0;
+ int numberOfDevice = 0;
+ String deviceList = null;
systemMemorySize = ByteUtils.toLong(payload, index);
index += LONG_SIZE;
maxBrightness = ByteUtils.toInt(payload, index);
index += INT_SIZE;
numberOfCPU = ByteUtils.toInt(payload, index);
+ index += INT_SIZE;
+ numberOfDevice = ByteUtils.toInt(payload, index);
+ index += INT_SIZE;
+
+ for (int i = 0; i < numberOfDevice; i++) {
+ deviceList += LogDataUtils.getString(index, payload);
+ if (i + 1 != numberOfDevice) {
+ deviceList += CommonConstants.COMMA;
+ }
+ index += LogDataUtils.getStringLength(index, payload);
+ }
tInfo.setSystemMemorySize(systemMemorySize);
tInfo.setStorageSize(storageSize);
tInfo.setNetworkType(networkType);
tInfo.setMaxBrightness(maxBrightness);
tInfo.setCpuCount(numberOfCPU);
+ tInfo.setDeviceCount(numberOfDevice);
+ tInfo.setDevices(deviceList);
return tInfo;
}
System.out.println("binary info get failed :" + hr.getMessage());
}
}
+
+ public HostResult sendSWAPMessage(int messageId) {
+ List<BinarySettingData> settings = BinarySettingManager.getInstance()
+ .getBinarySettings();
+ HashMap<String, BinaryInfo> targetBinInfoMap = BinarySettingManager
+ .getInstance().getTargetBinInfoMap();
+ byte[] msg = new byte[0];
+ int count = settings.size();
+ int failedCount = 0;
+ msg = ByteUtils.getByte(msg, messageId);
+ byte[] libInst = new byte[0];
+ for (int a = 0; a < count; a++) {
+ String binaryPath = settings.get(a).getBinaryPath();
+ BinaryInfo binInfo = targetBinInfoMap.get(binaryPath);
+ String localPath = binInfo.getLocalBinaryPath();
+
+ ElfSymbolExtracter symbolExtractor = new ElfSymbolExtracter();
+ if (!symbolExtractor.makeSymbol(localPath)) {
+ failedCount++;
+ continue;
+ }
+ List<AddrSymbolPair> symbols = symbolExtractor.getAddrSymbolPairs();
+ List<FunctionInst> functionInstList = new ArrayList<FunctionInst>();
+
+ int size = (symbols == null) ? 0 : symbols.size();
+ int exSize = 0;
+ FunctionInst functionInst = new FunctionInst();
+ for (int i = 0; i < size; i++) {
+ AddrSymbolPair addrSymbol = symbols.get(i);
+ String symbol = addrSymbol.getSymbol();
+ // FIXME: black list hard coded.
+ if (symbol.contains("__i686.get_pc_thunk")) {
+ exSize++;
+ continue;
+ }
+ functionInst.setAddr(addrSymbol.getAddr());
+ functionInst.setArgs(getFunctionArgs(addrSymbol.getSymbol()));
+ functionInstList.add(functionInst);
+
+ // for debug
+ System.out.print("DEBUG : addr ");
+ AnalyzerUtil.printHexdecimal(addrSymbol.getAddr());
+ System.out.print(" symbol " + addrSymbol.getSymbol()
+ + " args ");
+ ByteUtils.printByteArray(functionInst.getArgs());
+ System.out.println();
+ }
+ size = size - exSize;
+ libInst = ByteUtils.getByte(libInst, binaryPath, size);
+ for (int i = 0; i < size; i++) {
+ libInst = ByteUtils.getByte(libInst, functionInstList.get(i)
+ .getByteValue());
+ }
+ System.out.println("debug");
+ }
+ count = count - failedCount;
+ libInst = ByteUtils.getByte(libInst, count);
+ int length = libInst.length;
+ msg = ByteUtils.getByte(msg, length, libInst);
+
+ ByteUtils.printByteArrayForStart(msg);
+ HostResult result = handleControlMessage(
+ DACommunicator.getSelectedDevice(), msg);
+
+ int ackMsg = AnalyzerConstants.MSG_SWAP_INST_ADD_ACK;
+ if (messageId == AnalyzerConstants.MSG_SWAP_INST_REMOVE) {
+ ackMsg = AnalyzerConstants.MSG_SWAP_INST_REMOVE_ACK;
+ }
+ if (!result.isSuccess() || !isCorrectAck(ackMsg, result)) {
+ return HostResult.ERR_BIN_INFO_GET_FAIL;
+ }
+
+ return HostResult.SUCCESS;
+ }
+
+ public HostResult sendBinaryInfoMessageForLib() {
+ List<BinarySettingData> binaryData = BinarySettingManager.getInstance()
+ .getBinarySettings();
+ List<String> binPaths = new ArrayList<String>();
+ List<BinaryInfo> binInfoList = new ArrayList<BinaryInfo>();
+
+ for (BinarySettingData data : binaryData) {
+ binPaths.add(data.getBinaryPath());
+ BinaryInfo binInfo = new BinaryInfo();
+ binInfo.setTargetBinaryPath(data.getBinaryPath());
+ binInfoList.add(binInfo);
+ }
+
+ int binCount = binPaths.size();
+ byte[] sendBin = new byte[0];
+ sendBin = ByteUtils.getByte(binCount);
+
+ for (int i = 0; i < binCount; i++) {
+ String targetPath = binPaths.get(i);
+ sendBin = ByteUtils.getByte(sendBin, targetPath);
+ }
+ int length = sendBin.length;
+ byte[] msg = ByteUtils.getByte(AnalyzerConstants.MSG_BINARY_INFO,
+ length, sendBin);
+ HostResult result = handleControlMessage(
+ DACommunicator.getSelectedDevice(), msg);
+
+ if (!result.isSuccess() || !isCorrectAck(MSG_BINARY_INFO_ACK, result)) {
+ return HostResult.ERR_BIN_INFO_GET_FAIL;
+ }
+
+ // parse binary info
+ byte[] payload = getMessagePayload(result.getRet());
+ int index = 0;
+ int count = ByteUtils.toInt(payload, index);
+ index += INT_SIZE;
+ String localBinaryPath = null;
+ if (binCount != count) {
+ System.out.println("BinInfo ack is not valid");
+ return null;
+ }
+ for (int i = 0; i < binCount; i++) {
+ BinaryInfo binInfo = binInfoList.get(i);
+ int binaryType = ByteUtils.toInt(payload, index);
+ index += INT_SIZE;
+ localBinaryPath = ByteUtils.getString(payload, index).trim();
+ String[] splitLocalBinaryPath = localBinaryPath
+ .split(CommonConstants.SLASH);
+ if (null == splitLocalBinaryPath[0]
+ || splitLocalBinaryPath[0].isEmpty()) {
+ localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH
+ + File.separator + getFileName(binPaths.get(i));
+ result = pullTheFile(binPaths.get(i), localBinaryPath);
+ if (result.isSuccess()) {
+ binInfo.setLocalBinaryPath(localBinaryPath);
+
+ index += ByteUtils.getStringLength(payload, index);
+ String md5sum = ByteUtils.getString(payload, index);
+ binInfo.setType(binaryType);
+ binInfo.setLocalBinaryPath(localBinaryPath);
+ binInfo.setMd5sumValue(md5sum);
+ index += ByteUtils.getStringLength(payload, index);
+ }
+ continue;
+ } else {
+ index += ByteUtils.getStringLength(payload, index);
+ String md5sum = ByteUtils.getString(payload, index);
+ binInfo.setType(binaryType);
+ binInfo.setLocalBinaryPath(localBinaryPath);
+ binInfo.setMd5sumValue(md5sum);
+ index += ByteUtils.getStringLength(payload, index);
+ }
+
+ // host has no binary file - pull binary file from target
+ // change binary file path of host
+ File binFile = new File(localBinaryPath);
+ if (!binFile.exists()) {
+ localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH
+ + File.separator + getFileName(binPaths.get(i));
+ result = pullTheFile(binPaths.get(i), localBinaryPath);
+ if (result.isSuccess()) {
+ binInfo.setLocalBinaryPath(localBinaryPath);
+ }
+ continue;
+ }
+
+ String localHashCode = null;
+ try {
+ Runtime rt = Runtime.getRuntime();
+ Process process = rt.exec(new String[] {
+ AnalyzerShellCommands.CMD_MD_5_SUM, localBinaryPath });
+ process.waitFor();
+ BufferedReader reader = new BufferedReader(
+ new InputStreamReader(process.getInputStream()));
+ BufferedReader error = new BufferedReader(
+ new InputStreamReader(process.getErrorStream()));
+ String line = reader.readLine();
+ String errorStr = error.readLine();
+ if (null == line) {
+ System.out.println("host md5sum get failed : " + errorStr);
+ continue;
+ }
+ String[] splitResult = line.trim().split(CommonConstants.SPACE);
+ localHashCode = new String(splitResult[0]);
+ } catch (IOException e) {
+ e.printStackTrace();
+ continue;
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ continue;
+ }
+
+ String targetHashCode = binInfo.getMd5sumValue();
+ if (!targetHashCode.equals(localHashCode)) {
+ localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH
+ + File.separator + getFileName(binPaths.get(i));
+ result = pullTheFile(binPaths.get(i), localBinaryPath);
+ if (result.isSuccess()) {
+ binInfo.setLocalBinaryPath(localBinaryPath);
+ }
+ continue;
+ } else {
+ binInfo.setLocalBinaryPath(localBinaryPath);
+ }
+ }
+ BinarySettingManager.getInstance().addBinaryInfos(binInfoList);
+ return result;
+ }
}
import java.io.InputStream;
import java.net.Socket;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import org.tizen.dynamicanalyzer.ui.toolbar.StopLogProcessor;
import org.tizen.dynamicanalyzer.ui.toolbar.StopProcessManager;
import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;
-import org.tizen.dynamicanalyzer.uirecorder.RecordingQueue;
-import org.tizen.dynamicanalyzer.uirecorder.UIRecorderRecordThread;
import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
import org.tizen.sdblib.service.SyncResult;
}
private void processProcessInfo(byte[] data) {
- ProcessInfo pInfo = AnalyzerManager.getProject().getProcessInfo();
+ HashMap<Integer, ProcessInfo> processMap = AnalyzerManager.getProject()
+ .getProcessInfoHash();
int pid = 0;
- DATime startTime = new DATime();
+ int ppid = 0;
+ DATime processStartTime = new DATime();
long lowAddr = 0;
long highAddr = 0;
- int appType = 0;
- int binaryType = 0;
String binaryPath = null;
int dependantLibCount = 0;
int index = MSG_HEADER_SIZE;
pid = ByteUtils.toInt(data, index);
index += INT_SIZE;
+ ppid = ByteUtils.toInt(data, index);
+ index += INT_SIZE;
int sec = ByteUtils.toInt(data, index);
index += INT_SIZE;
int nano = ByteUtils.toInt(data, index);
index += INT_SIZE;
- startTime.setSec(sec);
- startTime.setNano(nano);
+ processStartTime.setSec(sec);
+ processStartTime.setNano(nano);
lowAddr = ByteUtils.toLong(data, index);
index += LONG_SIZE;
highAddr = ByteUtils.toLong(data, index);
index += LONG_SIZE;
- binaryType = ByteUtils.toInt(data, index);
- index += INT_SIZE;
binaryPath = ByteUtils.getString(data, index);
index += ByteUtils.getStringLength(data, index);
dependantLibCount = ByteUtils.toInt(data, index);
index += INT_SIZE;
+ ProcessInfo pInfo = processMap.get(pid);
+ if (null == pInfo) {
+ pInfo = new ProcessInfo();
+ processMap.put(pid, pInfo);
+ }
+
List<LibraryObject> libObjs = pInfo.getLibObjs();
for (int i = 0; i < dependantLibCount; i++) {
LibraryObject libObj = new LibraryObject();
libObjs.add(libObj);
}
+ DATime startTime = AnalyzerManager.getProject().getStartTime();
+ int startSec = AnalyzerManager.getProject().getStartTime().getSec();
+ int startNano = AnalyzerManager.getProject().getStartTime().getNano();
+
+ if (0 == startSec && 0 == startNano) {
+ startTime.setSec(sec);
+ startTime.setNano(nano);
+ AnalyzerManager.getProject().setStartTime(startTime);
+ startSec = sec;
+ startNano = nano;
+ }
+
pInfo.setPid(pid);
+ pInfo.setPpid(ppid);
System.out.println("process info start time : " + startTime.getSec()
+ " " + startTime.getNano() + " startTime : "
+ pInfo.getStartTime().getSec() + " "
pInfo.setStartTime(startTime);
pInfo.setLowestAddress(lowAddr);
pInfo.setHighestAddress(highAddr);
- pInfo.setAppType(appType);
- pInfo.setBinaryType(binaryType);
pInfo.setBinaryPath(binaryPath);
pInfo.setDepLibCount(dependantLibCount);
return name;
}
- private void processRecordLog(final String record) {
- RecordingQueue rq = UIRecorderRecordThread.getRecordingQueue();
- rq.putLog(record);
- }
-
private void processImage(final String from) {
final String fileName = getImageName(from);
final String to = AnalyzerManager.getProject().getSavePath()
break;
}
- //LOG!
-// ByteUtils.printByteArray(header);
-
+ // LOG!
+ // ByteUtils.printByteArray(header);
+
int id = ByteUtils.toInt(header, 0);
int seq = ByteUtils.toInt(header, INT_SIZE);
-
+
// for debug
-// System.out.print("sequence : " + seq + " id :");
-// AnalyzerUtil.printHexdecimal(id);
-// System.out.println();
+ System.out.print("sequence : " + seq + " id :");
+ AnalyzerUtil.printHexdecimal(id);
+ System.out.println();
int payloadSize = ByteUtils.toInt(header,
MSG_PAYLOAD_SIZE_INDEX);
byte[] payload = null;
payloadSize);
processMessage(buffer);
- if (id == AnalyzerConstants.MSG_DATA_TERMINATE) {
+ if (id == DataChannelConstants.MSG_DATA_TERMINATE) {
System.out.println("message data terminate arrived!!!");
break;
}
int id = ByteUtils.toInt(data, 0);
LogData log = null;
switch (id) {
- case DataChannelConstants.MSG_PROCESS_INFO:
+ case DataChannelConstants.MSG_DATA_PROCESS_INFO:
// setting process info
processProcessInfo(data);
break;
- case DataChannelConstants.MSG_TERMINATE:
+ case DataChannelConstants.MSG_DATA_TERMINATE:
processTerminate();
break;
- case DataChannelConstants.MSG_ERROR:
+ case DataChannelConstants.MSG_DATA_ERROR:
// process error message
break;
- case DataChannelConstants.MSG_SYSTEM:
- case DataChannelConstants.MSG_SAMPLE:
+ case DataChannelConstants.MSG_DATA_SAMPLE:
+ case DataChannelConstants.MSG_DATA_SYSTEM:
case DataChannelConstants.MSG_FUNCTION_ENTRY:
case DataChannelConstants.MSG_FUNCTION_EXIT:
case DataChannelConstants.MSG_CONTEXT_SWITCH_ENTRY:
case DataChannelConstants.MSG_CONTEXT_SWITCH_EXIT:
- case DataChannelConstants.MSG_RECORD:
+ case DataChannelConstants.MSG_DATA_RECORD:
if (AnalyzerManager.isProcessInfoArrived()) {
// make log
log = LogDataFactory.createInstance(data);
}
break;
default: // MSG_PROBE
- if (AnalyzerManager.isProcessInfoArrived() && id > 0x3000
- && id < 0x4000) {
+ if (AnalyzerManager.isProcessInfoArrived() && id > 0x0100
+ && id < 0x0200) {
log = LogDataFactory.createInstance(data);
if (null != log) {
buffer.add(log);
import org.tizen.dynamicanalyzer.model.ImageInfo;
import org.tizen.dynamicanalyzer.nl.InformationViewLabels;
import org.tizen.dynamicanalyzer.swap.model.data.ApiNameManager;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.ContextSwitchData;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.ProbeCommonData;
continue;
}
}
-
- // for debug
- // System.out.println("CallerPCAddr : "
- // + ((ProbeCommonData) log).getCallerPcAddr());
- // AnalyzerUtil.printHexdecimal(id);
}
int seqNum = log.getSeq();
.getProfileDataMaker());
} else if (log instanceof ReplayData) {
pushLog(log, logPack);
- }else if (log instanceof ContextSwitchData)
- {
-// printContextSwitchData(log);
+ } else if (log instanceof ContextSwitchData) {
+ // printContextSwitchData(log);
pushLog(log, logPack);
} else {
if (log instanceof ScreenShotData) {
pushLog(log, logPack);
AnalyzerManager.getCallstackManager()
.makeCallstackWithoutBacktrace(log);
- if (id == AnalyzerConstants.MSG_PROBE_FILE
- || id == AnalyzerConstants.MSG_PROBE_MEMORY) {
+ if (id == DataChannelConstants.MSG_PROBE_FILE
+ || id == DataChannelConstants.MSG_PROBE_MEMORY) {
AnalyzerManager.getLeakDetector().runLeakDectect(log);
}
boolean isPieBuild = (DACommunicator.getSelectedApp().getBinInfo()
.getType() == 1) ? true : false;
String baseAddr = Long.toString(AnalyzerManager.getProject()
- .getBaseAddress());
+ .getBaseAddress(input.getPid()));
String highAddr = Long.toString(AnalyzerManager.getProject()
- .getHighestAddress());
- String path = DACommunicator.getSelectedApp().getBinInfo().getPath();
+ .getHighestAddress(input.getPid()));
+ String path = DACommunicator.getSelectedApp().getBinInfo()
+ .getLocalBinaryPath();
String pcAddr = Long.toString(input.getPcAddr());
String functionName = SymbolManager.addr2func(path, pcAddr, isPieBuild,
baseAddr);
/** debug code */
-// if (input.getId() != 0x2006 && input.getProbeType() == 1) {
-// if (input.getId() != 0x2006 ) {
-// if (input.getId() == 0x2006) {
-// System.out.print("seq : " + input.getSeq());
-// System.out.print(" id : ");
-// AnalyzerUtil.printHexdecimal(input.getId());
-// System.out.print(" function name : " + functionName + "[ low :");
-// AnalyzerUtil.printHexdecimal(Long.parseLong(baseAddr));
-// System.out.print(" high : ");
-// AnalyzerUtil.printHexdecimal(Long.parseLong(highAddr));
-// System.out.print(" pcAddr : ");
-// AnalyzerUtil.printHexdecimal(Long.parseLong(pcAddr));
-// if (input.getId() == 0x2010) {
-// System.out.print(" probe type : ");
-// AnalyzerUtil.printHexdecimal(input.getProbeType());
-// System.out.print(" subtype : ");
-// AnalyzerUtil.printHexdecimal(input.getProbeSubType());
-// } else {
-// System.out.print(" ");
-// }
-// System.out.print(" tid " + input.getTid() + " pid "
-// + input.getPid() + " time " + input.getTime());
-// System.out.println(" ]");
-// }
+ // if (input.getId() != 0x2006 && input.getProbeType() == 1) {
+ // if (input.getId() != 0x2006 ) {
+ // if (input.getId() == 0x2006) {
+ // System.out.print("seq : " + input.getSeq());
+ // System.out.print(" id : ");
+ // AnalyzerUtil.printHexdecimal(input.getId());
+ // System.out.print(" function name : " + functionName + "[ low :");
+ // AnalyzerUtil.printHexdecimal(Long.parseLong(baseAddr));
+ // System.out.print(" high : ");
+ // AnalyzerUtil.printHexdecimal(Long.parseLong(highAddr));
+ // System.out.print(" pcAddr : ");
+ // AnalyzerUtil.printHexdecimal(Long.parseLong(pcAddr));
+ // if (input.getId() == 0x2010) {
+ // System.out.print(" probe type : ");
+ // AnalyzerUtil.printHexdecimal(input.getProbeType());
+ // System.out.print(" subtype : ");
+ // AnalyzerUtil.printHexdecimal(input.getProbeSubType());
+ // } else {
+ // System.out.print(" ");
+ // }
+ // System.out.print(" tid " + input.getTid() + " pid "
+ // + input.getPid() + " time " + input.getTime());
+ // System.out.println(" ]");
+ // }
if (null == functionName || functionName.isEmpty()
|| functionName.equals("_end")) { //$NON-NLS-1$
private void pushLog(LogData logData, LogPackage logPack) {
logPack.setLogs(logData.getId(), logData);
}
-
- private void printContextSwitchData(LogData log)
- {
- ContextSwitchData input = (ContextSwitchData)log;
+
+ private void printContextSwitchData(LogData log) {
+ ContextSwitchData input = (ContextSwitchData) log;
System.out.print("seq : " + input.getSeq());
System.out.print(" id : ");
AnalyzerUtil.printHexdecimal(input.getId());
-// System.out.print(" function name : " + functionName + "[ low :");
-// AnalyzerUtil.printHexdecimal(Long.parseLong(baseAddr));
-// System.out.print(" high : ");
-// AnalyzerUtil.printHexdecimal(Long.parseLong(highAddr));
-// System.out.print(" pcAddr : ");
-// AnalyzerUtil.printHexdecimal(Long.parseLong(pcAddr));
- System.out.print(" tid " + input.getTid() + " pid "
- + input.getPid() + " time " + input.getTime());
+ // System.out.print(" function name : " + functionName + "[ low :");
+ // AnalyzerUtil.printHexdecimal(Long.parseLong(baseAddr));
+ // System.out.print(" high : ");
+ // AnalyzerUtil.printHexdecimal(Long.parseLong(highAddr));
+ // System.out.print(" pcAddr : ");
+ // AnalyzerUtil.printHexdecimal(Long.parseLong(pcAddr));
+ System.out.print(" tid " + input.getTid() + " pid " + input.getPid()
+ + " time " + input.getTime());
System.out.println(" ]");
}
}
return ByteUtils.getByte(eventTime.getByteValues(), eventId, eventType,
eventCode, eventValue);
}
+
+ @Override
+ public int getPid() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
}
private String executablePath = null;
private int functionCount = 0;
private List<FunctionInst> functionInstList = new ArrayList<FunctionInst>();
- private int libcount = 0;
- private List<LibraryInst> libraryInstList = new ArrayList<LibraryInst>();
@Override
public byte[] getByteValue() {
return ByteUtils.getByte(applicationType, applicationId,
- executablePath, functionCount, functionInstList, libcount,
- libraryInstList);
+ executablePath, functionCount, functionInstList);
}
@Override
return functionInstList;
}
- public int getLibcount() {
- return libcount;
- }
-
- public void setLibcount(int libcount) {
- this.libcount = libcount;
- }
-
- public void setLibraryInstList(List<LibraryInst> libraryInstList) {
- this.libraryInstList = libraryInstList;
- }
-
}
public class BinaryInfo implements SWAPModel {
private int type = 0;
- private String sourcePath = null;
+ private String targetBinaryPath = null;
+ private String localBinaryPath = null;
+ private String md5sumValue = null;
public int getType() {
return type;
this.type = type;
}
- public String getPath() {
- return sourcePath;
+ public String getLocalBinaryPath() {
+ return localBinaryPath;
}
- public void setPath(String path) {
- this.sourcePath = path;
+ public void setLocalBinaryPath(String path) {
+ this.localBinaryPath = path;
+ }
+
+ public String getMd5sumValue() {
+ return md5sumValue;
+ }
+
+ public void setMd5sumValue(String md5sumValue) {
+ this.md5sumValue = md5sumValue;
+ }
+
+ public String getTargetBinaryPath() {
+ return targetBinaryPath;
+ }
+
+ public void setTargetBinaryPath(String targetBinaryPath) {
+ this.targetBinaryPath = targetBinaryPath;
}
@Override
public byte[] getByteValue() {
- return ByteUtils.concatByteArray(type, sourcePath);
+ return ByteUtils.concatByteArray(type, localBinaryPath);
}
@Override
public void setByteToValues(byte[] input) {
// TODO Auto-generated method stub
-
+
}
+
}
package org.tizen.dynamicanalyzer.swap.model.control;
-
public class TargetInfo {
private long systemMemorySize = 0;
private long storageSize = 0;
private String networkType = null;
private int maxBrightness = 0;
private int cpuCount = 0;
+ private int deviceCount = 0;
+ private String devices = null;
public long getSystemMemorySize() {
return systemMemorySize;
public void setCpuCount(int cpuCount) {
this.cpuCount = cpuCount;
}
+
+ public int getDeviceCount() {
+ return deviceCount;
+ }
+
+ public void setDeviceCount(int deviceCount) {
+ this.deviceCount = deviceCount;
+ }
+
+ public String getDevices() {
+ return devices;
+ }
+
+ public void setDevices(String devices) {
+ this.devices = devices;
+ }
}
}
System.arraycopy(input, 0, newInput, 0, input.length);
input = null;
- payload = AnalyzerUtil.makeByteArray(id, newInput);
+// payload = AnalyzerUtil.makeByteArray(id, newInput);
}
// for lower version
int newId = -1;
switch (oldId) {
case LogCenterConstants.LOG_MEMORY:
- newId = AnalyzerConstants.MSG_PROBE_MEMORY;
+ newId = DataChannelConstants.MSG_PROBE_MEMORY;
break;
case LogCenterConstants.LOG_CONTROL:
- newId = AnalyzerConstants.MSG_PROBE_UICONTROL;
+ newId = DataChannelConstants.MSG_PROBE_UICONTROL;
break;
case LogCenterConstants.LOG_UI_EVENT:
- newId = AnalyzerConstants.MSG_PROBE_UIEVENT;
+ newId = DataChannelConstants.MSG_PROBE_UIEVENT;
break;
case LogCenterConstants.LOG_RESOURCE:
- newId = AnalyzerConstants.MSG_PROBE_FILE;
+ newId = DataChannelConstants.MSG_PROBE_FILE;
break;
case LogCenterConstants.LOG_NETWORK:
- newId = AnalyzerConstants.MSG_PROBE_NETWORK;
+ newId = DataChannelConstants.MSG_PROBE_NETWORK;
break;
case LogCenterConstants.LOG_GLES20:
- newId = AnalyzerConstants.MSG_PROBE_GLES20;
+ newId = DataChannelConstants.MSG_PROBE_GLES20;
case LogCenterConstants.LOG_LIFECYCLE:
- newId = AnalyzerConstants.MSG_PROBE_LIFECYCLE;
+ newId = DataChannelConstants.MSG_PROBE_LIFECYCLE;
break;
case LogCenterConstants.LOG_SCREENSHOT:
- newId = AnalyzerConstants.MSG_PROBE_SCREENSHOT;
+ newId = DataChannelConstants.MSG_PROBE_SCREENSHOT;
break;
case LogCenterConstants.LOG_SCENE:
- newId = AnalyzerConstants.MSG_PROBE_SCENE;
+ newId = DataChannelConstants.MSG_PROBE_SCENE;
break;
case LogCenterConstants.LOG_DEVICE:
- newId = AnalyzerConstants.MSG_DATA_SYSTEM;
+ newId = DataChannelConstants.MSG_DATA_SYSTEM;
break;
case LogCenterConstants.LOG_PROFILING:
- newId = AnalyzerConstants.MSG_DATA_SAMPLE;
+ newId = DataChannelConstants.MSG_DATA_SAMPLE;
break;
case LogCenterConstants.LOG_THREAD:
- newId = AnalyzerConstants.MSG_PROBE_THREAD;
+ newId = DataChannelConstants.MSG_PROBE_THREAD;
break;
case LogCenterConstants.LOG_CUSTOM_CHART:
- newId = AnalyzerConstants.MSG_PROBE_CUSTOM;
+ newId = DataChannelConstants.MSG_PROBE_CUSTOM;
break;
case LogCenterConstants.LOG_SYNC:
- newId = AnalyzerConstants.MSG_PROBE_SYNC;
+ newId = DataChannelConstants.MSG_PROBE_SYNC;
break;
default:
// USER_FUNCTION
public class DataChannelConstants {
public static final int BUFFER_SIZE = 1024;
- public static final int MSG_PROCESS_INFO = 0x2002;
- public static final int MSG_TERMINATE = 0x2004;
- public static final int MSG_ERROR = 0x2005;
- public static final int MSG_SAMPLE = 0x2006;
- public static final int MSG_SYSTEM = 0x2007;
- public static final int MSG_IMAGE = 0x2008;
- public static final int MSG_RECORD = 0x2009;
- public static final int MSG_FUNCTION_ENTRY = 0x2010;
- public static final int MSG_FUNCTION_EXIT = 0x2011;
- public static final int MSG_CONTEXT_SWITCH_ENTRY = 0x2012;
- public static final int MSG_CONTEXT_SWITCH_EXIT = 0x2013;
+ public final static int MSG_DATA_PROCESS_INFO = 0x0001;
+ public final static int MSG_DATA_TERMINATE = 0x0002;
+ public final static int MSG_DATA_ERROR = 0x0003;
+ public final static int MSG_DATA_SAMPLE = 0x0004;
+ public final static int MSG_DATA_SYSTEM = 0x0005;
+ public final static int MSG_DATA_RECORD = 0x0006;
+ public final static int MSG_FUNCTION_ENTRY = 0x0008;
+ public final static int MSG_FUNCTION_EXIT = 0x0009;
+ public final static int MSG_CONTEXT_SWITCH_ENTRY = 0x0010;
+ public final static int MSG_CONTEXT_SWITCH_EXIT = 0x0011;
+
+ public final static int MSG_PROBE_MEMORY = 0x0101;
+ public final static int MSG_PROBE_UICONTROL = 0x0102;
+ public final static int MSG_PROBE_UIEVENT = 0x0103;
+ public final static int MSG_PROBE_FILE = 0x0104;
+ public final static int MSG_PROBE_LIFECYCLE = 0x0105;
+ public final static int MSG_PROBE_SCREENSHOT = 0x0106;
+ public final static int MSG_PROBE_SCENE = 0x0107;
+ public final static int MSG_PROBE_THREAD = 0x0108;
+ public final static int MSG_PROBE_CUSTOM = 0x0109;
+ public final static int MSG_PROBE_SYNC = 0x0110;
+ public final static int MSG_PROBE_NETWORK = 0x0111;
+ public final static int MSG_PROBE_GLES20 = 0x0112;
}
private long lowestAddress = -1;
private long highestAddress = -1;
private String libPath = null;
+ private int pid;
public long getLowestAddress() {
return lowestAddress;
public void setLibPath(String libPath) {
this.libPath = libPath;
}
+
+ public int getPid() {
+ return pid;
+ }
+
+ public void setPid(int pid) {
+ this.pid = pid;
+ }
+
+
}
public class ProcessInfo {
private int pid = -1;
- // private long startTime = 0;
+ private int ppid = -1;
DATime startTime = new DATime();
private long lowestAddress = 0;
private long highestAddress = 0;
- private int appType = -1; // 1. tizen 2. capi
- private int binaryType = -1; // pie option
private String binaryPath = null;
private int depLibCount = 0;
private List<LibraryObject> libObjs = new ArrayList<LibraryObject>();
this.pid = pid;
}
+ public int getPpid() {
+ return ppid;
+ }
+
+ public void setPpid(int ppid) {
+ this.ppid = ppid;
+ }
+
public DATime getStartTime() {
return startTime;
}
this.highestAddress = highestAddress;
}
- public int getAppType() {
- return appType;
- }
-
- public void setAppType(int appType) {
- this.appType = appType;
- }
-
- public int getBinaryType() {
- return binaryType;
- }
-
- public void setBinaryType(int binaryType) {
- this.binaryType = binaryType;
- }
-
public String getBinaryPath() {
return binaryPath;
}
tid = rs.getInt(index++);
cpuNum = rs.getInt(index++);
}
+
}
import org.tizen.dynamicanalyzer.swap.model.ByteUtils;
import org.tizen.dynamicanalyzer.swap.model.DATime;
-public class LogData {
+public abstract class LogData {
public static boolean isSWAP = false;
public static int STATE_COUNT = 4;
long resultNano = nano - startNano;
time = resultSec * 1000000 + resultNano / 1000;
-
index += INT_SIZE; // payload length field offset
}
seq = rs.getInt(3);
time = rs.getLong(4);
}
+
+ public abstract int getPid();
+
}
package org.tizen.dynamicanalyzer.swap.model.probe2;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_CONTEXT_SWITCH_ENTRY;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_CONTEXT_SWITCH_EXIT;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_DATA_RECORD;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_DATA_SAMPLE;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_DATA_SYSTEM;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_ENTRY;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_EXIT;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_CUSTOM;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_FILE;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_GLES20;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_LIFECYCLE;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_MEMORY;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_NETWORK;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_SCENE;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_SCREENSHOT;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_SYNC;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_THREAD;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_UICONTROL;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_UIEVENT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_CONTEXT_SWITCH_ENTRY;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_CONTEXT_SWITCH_EXIT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_DATA_RECORD;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_DATA_SAMPLE;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_DATA_SYSTEM;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_ENTRY;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_EXIT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_CUSTOM;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_FILE;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_GLES20;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_LIFECYCLE;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_MEMORY;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_NETWORK;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_SCENE;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_SCREENSHOT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_SYNC;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_THREAD;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_UICONTROL;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_UIEVENT;
import java.sql.ResultSet;
import java.sql.SQLException;
public static LogData createInstance(byte[] data) {
int id = ByteUtils.toInt(data, 0);
-
- if (id == 8208 || id == 8209 || id == 8198 || id == 8199 || id == 8210
- || id == 8211 || id == 12292 || id == 12290 || id == 12295 || id == 12289 || id == 12291|| id == 8201) {
- } else {
-// System.out.println("createInstance id : " + id);
- }
-
LogData output = null;
switch (id) {
case MSG_PROBE_MEMORY:
return output;
}
-
- public static LogData createInstance(ResultSet rs) throws SQLException{
+ public static LogData createInstance(ResultSet rs) throws SQLException {
int id = rs.getInt(2);
LogData output = null;
switch (id) {
output.loadData(rs);
return output;
}
-
+
public static LogFormat getLogFormatById(int id) {
LogFormat format = null;
switch (id) {
package org.tizen.dynamicanalyzer.swap.model.probe2;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_CONTEXT_SWITCH_ENTRY;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_CONTEXT_SWITCH_EXIT;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_DATA_SAMPLE;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_ENTRY;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_EXIT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_CONTEXT_SWITCH_ENTRY;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_CONTEXT_SWITCH_EXIT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_DATA_SAMPLE;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_ENTRY;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_EXIT;
import static org.tizen.dynamicanalyzer.common.CommonConstants.INT_SIZE;
import static org.tizen.dynamicanalyzer.common.CommonConstants.LONG_SIZE;
return recordEvent;
}
+ @Override
+ public int getPid() {
+ return 0;
+ }
+
}
long systemMemoryUsed = 0;
int totalUsedDrive = 0;
int diskReadSize = 0;
+ int diskReadSectorCount = 0;
int diskWriteSize = 0;
- int diskSectorsWritten = 0;
+ int diskWrittenSectorCount = 0;
int networkSendSize = 0;
int networkReceiveSize = 0;
int wifi = 0;
int video = 0;
int call = 0;
int dnet = 0;
- int energy = 0;
+ int energyUsage = 0;
+ String deviceEnergyUsage = null;
+ String applicationEnergyUsage = null;
int callAlpha = 0;
int rssiAlpha = 0;
- public SystemData(){}
-
+ public SystemData() {
+ }
+
public void makeData(byte[] data) {
super.makeData(data);
-// index = MessageParser.MSG_HEADER_SIZE;
+ // index = MessageParser.MSG_HEADER_SIZE;
int coreCount = DACommunicator.getSelectedDevice().getTargetInfo()
.getCpuCount();
+ int deviceCount = DACommunicator.getSelectedDevice().getTargetInfo()
+ .getDeviceCount();
appCpuUsage = ByteUtils.toFloat(data, index);
index += FLOAT_SIZE;
diskReadSize = ByteUtils.toInt(data, index);
index += INT_SIZE;
+ diskReadSectorCount = ByteUtils.toInt(data, index);
+ index += INT_SIZE;
+
diskWriteSize = ByteUtils.toInt(data, index);
index += INT_SIZE;
- diskSectorsWritten = ByteUtils.toInt(data, index);
+ diskWrittenSectorCount = ByteUtils.toInt(data, index);
index += INT_SIZE;
networkSendSize = ByteUtils.toInt(data, index);
dnet = ByteUtils.toInt(data, index);
index += INT_SIZE;
- energy = ByteUtils.toInt(data, index);
+ energyUsage = ByteUtils.toInt(data, index);
+ index += INT_SIZE;
+
+ deviceEnergyUsage = parseUsage(index, data);
+ index += (INT_SIZE * deviceCount);
+
+ applicationEnergyUsage = parseUsage(index, data);
+ index += (INT_SIZE * deviceCount);
+
}
private static String parseLoad(int start, byte[] payload) {
StringBuffer outBuf = new StringBuffer();
for (int ii = 0; ii < count; ii++) {
try {
- if (pos == 180) {
- System.out.println();
- }
int tid = ByteUtils.toInt(payload, pos);
pos += INT_SIZE;
outBuf.append(tid).append(CommonConstants.COMMA);
return buffer.toString();
}
+ private static String parseUsage(int start, byte[] payload) {
+ int count = DACommunicator.getSelectedDevice().getTargetInfo()
+ .getDeviceCount();
+ StringBuffer buffer = new StringBuffer();
+ for (int i = 0; i < count; i++) {
+ int value = ByteUtils.toInt(payload, start);
+ start += INT_SIZE;
+ buffer.append(value);
+ if (i + 1 != count) {
+ buffer.append(',');
+ }
+ }
+ return buffer.toString();
+ }
+
public int getEnergy() {
- return energy;
+ return energyUsage;
}
public void setEnergy(int energy) {
- this.energy = energy;
+ this.energyUsage = energy;
}
public int getWifi() {
this.dnet = dnet;
}
- public int getDiskSectorsWritten() {
- return diskSectorsWritten;
- }
-
- public void setDiskSectorsWritten(int disSectorsWritten) {
- this.diskSectorsWritten = disSectorsWritten;
- }
-
public int getNetworkSendSize() {
return networkSendSize;
}
this.diskReadSize = diskReadSize;
}
+ public int getDiskReadSectorCount() {
+ return diskReadSectorCount;
+ }
+
+ public void setDiskReadSectorCount(int diskReadSectorCount) {
+ this.diskReadSectorCount = diskReadSectorCount;
+ }
+
public int getDiskWriteSize() {
return diskWriteSize;
}
this.diskWriteSize = diskWriteSize;
}
+ public int getDiskWrittenSectorCount() {
+ return diskWrittenSectorCount;
+ }
+
+ public void setDiskWrittenSectorCount(int diskWrittenSectorCount) {
+ this.diskWrittenSectorCount = diskWrittenSectorCount;
+ }
+
public int getCallAlpha() {
return callAlpha;
}
this.rssiAlpha = rssiAlpha;
}
+ public int getEnergyUsage() {
+ return energyUsage;
+ }
+
+ public void setEnergyUsage(int energyUsage) {
+ this.energyUsage = energyUsage;
+ }
+
+ public String getDeviceEnergyUsage() {
+ return deviceEnergyUsage;
+ }
+
+ public void setDeviceEnergyUsage(String deviceEnergyUsage) {
+ this.deviceEnergyUsage = deviceEnergyUsage;
+ }
+
+ public String getApplicationEnergyUsage() {
+ return applicationEnergyUsage;
+ }
+
+ public void setApplicationEnergyUsage(String applicationEnergyUsage) {
+ this.applicationEnergyUsage = applicationEnergyUsage;
+ }
+
@Override
public void makePreparedStatement(PreparedStatement prep)
throws SQLException {
prep.setInt(index++, totalUsedDrive);
prep.setInt(index++, diskReadSize);
prep.setInt(index++, diskWriteSize);
- prep.setInt(index++, diskSectorsWritten);
+ prep.setInt(index++, diskWrittenSectorCount);
prep.setInt(index++, networkSendSize);
prep.setInt(index++, networkReceiveSize);
prep.setInt(index++, wifi);
prep.setInt(index++, video);
prep.setInt(index++, call);
prep.setInt(index++, dnet);
- prep.setInt(index++, energy);
+ prep.setInt(index++, energyUsage);
prep.setInt(index++, callAlpha);
prep.setInt(index++, rssiAlpha);
totalUsedDrive = rs.getInt(index++);
diskReadSize = rs.getInt(index++);
diskWriteSize = rs.getInt(index++);
- diskSectorsWritten = rs.getInt(index++);
+ diskWrittenSectorCount = rs.getInt(index++);
networkSendSize = rs.getInt(index++);
networkReceiveSize = rs.getInt(index++);
wifi = rs.getInt(index++);
video = rs.getInt(index++);
call = rs.getInt(index++);
dnet = rs.getInt(index++);
- energy = rs.getInt(index++);
+ energyUsage = rs.getInt(index++);
callAlpha = rs.getInt(index++);
rssiAlpha = rs.getInt(index++);
}
+
+ @Override
+ public int getPid() {
+ return 0;
+ }
}
--- /dev/null
+package org.tizen.dynamicanalyzer.swap.platform;
+
+import org.tizen.dynamicanalyzer.common.CommonConstants;
+
+public class BinarySettingData {
+ private String binaryPath = null;
+ private String sourcePath = null;
+
+ public String getBinaryPath() {
+ return binaryPath;
+ }
+
+ public void setBinaryPath(String binaryPath) {
+ this.binaryPath = binaryPath;
+ }
+
+ public String getSourcePath() {
+ return sourcePath;
+ }
+
+ public void setSourcePath(String sourcePath) {
+ this.sourcePath = sourcePath;
+ }
+
+ public String getSaveData() {
+ StringBuffer strBuffer = new StringBuffer();
+ strBuffer.append(binaryPath).append(CommonConstants.COMMA);
+ if (null == sourcePath) {
+ strBuffer.append(CommonConstants.SPACE);
+ } else {
+ strBuffer.append(sourcePath);
+ }
+ return strBuffer.toString();
+ }
+}
--- /dev/null
+package org.tizen.dynamicanalyzer.swap.platform;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.tizen.dynamicanalyzer.swap.model.control.BinaryInfo;
+import org.tizen.dynamicanalyzer.swap.platform.ui.InputRow;
+
+public class BinarySettingManager {
+
+ private static BinarySettingManager instance = null;
+ private List<BinarySettingData> binarySettings = new ArrayList<BinarySettingData>();
+ private HashMap<String, BinaryInfo> targetBinInfoMap = new HashMap<String, BinaryInfo>();
+ private HashMap<String, BinaryInfo> localBinInfoMap = new HashMap<String, BinaryInfo>();
+
+ // temporary list
+ private HashMap<String, InputRow> inputRowHash = new HashMap<String, InputRow>();
+ private List<InputRow> inputRowList = new ArrayList<InputRow>();
+ private List<BinarySettingData> tempBinarySettings = new ArrayList<BinarySettingData>();
+
+ public static synchronized BinarySettingManager getInstance() {
+ if (null == instance) {
+ instance = new BinarySettingManager();
+ }
+ return instance;
+ }
+
+ public void removeRealBinarySettingData(String binPath) {
+ for (int i = 0; i < binarySettings.size(); i++) {
+ if (binPath.equals(binarySettings.get(i).getBinaryPath())) {
+ binarySettings.remove(i);
+ break;
+ }
+ }
+ }
+
+ public List<BinarySettingData> getBinarySettings() {
+ return binarySettings;
+ }
+
+ public void clearData() {
+ binarySettings.clear();
+ }
+
+ public void putBinarySettingData(List<BinarySettingData> data) {
+ binarySettings.clear();
+ binarySettings.addAll(data);
+ }
+
+ public HashMap<String, InputRow> getInputRowHash() {
+ return inputRowHash;
+ }
+
+ public List<InputRow> getInputRowList() {
+ return inputRowList;
+ }
+
+ public List<BinarySettingData> getTempBinarySettings() {
+ return tempBinarySettings;
+ }
+
+ public void removeInputRow(String path) {
+ InputRow inputRow = inputRowHash.get(path);
+ InputRow nextInputRow = null;
+ InputRow prevInputRow = null;
+ if (null == inputRow) {
+ return;
+ }
+
+ int index = inputRowList.indexOf(inputRow);
+ if (index == 0 && inputRowList.size() > 1) {
+ nextInputRow = inputRowList.get(index + 1);
+ FormData nextData = (FormData) nextInputRow.getLayoutData();
+ nextData.top = new FormAttachment(0, 0);
+ } else if (index + 1 < inputRowList.size()) {
+ prevInputRow = inputRowList.get(index - 1);
+ nextInputRow = inputRowList.get(index + 1);
+ FormData nextData = (FormData) nextInputRow.getLayoutData();
+ nextData.top = new FormAttachment(prevInputRow, 2);
+ }
+ inputRowHash.remove(path);
+ inputRowList.remove(index);
+ removeBinarySettingData(path);
+ }
+
+ public void removeBinarySettingData(String binPath) {
+ for (int i = 0; i < tempBinarySettings.size(); i++) {
+ if (binPath.equals(tempBinarySettings.get(i).getBinaryPath())) {
+ tempBinarySettings.remove(i);
+ break;
+ }
+ }
+ }
+
+ public void updateInputRow(String binPath, String sourcePath) {
+ int size = tempBinarySettings.size();
+ for (int i = 0; i < size; i++) {
+ BinarySettingData data = tempBinarySettings.get(i);
+ if (data.getBinaryPath().equals(binPath)) {
+ data.setSourcePath(sourcePath);
+ break;
+ }
+ }
+ }
+
+ public void addBinaryInfos(List<BinaryInfo> input) {
+ for (int i = 0; i < input.size(); i++) {
+ String localPath = input.get(i).getLocalBinaryPath();
+ BinaryInfo binInfo = targetBinInfoMap.get(localPath);
+ if (null != binInfo) {
+ String targetPath = binInfo.getTargetBinaryPath();
+ targetBinInfoMap.remove(targetPath);
+ localBinInfoMap.remove(localPath);
+ }
+ localBinInfoMap.put(localPath, input.get(i));
+ targetBinInfoMap.put(input.get(i).getTargetBinaryPath(),
+ input.get(i));
+ }
+ }
+
+ public void removeBinaryInfos(List<BinaryInfo> input) {
+ for (int i = 0; i < input.size(); i++) {
+ String path = input.get(i).getLocalBinaryPath();
+ BinaryInfo binInfo = localBinInfoMap.get(path);
+ if (null != binInfo) {
+ localBinInfoMap.remove(path);
+ targetBinInfoMap.remove(binInfo.getTargetBinaryPath());
+ }
+ }
+ }
+
+ public HashMap<String, BinaryInfo> getTargetBinInfoMap() {
+ return targetBinInfoMap;
+ }
+
+ public HashMap<String, BinaryInfo> getLocalBinInfoMap() {
+ return localBinInfoMap;
+ }
+
+}
--- /dev/null
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
+import org.tizen.dynamicanalyzer.common.AnalyzerPaths;
+import org.tizen.dynamicanalyzer.common.CommonConstants;
+import org.tizen.dynamicanalyzer.communicator.DACommunicator;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.swap.model.control.BinaryInfo;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingData;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager;
+import org.tizen.dynamicanalyzer.ui.widgets.DAButton;
+import org.tizen.dynamicanalyzer.ui.widgets.DAMessageBox;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
+import org.tizen.dynamicanalyzer.widgets.button.toggle.DACustomToggleButton;
+import org.tizen.sdblib.service.FileEntry;
+
+public class BinaryAnalyzingConfigDialog extends DAMessageBox {
+ private static final int WIDTH = 800;
+ private static final int HEIGHT = 600;
+
+ private HashMap<String, InputRow> inputRowHash = null;
+ private List<InputRow> inputRowList = null;
+
+ private List<BinarySettingData> tempBinarySettings = null;
+
+ private ScrolledComposite scrolledComposite = null;
+ private Composite inputComposite = null;
+ private DACustomToggleButton enableButton = null;
+ private DAButton cleanButton = null;
+ private DAButton addButton = null;
+ private DAButton saveButton = null;
+ private DAButton loadButton = null;
+
+ private boolean isLoaded = false;
+
+ private Composite bottomComp = null;
+
+ private DAButton okButton = null;
+ private DAButton cancelButton = null;
+
+ private BinaryAnalyzingConfigDialog me = null;
+
+ public BinaryAnalyzingConfigDialog(Shell parentShell) {
+ super(parentShell);
+ me = this;
+
+ inputRowHash = BinarySettingManager.getInstance().getInputRowHash();
+ inputRowList = BinarySettingManager.getInstance().getInputRowList();
+ tempBinarySettings = BinarySettingManager.getInstance()
+ .getTempBinarySettings();
+
+ String settingPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH;
+ File settingFolder = new File(settingPath);
+ if (!settingFolder.exists() || !settingFolder.isDirectory()) {
+ settingFolder.mkdirs();
+ }
+ }
+
+ private DACustomButtonClickEventListener addButtonListener = new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ FileExplorerDialog dialog = new FileExplorerDialog(shell);
+ Object result = dialog.open();
+ if (result != null) {
+ FileEntry entry = (FileEntry) result;
+ if (null == inputRowHash.get(entry.getFullPath())) {
+ InputRow inputRow = new InputRow(inputComposite);
+ inputRow.setBinaryText(entry.getFullPath());
+ inputRowHash.put(entry.getFullPath(), inputRow);
+ inputRowList.add(inputRow);
+ inputComposite.layout();
+
+ BinarySettingData binSetData = new BinarySettingData();
+ binSetData.setBinaryPath(entry.getFullPath());
+ tempBinarySettings.add(binSetData);
+ }
+ }
+ }
+ };
+
+ private DACustomButtonClickEventListener loadButtonListener = new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ LoadSettingDialog dialog = new LoadSettingDialog(shell);
+ dialog.setParentDialog(me);
+ dialog.open();
+ }
+ };
+
+ private DACustomButtonClickEventListener saveButtonListener = new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ SaveSettingDialog dialog = new SaveSettingDialog(shell);
+ dialog.open();
+ // save dialog
+ // filename.setting
+ }
+ };
+
+ private DACustomButtonClickEventListener cleanButtonListener = new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ for (int i = 0; i < inputRowList.size(); i++) {
+ inputRowList.get(i).dispose();
+ }
+ inputRowList.clear();
+ inputRowHash.clear();
+ tempBinarySettings.clear();
+ }
+ };
+
+ private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ BinarySettingManager.getInstance().putBinarySettingData(
+ tempBinarySettings);
+ DACommunicator.sendBinaryInfoMessageForLib();
+ int swapMsg = AnalyzerConstants.MSG_SWAP_INST_ADD;
+ if (enableButton.isToggled()) {
+ swapMsg = AnalyzerConstants.MSG_SWAP_INST_REMOVE;
+ }
+ DACommunicator.sendSWAPMessage(swapMsg);
+ shell.dispose();
+ }
+ };
+
+ private DACustomButtonClickEventListener cancelButtonListener = new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ shell.dispose();
+ }
+ };
+
+ private DACustomButtonClickEventListener enableButtonListener = new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ if (enableButton.isToggled()) {
+ enableButton.setText("Remove");
+ } else {
+ enableButton.setText("Add");
+ }
+ }
+ };
+
+ public Object open() {
+ block = true;
+ parentShell.setEnabled(false);
+ initSuccess = run();
+ if (initSuccess) {
+ shell.open();
+ initInputRows();
+ if (block) {
+ runEventLoop(shell);
+ }
+ }
+ shell.dispose();
+ parentShell.setEnabled(true);
+ closeAction();
+ return result;
+ }
+
+ protected boolean run() {
+ shell.setLayout(new FormLayout());
+ shell.setSize(WIDTH, HEIGHT);
+ shell.setBackground(ColorResources.DIALOG_BG_UPPER);
+ shell.setText("Binaries for Analyzing");
+
+ Label binaryLabel = new Label(shell, SWT.TRANSPARENT);
+ FormData data = new FormData();
+ data.top = new FormAttachment(0, 15);
+ data.left = new FormAttachment(0, 20);
+ data.height = 15;
+ data.width = WIDTH / 3;
+ binaryLabel.setLayoutData(data);
+ binaryLabel.setForeground(ColorResources.BLACK);
+ binaryLabel.setText("Binary Name");
+ binaryLabel.setBackground(ColorResources.DIALOG_BG_UPPER);
+
+ Label sourceLabel = new Label(shell, SWT.TRANSPARENT);
+ data = new FormData();
+ data.top = new FormAttachment(0, 15);
+ data.left = new FormAttachment(binaryLabel, 0);
+ data.height = 15;
+ data.width = WIDTH / 3;
+ sourceLabel.setLayoutData(data);
+ sourceLabel.setForeground(ColorResources.BLACK);
+ sourceLabel.setText("Source Path");
+ sourceLabel.setBackground(ColorResources.DIALOG_BG_UPPER);
+
+ scrolledComposite = new ScrolledComposite(shell, SWT.BORDER
+ | SWT.V_SCROLL | SWT.H_SCROLL);
+ data = new FormData();
+ data.top = new FormAttachment(binaryLabel, 5);
+ data.left = new FormAttachment(0, 15);
+ data.height = 465;
+ data.width = WIDTH - 35;
+ scrolledComposite.setLayoutData(data);
+ scrolledComposite.setLayout(new FormLayout());
+ scrolledComposite.setBackground(ColorResources.BLUE);
+ scrolledComposite.setExpandHorizontal(true);
+ scrolledComposite.setExpandVertical(true);
+
+ // scrolledComposite.setMinSize(WIDTH - 30, 200);
+
+ inputComposite = new Composite(scrolledComposite, SWT.NONE);
+ scrolledComposite.setContent(inputComposite);
+ scrolledComposite.setMinSize(inputComposite.computeSize(SWT.DEFAULT,
+ SWT.DEFAULT));
+ scrolledComposite.setShowFocusedControl(true);
+ data = new FormData();
+ data.top = new FormAttachment(binaryLabel, 5);
+ data.left = new FormAttachment(0, 15);
+ data.height = 495;
+ data.width = WIDTH - 15 - 15;
+ inputComposite.setLayoutData(data);
+ inputComposite.setLayout(new FormLayout());
+ inputComposite.setBackground(ColorResources.DIALOG_BG_UPPER);
+
+ enableButton = new DACustomToggleButton(shell,
+ ColorResources.BUTTON_NORMAL_COLOR_START,
+ ColorResources.BUTTON_NORMAL_COLOR_END,
+ ColorResources.BUTTON_PUSH_COLOR_START,
+ ColorResources.BUTTON_PUSH_COLOR_END,
+ ColorResources.BUTTON_HOVER_COLOR_START,
+ ColorResources.BUTTON_HOVER_COLOR_END,
+ ColorResources.BUTTON_DISABLE_COLOR_START,
+ ColorResources.BUTTON_DISABLE_COLOR_END,
+ ColorResources.BUTTON_NORMAL_COLOR_END,
+ ColorResources.BUTTON_NORMAL_COLOR_START,
+ ColorResources.BUTTON_HOVER_COLOR_END,
+ ColorResources.BUTTON_HOVER_COLOR_START);
+ data = new FormData();
+ data.top = new FormAttachment(scrolledComposite, 5);
+ data.left = new FormAttachment(0, 15);
+ data.height = 18;
+ data.width = 95;
+ enableButton.setLayoutData(data);
+ enableButton.setText("Add");
+ enableButton.addClickListener(enableButtonListener);
+
+ cleanButton = new DAButton(shell, SWT.NONE);
+ data = new FormData();
+ data.top = new FormAttachment(scrolledComposite, 5);
+ data.left = new FormAttachment(0, 395);
+ data.height = 20;
+ data.width = 95;
+ cleanButton.setLayoutData(data);
+ cleanButton.setText("clean");
+ cleanButton.addClickListener(cleanButtonListener);
+
+ addButton = new DAButton(shell, SWT.NONE);
+ data = new FormData();
+ data.top = new FormAttachment(scrolledComposite, 5);
+ data.left = new FormAttachment(cleanButton, 5);
+ data.height = 20;
+ data.width = 95;
+ addButton.setLayoutData(data);
+ addButton.setText("add");
+ addButton.addClickListener(addButtonListener);
+
+ saveButton = new DAButton(shell, SWT.NONE);
+ data = new FormData();
+ data.top = new FormAttachment(scrolledComposite, 5);
+ data.left = new FormAttachment(addButton, 5);
+ data.height = 20;
+ data.width = 95;
+ saveButton.setLayoutData(data);
+ saveButton.setText("save");
+ saveButton.addClickListener(saveButtonListener);
+
+ loadButton = new DAButton(shell, SWT.NONE);
+ data = new FormData();
+ data.top = new FormAttachment(scrolledComposite, 5);
+ data.left = new FormAttachment(saveButton, 5);
+ data.height = 20;
+ data.width = 95;
+ loadButton.setLayoutData(data);
+ loadButton.setText("laod");
+ loadButton.addClickListener(loadButtonListener);
+
+ bottomComp = new Composite(shell, SWT.NONE);
+ data = new FormData();
+ data.top = new FormAttachment(loadButton, 5);
+ data.left = new FormAttachment(0, 0);
+ data.height = 40;
+ data.width = WIDTH;
+ bottomComp.setLayoutData(data);
+ bottomComp.setLayout(new FormLayout());
+
+ cancelButton = new DAButton(bottomComp, SWT.NONE);
+ data = new FormData();
+ data.top = new FormAttachment(0, 5);
+ data.right = new FormAttachment(100, -10);
+ data.height = 25;
+ data.width = 100;
+ cancelButton.setLayoutData(data);
+ cancelButton.setText("Cancel");
+ cancelButton.addClickListener(cancelButtonListener);
+
+ okButton = new DAButton(bottomComp, SWT.NONE);
+ data = new FormData();
+ data.top = new FormAttachment(0, 5);
+ data.right = new FormAttachment(cancelButton, -5);
+ data.height = 25;
+ data.width = 100;
+ okButton.setLayoutData(data);
+ okButton.setText("Ok");
+ okButton.addClickListener(okButtonListener);
+
+ inputRowList.clear();
+ inputRowHash.clear();
+ tempBinarySettings.clear();
+
+ return true;
+ }
+
+ public void initInputRows() {
+ if (!isLoaded) {
+ List<BinarySettingData> binData = BinarySettingManager
+ .getInstance().getBinarySettings();
+ for (int i = 0; i < binData.size(); i++) {
+ InputRow inputRow = new InputRow(inputComposite);
+ inputRow.setBinaryText(binData.get(i).getBinaryPath());
+ String source = binData.get(i).getSourcePath();
+ if (null != source && !source.isEmpty()) {
+ inputRow.setSourceText(source);
+ String[] splitSource = source.split(CommonConstants.SLASH);
+ String comboSel = new String(
+ splitSource[splitSource.length - 1]);
+ inputRow.setSourceComboText(comboSel);
+ }
+ inputRowHash.put(binData.get(i).getBinaryPath(), inputRow);
+ inputRowList.add(inputRow);
+ }
+ tempBinarySettings.addAll(binData);
+ inputComposite.layout();
+ isLoaded = true;
+ }
+ }
+
+ public void loadBinarySetting(List<BinarySettingData> binData) {
+ cleanButtonListener.handleClickEvent(null);
+
+ for (int i = 0; i < binData.size(); i++) {
+ InputRow inputRow = new InputRow(inputComposite);
+ inputRow.setBinaryText(binData.get(i).getBinaryPath());
+ String source = binData.get(i).getSourcePath();
+ if (null != source && !source.isEmpty()) {
+ inputRow.setSourceText(source);
+ String[] splitSource = source.split(CommonConstants.SLASH);
+ String comboSel = new String(
+ splitSource[splitSource.length - 1]);
+ inputRow.setSourceComboText(comboSel);
+ }
+ inputRowHash.put(binData.get(i).getBinaryPath(), inputRow);
+ inputRowList.add(inputRow);
+ }
+ tempBinarySettings.addAll(binData);
+ inputComposite.layout();
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import java.util.HashMap;
+
+import org.eclipse.nebula.widgets.grid.Grid;
+import org.eclipse.nebula.widgets.grid.GridColumn;
+import org.eclipse.nebula.widgets.grid.GridItem;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.tizen.dynamicanalyzer.communicator.DACommunicator;
+import org.tizen.dynamicanalyzer.model.DeviceInfo;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.resources.FontResources;
+import org.tizen.dynamicanalyzer.ui.widgets.DAGrid;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableEmptyCellRenderer;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableHeaderRenderer;
+import org.tizen.sdblib.IDevice;
+import org.tizen.sdblib.service.FileEntry;
+
+public class DAFileExplorer extends Composite {
+ protected Grid table;
+ private HashMap<String, Boolean> checkedChild = new HashMap<String, Boolean>();
+
+ public DAFileExplorer(Composite parent) {
+ super(parent, SWT.NONE);
+ this.setLayout(new FillLayout());
+ table = new DAGrid(this, SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL
+ | SWT.H_SCROLL);
+ table.setLinesVisible(false);
+ table.setBackground(ColorResources.TABLE_CONTENTS_NORMAL);
+ table.setForeground(ColorResources.TABLE_CONTENTS_FONT_COLOR);
+ table.setFont(FontResources.TABLE_CELL_FONT);
+ setColumns();
+ table.setEmptyCellRenderer(new DATableEmptyCellRenderer());
+
+ table.setItemHeight(18);
+
+ table.addListener(SWT.Expand, new Listener() {
+
+ @Override
+ public void handleEvent(Event event) {
+ GridItem item = (GridItem) event.item;
+ FileEntry entry = (FileEntry) item.getData();
+ if (entry == null) {
+ return;
+ }
+ String path = entry.getFullPath();
+ if (null == checkedChild.get(path)) {
+ FileEntry[] children = entry.getChildren();
+ if (children.length > 0) {
+ for (int i = 0; i < children.length; i++) {
+ FileEntry child = children[i];
+ GridItem childItem = new GridItem(item, SWT.NONE);
+ childItem.setText(child.getName());
+ childItem.setData(child);
+ }
+ }
+ checkedChild.put(path, true);
+ // table.update();
+ }
+ }
+ });
+
+ table.addListener(SWT.Collapse, new Listener() {
+ @Override
+ public void handleEvent(Event event) {
+ GridItem item = (GridItem) event.item;
+ item.hasChildren();
+ // TODO : remove children
+ }
+ });
+ }
+
+ public void setColumns() {
+ GridColumn column = new GridColumn(table, SWT.NONE);
+ column.setCellRenderer(new DAFileExplorerRenderer());
+ column.setHeaderRenderer(new DATableHeaderRenderer());
+ column.setText("Node");
+ column.setWidth(500);
+ column.setTree(true);
+ }
+
+ public void makeTree() {
+ DeviceInfo selectedDevice = DACommunicator.getSelectedDevice();
+ if (null == selectedDevice) {
+ return;
+ }
+ IDevice device = DACommunicator.getSelectedDevice().getIDevice();
+
+ FileEntry root = device.getRoot();
+ GridItem item = new GridItem(table, SWT.NONE);
+
+ String name = getDeviceSerialWithName(root);
+ item.setText(name);
+ item.setData(root);
+
+ table.update();
+ }
+
+ public static String getDeviceSerialWithName(FileEntry entry) {
+ return combineSerialWithName(entry.getDevice().getSerialNumber(), entry
+ .getDevice().getDeviceName());
+ }
+
+ private static String combineSerialWithName(String serial, String name) {
+ return String.format("%s (%s)", serial, name);
+ }
+
+ public FileEntry getSelection() {
+ GridItem[] selections = table.getSelection();
+ if (selections.length > 0) {
+ GridItem selection = selections[0];
+ FileEntry entry = (FileEntry) selection.getData();
+ if (!entry.isDirectory() && !entry.isRoot()) {
+ return entry;
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ public Grid getTree() {
+ return table;
+ }
+}
--- /dev/null
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import org.eclipse.nebula.widgets.grid.GridItem;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableCellRenderer;
+import org.tizen.sdblib.service.FileEntry;
+
+public class DAFileExplorerRenderer extends DATableCellRenderer {
+ @Override
+ public void setTree(boolean tree) {
+ super.setTree(tree);
+
+ if (tree) {
+ toggleRenderer = new DAFileExplorerToggleRenderer();
+ toggleRenderer.setDisplay(getDisplay());
+ }
+ }
+
+ @Override
+ protected boolean hasChildren(GridItem item) {
+ FileEntry entry = (FileEntry) item.getData();
+ if (entry != null && entry.getChildren().length > 0) {
+ return true;
+ }
+ return false;
+ }
+}
--- /dev/null
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import org.eclipse.nebula.widgets.grid.GridItem;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.resources.FontResources;
+import org.tizen.dynamicanalyzer.resources.ImageResources;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableToggleRenderer;
+import org.tizen.sdblib.service.FileEntry;
+
+public class DAFileExplorerToggleRenderer extends DATableToggleRenderer {
+
+ public void paint(GC gc, Object value) {
+ GridItem item = (GridItem) value;
+
+ Font font = item.getFont(0);
+ if (null == font) {
+ gc.setFont(FontResources.TABLE_CELL_FONT);
+ } else {
+ gc.setFont(font);
+ }
+
+ String text = item.getText();
+ FileEntry entry = (FileEntry) item.getData();
+ Image icon = getIcon(entry);
+
+ if (hasChildren(entry)) {
+ if (isExpanded()) {
+ Rectangle r = ImageResources.TREE_OPEN.getBounds();
+ int offset = (getBounds().width - r.width) / 2;
+ int x = getBounds().x + offset;
+ gc.drawImage(ImageResources.TREE_OPEN, x, getBounds().y);
+ x += r.width + 5;
+
+ r = icon.getBounds();
+ gc.drawImage(icon, x, getBounds().y);
+ x += r.width + 1;
+
+ if (isSelected()) {
+ gc.setForeground(ColorResources.TABLE_CONTENTS_SELECTED_FONT_COLOR);
+ } else {
+ gc.setForeground(ColorResources.TABLE_CONTENTS_FONT_COLOR);
+ }
+ gc.drawText(text, x, getBounds().y + 2, true);
+ } else {
+ Rectangle r = ImageResources.TREE_FOLD.getBounds();
+ int offset = (getBounds().width - r.width) / 2;
+ int x = getBounds().x + offset;
+ gc.drawImage(ImageResources.TREE_FOLD, getBounds().x + offset,
+ getBounds().y);
+ x += r.width + 5;
+
+ r = icon.getBounds();
+ gc.drawImage(icon, x, getBounds().y);
+ x += r.width + 1;
+
+ if (isSelected()) {
+ gc.setForeground(ColorResources.TABLE_CONTENTS_SELECTED_FONT_COLOR);
+ } else {
+ gc.setForeground(ColorResources.TABLE_CONTENTS_FONT_COLOR);
+ }
+ gc.drawText(text, x, getBounds().y + 2, true);
+ }
+ } else {
+ Rectangle r = ImageResources.TREE_OPEN.getBounds();
+ int offset = (getBounds().width - r.width) / 2;
+ int x = getBounds().x + offset;
+ x += r.width + 5;
+
+ r = icon.getBounds();
+ gc.drawImage(icon, x, getBounds().y);
+ x += r.width + 1;
+
+ if (isSelected()) {
+ gc.setForeground(ColorResources.TABLE_CONTENTS_SELECTED_FONT_COLOR);
+ } else {
+ gc.setForeground(ColorResources.TABLE_CONTENTS_FONT_COLOR);
+ }
+ gc.drawText(text, x, getBounds().y, true);
+ }
+ }
+
+ private Image getIcon(FileEntry entry) {
+
+ switch (entry.getType()) {
+ case File:
+ return ImageResources.ICON_FILE;
+ case Link:
+ return ImageResources.ICON_FILE_LINK;
+ case Directory:
+ return ImageResources.ICON_DIR;
+ case DirectoryLink:
+ return ImageResources.ICON_DIR_LINK;
+ case RootEmulator:
+ return ImageResources.ICON_EMULATOR;
+ case RootDevice:
+ return ImageResources.ICON_DEVICE;
+ default:
+ return ImageResources.ICON_OTHER;
+ }
+ }
+
+ private boolean hasChildren(FileEntry entry) {
+ if (entry != null && entry.getChildren().length > 0) {
+ switch (entry.getType()) {
+ case File:
+ return false;
+ case Link:
+ return false;
+ case Directory:
+ return true;
+ case DirectoryLink:
+ return false;
+ case RootEmulator:
+ return true;
+ case RootDevice:
+ return true;
+ default:
+ return false;
+ }
+ }
+ return false;
+ }
+}
--- /dev/null
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import org.eclipse.nebula.widgets.grid.Grid;
+import org.eclipse.nebula.widgets.grid.GridItem;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Shell;
+import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.ui.widgets.DAButton;
+import org.tizen.dynamicanalyzer.ui.widgets.DAMessageBox;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
+import org.tizen.sdblib.service.FileEntry;
+
+public class FileExplorerDialog extends DAMessageBox {
+ private DAFileExplorer explorerTree = null;
+ private DACustomButton okButton = null;
+ private DACustomButton cancelButton = null;
+
+ public FileExplorerDialog(Shell parentShell) {
+ super(parentShell);
+ shell.setLayout(new FormLayout());
+ shell.setSize(500, 600);
+ shell.setBackground(ColorResources.DIALOG_BG_UPPER);
+ shell.setText("Select binary");
+
+ explorerTree = new DAFileExplorer(shell);
+ FormData data = new FormData();
+ data.top = new FormAttachment(0, 15);
+ data.left = new FormAttachment(0, 20);
+ data.height = 510;
+ data.width = 460;
+ explorerTree.setLayoutData(data);
+ explorerTree.makeTree();
+
+ cancelButton = new DAButton(shell, SWT.NONE);
+ data = new FormData();
+ data.top = new FormAttachment(explorerTree, 10);
+ data.right = new FormAttachment(100, -15);
+ data.height = 25;
+ data.width = 100;
+ cancelButton.setLayoutData(data);
+ cancelButton.setText(AnalyzerLabels.CANCEL);
+ cancelButton.addClickListener(new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ shell.dispose();
+ }
+ });
+
+ okButton = new DAButton(shell, SWT.NONE);
+ data = new FormData();
+ data.top = new FormAttachment(explorerTree, 10);
+ data.right = new FormAttachment(cancelButton, -5);
+ data.height = 25;
+ data.width = 100;
+ okButton.setLayoutData(data);
+ okButton.setText(AnalyzerLabels.OK);
+ okButton.addClickListener(new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ result = explorerTree.getSelection();
+ shell.dispose();
+ }
+ });
+
+ explorerTree.getTree().addMouseListener(new MouseListener() {
+
+ @Override
+ public void mouseUp(MouseEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ Grid table = (Grid) e.widget;
+ GridItem[] items = (GridItem[]) table.getSelection();
+ if (null == items || items.length == 0) {
+ return;
+ }
+ GridItem item = items[0];
+ FileEntry entry = (FileEntry) item.getData();
+
+ if (entry.isDirectory() || entry.isRoot()) {
+ if (item.isExpanded()) {
+ item.fireEvent(SWT.Collapse);
+ } else {
+ item.fireEvent(SWT.Expand);
+ }
+ } else {
+ result = entry;
+ shell.dispose();
+ }
+
+ }
+ });
+ }
+
+}
--- /dev/null
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+import org.tizen.dynamicanalyzer.common.AnalyzerPaths;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.resources.ImageResources;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager;
+import org.tizen.dynamicanalyzer.ui.widgets.DAButton;
+import org.tizen.dynamicanalyzer.ui.widgets.TitleComboPopupRenderer;
+import org.tizen.dynamicanalyzer.ui.widgets.TitleComboRenderer;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonRenderer;
+import org.tizen.dynamicanalyzer.widgets.combo.DACustomCombo;
+import org.tizen.dynamicanalyzer.widgets.combo.DACustomComboSelectionListener;
+
+public class InputRow extends Composite {
+ private final static int ROW_HEIGHT = 18;
+ private Text binaryPathText = null;
+ private Text sourcePathText = null;
+ private DACustomCombo sourceCombo = null;
+ private DACustomButton minusButton = null;
+ private int index = -1;
+
+ private List<String> sbiList = new ArrayList<String>();
+ private DACustomButtonClickEventListener minusButtonListener = new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ BinarySettingManager.getInstance().removeInputRow(
+ binaryPathText.getText());
+ button.getParent().dispose();
+ }
+ };
+
+ public InputRow(Composite parent) {
+ super(parent, SWT.NONE);
+ this.setBackground(ColorResources.DIALOG_BG_UPPER);
+
+ Rectangle pRect = parent.getBounds();
+ Control lastChlid = null;
+ Control[] children = parent.getChildren();
+ if (children.length - 1 > 0) {
+ lastChlid = children[children.length - 2];
+ }
+
+ FormData data = new FormData();
+ if (null != lastChlid) {
+ data.top = new FormAttachment(lastChlid, 2);
+ } else {
+ data.top = new FormAttachment(0, 5);
+ }
+ data.height = ROW_HEIGHT;
+ data.left = new FormAttachment(0, 10);
+ data.width = pRect.width;
+ this.setLayoutData(data);
+ this.setLayout(new FormLayout());
+
+ binaryPathText = new Text(this, SWT.SINGLE);
+ sourcePathText = new Text(this, SWT.SINGLE);
+ sourceCombo = new DACustomCombo(this, SWT.NONE);
+ minusButton = new DAButton(this, SWT.NONE);
+
+ data = new FormData();
+ data.top = new FormAttachment(0, 0);
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(30, 0);
+ data.height = ROW_HEIGHT;
+ binaryPathText.setLayoutData(data);
+
+ data = new FormData();
+ data.top = new FormAttachment(0, 0);
+ data.left = new FormAttachment(30, 5);
+ data.right = new FormAttachment(60, 0);
+ data.height = ROW_HEIGHT;
+ sourcePathText.setLayoutData(data);
+
+ data = new FormData();
+ data.top = new FormAttachment(0, 0);
+ data.left = new FormAttachment(60, 5);
+ data.right = new FormAttachment(85, 0);
+ data.height = ROW_HEIGHT;
+ sourceCombo.setLayoutData(data);
+
+ data = new FormData();
+ data.top = new FormAttachment(0, 0);
+ data.left = new FormAttachment(85, 3);
+ data.right = new FormAttachment(100, -25);
+ data.height = ROW_HEIGHT;
+ minusButton.setLayoutData(data);
+ minusButton.setText("remove");
+ minusButton.addClickListener(minusButtonListener);
+
+ sourceCombo.setComboButtonGradation(
+ ColorResources.DEVICE_APPLICATION_BUTTON_NORMAL_START,
+ ColorResources.DEVICE_APPLICATION_BUTTON_NORMAL_END,
+ ColorResources.DEVICE_APPLICATION_BUTTON_PUSH_START,
+ ColorResources.DEVICE_APPLICATION_BUTTON_PUSH_END,
+ ColorResources.DEVICE_APPLICATION_BUTTON_HOVER_START,
+ ColorResources.DEVICE_APPLICATION_BUTTON_HOVER_END,
+ ColorResources.DEVICE_APPLICATION_BUTTON_DISABLE_START,
+ ColorResources.DEVICE_APPLICATION_BUTTON_DISABLE_END);
+ sourceCombo.setButtonImages(ImageResources.COMBO_DROPDOWN_UP,
+ ImageResources.COMBO_DROPDOWN_DOWN);
+ sourceCombo.setItemHeight(ROW_HEIGHT);
+ sourceCombo.setComboRender(new TitleComboRenderer());
+ sourceCombo.setComboPopupRender(new TitleComboPopupRenderer());
+ sourceCombo.setButtonRenderer(new DACustomButtonRenderer());
+ sourceCombo.setText("select list");
+ sourceCombo.addListener(SWT.MouseDown, new Listener() {
+
+ @Override
+ public void handleEvent(Event event) {
+ if (!sourceCombo.isChildShellOpened()) {
+ try {
+ Runtime rt = Runtime.getRuntime();
+ Process process = rt.exec(new String[] {
+ AnalyzerPaths.SBI_COMMAND, "list", "root" });
+ process.waitFor();
+ BufferedReader reader = new BufferedReader(
+ new InputStreamReader(process.getInputStream()));
+ BufferedReader error = new BufferedReader(
+ new InputStreamReader(process.getErrorStream()));
+ String line = null;
+ sbiList.clear();
+ while (null != (line = reader.readLine())) {
+ sbiList.add(line);
+ }
+
+ if (!sbiList.isEmpty()) {
+ sourceCombo.initCombo();
+ for (String item : sbiList) {
+ sourceCombo.add(item);
+ }
+ } else {
+ String errStr = error.readLine();
+ System.out.println("Error : " + errStr);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ });
+
+ sourceCombo.addSelectionListener(new DACustomComboSelectionListener() {
+
+ @Override
+ public void selectionEvent(DACustomCombo combo) {
+ String rootName = combo.getText();
+ if (null != rootName && !rootName.isEmpty()) {
+ try {
+ Runtime rt = Runtime.getRuntime();
+ Process process = rt.exec(new String[] {
+ AnalyzerPaths.SBI_COMMAND, "show", "root",
+ rootName });
+ process.waitFor();
+ BufferedReader reader = new BufferedReader(
+ new InputStreamReader(process.getInputStream()));
+ BufferedReader error = new BufferedReader(
+ new InputStreamReader(process.getErrorStream()));
+ String line = null;
+ // sbiList.clear();
+ String sysRootPath = null;
+ while (null != (line = reader.readLine())) {
+ // sbiList.add(line);
+ if (line.contains("SYSROOT_PATH")) {
+ int index = line.indexOf("=");
+ sysRootPath = line.substring(index + 1);
+ }
+ }
+
+ if (null == sysRootPath) {
+ String errStr = error.readLine();
+ System.out.println("Error : " + errStr);
+ }
+ System.out.println(sysRootPath);
+ sourcePathText.setText(sysRootPath);
+ BinarySettingManager.getInstance().updateInputRow(
+ binaryPathText.getText(), sysRootPath);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ });
+ }
+
+ public int getIndex() {
+ return index;
+ }
+
+ public void setIndex(int i) {
+ index = i;
+ }
+
+ public void setBinaryText(String text) {
+ binaryPathText.setText(text);
+ }
+
+ public void setSourceText(String text) {
+ sourcePathText.setText(text);
+ }
+
+ public void setSourceComboText(String text) {
+ sourceCombo.setText(text);
+ }
+}
--- /dev/null
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.nebula.widgets.grid.Grid;
+import org.eclipse.nebula.widgets.grid.GridItem;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
+import org.tizen.dynamicanalyzer.common.AnalyzerPaths;
+import org.tizen.dynamicanalyzer.common.CommonConstants;
+import org.tizen.dynamicanalyzer.common.DesignConstants;
+import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.resources.FontResources;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingData;
+import org.tizen.dynamicanalyzer.ui.widgets.DAButton;
+import org.tizen.dynamicanalyzer.ui.widgets.DAMessageBox;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DefaultTableComparator;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
+
+public class LoadSettingDialog extends DAMessageBox {
+ public static int SAVE_FOLDER = 0;
+ public static int TEMP_FOLDER = 1;
+
+ public static String VERSION_KEY = "version"; //$NON-NLS-1$
+ public static int VERSION_INVALID = 0;
+ public static int VERSION_VALID = 1;
+
+ public static String CURRENT_KEY = "current"; //$NON-NLS-1$
+ public static int CURRENT = 0;
+ public static int OTHERS = 1;
+
+ private DATableComposite saveTable = null;
+ private DACustomButton okButton = null;
+ private DACustomButton cancelButton = null;
+ BinaryAnalyzingConfigDialog parentDialog = null;
+
+ private String[] columnNames = { "File name" };
+ private int[] columnSizes = { 390 };
+ private boolean[] columnVisibility = { true };
+ int[] sortTypes = { AnalyzerConstants.SORT_TYPE_GRID };
+ int[] sourceColumns = { 0 };
+
+ public LoadSettingDialog(Shell parent) {
+ super(parent);
+ }
+
+ protected boolean run() {
+ shell.setLayout(new FormLayout());
+ shell.setSize(400, 204);
+ shell.setText(AnalyzerLabels.OPEN_TRACE_TITLE);
+
+ Composite tableComp = new Composite(shell, SWT.NONE);
+ tableComp.setLayout(new FormLayout());
+ FormData data = new FormData();
+ data.top = new FormAttachment(0, 0);
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(100, 0);
+ data.height = 131;
+ tableComp.setLayoutData(data);
+ tableComp.setBackground(ColorResources.DIALOG_BG_UPPER);
+
+ Label saveFile = new Label(tableComp, SWT.TRANSPARENT);
+ saveFile.setText(AnalyzerLabels.OPEN_TRACE_DLG_SAVED_FILE);
+ saveFile.setBackground(ColorResources.DIALOG_BG_UPPER);
+ saveFile.setAlignment(SWT.LEFT);
+ saveFile.setForeground(ColorResources.OPEN_TRACE_LABEL_COLOR);
+ saveFile.setFont(FontResources.OPEN_TRACE_INNER_TITLE);
+
+ saveTable = new SettingSaveTable(tableComp, SWT.BORDER | SWT.V_SCROLL
+ | SWT.SINGLE);
+ saveTable.setTableName(AnalyzerLabels.OPEN_TRACE_DLG_SAVE_TABLE_NAME);
+ saveTable.setComparator(new DefaultTableComparator());
+ saveTable.setSortTypes(sortTypes);
+ saveTable.setSourceColumns(sourceColumns);
+ saveTable.setColumns(columnNames);
+ saveTable.setColumnSize(columnSizes);
+ saveTable.setColumnVisibility(columnVisibility);
+ saveTable.setTableToolTipEnable(false);
+
+ saveTable.getTable().addMouseListener(mouseListener);
+ saveTable.getTable().addKeyListener(keyListener);
+
+ data = new FormData();
+ data.top = new FormAttachment(0, 5);
+ data.left = new FormAttachment(0, 7);
+ data.height = 18;
+ saveFile.setLayoutData(data);
+
+ data = new FormData();
+ data.top = new FormAttachment(saveFile, 0);
+ data.left = new FormAttachment(0, 6);
+ data.right = new FormAttachment(100, -6);
+ data.height = 100;
+ saveTable.setLayoutData(data);
+
+ Composite buttonComp = new Composite(shell, SWT.NONE);
+ FormLayout compLayout = new FormLayout();
+ buttonComp.setLayout(compLayout);
+ buttonComp
+ .setBackground(ColorResources.OPEN_TRACE_BUTTON_COMPOSITE_BG_COLOR);
+
+ FormData compData = new FormData();
+ compData.top = new FormAttachment(tableComp, 0);
+ compData.left = new FormAttachment(0, 0);
+ compData.right = new FormAttachment(100, 0);
+ compData.height = 51;
+ buttonComp.setLayoutData(compData);
+
+ buttonComp.addPaintListener(new PaintListener() {
+
+ @Override
+ public void paintControl(PaintEvent e) {
+ Composite comp = (Composite) e.widget;
+ Rectangle rect = comp.getClientArea();
+ e.gc.setForeground(ColorResources.DIALOG_SUNKEN_1);
+ e.gc.drawLine(rect.x, rect.y, rect.x + rect.width, rect.y);
+ e.gc.setForeground(ColorResources.DIALOG_SUNKEN_2);
+ e.gc.drawLine(rect.x, rect.y + 1, rect.x + rect.width,
+ rect.y + 1);
+ }
+ });
+ okButton = new DAButton(buttonComp, SWT.NONE);
+ okButton.addClickListener(okButtonListener);
+ okButton.setText(AnalyzerLabels.OPEN);
+ okButton.setFont(FontResources.DIALOG_BUTTON_FONT);
+ FormData okData = new FormData();
+ okData.top = new FormAttachment(0, 7);
+ okData.left = new FormAttachment(50,
+ -(DesignConstants.DA_BUTTON_WIDTH + 4));
+ okData.width = DesignConstants.DA_BUTTON_WIDTH;
+ okData.height = DesignConstants.DA_BUTTON_HEIGHT;
+ okButton.setLayoutData(okData);
+
+ cancelButton = new DAButton(buttonComp, SWT.NONE);
+ cancelButton.addClickListener(cancelButtonListener);
+ cancelButton.setText(AnalyzerLabels.CLOSE);
+ cancelButton.setFont(FontResources.DIALOG_BUTTON_FONT);
+ FormData cancelData = new FormData();
+ cancelData.top = new FormAttachment(0, 7);
+ cancelData.left = new FormAttachment(50, 4);
+ cancelData.width = DesignConstants.DA_BUTTON_WIDTH;
+ cancelData.height = DesignConstants.DA_BUTTON_HEIGHT;
+ cancelButton.setLayoutData(cancelData);
+
+ saveTable.updateTable();
+ return true;
+ }
+
+ private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ Grid selectedTable = saveTable.getTable();
+ GridItem[] selections = selectedTable.getSelection();
+ if (null == selections || 0 == selections.length) {
+ return;
+ }
+ GridItem selection = selections[0];
+ String openPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH
+ + File.separator + selection.getText();
+
+ openAction(openPath);
+ shell.dispose();
+ }
+ };
+
+ private DACustomButtonClickEventListener cancelButtonListener = new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ shell.dispose();
+ }
+ };
+
+ private MouseListener mouseListener = new MouseListener() {
+
+ @Override
+ public void mouseUp(MouseEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ Grid grid = (Grid) e.widget;
+ GridItem[] items = grid.getSelection();
+ if (0 == items.length) {
+ return;
+ }
+
+ GridItem item = items[0];
+ String openPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH
+ + File.separator + item.getText();
+ openAction(openPath);
+ shell.dispose();
+ }
+ };
+
+ private KeyListener keyListener = new KeyListener() {
+
+ @Override
+ public void keyReleased(KeyEvent e) {
+ if (e.keyCode == SWT.DEL) {
+ Grid grid = (Grid) e.widget;
+ GridItem[] items = grid.getSelection();
+ if (0 == items.length) {
+ return;
+ }
+ int index = grid.getSelectionIndex();
+ GridItem item = items[0];
+
+ String openPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH
+ + File.separator + item.getText();
+
+ if (AnalyzerUtil.deleteFile(new File(openPath))) {
+ grid.remove(index);
+ } else {
+ // log for debug
+ System.out.println("delete save file failed..."); //$NON-NLS-1$
+ }
+ }
+
+ }
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+ };
+
+ private void openAction(String path) {
+ if (null == path) {
+ return;
+ }
+ File saveFile = new File(path);
+ if (!saveFile.exists() || !saveFile.isFile()) {
+ return;
+ }
+
+ BufferedReader br = null;
+ String content = null;
+ boolean success = false;
+ List<BinarySettingData> binData = new ArrayList<BinarySettingData>();
+ try {
+ br = new BufferedReader(new FileReader(saveFile));
+ while (null != (content = br.readLine())) {
+ BinarySettingData data = new BinarySettingData();
+ String[] splitContent = content.split(CommonConstants.COMMA);
+ data.setBinaryPath(new String(splitContent[0]));
+ data.setSourcePath(new String(splitContent[1]));
+ binData.add(data);
+ }
+ success = true;
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ AnalyzerUtil.tryClose(br);
+ }
+
+ if (success) {
+ parentDialog.loadBinarySetting(binData);
+ } else {
+ System.out.println("load binary setting failed...");
+ }
+ }
+
+ public void setParentDialog(BinaryAnalyzingConfigDialog pDlg) {
+ parentDialog = pDlg;
+ }
+}
--- /dev/null
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
+import org.tizen.dynamicanalyzer.common.AnalyzerPaths;
+import org.tizen.dynamicanalyzer.common.CommonConstants;
+import org.tizen.dynamicanalyzer.common.DesignConstants;
+import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingData;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager;
+import org.tizen.dynamicanalyzer.ui.widgets.DAButton;
+import org.tizen.dynamicanalyzer.ui.widgets.DAMessageBox;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
+
+public class SaveSettingDialog extends DAMessageBox {
+
+ private int MAX_SAVE_FILE_NAME_LENGTH = 35;
+ private final String DEFAULT_TIME_FORMAT = "_yyyy-MM-dd-HH-mm-ss";//$NON-NLS-1$
+
+ private Text textBox = null;
+ private String saveFileName = null;
+ private DAButton okButton = null;
+ private DAButton cancelButton = null;
+
+ public SaveSettingDialog(Shell parentShell) {
+ super(parentShell);
+ }
+
+ protected boolean run() {
+ shell.setLayout(new FormLayout());
+ shell.setSize(446, 127 + 22);
+ shell.setBackground(ColorResources.DIALOG_BG_UPPER);
+
+ Label label = new Label(shell, SWT.TRANSPARENT);
+ FormData data = new FormData();
+ data.top = new FormAttachment(0, 11);
+ data.left = new FormAttachment(0, 12);
+ data.height = 15;
+ data.width = 150;
+ label.setLayoutData(data);
+ label.setForeground(ColorResources.BLACK);
+ label.setText(AnalyzerLabels.SAVE_TRACE_DLG_SAVE_FILE_NAME);
+ label.setBackground(ColorResources.DIALOG_BG_UPPER);
+
+ textBox = new Text(shell, SWT.SINGLE);
+ data = new FormData();
+ data.top = new FormAttachment(label, 10);
+ data.left = new FormAttachment(0, 9);
+ data.height = 26;
+ data.width = 410;
+ textBox.setLayoutData(data);
+ textBox.setBackground(ColorResources.VIEW_BG_COLOR);
+ textBox.addKeyListener(keyListener);
+
+ Composite buttonComp = new Composite(shell, SWT.NONE);
+ buttonComp.setLayout(new FormLayout());
+ buttonComp.setBackground(ColorResources.DIALOG_BG_LOWER);
+
+ buttonComp.addPaintListener(new PaintListener() {
+
+ @Override
+ public void paintControl(PaintEvent e) {
+ Composite comp = (Composite) e.widget;
+ Rectangle rect = comp.getClientArea();
+ e.gc.setForeground(ColorResources.DIALOG_SUNKEN_1);
+ e.gc.drawLine(rect.x, rect.y, rect.x + rect.width, rect.y);
+ e.gc.setForeground(ColorResources.DIALOG_SUNKEN_2);
+ e.gc.drawLine(rect.x, rect.y + 1, rect.x + rect.width,
+ rect.y + 1);
+ }
+ });
+
+ FormData compData = new FormData();
+ compData.top = new FormAttachment(0, 76);
+ compData.left = new FormAttachment(0, 0);
+ compData.right = new FormAttachment(100, 0);
+ compData.bottom = new FormAttachment(100, 0);
+ buttonComp.setLayoutData(compData);
+
+ okButton = new DAButton(buttonComp, SWT.NONE);
+ data = new FormData();
+ data.top = new FormAttachment(0, 11);
+ data.left = new FormAttachment(50, -DesignConstants.DA_BUTTON_WIDTH - 4);
+ data.height = DesignConstants.DA_BUTTON_HEIGHT;
+ data.width = DesignConstants.DA_BUTTON_WIDTH;
+ okButton.setLayoutData(data);
+ okButton.setText(AnalyzerLabels.OK);
+ okButton.addClickListener(okButtonListener);
+
+ cancelButton = new DAButton(buttonComp, SWT.NONE);
+ data = new FormData();
+ data.top = new FormAttachment(0, 11);
+ data.left = new FormAttachment(50, 4);
+ data.height = DesignConstants.DA_BUTTON_HEIGHT;
+ data.width = DesignConstants.DA_BUTTON_WIDTH;
+ cancelButton.setLayoutData(data);
+ cancelButton.setText(AnalyzerLabels.CANCEL);
+ cancelButton.addClickListener(cancelButtonListener);
+
+ saveFileName = getSaveFileName();
+ if (null == saveFileName) {
+ // create warning message box
+ System.out.println("save file name is null");
+ return false;
+ } else {
+ textBox.setText(saveFileName);
+ String textString = textBox.getText();
+ textBox.setSelection(0, textString.length());
+ }
+
+ return true;
+ }
+
+ private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ saveFileName = textBox.getText();
+
+ if (saveFileName.length() > MAX_SAVE_FILE_NAME_LENGTH) {
+ String old = saveFileName;
+ saveFileName = old.substring(0, MAX_SAVE_FILE_NAME_LENGTH - 1);
+ }
+
+ if (executeSaveTrace()) {
+ result = AnalyzerConstants.SUCCESS;
+ }
+ shell.dispose();
+ }
+ };
+
+ private DACustomButtonClickEventListener cancelButtonListener = new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ shell.dispose();
+ }
+ };
+ private KeyListener keyListener = new KeyListener() {
+
+ @Override
+ public void keyReleased(KeyEvent e) {
+ if (!checkValidFileName(textBox.getText())) {
+ okButton.setButtonEnabled(false);
+ } else {
+ okButton.setButtonEnabled(true);
+ }
+ }
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+
+ }
+ };
+
+ private String getSaveFileName() {
+ SimpleDateFormat format = new SimpleDateFormat(DEFAULT_TIME_FORMAT,
+ Locale.KOREA);
+ Date date = new Date();
+ String tmpAppName = "da_";
+ int length = tmpAppName.length() - MAX_SAVE_FILE_NAME_LENGTH;
+ if (length > 0) {
+ tmpAppName = tmpAppName.substring(0, MAX_SAVE_FILE_NAME_LENGTH - 1);
+ }
+ String saveFileName = tmpAppName + format.format(date);
+ if (null == saveFileName || saveFileName.isEmpty()) {
+ return null;
+ }
+ return saveFileName;
+ }
+
+ private boolean executeSaveTrace() {
+ String targetPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH
+ + File.separator + saveFileName + ".setting";
+ File saveFile = new File(targetPath);
+ FileWriter fileWriter = null;
+ BufferedWriter bufWriter = null;
+ List<BinarySettingData> binaryData = BinarySettingManager.getInstance()
+ .getTempBinarySettings();
+ boolean success = false;
+ try {
+ fileWriter = new FileWriter(saveFile);
+ bufWriter = new BufferedWriter(fileWriter);
+ for (int i = 0; i < binaryData.size(); i++) {
+ bufWriter.write(binaryData.get(i).getSaveData());
+ bufWriter.newLine();
+ }
+ success = true;
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ AnalyzerUtil.tryClose(bufWriter, fileWriter);
+ }
+
+ if (success) {
+ // add snapshot model update
+ System.out.println("save binary setting complete!!"); //$NON-NLS-1$
+
+ } else {
+ System.out.println("save binary setting fail..."); //$NON-NLS-1$
+ return false;
+ }
+ return true;
+ }
+
+ private boolean checkValidFileName(String str) {
+ if (str == null
+ || str.isEmpty()
+ || str.contains("\\") //$NON-NLS-1$
+ || str.contains(CommonConstants.SLASH)
+ || str.contains(CommonConstants.COLON)
+ || str.contains(CommonConstants.ASTERISK)
+ || str.contains("\\?") || str.contains("\"") //$NON-NLS-1$ //$NON-NLS-2$
+ || str.contains("<") || str.contains(">") //$NON-NLS-1$ //$NON-NLS-2$
+ || str.contains(CommonConstants.CMD_SPLIT)) {
+ return false;
+ }
+ return true;
+ }
+}
--- /dev/null
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.nebula.widgets.grid.GridItem;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.tizen.dynamicanalyzer.common.AnalyzerPaths;
+import org.tizen.dynamicanalyzer.model.TableInput;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+
+public class SettingSaveTable extends DATableComposite {
+
+ public SettingSaveTable(Composite parent, int style) {
+ super(parent, style);
+ }
+
+ @Override
+ protected List<TableInput> makeTableInput() {
+ List<String> saveFileList = AnalyzerUtil
+ .getFiles(AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH);
+ List<TableInput> input = new ArrayList<TableInput>();
+ if (null != saveFileList) {
+ int size = saveFileList.size();
+ for (int i = 0; i < size; i++) {
+ // create text
+ List<String> text = new ArrayList<String>();
+ String inputText1 = saveFileList.get(i);
+ if (inputText1.isEmpty()) {
+ continue;
+ }
+
+ text.add(inputText1);
+ TableInput tableInput = new TableInput();
+ tableInput.setText(text);
+ input.add(tableInput);
+ }
+ }
+ return input;
+ }
+
+ @Override
+ public void updateTable() {
+ table.removeAll();
+ List<TableInput> input = makeTableInput();
+ if (null == input) {
+ return;
+ }
+ if (null != comparator) {
+ Collections.sort(input, comparator);
+ }
+ int size = input.size();
+ for (int i = 0; i < size; i++) {
+ List<String> text = input.get(i).getText();
+ GridItem gridItem = new GridItem(table, SWT.NONE);
+ String inputText = text.get(0);
+ gridItem.setText(inputText);
+ }
+ table.update();
+ }
+
+}
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.AnalyzerManager;
import org.tizen.dynamicanalyzer.common.DASelectionData;
import org.tizen.dynamicanalyzer.model.DAView;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.ui.common.SetRangeMarkerMouseMoveListener;
import org.tizen.dynamicanalyzer.ui.common.UICommonConstants;
@Override
public void updateLog(LogPackage logPack) {
- Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_FILE);
+ Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_FILE);
if (null == logs || logs.getLogs().size() == 0) {
return;
}
import org.tizen.dynamicanalyzer.swap.model.probe2.ProbeCommonData;
import org.tizen.dynamicanalyzer.swap.model.probe2.UserFunctionData;
import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfileDataMaker;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
public class CallStackManager extends BaseCallstackManager {
public void makeUserCallstack(LogData input, ProfileDataMaker profiler) {
UserFunctionData log = (UserFunctionData) input;
HashMap<Long, CallStackUnit> addrMap = getCallStackApiByAddrMap();
- boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
+ boolean isPieBuild = AnalyzerUtil.isPieBuild(log.getPid());
String baseAddr = Long.toString(AnalyzerManager.getProject()
- .getBaseAddress());
- String binPath = AnalyzerManager.getProject().getBinaryPath();
+ .getBaseAddress(log.getPid()));
+ String binPath = AnalyzerUtil.getBinaryPath(log.getPid());
if (null == binPath || binPath.isEmpty()) {
return;
}
String strSelfSymbol = getUserFunctionPosition()
+ AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
+ strSelfFuncName;
- selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol);
+ selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol,
+ log.getPid());
addrMap.put(selfAddr, selfCallstackUnit);
}
String strCallerSymbol = getUserFunctionPosition()
+ AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
+ strCallerFuncName;
- callerCallstackUnit = new CallStackUnit(callerAddr, strCallerSymbol);
+ callerCallstackUnit = new CallStackUnit(callerAddr,
+ strCallerSymbol, log.getPid());
addrMap.put(callerAddr, callerCallstackUnit);
}
if (!AnalyzerManager.isInBinaryRange(callerAddr)) {
CallStackUnit callbackApi = new CallStackUnit(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
- LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+ LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+ log.getPid());
userCallstack.add(callbackApi);
if (addrMap
.get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) {
CallStackUnit defaultCallstackUnit = new CallStackUnit(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
- LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+ LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+ log.getPid());
addrMap.put(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
defaultCallstackUnit);
AnalyzerConstants.VIRTUAL_THUNK)) {
CallStackUnit callbackApi = new CallStackUnit(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
- LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+ LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+ log.getPid());
userCallstack.add(callbackApi);
if (addrMap
.get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) {
CallStackUnit defaultCallstackUnit = new CallStackUnit(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
- LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+ LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+ log.getPid());
addrMap.put(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
defaultCallstackUnit);
public void makeCallstackWithoutBacktrace(LogData inputData) {
HashMap<Long, CallStackUnit> addrMap = getCallStackApiByAddrMap();
- boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
+ boolean isPieBuild = AnalyzerUtil.isPieBuild(inputData.getPid());
String baseAddr = Long.toString(AnalyzerManager.getProject()
- .getBaseAddress());
- String binPath = AnalyzerManager.getProject().getBinaryPath();
+ .getBaseAddress(inputData.getPid()));
+ String binPath = AnalyzerUtil.getBinaryPath(inputData.getPid());
if (null == binPath || binPath.isEmpty()) {
return;
}
if ((size == 0) || (!AnalyzerManager.isInBinaryRange(callerAddr))) {
CallStackUnit callbackApi = new CallStackUnit(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
- LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+ LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+ log.getPid());
probeCallstack.add(callbackApi);
if (addrMap
.get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) {
CallStackUnit defaultCallstackUnit = new CallStackUnit(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
- LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+ LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+ log.getPid());
addrMap.put(
LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
defaultCallstackUnit);
+ AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
+ strCallerFuncName;
callerCallstackUnit = new CallStackUnit(callerAddr,
- strCallerSymbol);
+ strCallerSymbol, log.getPid());
addrMap.put(callerAddr, callerCallstackUnit);
}
HashMap<Long, CallStackUnit> addrMap = getCallStackApiByAddrMap();
HashMap<Integer, DuplicateUserCall> dupUserCallMap = getDupUserCallByTidMap();
- boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
+ boolean isPieBuild = AnalyzerUtil.isPieBuild(input.getPid());
String baseAddr = Long.toString(AnalyzerManager.getProject()
- .getBaseAddress());
- String binPath = AnalyzerManager.getProject().getBinaryPath();
+ .getBaseAddress(input.getPid()));
+ String binPath = AnalyzerUtil.getBinaryPath(input.getPid());
if (null == binPath || binPath.isEmpty()) {
return false;
}
String strSelfSymbol = getUserFunctionPosition()
+ AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
+ strSelfFuncName;
- selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol);
+ selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol,
+ input.getPid());
addrMap.put(selfAddr, selfCallstackUnit);
}
import org.tizen.dynamicanalyzer.nl.InformationViewLabels;
import org.tizen.dynamicanalyzer.project.PackageInfo;
import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
public class CallStackUnit {
private final String UNKNOWN_LIBRARY = InformationViewLabels.CALLSTACK_TABLE_UNKNOWN_LIBRARY;
private String functionName;
private String offset;
private String etc;
+ private int pid;
- public CallStackUnit(long addr, String symbol) {
+ public CallStackUnit(long addr, String symbol, int pid) {
address = addr;
functionStartAddress = addr;
this.originSymbol = symbol;
functionName = CommonConstants.EMPTY;
offset = CommonConstants.EMPTY;
etc = CommonConstants.EMPTY;
+ this.pid = pid;
makeCallstackData();
}
path = UNKNOWN_LIBRARY;
}
+ boolean isPieBuild = AnalyzerUtil.isPieBuild(pid);
+ String baseAddr = Long.toString(AnalyzerManager.getProject()
+ .getBaseAddress(pid));
+ String binPath = AnalyzerUtil.getBinaryPath(pid);
if (splitPath.length < 2) {
- boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
- String baseAddr = Long.toString(AnalyzerManager.getProject()
- .getBaseAddress());
-// String binPath = AnalyzerManager.getProject().getBinaryPath();
- String binPath = DACommunicator.getSelectedApp().getBinInfo().getPath();
-
functionName = SymbolManager.addr2func(binPath,
Long.toString(address), isPieBuild, baseAddr);
// FIXME: hard coding
if (splitFunc.length != 0) {
functionName = splitFunc[0];
if (functionName.isEmpty()) {
- boolean isPieBuild = AnalyzerManager.getProject()
- .isPieBuild();
- String baseAddr = Long.toString(AnalyzerManager
- .getProject().getBaseAddress());
- String binPath = AnalyzerManager.getProject()
- .getBinaryPath();
-
functionName = SymbolManager.addr2func(binPath,
Long.toString(address), isPieBuild, baseAddr);
}
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.AnalyzerManager;
import org.tizen.dynamicanalyzer.common.CommonConstants;
import org.tizen.dynamicanalyzer.common.DASelectionData;
import org.tizen.dynamicanalyzer.sql.SqlManager;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
import org.tizen.dynamicanalyzer.ui.page.ViewAction;
@Override
public void updateLog(LogPackage logPack) {
- Logs logs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SYSTEM);
+ Logs logs = logPack.getLogs(DataChannelConstants.MSG_DATA_SYSTEM);
if (null == logs || null == logs.getLogs() || logs.getLogs().isEmpty()) {
return;
}
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.AnalyzerManager;
import org.tizen.dynamicanalyzer.common.DASelectionData;
import org.tizen.dynamicanalyzer.model.DAView;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.ui.common.SetRangeMarkerMouseMoveListener;
import org.tizen.dynamicanalyzer.ui.common.UICommonConstants;
@Override
public void updateLog(LogPackage logPack) {
- Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_NETWORK);
+ Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_NETWORK);
if (null == logs || logs.getLogs().size() == 0) {
return;
}
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
import org.tizen.dynamicanalyzer.shortcut.ShortCutManager;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.GLES20LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.ui.info.callstack.CallstackView;
@Override
public void updateLog(LogPackage logPack) {
- Logs glesLogs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_GLES20);
+ Logs glesLogs = logPack.getLogs(DataChannelConstants.MSG_PROBE_GLES20);
if (glesLogs == null || glesLogs.getLogs().size() == 0) {
return;
}
import org.eclipse.nebula.widgets.grid.GridItem;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
public class GLAPIListView extends DAView {
public static final String ID = GLAPIListView.class.getName();
-
+
private ViewContainer viewContainer;
private int[] innerMaxWeight = { 0, 100 };
private int[] outerMaxWeight = { 100, 0 };
+ private int[] bottomMaxWeight = { 100, 0 };
+
+ private int[] oldBottomLayout = null;
GLAPIListTable glAPIListTable;
viewContainer = new ViewContainer(this, true);
viewContainer.setTitleText(GLPageLabels.GL_API_LIST_VIEW_TITLE);
- setMaxWeight(innerMaxWeight, outerMaxWeight);
+// setMaxWeight(innerMaxWeight, outerMaxWeight);
Composite contents = viewContainer.getContentArea();
contents.setBackground(ColorResources.WINDOW_BG_COLOR);
public void otherViewSelectionOccured() {
glAPIListTable.deselectAll();
}
-
+
@Override
public void clear() {
viewContainer.setTitleText(GLPageLabels.GL_API_LIST_VIEW_TITLE);
glAPIListTable.clear();
}
+
+ @Override
+ public void setMaxSize(boolean maximized) {
+
+ if (null == innerMaxWeight || null == outerMaxWeight) {
+ return;
+ }
+
+ Composite bParent = getParent();
+ if (!(bParent instanceof SashForm)) {
+ bParent = bParent.getParent();
+ if (!(bParent instanceof SashForm)) {
+ bParent = bParent.getParent();
+ if (!(bParent instanceof SashForm)) {
+ return;
+ }
+ }
+ }
+
+ Composite parent = bParent.getParent();
+ if (!(parent instanceof SashForm)) {
+ parent = parent.getParent();
+ if (!(parent instanceof SashForm)) {
+ return;
+ }
+ }
+
+ Composite pParent = parent.getParent();
+ if (!(pParent instanceof SashForm)) {
+ return;
+ }
+
+ SashForm bottomForm = (SashForm) bParent;
+ SashForm innerForm = (SashForm) parent;
+ SashForm outerForm = (SashForm) pParent;
+
+ if (maximized) {
+ oldInnerLayout = innerForm.getWeights();
+ oldOuterLayout = outerForm.getWeights();
+ oldBottomLayout = bottomForm.getWeights();
+ outerForm.setWeights(outerMaxWeight);
+ innerForm.setWeights(innerMaxWeight);
+ bottomForm.setWeights(bottomMaxWeight);
+ } else {
+ innerForm.setWeights(oldInnerLayout);
+ outerForm.setWeights(oldOuterLayout);
+ bottomForm.setWeights(oldBottomLayout);
+ }
+ }
}
import java.util.List;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.ui.opengl.data.GLDataMaker;
import org.tizen.dynamicanalyzer.ui.timeline.chart.TimelineChart;
@Override
public void parseLogPackage(LogPackage logPack) {
- Logs logs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SYSTEM);
+ Logs logs = logPack.getLogs(DataChannelConstants.MSG_DATA_SYSTEM);
if (logs == null) {
return;
}
import org.eclipse.nebula.widgets.grid.GridItem;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.tizen.dynamicanalyzer.common.DASelectionData;
private ViewContainer viewContainer;
private GLContextTreeTable glContextTreeTable;
+ private int[] innerMaxWeight = { 0, 100 };
+ private int[] outerMaxWeight = { 100, 0 };
+ private int[] bottomMaxWeight = { 0, 100 };
+
+ private int[] oldBottomLayout = null;
+
public GLContextView(Composite parent, int style) {
super(parent, style);
setLayout(new FillLayout());
viewContainer = new ViewContainer(this, true);
viewContainer.setTitleText(GLPageLabels.GL_CONTEXT_VIEW_TITLE);
- int[] innerMaxWeight = { 0, 100 };
- int[] outerMaxWeight = { 0, 100 };
- setMaxWeight(innerMaxWeight, outerMaxWeight);
-
Composite contents = viewContainer.getContentArea();
contents.setBackground(ColorResources.VIEW_BG_COLOR);
contents.setLayout(new FillLayout());
public void otherViewSelectionOccured() {
glContextTreeTable.deselectAll();
}
+
+ @Override
+ public void setMaxSize(boolean maximized) {
+
+ if (null == innerMaxWeight || null == outerMaxWeight) {
+ return;
+ }
+
+ Composite bParent = getParent();
+ if (!(bParent instanceof SashForm)) {
+ bParent = bParent.getParent();
+ if (!(bParent instanceof SashForm)) {
+ bParent = bParent.getParent();
+ if (!(bParent instanceof SashForm)) {
+ return;
+ }
+ }
+ }
+
+ Composite parent = bParent.getParent();
+ if (!(parent instanceof SashForm)) {
+ parent = parent.getParent();
+ if (!(parent instanceof SashForm)) {
+ return;
+ }
+ }
+
+ Composite pParent = parent.getParent();
+ if (!(pParent instanceof SashForm)) {
+ return;
+ }
+
+ SashForm bottomForm = (SashForm) bParent;
+ SashForm innerForm = (SashForm) parent;
+ SashForm outerForm = (SashForm) pParent;
+
+ if (maximized) {
+ oldInnerLayout = innerForm.getWeights();
+ oldOuterLayout = outerForm.getWeights();
+ oldBottomLayout = bottomForm.getWeights();
+ outerForm.setWeights(outerMaxWeight);
+ innerForm.setWeights(innerMaxWeight);
+ bottomForm.setWeights(bottomMaxWeight);
+ } else {
+ innerForm.setWeights(oldInnerLayout);
+ outerForm.setWeights(oldOuterLayout);
+ bottomForm.setWeights(oldBottomLayout);
+ }
+ }
}
import org.tizen.dynamicanalyzer.sql.SqlManager;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory;
import org.tizen.dynamicanalyzer.swap.model.probe2.ProfileData;
int last = -1;
for (int i = 0; i < size; i++) {
/* !! sample db table is null.. */
- if (logIds.get(i) != AnalyzerConstants.MSG_DATA_SYSTEM
- && logIds.get(i) != AnalyzerConstants.MSG_DATA_SAMPLE) {
+ if (logIds.get(i) != DataChannelConstants.MSG_DATA_SYSTEM
+ && logIds.get(i) != DataChannelConstants.MSG_DATA_SAMPLE) {
int ret = SqlManager.getInstance().getRangeMinSeq(
logIds.get(i), markerStartTime);
if (ret >= 0) {
}
for (int i = 0; i < size; i++) {
- if (logIds.get(i) != AnalyzerConstants.MSG_DATA_SYSTEM
- && logIds.get(i) != AnalyzerConstants.MSG_DATA_SAMPLE) {
+ if (logIds.get(i) != DataChannelConstants.MSG_DATA_SYSTEM
+ && logIds.get(i) != DataChannelConstants.MSG_DATA_SAMPLE) {
Logs logs = new Logs(logIds.get(i));
input = SqlManager.getInstance().selectArea(logIds.get(i),
from, to);
from = -1;
last = -1;
for (int i = 0; i < size; i++) {
- if (logIds.get(i) == AnalyzerConstants.MSG_DATA_SAMPLE) {
+ if (logIds.get(i) == DataChannelConstants.MSG_DATA_SAMPLE) {
int ret = SqlManager.getInstance().getRangeMinSeq(
logIds.get(i), markerStartTime);
if (ret >= 0) {
}
for (int i = 0; i < size; i++) {
- if (logIds.get(i) == AnalyzerConstants.MSG_DATA_SAMPLE) {
+ if (logIds.get(i) == DataChannelConstants.MSG_DATA_SAMPLE) {
Logs logs = new Logs(logIds.get(i));
input = SqlManager.getInstance().selectArea(logIds.get(i),
from, to);
}
private void makeRangeData(LogPackage logPack) {
- Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_FILE);
+ Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_FILE);
if (null != logs) {
List<LogData> resourceInputs = logs.getLogs();
/* make file failed data and warning data */
}
}
- logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_MEMORY);
+ logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_MEMORY);
if (null != logs) {
List<LogData> memoryInputs = logs.getLogs();
/* memory leak check */
}
}
- logs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SAMPLE);
+ logs = logPack.getLogs(DataChannelConstants.MSG_DATA_SAMPLE);
if (null != logs) {
List<LogData> profilingInputs = logs.getLogs();
/* profiling data make */
int size = profilingInputs.size();
for (int i = 0; i < size; i++) {
ProfileData input = (ProfileData) profilingInputs.get(i);
-// String[] inputArray = new String[input.size()];
-// input.toArray(inputArray);
+ // String[] inputArray = new String[input.size()];
+ // input.toArray(inputArray);
profileDataMaker.makeFunctionUsageProfileData(input);
}
}
List<LogData> userFunctions = logs.getLogs();
int size = userFunctions.size();
for (int i = 0; i < size; i++) {
- UserFunctionData input = (UserFunctionData) userFunctions.get(i);
+ UserFunctionData input = (UserFunctionData) userFunctions
+ .get(i);
long start = input.getLowPc();
long end = input.getHighPc();
- if (start > 0 && end > 0
- && !AnalyzerManager.isBinStartEndSet()) {
+ if (start > 0 && end > 0 && !AnalyzerManager.isBinStartEndSet()) {
AnalyzerManager.setBinaryStartEndAddr(start, end);
}
callstackManager.makeUserCallstack(input, profileDataMaker);
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.AnalyzerManager;
import org.tizen.dynamicanalyzer.common.DASelectionData;
import org.tizen.dynamicanalyzer.listeners.SummaryMouseDoubleClickListener;
import org.tizen.dynamicanalyzer.model.TreeInput;
import org.tizen.dynamicanalyzer.nl.SummaryLabels;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LeakData2;
import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
import org.tizen.dynamicanalyzer.ui.range.RangeLeakView;
data.add(Integer.toString(leakData.getSeq()));
int type = leakData.getId();
- if (type == AnalyzerConstants.MSG_PROBE_MEMORY) {
+ if (type == DataChannelConstants.MSG_PROBE_MEMORY) {
text.add(SummaryLabels.LEAK_TABLE_MEMORY);
data.add(SummaryLabels.LEAK_TABLE_MEMORY);
- } else if (type == AnalyzerConstants.MSG_PROBE_FILE) {
+ } else if (type == DataChannelConstants.MSG_PROBE_FILE) {
text.add(SummaryLabels.LEAK_TABLE_FILE);
data.add(SummaryLabels.LEAK_TABLE_FILE);
} else {
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.ui.widgets.ViewContainer;
import org.tizen.dynamicanalyzer.ui.widgets.table.TableColumnSizePackListener;
@Override
public void updateLog(LogPackage logPack) {
- Logs logs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SAMPLE);
+ Logs logs = logPack.getLogs(DataChannelConstants.MSG_DATA_SAMPLE);
if (null == logs || logs.getLogs().size() == 0) {
return;
}
package org.tizen.dynamicanalyzer.ui.summary.profiling;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_EXIT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_EXIT;
import java.util.ArrayList;
import java.util.HashMap;
}
private void checkUserCall(CallStackUnit csa, ProfilingData parent,
- ProfilingData pp) {
+ ProfilingData pp, int pid) {
if (callstackManager.checkUserCall(csa.getPath())) {
if (null == appBin) {
CallStackUnit appBinCsa = new CallStackUnit(-1,
- FunctionUsageProfiler.APPLICATION);
+ FunctionUsageProfiler.APPLICATION, pid);
appBin = makeNewProfilingData(appBinCsa, true);
appBin.setKey(FunctionUsageProfiler.APPLICATION_KEY);
appBinName = csa.getPath();
} else {
if (null == dependentLib) {
CallStackUnit dependentLibBinCsa = new CallStackUnit(-2,
- FunctionUsageProfiler.DEPENDENT_LIB);
+ FunctionUsageProfiler.DEPENDENT_LIB, pid);
dependentLib = makeNewProfilingData(dependentLibBinCsa, true);
dependentLib.setKey(FunctionUsageProfiler.DEPENDENT_LIB_KEY);
}
sampleCallstack.add(new String(splitCallstack[i]));
}
- List<Long> addrs = makeCallstackHashAndList(sampleCallstack);
+ List<Long> addrs = makeCallstackHashAndList(sampleCallstack,
+ sampleLog.getPid());
HashMap<Long, CallStackUnit> addrMap = callstackManager
.getCallStackApiByAddrMap();
long selfAddr = sampleLog.getPcAddr();
// exclusive cpu time
if (null == parent) {
parent = makeNewProfilingData(inputData, true);
- checkUserCall(inputData, parent, null);
+ checkUserCall(inputData, parent, null, sampleLog.getPid());
if (inputFuncName.equals(FunctionUsageProfiler.UNKNOWN)) {
parent.addExCount();
} else {
ProfilingData pp = null;
if (null == inParent) {
inParent = makeNewProfilingData(callstackCsa, true);
- checkUserCall(callstackCsa, inParent, pp);
+ checkUserCall(callstackCsa, inParent, pp,
+ sampleLog.getPid());
}
inParent.addInCount(totalSampleCount);
.getPath());
if (null == inParent) {
inParent = makeNewProfilingData(callstackCsa, true);
- checkUserCall(callstackCsa, inParent, null);
+ checkUserCall(callstackCsa, inParent, null,
+ sampleLog.getPid());
}
fupData = makeNewProfilingData(callstackCsa, false);
fupData.setParent(inParent.getName());
}
}
- private List<Long> makeCallstackHashAndList(List<String> callstackLog) {
+ private List<Long> makeCallstackHashAndList(List<String> callstackLog,
+ int pid) {
HashMap<Long, CallStackUnit> addrMap = callstackManager
.getCallStackApiByAddrMap();
List<Long> addrs = new ArrayList<Long>();
if (null == callstackUnit) {
String funcName = callstackLog.get(i + 1);
CallStackUnit newCallstackUnit = new CallStackUnit(addr,
- funcName);
+ funcName, pid);
addrMap.put(addr, newCallstackUnit);
}
}
.getPath());
if (null == parent) {
parent = makeNewProfilingData(inputCallstackApiData, true);
- checkUserCall(inputCallstackApiData, parent, null);
+ checkUserCall(inputCallstackApiData, parent, null, log.getPid());
ProfilingData child = makeNewProfilingData(inputCallstackApiData,
false);
.getPath());
if (null == parent) {
parent = makeNewProfilingData(inputCallstackApiData, true);
- checkUserCall(inputCallstackApiData, parent, null);
+ checkUserCall(inputCallstackApiData, parent, null, log.getPid());
ProfilingData child = makeNewProfilingData(inputCallstackApiData,
false);
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Composite;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.AnalyzerManager;
import org.tizen.dynamicanalyzer.common.DASelectionData;
import org.tizen.dynamicanalyzer.listeners.SummaryMouseDoubleClickListener;
import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
import org.tizen.dynamicanalyzer.model.TableInput;
import org.tizen.dynamicanalyzer.nl.SummaryLabels;
-import org.tizen.dynamicanalyzer.swap.model.probe2.FileData;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
import org.tizen.dynamicanalyzer.ui.range.RangeWarningListView;
import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite;
text.add(Integer.toString(warningData.getSeq()));
{
- if (AnalyzerConstants.MSG_PROBE_FILE == warningData
+ if (DataChannelConstants.MSG_PROBE_FILE == warningData
.getCategory()) {
text.add(SummaryLabels.WARNING_TABLE_FILE);
} else {
import org.tizen.dynamicanalyzer.logparser.LogListQueue;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.ui.thread.sync.ThreadPageSyncDataManager;
import org.tizen.dynamicanalyzer.ui.thread.thread.ThreadPageThreadDataManager;
public void updateLog(LogPackage logPack) {
List<LogData> loadInputs = getLogsFromLogPackage(logPack,
- AnalyzerConstants.MSG_DATA_SYSTEM);
+ DataChannelConstants.MSG_DATA_SYSTEM);
if (null != loadInputs) {
logListQueue.putLog(loadInputs);
}
List<LogData> threadInputs = getLogsFromLogPackage(logPack,
- AnalyzerConstants.MSG_PROBE_THREAD);
+ DataChannelConstants.MSG_PROBE_THREAD);
if (null != threadInputs) {
logListQueue.putLog(threadInputs);
}
List<LogData> syncInputs = getLogsFromLogPackage(logPack,
- AnalyzerConstants.MSG_PROBE_SYNC);
+ DataChannelConstants.MSG_PROBE_SYNC);
if (null != syncInputs) {
logListQueue.putLog(syncInputs);
for (int i = 0; i < logSize; i++) {
log = logs.get(i);
logType = log.getId();
- if (logType == AnalyzerConstants.MSG_DATA_SYSTEM) {
+ if (logType == DataChannelConstants.MSG_DATA_SYSTEM) {
tManager.parseLoad(log);
- } else if (logType == AnalyzerConstants.MSG_PROBE_THREAD) {
+ } else if (logType == DataChannelConstants.MSG_PROBE_THREAD) {
tManager.parseAPI(log);
- } else if (logType == AnalyzerConstants.MSG_PROBE_SYNC) {
+ } else if (logType == DataChannelConstants.MSG_PROBE_SYNC) {
tManager.parseSync(log);
sManager.parseSync(log);
}
import java.util.HashMap;
import java.util.List;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.CommonConstants;
import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
import org.tizen.dynamicanalyzer.nl.ThreadPageLabels;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.SyncData;
import org.tizen.dynamicanalyzer.ui.common.PopupAnalysisMenuItemClickListener;
public void parsePageData(LogPackage logPack) {
List<LogData> inputs = getLogsFromLogPackage(logPack,
- AnalyzerConstants.MSG_PROBE_SYNC);
+ DataChannelConstants.MSG_PROBE_SYNC);
parseSyncs(inputs);
}
import java.util.HashMap;
import java.util.List;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.AnalyzerManager;
import org.tizen.dynamicanalyzer.common.CommonConstants;
import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.SyncData;
import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
private void createMainThreadItem() {
isStart = true;
Project project = AnalyzerManager.getProject();
- int tid = project.getPID();
+// int tid = project.getPID();
+ // FIXME
+ int tid = 1;
if (0 == tid) {
isStart = false;
private void parseLoad(LogPackage logPack) {
List<LogData> inputs = getLogsFromLogPackage(logPack,
- AnalyzerConstants.MSG_DATA_SYSTEM);
+ DataChannelConstants.MSG_DATA_SYSTEM);
int size;
if (null == inputs || 0 == (size = inputs.size())) {
return;
private void parseAPI(LogPackage logPack) {
List<LogData> inputs = getLogsFromLogPackage(logPack,
- AnalyzerConstants.MSG_PROBE_THREAD);
+ DataChannelConstants.MSG_PROBE_THREAD);
int size;
if (null == inputs || 0 == (size = inputs.size())) {
return;
private void parseSync(LogPackage logPack) {
List<LogData> inputs = getLogsFromLogPackage(logPack,
- AnalyzerConstants.MSG_PROBE_SYNC);
+ DataChannelConstants.MSG_PROBE_SYNC);
int size;
if (null == inputs || 0 == (size = inputs.size())) {
return;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.ProfileData;
import org.tizen.dynamicanalyzer.swap.model.probe2.UserFunctionData;
public void updateLog(LogPackage logPack) {
Logs logs = logPack.getLogs(LogCenterConstants.LOG_USER_FUNCTION);
if (null == logs) {
- logs = logPack.getLogs(AnalyzerConstants.MSG_FUNCTION_ENTRY);
+ logs = logPack.getLogs(DataChannelConstants.MSG_FUNCTION_ENTRY);
}
if (null == logs || null == logs.getLogs() || logs.getLogs().isEmpty()) {
return;
int size = inputs.size();
for (int i = 0; i < size; i++) {
- if (logs.getId() == AnalyzerConstants.MSG_FUNCTION_ENTRY) {
+ if (logs.getId() == DataChannelConstants.MSG_FUNCTION_ENTRY) {
ProfileData pData = (ProfileData) inputs.get(i);
userLog.add(pData);
} else if (logs.getId() == LogCenterConstants.LOG_USER_FUNCTION) {
import java.util.List;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
private CPUChart() {
chartType = TimelineConstants.CHART_TYPE_CPU;
- probeType = AnalyzerConstants.MSG_DATA_SYSTEM;
+ probeType = DataChannelConstants.MSG_DATA_SYSTEM;
chartName = TimelineChartLabels.CPU_CHART_TITLE;
chartIcon = ImageResources.CHART_CPU;
addIcon = ImageResources.ADD_CHART_CPU;
import java.util.ArrayList;
import java.util.List;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.communicator.DACommunicator;
import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
public CPUCoreChart() {
chartType = TimelineConstants.CHART_TYPE_CPU_CORE;
- probeType = AnalyzerConstants.MSG_DATA_SYSTEM;
+ probeType = DataChannelConstants.MSG_DATA_SYSTEM;
chartName = TimelineChartLabels.CPU_CORE_CHART_TITLE;
chartIcon = ImageResources.CHART_CPU_CORE;
addIcon = ImageResources.ADD_CHART_CPU_CORE;
import java.util.List;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
private CPUFrequencyChart() {
chartType = TimelineConstants.CHART_TYPE_CPU_FREQUENCY;
- probeType = AnalyzerConstants.MSG_DATA_SYSTEM;
+ probeType = DataChannelConstants.MSG_DATA_SYSTEM;
chartName = TimelineChartLabels.CPU_FREQUENCY_CHART_TITLE;
chartIcon = ImageResources.CHART_CPU_FREQUENCY;
addIcon = ImageResources.ADD_CHART_CPU_FREQUENCY;
import java.util.Map;
import java.util.concurrent.Semaphore;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
import org.tizen.dynamicanalyzer.utils.Formatter;
private FileChart() {
chartType = TimelineConstants.CHART_TYPE_FILE;
- probeType = AnalyzerConstants.MSG_DATA_SYSTEM;
+ probeType = DataChannelConstants.MSG_DATA_SYSTEM;
chartName = TimelineChartLabels.FILE_CHART_TITLE;
chartIcon = ImageResources.CHART_FILE;
addIcon = ImageResources.ADD_CHART_FILE;
@Override
public void parseLogPackage(LogPackage logPack) {
Logs logs = logPack.getLogs(probeType);
- if(logs == null) {
+ if (logs == null) {
return;
}
-
+
List<LogData> logList = logs.getLogs();
for (LogData log : logList) {
double time = log.getTime();
int size = deviceLogTimeList.size();
int index = (int) (time / TimelineConstants.MEGA_DOUBLE);
+ if (index - size > 4) {
+ continue;
+ }
if (size <= index) {
for (int i = size; i <= index; i++) {
deviceLogTimeList.add(Double.NaN);
import java.util.HashMap;
import java.util.List;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.MemoryData;
import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
private HeapChart() {
chartType = TimelineConstants.CHART_TYPE_HEAP;
- probeType = AnalyzerConstants.MSG_DATA_SYSTEM;
+ probeType = DataChannelConstants.MSG_DATA_SYSTEM;
chartName = TimelineChartLabels.HEAP_CHART_TITLE;
chartIcon = ImageResources.CHART_HEAP;
addIcon = ImageResources.ADD_CHART_HEAP;
@Override
public void parseLogPackage(LogPackage logPack) {
- Logs memoryLogs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_MEMORY);
+ Logs memoryLogs = logPack.getLogs(DataChannelConstants.MSG_PROBE_MEMORY);
Logs deviceLogs = logPack.getLogs(probeType);
List<LogData> memoryLogList = memoryLogs == null ? null
import java.util.List;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
private ProcessMemoryChart() {
chartType = TimelineConstants.CHART_TYPE_PROCESS_MEMORY;
- probeType = AnalyzerConstants.MSG_DATA_SYSTEM;
+ probeType = DataChannelConstants.MSG_DATA_SYSTEM;
chartName = TimelineChartLabels.PROCESS_MEMORY_CHART_TITLE;
chartIcon = ImageResources.CHART_PROCESS_MEMORY;
addIcon = ImageResources.ADD_CHART_PROCESS_MEMORY;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.ScreenShotData;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
private ScreenshotChart() {
chartType = TimelineConstants.CHART_TYPE_SCREENSHOT;
chartStyle = DAChart.CHART_STYLE_SCREENSHOT;
- probeType = AnalyzerConstants.MSG_PROBE_SCREENSHOT;
+ probeType = DataChannelConstants.MSG_PROBE_SCREENSHOT;
chartName = TimelineChartLabels.SCREENSHOT_CHART_TITLE;
chartIcon = ImageResources.CHART_SCREENSHOT;
addIcon = ImageResources.ADD_CHART_SCREENSHOT;
import java.util.List;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.AnalyzerManager;
import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
private SystemMemoryChart() {
chartType = TimelineConstants.CHART_TYPE_SYSTEM_MEMORY;
- probeType = AnalyzerConstants.MSG_DATA_SYSTEM;
+ probeType = DataChannelConstants.MSG_DATA_SYSTEM;
chartName = TimelineChartLabels.SYSTEM_MEMORY_CHART_TITLE;
chartIcon = ImageResources.CHART_SYSTEM_MEMORY;
addIcon = ImageResources.ADD_CHART_SYSTEM_MEMORY;
import java.util.List;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.CommonConstants;
import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.UIEventData;
import org.tizen.dynamicanalyzer.ui.common.UIEventChartContextMenuItem;
private UIEventChart() {
chartType = TimelineConstants.CHART_TYPE_UIEVENT;
chartStyle = DAChart.CHART_STYLE_MULTI;
- probeType = AnalyzerConstants.MSG_PROBE_UIEVENT;
+ probeType = DataChannelConstants.MSG_PROBE_UIEVENT;
chartName = TimelineChartLabels.UI_EVENT_CHART_TITLE;
chartIcon = ImageResources.CHART_UI_EVENT;
addIcon = ImageResources.ADD_CHART_UI_EVENT;
};
- protected int run() {
+ protected boolean run() {
shell.setText(TimelineChartLabels.EDIT_CHART_DLG_TITLE);
shell.setBackground(ColorResources.WINDOW_BG_COLOR);
shell.setSize(446, 450);
RunningDialog = true;
shell.addShellListener(shellListener);
- return result;
+ return true;
}
private MouseListener itemZoomMouseListener = new MouseAdapter() {
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.DASelectionData;
import org.tizen.dynamicanalyzer.model.DAView;
import org.tizen.dynamicanalyzer.model.SnapshotData;
import org.tizen.dynamicanalyzer.resources.FontResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.ui.common.SetRangeMarkerMouseMoveListener;
import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseEventListener;
import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseTrackAdapter;
return;
}
- Logs deviceLogs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SYSTEM);
+ Logs deviceLogs = logPack.getLogs(DataChannelConstants.MSG_DATA_SYSTEM);
if (deviceLogs != null && !deviceLogs.getLogs().isEmpty()) {
deviceLogParser.parseLogPackage(logPack);
}
- Logs memoryLogs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_MEMORY);
+ Logs memoryLogs = logPack.getLogs(DataChannelConstants.MSG_PROBE_MEMORY);
if (memoryLogs != null && !memoryLogs.getLogs().isEmpty()) {
HeapChart.getInstance().parseLogPackage(logPack);
}
Logs recorderLogs = logPack
- .getLogs(AnalyzerConstants.MSG_PROBE_UIEVENT);
+ .getLogs(DataChannelConstants.MSG_PROBE_UIEVENT);
if (recorderLogs != null && !recorderLogs.getLogs().isEmpty()) {
UIEventChart.getInstance().parseLogPackage(logPack);
}
- Logs customLogs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_CUSTOM);
+ Logs customLogs = logPack.getLogs(DataChannelConstants.MSG_PROBE_CUSTOM);
if (customLogs != null && !customLogs.getLogs().isEmpty()) {
customLogParser.parseLogPackage(logPack);
}
Logs lifecycleLogs = logPack
- .getLogs(AnalyzerConstants.MSG_PROBE_LIFECYCLE);
+ .getLogs(DataChannelConstants.MSG_PROBE_LIFECYCLE);
if (lifecycleLogs != null && !lifecycleLogs.getLogs().isEmpty()) {
lifecycleLogParser.parseLogPackage(logPack);
}
Logs screenShotLogs = logPack
- .getLogs(AnalyzerConstants.MSG_PROBE_SCREENSHOT);
+ .getLogs(DataChannelConstants.MSG_PROBE_SCREENSHOT);
if (screenShotLogs != null && !screenShotLogs.getLogs().isEmpty()) {
ScreenshotChart.getInstance().parseLogPackage(logPack);
}
import java.util.Map;
import org.eclipse.swt.graphics.Color;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.CustomData;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.ui.timeline.chart.UserCustomChart;
private Map<Long, DAChartSeries> customChartSeriesMap = new HashMap<Long, DAChartSeries>();
public void parseLogPackage(LogPackage logPack) {
- Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_CUSTOM);
+ Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_CUSTOM);
List<LogData> logList = logs.getLogs();
for (LogData log : logList) {
import java.util.List;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
import org.tizen.dynamicanalyzer.ui.opengl.ui.chart.GLFrameRateChart;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.ui.timeline.chart.TimelineChart;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineChartManager;
public class DeviceLogParser {
public void parseLogPackage(LogPackage logPack) {
- Logs deviceLogs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SYSTEM);
+ Logs deviceLogs = logPack.getLogs(DataChannelConstants.MSG_DATA_SYSTEM);
if (deviceLogs != null && deviceLogs.getLogs() != null
&& deviceLogs.getLogs().size() > 0) {
List<TimelineChart> chartList = TimelineChartManager.getInstance()
.getChartList();
for (TimelineChart chart : chartList) {
- if (chart.getProbeType() == AnalyzerConstants.MSG_DATA_SYSTEM) {
+ if (chart.getProbeType() == DataChannelConstants.MSG_DATA_SYSTEM) {
chart.parseLogPackage(logPack);
}
}
- GLFrameRateChart.getInstance().parseLogPackage(logPack);
+// GLFrameRateChart.getInstance().parseLogPackage(logPack);
}
}
}
import java.util.List;
import org.eclipse.swt.graphics.Color;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LifeCycleData;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
}
public void parseLogPackage(LogPackage logPack) {
- Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_LIFECYCLE);
+ Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_LIFECYCLE);
if (null == logs) {
return;
}
}
};
- protected int run() {
+ protected boolean run() {
if (opened) {
- return -1;
+ return false;
}
shell.setSize(446, 254);
shell.setLayout(new FormLayout());
opened = true;
ShortCutManager.getInstance().setEnabled(!opened);
- return result;
+ return true;
}
private String parseBuildTime(String readData) {
super(parentShell);
}
- protected int run() {
+ protected boolean run() {
shell.setLayout(new FormLayout());
shell.setSize(446, 127 + 22);
shell.setBackground(ColorResources.DIALOG_BG_UPPER);
saveFileName = getSaveFileName();
if (null == saveFileName) {
// create warning message box
- return result;
+ System.out.println("save file name is null");
+ return false;
} else {
textBox.setText(saveFileName);
String textString = textBox.getText();
textBox.setSelection(0, textString.length());
}
- return result;
+ return true;
}
private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() {
@Override
public void handleClickEvent(DACustomButton button) {
saveFileName = textBox.getText();
-
+
if (saveFileName.length() > MAX_SAVE_FILE_NAME_LENGTH) {
String old = saveFileName;
- saveFileName = old.substring(0, MAX_SAVE_FILE_NAME_LENGTH -1);
+ saveFileName = old.substring(0, MAX_SAVE_FILE_NAME_LENGTH - 1);
}
-
+
if (executeSaveTrace()) {
result = AnalyzerConstants.SUCCESS;
}
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.AnalyzerManager;
import org.tizen.dynamicanalyzer.common.CommonConstants;
import org.tizen.dynamicanalyzer.common.DesignConstants;
import org.tizen.dynamicanalyzer.handlers.ReplayTraceHandler;
import org.tizen.dynamicanalyzer.model.DeviceInfo;
import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
-import org.tizen.dynamicanalyzer.nl.ConfigureLabels;
import org.tizen.dynamicanalyzer.project.PackageInfo;
import org.tizen.dynamicanalyzer.project.Project;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.resources.FontResources;
import org.tizen.dynamicanalyzer.resources.ImageResources;
import org.tizen.dynamicanalyzer.shortcut.ShortCutManager;
+import org.tizen.dynamicanalyzer.swap.platform.ui.BinaryAnalyzingConfigDialog;
import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage;
import org.tizen.dynamicanalyzer.ui.toolbar.configuration.ConfigurationDialog;
import org.tizen.dynamicanalyzer.ui.toolbar.opentrace.OpenTraceDialog;
import org.tizen.dynamicanalyzer.widgets.combo.DACustomComboSelectionListener;
import org.tizen.dynamicanalyzer.widgets.timer.TimerClock;
-
public class ToolbarArea {
public static final int START_BUTTON = 0;
public static final int REPLAY_BUTTON = 3;
public static final int SOURCE_BUTTON = 4;
public static final int ABOUT_BUTTON = 5;
- public static final int SETTING_BUTTON = 6;
+ public static final int CONFIG_BUTTON = 6;
+ public static final int SETTING_BUTTON = 7;
String selectedDevice = null;
PackageInfo selectedApp = null;
private DACustomButton saveTraceButton;
private DACustomButton openTraceButton;
private DACustomButton replayButton;
- private DACustomButton settingsButton;
+ private DACustomButton configButton;
+ private DACustomButton binarySettingsButton;
+
private DACustomButton aboutButton;
- private DACustomToggleButton snapshotButton;
private DACustomToggleButton viewSourceButton;
private Cursor cursor;
@Override
public void handleEvent(Event event) {
if (!appCombo.isChildShellOpened()) {
- List<PackageInfo> apps = DACommunicator.getAppListFromTarget();
+ List<PackageInfo> apps = DACommunicator
+ .getAppListFromTarget();
if (null == apps || apps.isEmpty()) {
return;
}
appCombo.initCombo();
int size = apps.size();
for (int i = 0; i < size; i++) {
- appCombo.add(apps.get(i).getInfo(PackageInfo.LABEL_INDEX));
+ appCombo.add(apps.get(i).getInfo(
+ PackageInfo.LABEL_INDEX));
}
appCombo.setText(selectedApp);
}
Shell shell = AnalyzerUtil.getWorkbenchWindow()
.getShell();
SaveAsDialog dialog = new SaveAsDialog(shell);
- int result = dialog.open();
- if (AnalyzerConstants.SUCCESS == result) {
+ Object result = dialog.open();
+ if (null != result) {
button.setButtonEnabled(false);
}
}
}
});
- settingsButton.addClickListener(new DACustomButtonClickEventListener() {
+ configButton.addClickListener(new DACustomButtonClickEventListener() {
@Override
public void handleClickEvent(DACustomButton button) {
}
});
+ binarySettingsButton
+ .addClickListener(new DACustomButtonClickEventListener() {
+
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ BinaryAnalyzingConfigDialog dialog = new BinaryAnalyzingConfigDialog(
+ shell);
+ dialog.open();
+ }
+ });
+
aboutButton.addClickListener(new DACustomButtonClickEventListener() {
@Override
@Override
public void handleClickEvent(DACustomButton button) {
-// ReplayData replayData = SqlManager.getInstance().getReplayLogs();
-// DATime startTime = AnalyzerManager.getProject().getStartTime();
-// int count = replayData.getObjectCount();
-// byte[] eventObjs = null;
-// for (int i = 0; i < count; i++) {
-// eventObjs = ByteUtils.concatByteArray(eventObjs, replayData
-// .getRecordEvent().get(i).getByteValues());
-// }
-// byte[] replayEvent = ByteUtils.getByte(1, startTime.getSec(),
-// startTime.getNano(), count, eventObjs);
-// System.out.println();
+ // ReplayData replayData =
+ // SqlManager.getInstance().getReplayLogs();
+ // DATime startTime =
+ // AnalyzerManager.getProject().getStartTime();
+ // int count = replayData.getObjectCount();
+ // byte[] eventObjs = null;
+ // for (int i = 0; i < count; i++) {
+ // eventObjs = ByteUtils.concatByteArray(eventObjs,
+ // replayData
+ // .getRecordEvent().get(i).getByteValues());
+ // }
+ // byte[] replayEvent = ByteUtils.getByte(1,
+ // startTime.getSec(),
+ // startTime.getNano(), count, eventObjs);
+ // System.out.println();
// TODO : use for test code...
// String path =
// "/home/casval/work/testApp/DATizenTestApp/Dynamic Analyzer/DATizenTestApp.exe";
replayButton.setToolTipText(ShortCutManager.REPLAY);
buttons.put(REPLAY_BUTTON, replayButton);
- // Creates setting button
- settingsButton = new DACustomButton(parent, ImageResources.SETTINGS,
+ // create binarySettingButton
+ binarySettingsButton = new DACustomButton(parent, ImageResources.SCREEN_SHOT_TOGGLE,
+ ImageResources.SCREEN_SHOT_TOGGLE_PUSH, ImageResources.SCREEN_SHOT_TOGGLE_HOVER,
+ ImageResources.SCREEN_SHOT_DISABLE);
+ binarySettingsButton.setToolTipText("Binary Settings");
+ buttons.put(SETTING_BUTTON, binarySettingsButton);
+
+ // Creates config button
+ configButton = new DACustomButton(parent, ImageResources.SETTINGS_NORMAL,
ImageResources.SETTINGS_PUSH, ImageResources.SETTINGS_HOVER,
ImageResources.SETTINGS_DISABLE);
- settingsButton.setToolTipText(ShortCutManager.COOLBAR_AREA_SETTING);
- buttons.put(SETTING_BUTTON, settingsButton);
+ configButton.setToolTipText(ShortCutManager.COOLBAR_AREA_SETTING);
+ buttons.put(CONFIG_BUTTON, configButton);
// Creates about button.
aboutButton = new DACustomButton(parent, ImageResources.ABOUT,
buttons.put(SOURCE_BUTTON, viewSourceButton);
// Creates snapshot on/off button.
- snapshotButton = new DACustomToggleButton(parent,
- ImageResources.SCREEN_SHOT_NORMAL,
- ImageResources.SCREEN_SHOT_PUSH,
- ImageResources.SCREEN_SHOT_HOVER,
- ImageResources.SCREEN_SHOT_DISABLE,
- ImageResources.SCREEN_SHOT_TOGGLE,
- ImageResources.SCREEN_SHOT_TOGGLE_HOVER,
- ImageResources.SCREEN_SHOT_TOGGLE_PUSH);
- snapshotButton.setToolTipText(AnalyzerLabels.SNAPSHOT_ENABLE);
- setSnapshotButtonEnablement(true);
+// snapshotButton = new DACustomToggleButton(parent,
+// ImageResources.SCREEN_SHOT_NORMAL,
+// ImageResources.SCREEN_SHOT_PUSH,
+// ImageResources.SCREEN_SHOT_HOVER,
+// ImageResources.SCREEN_SHOT_DISABLE,
+// ImageResources.SCREEN_SHOT_TOGGLE,
+// ImageResources.SCREEN_SHOT_TOGGLE_HOVER,
+// ImageResources.SCREEN_SHOT_TOGGLE_PUSH);
+// snapshotButton.setToolTipText(AnalyzerLabels.SNAPSHOT_ENABLE);
+// setSnapshotButtonEnablement(true);
FormData data = new FormData();
data.top = new FormAttachment(0, 4);
data.right = new FormAttachment(aboutButton, 0);
data.width = 34;
data.height = 30;
- settingsButton.setLayoutData(data);
+ configButton.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(0, 4);
- data.right = new FormAttachment(settingsButton, -5);
- data.width = 32;
+ data.right = new FormAttachment(configButton, 0);
+ data.width = 34; // 31
data.height = 30;
- viewSourceButton.setLayoutData(data);
-
+ binarySettingsButton.setLayoutData(data);
+
data = new FormData();
data.top = new FormAttachment(0, 4);
- data.right = new FormAttachment(viewSourceButton, 0);
- data.width = 0; // 31
+ data.right = new FormAttachment(binarySettingsButton, -5);
+ data.width = 32;
data.height = 30;
- snapshotButton.setLayoutData(data);
+ viewSourceButton.setLayoutData(data);
/** device and application combo */
// Creates device combo.
}
public void setSettingsButtonEnablement(boolean enabled) {
- settingsButton.setButtonEnabled(enabled);
+ configButton.setButtonEnabled(enabled);
}
private void setStartButtonImagesToStop(boolean isStarted) {
setRepalyButtonEnable(enabled);
}
- public void setSnapshotButtonEnablement(boolean enabled) {
- snapshotButton.setButtonEnabled(enabled);
- if (enabled) {
- String snapshotEnable = ConfigureManager.getInstance().getValue(
- ConfigureLabels.FEATURE_SCREENSHOT);
- if (null != snapshotEnable && !snapshotEnable.isEmpty()
- && snapshotEnable.equals(CommonConstants.ON)) {
- snapshotButton.setToggled(true);
- } else {
- snapshotButton.setToggled(false);
- }
- }
+ public void setBinarySettingsButtonEnablement(boolean enabled) {
+ binarySettingsButton.setButtonEnabled(enabled);
}
public void startTimer() {
setStartButtonImagesToStop(true);
setMainControlEnablement(false);
startButton.setButtonEnabled(false);
- setSnapshotButtonEnablement(false);
} else {
setStartButtonImagesToStop(false);
setMainControlEnablement(true);
.setStartButtonEnablement(true);
ToolbarArea.getInstance().setStartButtonToolTipText(
ShortCutManager.STOP_TRACE);
- ToolbarArea.getInstance().setSnapshotButtonEnablement(
- true);
ToolbarArea.getInstance().setSettingsButtonEnablement(
true);
}
ConfigurationDialogValues.getInstance().setSettingValueFromConfigFile();
}
- protected int run() {
+ protected boolean run() {
if (opened) {
- return -1;
+ return false;
}
shell.setSize(608, 480);
shell.setLayout(new FormLayout());
opened = true;
ShortCutManager.getInstance().setEnabled(!opened);
- return result;
+ return true;
}
}
import org.tizen.dynamicanalyzer.widgets.button.checkbox.DACheckBox;
import org.tizen.dynamicanalyzer.widgets.button.checkbox.DACheckboxSelectionListener;
-public class WelcomeDialog extends DAMessageBox{
+public class WelcomeDialog extends DAMessageBox {
private DACustomButton okButton = null;
private DACustomButton cancelButton = null;
private DACheckBox useAgainCheckButton = null;
ConfigurationDialogValues.getInstance().setSettingValueFromConfigFile();
notifyAutoRun();
}
-
- protected int run(){
+
+ protected boolean run() {
IDECommunicator.setOpenWelcomeDlg(true);
shell.setSize(608, 460);
shell.setLayout(new FormLayout());
okButton.setLayoutData(buttonData);
shell.addShellListener(shellListener);
shell.open();
- return result;
+ return true;
}
private DACheckboxSelectionListener useAgainCheckbuttonListener = new DACheckboxSelectionListener() {
}
IDECommunicator.setOpenWelcomeDlg(false);
}
-
+
private ShellListener shellListener = new ShellListener() {
@Override
super(parent);
}
- protected int run() {
+ protected boolean run() {
if (opened) {
- result = -1;
- return result;
+ return false;
}
shell.setLayout(new FormLayout());
shell.setSize(400, 430);
tempTable.updateTable();
opened = true;
ShortCutManager.getInstance().setEnabled(!opened);
- return result;
+ return true;
}
private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() {
import org.tizen.dynamicanalyzer.sql.SqlManager;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory;
import org.tizen.dynamicanalyzer.ui.page.BaseView;
public void run() {
AnalyzerManager.setLogParsingComplete(false);
Project p = AnalyzerManager.getProject();
- long last = p.getLastLogNum(AnalyzerConstants.MSG_PROBE_FILE);
- createPackage(last, AnalyzerConstants.MSG_PROBE_FILE);
+ long last = p.getLastLogNum(DataChannelConstants.MSG_PROBE_FILE);
+ createPackage(last, DataChannelConstants.MSG_PROBE_FILE);
- last = p.getLastLogNum(AnalyzerConstants.MSG_DATA_SYSTEM);
- createPackage(last, AnalyzerConstants.MSG_DATA_SYSTEM);
+ last = p.getLastLogNum(DataChannelConstants.MSG_DATA_SYSTEM);
+ createPackage(last, DataChannelConstants.MSG_DATA_SYSTEM);
- last = p.getLastLogNum(AnalyzerConstants.MSG_DATA_SAMPLE);
- createPackage(last, AnalyzerConstants.MSG_DATA_SAMPLE);
+ last = p.getLastLogNum(DataChannelConstants.MSG_DATA_SAMPLE);
+ createPackage(last, DataChannelConstants.MSG_DATA_SAMPLE);
System.out.println("input reader complete"); //$NON-NLS-1$
AnalyzerManager.setLogParsingComplete(true);
if (to >= last) {
to = last;
}
- if (type == AnalyzerConstants.MSG_DATA_SAMPLE
- || type == AnalyzerConstants.MSG_DATA_SYSTEM) {
+ if (type == DataChannelConstants.MSG_DATA_SAMPLE
+ || type == DataChannelConstants.MSG_DATA_SYSTEM) {
input = SqlManager.getInstance().selectArea(type, from, to);
Logs logs = new Logs(type);
logs.setLogs(input);
int size = ids.size();
for (int i = 0; i < size; i++) {
int id = ids.get(i);
- if (id == AnalyzerConstants.MSG_DATA_SAMPLE
- || id == AnalyzerConstants.MSG_DATA_SYSTEM) {
+ if (id == DataChannelConstants.MSG_DATA_SAMPLE
+ || id == DataChannelConstants.MSG_DATA_SYSTEM) {
continue;
}
Logs logs = new Logs(id);
import org.tizen.dynamicanalyzer.logparser.LogListQueue;
import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.probe2.ControlData;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
import org.tizen.dynamicanalyzer.swap.model.probe2.SceneData;
int size = logs.size();
for (int i = 0; i < size; i++) {
int nLogType = logs.get(i).getId();
- if (nLogType == AnalyzerConstants.MSG_PROBE_UICONTROL) {
+ if (nLogType == DataChannelConstants.MSG_PROBE_UICONTROL) {
getInstance().getControlDataChecker().parserLog(
(ControlData) logs.get(i));
} else {
}
public void setControlDataTFromLogPackage(LogPackage logPack) {
- Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_UICONTROL);
+ Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_UICONTROL);
if (null == logs || logs.getLogs() == null
|| logs.getLogs().size() == 0) {
return;
}
public void setSceneTransformDataTFromLogPackage(LogPackage logPack) {
- Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_SCENE);
+ Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_SCENE);
if (null == logs || logs.getLogs() == null
|| logs.getLogs().size() == 0) {
return;
import org.eclipse.swt.widgets.Shell;
public class DAMessageBox {
- protected int result = 0;
+ protected Object result = null;
+ protected boolean initSuccess = false;
protected Shell parentShell = null;
protected Shell shell = null;
protected boolean block = false;
- private static IExceptionHandler exceptionHandler = new DefaultExceptionHandler();
+ protected static IExceptionHandler exceptionHandler = new DefaultExceptionHandler();
public DAMessageBox(Shell parentShell) {
this.parentShell = parentShell;
shell = new Shell(parentShell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
}
- public int open() {
+ public Object open() {
block = true;
parentShell.setEnabled(false);
- result = run();
- if (result >= 0) {
+ initSuccess = run();
+ if (initSuccess) {
shell.open();
if (block) {
runEventLoop(shell);
return result;
}
- protected int run() {
- return result;
+ protected boolean run() {
+ return true;
}
- protected int closeAction() {
+ protected Object closeAction() {
return result;
}
- private void runEventLoop(Shell loopShell) {
+ protected void runEventLoop(Shell loopShell) {
// Use the display provided by the shell if possible
Display display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.CommonConstants;
import org.tizen.dynamicanalyzer.common.DesignConstants;
import org.tizen.dynamicanalyzer.model.FindProperty;
findProperty.setIndex(table.getSelectionIndex());
}
- protected int run() {
+ protected boolean run() {
if (null == table) {
- return AnalyzerConstants.FAIL;
+ return false;
}
shell.setLayout(new FormLayout());
shell.setSize(340, 130);
wholeWordButton.addSelectionListener(wholeWordButtonListener);
wholeWordButton.setChecked(findProperty.isWholeWord());
- return result;
+ return true;
}
private DACustomButtonClickEventListener fnidButtonListener = new DACustomButtonClickEventListener() {
}
}
- if (isTree() && item.hasChildren()) {
+ if (isTree() && hasChildren(item)) {
if (event == IInternalWidget.MouseMove) {
if (overToggle(item, point)) {
setHoverDetail("toggle"); //$NON-NLS-1$
return false;
}
- private boolean overCheck(GridItem item, Point point) {
+ protected boolean hasChildren(GridItem item) {
+ return item.hasChildren();
+ }
+
+ protected boolean overCheck(GridItem item, Point point) {
point = new Point(point.x, point.y);
point.x -= getBounds().x - 1;
point.y -= getBounds().y - 1;
return false;
}
- private boolean overToggle(GridItem item, Point point) {
+ protected boolean overToggle(GridItem item, Point point) {
point = new Point(point.x, point.y);
point.x -= getBounds().x - 1;
point.y -= getBounds().y - 1;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import org.eclipse.core.commands.ExecutionException;
import org.tizen.dynamicanalyzer.handlers.RealtimePerspectiveHandler;
import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
import org.tizen.dynamicanalyzer.swap.model.ByteUtils;
+import org.tizen.dynamicanalyzer.swap.model.control.BinaryInfo;
import org.tizen.dynamicanalyzer.swap.model.data.ApiNameManager;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
+import org.tizen.dynamicanalyzer.swap.model.data.ProcessInfo;
import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory;
import org.tizen.dynamicanalyzer.swap.model.probe2.ProbeCommonData;
import org.tizen.dynamicanalyzer.ui.page.BaseView;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineView;
import org.tizen.dynamicanalyzer.ui.widgets.DATabComposite;
import org.tizen.sdblib.IDevice;
+import org.tizen.sdblib.exception.SdbCommandRejectedException;
+import org.tizen.sdblib.exception.TimeoutException;
import org.tizen.sdblib.service.SyncResult;
public class AnalyzerUtil {
byte[] result = null;
byte[] front = null;
- if (id == AnalyzerConstants.MSG_DATA_SYSTEM) {
+ if (id == DataChannelConstants.MSG_DATA_SYSTEM) {
front = makeSystemData(input);
- } else if (id == AnalyzerConstants.MSG_DATA_SAMPLE) {
+ } else if (id == DataChannelConstants.MSG_DATA_SAMPLE) {
newLog = new String[2];
// pid
- newLog[0] = Integer.toString(AnalyzerManager.getProject().getPID());
+ // newLog[0] =
+ // Integer.toString(AnalyzerManager.getProject().getPID());
+ newLog[0] = null;
newLog[1] = input[LogCenterConstants.PROFILING_LOG_PCADDR_INDEX];
int pid = initIntPayload(newLog[0]);
front = ByteUtils.getByte(pid, pcAddr, tid, cpuNum);
} else {
- if (id == AnalyzerConstants.MSG_PROBE_SCREENSHOT) {
+ if (id == DataChannelConstants.MSG_PROBE_SCREENSHOT) {
System.out.println("debug ");
}
newLog = new String[10];
// reserved
newLog[9] = CommonConstants.EMPTY;
- if (id == AnalyzerConstants.MSG_PROBE_LIFECYCLE) {
+ if (id == DataChannelConstants.MSG_PROBE_LIFECYCLE) {
System.out.println();
}
int apiId = ApiNameManager.getApiId(newLog[0]);
byte[] rear = null;
switch (id) {
- case AnalyzerConstants.MSG_PROBE_MEMORY:
+ case DataChannelConstants.MSG_PROBE_MEMORY:
long size = Long
.parseLong(input[LogCenterConstants.MEMORY_SIZE_INDEX]);
int apiType = Integer
rear = ByteUtils.getByte(size, apiType, address);
result = ByteUtils.concatByteArray(front, rear);
break;
- case AnalyzerConstants.MSG_PROBE_UICONTROL:
+ case DataChannelConstants.MSG_PROBE_UICONTROL:
String parentName = input[LogCenterConstants.USER_INTERFACE_CONTROL_LIST_PARENT_NAME_INDEX];
String parentClassName = input[LogCenterConstants.USER_INTERFACE_CONTROL_LIST_PARENT_CLASS_NAME_INDEX];
long parentPointer = addrToLong(input[LogCenterConstants.USER_INTERFACE_CONTROL_LIST_PARENT_POINTER_INDEX]);
parentPointer, childName, childClassName, childPointer);
result = ByteUtils.concatByteArray(front, rear);
break;
- case AnalyzerConstants.MSG_PROBE_UIEVENT:
+ case DataChannelConstants.MSG_PROBE_UIEVENT:
int eventType = Integer
.parseInt(input[LogCenterConstants.UI_EVENT_EVENT_TYPE]);
int detailType = Integer
rear = ByteUtils.getByte(eventType, detailType, x, y, info1, info2);
result = ByteUtils.concatByteArray(front, rear);
break;
- case AnalyzerConstants.MSG_PROBE_FILE:
+ case DataChannelConstants.MSG_PROBE_FILE:
long sizeValue = Long
.parseLong(input[LogCenterConstants.RESOURCE_SIZE_INDEX]);
int fdValue = Integer
fileSize, filePath);
result = ByteUtils.concatByteArray(front, rear);
break;
- case AnalyzerConstants.MSG_PROBE_NETWORK:
+ case DataChannelConstants.MSG_PROBE_NETWORK:
System.out.println("case AnalyzerConstants.MSG_PROBE_NETWORK");
break;
- case AnalyzerConstants.MSG_PROBE_GLES20:
+ case DataChannelConstants.MSG_PROBE_GLES20:
apiType = Integer
.parseInt(input[LogCenterConstants.GL_API_TYPE_INDEX]);
long elapsedTime = Long
rear = ByteUtils.getByte(apiType, elapsedTime, contextValue);
result = ByteUtils.concatByteArray(front, rear);
break;
- case AnalyzerConstants.MSG_PROBE_LIFECYCLE:
+ case DataChannelConstants.MSG_PROBE_LIFECYCLE:
result = front;
break;
- case AnalyzerConstants.MSG_PROBE_SCREENSHOT:
+ case DataChannelConstants.MSG_PROBE_SCREENSHOT:
String imgFilePath = input[LogCenterConstants.SNAPSHOT_IMAGE_PATH_INDEX];
int orientation = Integer
.parseInt(input[LogCenterConstants.SNAPSHOT_ROTATE_INDEX]);
rear = ByteUtils.getByte(imgFilePath, orientation);
result = ByteUtils.concatByteArray(front, rear);
break;
- case AnalyzerConstants.MSG_PROBE_SCENE:
+ case DataChannelConstants.MSG_PROBE_SCENE:
String sceneName = input[LogCenterConstants.USER_INTERFACE_SCENE_TRANSFORMS_LIST_SCENE_NAME_INDEX];
String formName = input[LogCenterConstants.USER_INTERFACE_SCENE_TRANSFORMS_LIST_FORM_NAME_INDEX];
long formPointer = Long
panelPointer, transitionTime, userTransitionTime);
result = ByteUtils.concatByteArray(front, rear);
break;
- case AnalyzerConstants.MSG_DATA_SYSTEM:
+ case DataChannelConstants.MSG_DATA_SYSTEM:
result = front;
break;
- case AnalyzerConstants.MSG_DATA_SAMPLE:
+ case DataChannelConstants.MSG_DATA_SAMPLE:
result = ByteUtils.concatByteArray(front, rear);
break;
- case AnalyzerConstants.MSG_PROBE_THREAD:
+ case DataChannelConstants.MSG_PROBE_THREAD:
long pThreadId = Long
.parseLong(input[LogCenterConstants.THREAD_PTHREAD_ID_INDEX]);
long ospThradId = Long
threadApiType);
result = ByteUtils.concatByteArray(front, rear);
break;
- case AnalyzerConstants.MSG_PROBE_CUSTOM:
+ case DataChannelConstants.MSG_PROBE_CUSTOM:
int handle = Integer
.parseInt(input[LogCenterConstants.CUSTOM_CHART_HANDLE]);
int customType = Integer
value);
result = ByteUtils.concatByteArray(front, rear);
break;
- case AnalyzerConstants.MSG_PROBE_SYNC:
+ case DataChannelConstants.MSG_PROBE_SYNC:
long syncVal = Long
.parseLong(input[LogCenterConstants.SYNC_VAL_INDEX]);
int syncType = Integer
private static byte[] makeSystemData(String[] input) {
String[] newLog = new String[LogDataFactory
- .getLogColumnCountbyId(AnalyzerConstants.MSG_DATA_SYSTEM)];
+ .getLogColumnCountbyId(DataChannelConstants.MSG_DATA_SYSTEM)];
// energy
newLog[0] = input[LogCenterConstants.DEVICE_ENERGY_INDEX];
newLog[1] = input[LogCenterConstants.DEVICE_WIFI_INDEX];
String apiFilePath = AnalyzerPaths.TEMP_FOLDER_PATH + File.separator
+ device.getSerialNumber() + CommonConstants.UNDERBAR
+ AnalyzerConstants.API_NAME_FILE_NAME;
-// try {
-// DACommunicator.getSelectedDevice().getIDevice()
-// .becomeSuperUser(true);
-// } catch (TimeoutException e) {
-// // TODO Auto-generated catch block
-// e.printStackTrace();
-// } catch (SdbCommandRejectedException e) {
-// // TODO Auto-generated catch block
-// e.printStackTrace();
-// } catch (IOException e) {
-// // TODO Auto-generated catch block
-// e.printStackTrace();
-// }
+ try {
+ device.setRootUser(true);
+ } catch (TimeoutException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (SdbCommandRejectedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
SyncResult res = CommunicatorUtils.pull(device,
AnalyzerPaths.DA_API_MAP_PATH, apiFilePath);
if (null != res && res.isOk()) {
String output = String.format("%x", value);
System.out.print(output);
}
+
+ public static String getBinaryPath(int pid) {
+ ProcessInfo processInfo = AnalyzerManager.getProject().getProcessInfo(
+ pid);
+ if (null != processInfo) {
+ return processInfo.getBinaryPath();
+ }
+ return null;
+ }
+
+ public static boolean isPieBuild(int pid) {
+ ProcessInfo processInfo = AnalyzerManager.getProject().getProcessInfo(
+ pid);
+ if (null == processInfo) {
+ return false;
+ }
+
+ String path = processInfo.getBinaryPath();
+ HashMap<String, BinaryInfo> binMap = DACommunicator.getSelectedApp()
+ .getBinaryInfoMap();
+ BinaryInfo binInfo = binMap.get(path);
+ if (null == binInfo) {
+ return false;
+ }
+ if (binInfo.getType() == 1) {
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean getBinaryBuildType(String binPath) {
+ HashMap<String, BinaryInfo> binMap = DACommunicator.getSelectedApp()
+ .getBinaryInfoMap();
+ BinaryInfo binInfo = binMap.get(binPath);
+ if (null == binInfo) {
+ return false;
+ }
+
+ if (binInfo.getType() == 1) {
+ return true;
+ }
+ return false;
+ }
}