1 /* ****************************************************************************** *\
2 
3 INTEL CORPORATION PROPRIETARY INFORMATION
4 This software is supplied under the terms of a license agreement or nondisclosure
5 agreement with Intel Corporation and may not be copied or disclosed except in
6 accordance with the terms of that agreement
7 Copyright(c) 2020 Intel Corporation. All Rights Reserved.
8 
9 File Name: SdkAnalyzer.cs
10 
11 \* ****************************************************************************** */
12 
13 using System;
14 using System.Collections.Generic;
15 using System.ComponentModel;
16 using System.Data;
17 using System.Drawing;
18 using System.Linq;
19 using System.Text;
20 using System.Windows.Forms;
21 using System.Diagnostics;
22 using System.Threading;
23 using System.IO;
24 using Microsoft.Win32;
25 using System.Reflection;
26 using System.Security.AccessControl;
27 
28 namespace msdk_analyzer
29 {
30     public static class _PATH
31     {
32        public static string TRACER_PATH = "\\Intel\\SDK_Tracer\\";
33        public static string TRACER_LOG = "tracer.log";
34     };
35 
36     public partial class SdkAnalyzerForm : Form
37     {
38         IDataCollector m_collector;
39         FileInfo file;
40 
SdkAnalyzerForm()41         public SdkAnalyzerForm()
42         {
43             InitializeComponent();
44             m_collector = new DataCollector();
45             System.IO.Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + _PATH.TRACER_PATH);
46             tbxLogOutput.Text = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + _PATH.TRACER_PATH + _PATH.TRACER_LOG;
47             m_collector.SetLog(tbxLogOutput.Text);
48             m_collector.Create();
49 
50             FileInfo log_path = new FileInfo(tbxLogOutput.Text);
51             if (log_path.Exists)
52             {
53                 button_Open.Enabled = true;
54                 btnDeleteLog.Enabled = true;
55             }
56             else
57             {
58                 button_Open.Enabled = false;
59                 btnDeleteLog.Enabled = false;
60             }
61 
62         }
63 
OnUpdateEtlFileSize(object sender, EventArgs e)64         void OnUpdateEtlFileSize(object sender, EventArgs e)
65         {
66             //
67         }
68 
converter_ConversionUpdated(ConversionStatus sts, int percentage)69         void  converter_ConversionUpdated(ConversionStatus sts, int percentage)
70         {
71              //
72         }
73 
button_Start_Click(object sender, EventArgs e)74         private void button_Start_Click(object sender, EventArgs e)
75         {
76             //button disabled since running a collector might take significant time
77 
78             if (m_collector.isRunning)
79             {
80 
81                 OnStop();
82             }
83             else
84             {
85                 if (checkBox_Append.Checked != true)
86                 {
87                     try
88                     {
89                         File.Delete(tbxLogOutput.Text);
90                         lblBytesWritten.Text = "0";
91                     }
92                     catch (System.Exception ex)
93                     {
94                         MessageBox.Show(ex.ToString());
95                     }
96                 }
97                 OnStart();
98             }
99         }
100 
OnStart()101         private void OnStart()
102         {
103             button_Start.Enabled = false;
104             checkBox_PerFrame.Enabled = false;
105             checkBox_Append.Enabled = false;
106             button_Open.Enabled = false;
107             btnDeleteLog.Enabled = false;
108 
109             try
110             {
111                 int nLevel =
112                     checkBox_PerFrame.Checked ? 2 : 1;
113                 m_collector.SetLevel(nLevel);
114                 m_collector.SetLog(tbxLogOutput.Text);
115                 this.Cursor = Cursors.WaitCursor;
116                 m_collector.Start();
117                 MsdkAnalyzerCpp.start();
118 
119                 this.Cursor = Cursors.Default;
120                 button_Start.Text = "Stop";
121                 timer1.Enabled = true;
122                 timer1.Start();
123 
124             }
125             catch (System.Exception ex)
126             {
127                 MessageBox.Show(ex.ToString());
128                 checkBox_PerFrame.Enabled = true;
129                 checkBox_Append.Enabled = true;
130             }
131             button_Start.Enabled = true;
132         }
133 
OnStop()134         private void OnStop()
135         {
136             timer1.Stop();
137             timer1.Enabled = false;
138             button_Start.Enabled = false;
139 
140             try
141             {
142                 this.Cursor = Cursors.WaitCursor;
143                 m_collector.Stop();
144                 MsdkAnalyzerCpp.stop();
145                 RunConversionDialog();
146                 button_Start.Text = "Start";
147                 button_Start.Enabled = true;
148                 checkBox_PerFrame.Enabled = true;
149                 checkBox_Append.Enabled = true;
150 
151                 FileInfo log_path = new FileInfo(tbxLogOutput.Text);
152                 if (log_path.Exists)
153                 {
154                     button_Open.Enabled = true;
155                     btnDeleteLog.Enabled = true;
156                 }
157                 else
158                 {
159                     button_Open.Enabled = false;
160                     btnDeleteLog.Enabled = false;
161                 }
162                 this.Cursor = Cursors.Default;
163 
164             }
165             catch (System.Exception ex)
166             {
167                 MessageBox.Show(ex.ToString());
168                 button_Start.Text = "Start";
169                 button_Start.Enabled = true;
170                 checkBox_PerFrame.Enabled = true;
171                 checkBox_Append.Enabled = true;
172 
173                 FileInfo log_path = new FileInfo(tbxLogOutput.Text);
174                 if (log_path.Exists)
175                 {
176                     button_Open.Enabled = true;
177                     btnDeleteLog.Enabled = true;
178                 }
179                 else
180                 {
181                     button_Open.Enabled = false;
182                     btnDeleteLog.Enabled = false;
183                 }
184                 this.Cursor = Cursors.Default;
185             }
186 
187         }
188 
button_Open_Click(object sender, EventArgs e)189         private void button_Open_Click(object sender, EventArgs e)
190         {
191            try
192            {
193                Process.Start(tbxLogOutput.Text);
194            }
195            catch (System.Exception ex)
196            {
197                MessageBox.Show(ex.ToString());
198            }
199 
200         }
201 
Form4_FormClosing(object sender, FormClosingEventArgs e)202         private void Form4_FormClosing(object sender, FormClosingEventArgs e)
203         {
204             m_collector.Delete();
205         }
206 
RunConversionDialog()207         protected void RunConversionDialog()
208         {
209             //
210         }
211 
212 
OnConvertionFinished()213         private void OnConvertionFinished()
214         {
215 
216             button_Start.Enabled = true;
217             button_Start.Text = "Start";
218             this.Cursor = Cursors.Default;
219         }
220 
btnDeleteLog_Click(object sender, EventArgs e)221         private void btnDeleteLog_Click(object sender, EventArgs e)
222         {
223             try
224             {
225                 File.Delete(tbxLogOutput.Text);
226                 button_Open.Enabled = false;
227                 btnDeleteLog.Enabled = false;
228                 lblBytesWritten.Text = "0";
229             }
230             catch (System.Exception ex)
231             {
232                 MessageBox.Show(ex.ToString());
233             }
234 
235         }
236 
237 
timer1_Tick_1(object sender, EventArgs e)238         private void timer1_Tick_1(object sender, EventArgs e)
239         {
240             file = new FileInfo(tbxLogOutput.Text);
241             if (file.Exists)
242                 lblBytesWritten.Text = (file.Length / 1000).ToString();
243         }
244 
245     }
246 }
247