Merge pull request #8 from karthikmurakonda/kmeans

Kmeans (algo implemented)
This commit is contained in:
pavanvpatil 2022-10-29 17:03:17 +05:30 committed by GitHub
commit 552561756c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 2110 additions and 242 deletions

View File

@ -3,8 +3,8 @@
<interface> <interface>
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<object class="GtkWindow" id="util_window"> <object class="GtkWindow" id="util_window">
<property name="width-request">800</property> <property name="width-request">985</property>
<property name="height-request">700</property> <property name="height-request">800</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<child> <child>
<object class="GtkLayout" id="util_layout"> <object class="GtkLayout" id="util_layout">
@ -15,7 +15,7 @@
<property name="margin-bottom">3</property> <property name="margin-bottom">3</property>
<child> <child>
<object class="GtkMenuBar" id="util_menubar"> <object class="GtkMenuBar" id="util_menubar">
<property name="width-request">800</property> <property name="width-request">900</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="can-default">True</property> <property name="can-default">True</property>
@ -169,7 +169,7 @@
</object> </object>
</child> </child>
<child> <child>
<!-- n-columns=3 n-rows=2 --> <!-- n-columns=3 n-rows=4 -->
<object class="GtkGrid"> <object class="GtkGrid">
<property name="width-request">100</property> <property name="width-request">100</property>
<property name="height-request">80</property> <property name="height-request">80</property>
@ -309,7 +309,7 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLayout" id="graph_layout"> <object class="GtkLayout" id="graph_layoutvol">
<property name="height-request">150</property> <property name="height-request">150</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -320,99 +320,538 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox"> <!-- n-columns=4 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkBox" id="mlad">
<property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Legend</property> <property name="orientation">vertical</property>
<property name="use-markup">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="title" translatable="yes">red</property>
<property name="rgba">rgb(238,29,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="legend_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Attack/Event</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(0,255,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Normal</property> <property name="label" translatable="yes">Legend</property>
<property name="use-markup">True</property>
</object> </object>
<packing> <packing>
<property name="left-attach">1</property> <property name="expand">False</property>
<property name="top-attach">0</property> <property name="fill">True</property>
<property name="position">0</property>
</packing> </packing>
</child> </child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="title" translatable="yes">red</property>
<property name="rgba">rgb(238,29,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="legend_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Attack/Event</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(0,255,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Normal</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(119,118,123)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">No data</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="left-attach">0</property>
<property name="fill">True</property> <property name="top-attach">0</property>
<property name="position">2</property>
</packing> </packing>
</child> </child>
<child> <child>
<placeholder/> <object class="GtkBox" id="mlvol">
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Legend</property>
<property name="use-markup">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="title" translatable="yes">red</property>
<property name="rgba">rgb(238,29,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="legend_label1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">&gt;6900V</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(0,255,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">&lt;6800V
&lt;6300V</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(119,118,123)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">No data</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child> </child>
<child> <child>
<placeholder/> <object class="GtkBox" id="mlfreq">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Legend</property>
<property name="use-markup">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="title" translatable="yes">red</property>
<property name="rgba">rgb(238,29,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="legend_label2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Deviation &gt; 0.5 mHz</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(0,255,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">deviation &lt; 0.5mHz</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(119,118,123)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">No data</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="mldfreq">
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Legend</property>
<property name="use-markup">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="title" translatable="yes">red</property>
<property name="rgba">rgb(238,29,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="legend_label3">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(0,255,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Normal</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(119,118,123)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">No data</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left-attach">3</property>
<property name="top-attach">0</property>
</packing>
</child> </child>
</object> </object>
<packing> <packing>
@ -421,7 +860,28 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkScrolledWindow"> <object class="GtkLayout" id="graph_layoutfreq">
<property name="height-request">150</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkLayout" id="graph_layoutdfreq">
<property name="height-request">150</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="swvol">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="shadow-type">in</property> <property name="shadow-type">in</property>
@ -430,7 +890,83 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox" id="gl1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="graph_legend2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Graph Legend</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(253,0,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">RSS</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="swfreq">
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox" id="gl2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
@ -456,7 +992,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="rgba">rgb(255,120,0)</property> <property name="rgba">rgb(253,0,0)</property>
</object> </object>
<packing> <packing>
<property name="left-attach">0</property> <property name="left-attach">0</property>
@ -467,7 +1003,7 @@
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Pmu</property> <property name="label" translatable="yes">RSS</property>
</object> </object>
<packing> <packing>
<property name="left-attach">1</property> <property name="left-attach">1</property>
@ -482,28 +1018,10 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkColorButton"> <placeholder/>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkColorButton"> <placeholder/>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child> </child>
</object> </object>
</child> </child>
@ -512,9 +1030,91 @@
</object> </object>
<packing> <packing>
<property name="left-attach">2</property> <property name="left-attach">2</property>
<property name="top-attach">1</property> <property name="top-attach">2</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkScrolledWindow" id="swdfreq">
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox" id="gl3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="graph_legend3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Graph Legend</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(253,0,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">RSS</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child> <child>
<placeholder/> <placeholder/>
</child> </child>

View File

@ -3,8 +3,8 @@
<interface> <interface>
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<object class="GtkWindow" id="util_window"> <object class="GtkWindow" id="util_window">
<property name="width-request">800</property> <property name="width-request">985</property>
<property name="height-request">600</property> <property name="height-request">800</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<child> <child>
<object class="GtkLayout" id="util_layout"> <object class="GtkLayout" id="util_layout">
@ -15,7 +15,7 @@
<property name="margin-bottom">3</property> <property name="margin-bottom">3</property>
<child> <child>
<object class="GtkMenuBar" id="util_menubar"> <object class="GtkMenuBar" id="util_menubar">
<property name="width-request">800</property> <property name="width-request">900</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="can-default">True</property> <property name="can-default">True</property>
@ -169,7 +169,7 @@
</object> </object>
</child> </child>
<child> <child>
<!-- n-columns=3 n-rows=3 --> <!-- n-columns=3 n-rows=4 -->
<object class="GtkGrid"> <object class="GtkGrid">
<property name="width-request">100</property> <property name="width-request">100</property>
<property name="height-request">80</property> <property name="height-request">80</property>
@ -179,7 +179,7 @@
<property name="margin-top">10</property> <property name="margin-top">10</property>
<property name="column-spacing">6</property> <property name="column-spacing">6</property>
<child> <child>
<!-- n-columns=1 n-rows=5 --> <!-- n-columns=1 n-rows=9 -->
<object class="GtkGrid"> <object class="GtkGrid">
<property name="width-request">80</property> <property name="width-request">80</property>
<property name="visible">True</property> <property name="visible">True</property>
@ -187,7 +187,7 @@
<property name="row-spacing">35</property> <property name="row-spacing">35</property>
<child> <child>
<object class="GtkButton" id="voltage"> <object class="GtkButton" id="voltage">
<property name="label" translatable="yes">Voltage</property> <property name="label" translatable="yes">Voltage Magnitude</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
@ -218,7 +218,7 @@
</object> </object>
<packing> <packing>
<property name="left-attach">0</property> <property name="left-attach">0</property>
<property name="top-attach">2</property> <property name="top-attach">3</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -227,13 +227,14 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property> <property name="active">0</property>
<items> <items>
<item id="0" translatable="yes">kmeans</item> <item id="0" translatable="yes">Gaussian</item>
<item id="1" translatable="yes">simple</item> <item id="1" translatable="yes">kmeans</item>
<item translatable="yes">DTW</item>
</items> </items>
</object> </object>
<packing> <packing>
<property name="left-attach">0</property> <property name="left-attach">0</property>
<property name="top-attach">3</property> <property name="top-attach">5</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -243,15 +244,52 @@
<property name="active">0</property> <property name="active">0</property>
<items> <items>
<item id="0" translatable="yes">frequency only</item> <item id="0" translatable="yes">frequency only</item>
<item id="1" translatable="yes">frequency,voltage</item> <item id="1" translatable="yes">voltage only</item>
<item id="2" translatable="yes">voltage</item> <item id="2" translatable="yes">frequency,voltage</item>
</items> </items>
</object> </object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">7</property>
</packing>
</child>
<child>
<object class="GtkButton" id="dfreq">
<property name="label" translatable="yes">dfreq</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="algo_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Algorithm</property>
</object>
<packing> <packing>
<property name="left-attach">0</property> <property name="left-attach">0</property>
<property name="top-attach">4</property> <property name="top-attach">4</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkLabel" id="dimm_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Dimmensions</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">6</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object> </object>
<packing> <packing>
<property name="left-attach">0</property> <property name="left-attach">0</property>
@ -271,16 +309,806 @@
</packing> </packing>
</child> </child>
<child> <child>
<placeholder/> <object class="GtkLayout" id="graph_layoutvol">
<property name="height-request">150</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child> </child>
<child> <child>
<placeholder/> <!-- n-columns=4 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox" id="mlad">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Legend</property>
<property name="use-markup">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="title" translatable="yes">red</property>
<property name="rgba">rgb(238,29,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="legend_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Attack/Event</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(0,255,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Normal</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(119,118,123)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">No data</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="mlvol">
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Legend</property>
<property name="use-markup">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="title" translatable="yes">red</property>
<property name="rgba">rgb(238,29,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="legend_label1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">&gt;6900V</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(0,255,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">&lt;6800V
&lt;6300V</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(119,118,123)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">No data</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="mlfreq">
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Legend</property>
<property name="use-markup">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="title" translatable="yes">red</property>
<property name="rgba">rgb(238,29,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="legend_label2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Attack/Event</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(0,255,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Normal</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(119,118,123)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">No data</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="mldfreq">
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Legend</property>
<property name="use-markup">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="title" translatable="yes">red</property>
<property name="rgba">rgb(238,29,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="legend_label3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Attack/Event</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(0,255,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Normal</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(119,118,123)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">No data</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left-attach">3</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">0</property>
</packing>
</child> </child>
<child> <child>
<placeholder/> <object class="GtkLayout" id="graph_layoutfreq">
<property name="height-request">150</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child> </child>
<child> <child>
<placeholder/> <object class="GtkLayout" id="graph_layoutdfreq">
<property name="height-request">150</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="swvol">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox" id="gl1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="graph_legend2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Graph Legend</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(253,0,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">RSS</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="swfreq">
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox" id="gl2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="graph_legend1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Graph Legend</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(253,0,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">RSS</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="swdfreq">
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox" id="gl3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="graph_legend3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Graph Legend</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkColorButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="rgba">rgb(253,0,0)</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">RSS</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">3</property>
</packing>
</child> </child>
<child> <child>
<placeholder/> <placeholder/>

View File

@ -1,8 +1,9 @@
/* pavan changes */ /* pavan changes */
#include <time.h>
#include <gtk/gtk.h> #include <gtk/gtk.h>
/* variables declared of attack_detect function */ /* variables declared of attack_detect function */
/* function declared */ /* function declared */
gboolean attack_detect(struct data_frame *df); gboolean attack_detect_freq(struct data_frame *df);
gboolean attack_detect_vol(struct data_frame *df);
gboolean attack_detect_freq_vol(struct data_frame *df);
/* pavan changes */ /* pavan changes */

View File

@ -1,5 +1,7 @@
#include<gtk/gtk.h> #include<gtk/gtk.h>
#include<osm-gps-map.h> #include<osm-gps-map.h>
#include "livechart.h"
typedef struct{ typedef struct{
OsmGpsMap *util_map; OsmGpsMap *util_map;
GdkPixbuf *g_red_image; GdkPixbuf *g_red_image;
@ -12,11 +14,13 @@ struct vis_data{
int id; int id;
float lat; float lat;
float lon; float lon;
GdkPixbuf *last_image; GdkColor color;
OsmGpsMapImage *last_image; // TODO:
GTimeVal last_update_time; GTimeVal last_update_time;
LiveChartSerie *serie;
struct vis_data *next; struct vis_data *next;
}; };
struct vis_data *head; struct vis_data *vis_data_head;
gboolean update_images(gpointer* pars); gboolean update_images(gpointer* pars);

View File

@ -20,12 +20,25 @@ struct _UtData
/* ui buttons */ /* ui buttons */
GtkWidget *voltage; GtkWidget *voltage;
GtkWidget *frequency; GtkWidget *frequency;
GtkWidget *dfreq;
GtkWidget *attack_detection; GtkWidget *attack_detection;
GtkWidget *algorithm; GtkWidget *algorithm;
GtkWidget *dimmension; GtkWidget *dimmension;
OsmGpsMap *util_map; OsmGpsMap *util_map;
GtkContainer *map_layout; GtkContainer *map_layout;
GtkContainer *graph_layout; GtkContainer *graph_layoutvol;
GtkContainer *graph_layoutfreq;
GtkContainer *graph_layoutdfreq;
GtkLabel *algo_label;
GtkLabel *dimm_label;
GtkBox * ml_vol;
GtkBox * ml_freq;
GtkBox * ml_dfreq;
GtkBox * ml_ad;
GtkWidget *swvol;
GtkWidget *swfreq;
GtkWidget *swdfreq;
GtkWidget *swad;
}; };
UtData *utdata; UtData *utdata;

View File

@ -5,35 +5,175 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <math.h> #include <math.h>
#include "parser.h" #include "parser.h"
#include "Attack_detect.h"
long double AVERAGE_OF_FREQUENCY = 50; struct freqlist
unsigned long long int COUNT = 500;
gboolean attack_detect(struct data_frame *df)
{ {
float CURR_FREQ = 50 + to_intconvertor(df->dpmu[0]->freq) * 1e-3; int idcode;
printf("Current freq: %f\n", CURR_FREQ); long double AVERAGE_OF_FREQUENCY;
float DETECT_PERCENT = (fabs(AVERAGE_OF_FREQUENCY - CURR_FREQ) / (AVERAGE_OF_FREQUENCY * 1.0f)) * 100; unsigned long long int COUNT;
struct freqlist* next;
};
/* detecting based on thershold frequency can vary only around 0.2 hz*/ struct vollist
if (DETECT_PERCENT > 0.9) {
int idcode;
long double AVERAGE_OF_VOLTAGE;
unsigned long long int COUNT;
struct vollist* next;
};
struct freqlist *head = NULL;
struct vollist *headvol = NULL;
gboolean attack_detect_freq(struct data_frame *df)
{
if (head == NULL)
{ {
printf("\033[0;31m"); head = (struct freqlist *)malloc(sizeof(struct freqlist));
printf("ATTACK DETECTED!"); head->AVERAGE_OF_FREQUENCY = 50;
printf("\033[0m"); head->COUNT = 500;
return FALSE; head->idcode=to_intconvertor(df->idcode);
return TRUE;
} }
else else
{ {
printf("\033[0;32m"); struct freqlist *temp = head;
printf("NO PROBLEM :)\n"); struct freqlist *previous = NULL;
printf("\033[0m"); while (temp != NULL)
{
if (to_intconvertor(df->idcode) == temp->idcode)
{
float CURR_FREQ;
if (df->dpmu[0]->fmt->freq == '0'){
CURR_FREQ = 50 + to_intconvertor(df->dpmu[0]->freq) * 1e-3;
}
else{
CURR_FREQ = decode_ieee_single(df->dpmu[0]->freq);
}
printf("Current freq: %f\n", CURR_FREQ);
float DETECT_PERCENT = (fabs(temp->AVERAGE_OF_FREQUENCY - CURR_FREQ) / (temp->AVERAGE_OF_FREQUENCY * 1.0f)) * 100;
/* updating mean of frequency */ /* detecting based on thershold frequency can vary only around 0.2 hz*/
AVERAGE_OF_FREQUENCY = ((AVERAGE_OF_FREQUENCY * COUNT) + CURR_FREQ) / ++COUNT; if (DETECT_PERCENT > 0.9)
printf("avg freq: %Lf\n", AVERAGE_OF_FREQUENCY); {
return TRUE; printf("\033[0;31m");
printf("ATTACK DETECTED!");
printf("\033[0m");
return FALSE;
}
else
{
printf("\033[0;32m");
printf("NO PROBLEM :)\n");
printf("\033[0m");
/* updating mean of frequency */
temp->AVERAGE_OF_FREQUENCY = ((temp->AVERAGE_OF_FREQUENCY * temp->COUNT) + CURR_FREQ) / ++temp->COUNT;
printf("avg freq: %Lf\n", temp->AVERAGE_OF_FREQUENCY);
return TRUE;
}
}
previous=temp;
temp=temp->next;
}
if(temp==NULL)
{
struct freqlist* bring = (struct freqlist *)malloc(sizeof(struct freqlist));
bring = (struct freqlist *)malloc(sizeof(struct freqlist));
bring->AVERAGE_OF_FREQUENCY = 50;
bring->COUNT = 500;
bring->idcode = to_intconvertor(df->idcode);
previous->next=bring;
return TRUE;
}
} }
} }
gboolean attack_detect_vol(struct data_frame *df)
{
float CURR_vol;
if (df->dpmu[0]->fmt->phasor == '0')
{
unsigned char s1[2];
unsigned char s2[2];
strncpy(s1, df->dpmu[0]->phasors[0], 2);
strncpy(s2, df->dpmu[0]->phasors[0] + 2, 2);
long double v1 = to_intconvertor(s1);
long double v2 = to_intconvertor(s2);
CURR_vol = sqrt((v1 * v1) + (v2 * v2));
}
else
{
unsigned char s1[2];
unsigned char s2[2];
strncpy(s1, df->dpmu[0]->phasors[0], 4);
strncpy(s2, df->dpmu[0]->phasors[0] + 2, 4);
long double v1 = decode_ieee_single(s1);
long double v2 = decode_ieee_single(s2);
CURR_vol = sqrt((v1 * v1) + (v2 * v2));
}
if (headvol == NULL)
{
headvol = (struct vollist *)malloc(sizeof(struct vollist));
headvol->AVERAGE_OF_VOLTAGE = CURR_vol;
headvol->COUNT = 500;
headvol->idcode=to_intconvertor(df->idcode);
return TRUE;
}
else
{
struct vollist *temp = headvol;
struct vollist *previous = NULL;
while (temp != NULL)
{
if (to_intconvertor(df->idcode) == temp->idcode)
{
printf("Current vol: %f\n", CURR_vol);
float DETECT_PERCENT = (fabs(temp->AVERAGE_OF_VOLTAGE - CURR_vol) / (temp->AVERAGE_OF_VOLTAGE * 1.0f)) * 100;
/* detecting based on thershold VOLTAGE can vary only around 0.2 hz*/
if (DETECT_PERCENT > 5)
{
printf("\033[0;31m");
printf("ATTACK DETECTED!");
printf("\033[0m");
return FALSE;
}
else
{
printf("\033[0;32m");
printf("NO PROBLEM :)\n");
printf("\033[0m");
/* updating mean of VOLTAGE */
temp->AVERAGE_OF_VOLTAGE = ((temp->AVERAGE_OF_VOLTAGE * temp->COUNT) + CURR_vol) / ++temp->COUNT;
printf("avg vol: %Lf\n", temp->AVERAGE_OF_VOLTAGE);
return TRUE;
}
}
previous = temp;
temp = temp->next;
}
if (temp == NULL)
{
struct vollist *bring = (struct vollist *)malloc(sizeof(struct vollist));
bring = (struct vollist *)malloc(sizeof(struct vollist));
bring->AVERAGE_OF_VOLTAGE = CURR_vol;
bring->COUNT = 500;
previous->next = bring;
bring->idcode = to_intconvertor(df->idcode);
return TRUE;
}
}
}
gboolean attack_detect_freq_vol(struct data_frame *df)
{
return attack_detect_freq(df) && attack_detect_vol(df);
}
/* pavan changes */ /* pavan changes */

View File

@ -30,25 +30,25 @@ struct DTWvollist
}; };
struct DTWfreqlist *head = NULL; struct DTWfreqlist *dtwhead = NULL;
struct DTWvollist *headvol = NULL; struct DTWvollist *dtwheadvol = NULL;
int DTWfreqDistance(struct data_frame *df) int DTWfreqDistance(struct data_frame *df)
{ {
if (head == NULL) if (dtwhead == NULL)
{ {
head = (struct DTWfreqlist *)malloc(sizeof(struct DTWfreqlist)); dtwhead = (struct DTWfreqlist *)malloc(sizeof(struct DTWfreqlist));
head->count_track1 = 0; dtwhead->count_track1 = 0;
head->count_track2 = 0; dtwhead->count_track2 = 0;
head->flag = 0; dtwhead->flag = 0;
head->idcode = to_intconvertor(df->idcode); dtwhead->idcode = to_intconvertor(df->idcode);
head->next = NULL; dtwhead->next = NULL;
head->result=1; dtwhead->result=1;
return 1; return 1;
} }
else else
{ {
struct DTWfreqlist *temp = head; struct DTWfreqlist *temp = dtwhead;
struct DTWfreqlist *previous; struct DTWfreqlist *previous;
while (temp != NULL) while (temp != NULL)
{ {
@ -161,20 +161,20 @@ int DTWfreqDistance(struct data_frame *df)
int DTWvolDistance(struct data_frame *df) int DTWvolDistance(struct data_frame *df)
{ {
if (headvol == NULL) if (dtwheadvol == NULL)
{ {
headvol = (struct DTWvollist *)malloc(sizeof(struct DTWvollist)); dtwheadvol = (struct DTWvollist *)malloc(sizeof(struct DTWvollist));
headvol->count_track1 = 0; dtwheadvol->count_track1 = 0;
headvol->count_track2 = 0; dtwheadvol->count_track2 = 0;
headvol->flag = 0; dtwheadvol->flag = 0;
headvol->idcode = to_intconvertor(df->idcode); dtwheadvol->idcode = to_intconvertor(df->idcode);
headvol->next = NULL; dtwheadvol->next = NULL;
headvol->result=1; dtwheadvol->result=1;
return 1; return 1;
} }
else else
{ {
struct DTWvollist *temp = headvol; struct DTWvollist *temp = dtwheadvol;
struct DTWvollist *previous; struct DTWvollist *previous;
while (temp != NULL) while (temp != NULL)
{ {
@ -296,3 +296,8 @@ int DTWvolDistance(struct data_frame *df)
return temp->result; return temp->result;
} }
} }
int DTWfreqvolDistance(struct data_frame *df)
{
return DTWfreqDistance(df) && DTWfreqvolDistance(df);
}

View File

@ -6,53 +6,96 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <math.h> #include <math.h>
FILE *fp; // FILE *fp;
/*intial weights weights for each points */
unsigned long long int count_A = 1000;
unsigned long long int count_B = 1000;
unsigned long long int count_C = 1000;
/*In India frequency ranges from 49.5 to 50.2 Hz*/ struct kmeans1
long double std_dev = 0.6454972244; {
long double A = 0; // for point A=50 int idcode;
long double B = -1.5491933394; // for point B=49 unsigned long long int count_A = 1000;
long double C = 0.7745966692; // for point C=50.5 unsigned long long int count_B = 1000;
long double mean = 50; unsigned long long int count_C = 1000;
unsigned long long int count = 3000; long double A = 50;
long double B = 49;
long double C = 51;
struct kmeans1 *next;
}
struct kmeans1 *headk = NULL;
gboolean kmeans(struct data_frame *df) gboolean kmeans(struct data_frame *df)
{ {
long double CURR_FREQ = 50 + to_intconvertor(df->dpmu[0]->freq) * 1e-3; if (headk == NULL)
long double CURR_FREQ_temp = CURR_FREQ;
CURR_FREQ = (CURR_FREQ - mean) / std_dev;
long double diff_A = fabs(A - CURR_FREQ);
long double diff_B = fabs(B - CURR_FREQ);
long double diff_C = fabs(C - CURR_FREQ);
// fp = fopen("points.csv","a");
// printf("A: %Lf, B: %Lf, C: %Lf\n",A,B,C);
// fprintf(fp,"%Lf, %Lf, %Lf\n",A,B,C);
// fclose(fp);
/*Updating std_dev and mean*/
// printf("std_dev: %Lf, mean: %Lf\n",std_dev,mean);
mean = ((mean * count) + CURR_FREQ_temp) / (++count);
std_dev = (((std_dev * std_dev) * (count - 1)) + (CURR_FREQ * std_dev * CURR_FREQ * std_dev)) / count;
std_dev = sqrt(std_dev);
if (diff_A <= diff_B && diff_A <= diff_C)
{ {
A = ((count_A * (A)) + CURR_FREQ) / (++count_A); headk->A = 50;
headk->B = 49;
headk->C = 51;
headk->count_A = 1000;
headk->count_B = 1000;
headk->count_C = 1000;
headk->next = NULL;
headk->idcode = to_intconvertor(df->idcode);
return TRUE; return TRUE;
} }
else if (diff_B < diff_C)
{
B = ((count_B * (B)) + CURR_FREQ) / (++count_B);
return FALSE;
}
else else
{ {
C = ((count_C * (C)) + CURR_FREQ) / (++count_C); struct kmeans1 *temp == headk;
return FALSE; struct kmeans1 *previous == NULL;
while (temp != NULL)
{
if (temp->idcode == to_intconvertor(df->idcode))
{
float CURR_FREQ;
if (df->dpmu[0]->fmt->freq == '0')
{
CURR_FREQ = 50 + to_intconvertor(df->dpmu[0]->freq) * 1e-3;
}
else
{
CURR_FREQ = decode_ieee_single(df->dpmu[0]->freq);
}
long double diff_A = fabs(temp->A - CURR_FREQ);
long double diff_B = fabs(temp->B - CURR_FREQ);
long double diff_C = fabs(temp->C - CURR_FREQ);
// fp = fopen("points.csv","a");
// printf("A: %Lf, B: %Lf, C: %Lf\n",A,B,C);
// fprintf(fp,"%Lf, %Lf, %Lf\n",A,B,C);
// fclose(fp);
if (diff_A <= diff_B && diff_A <= diff_C)
{
temp->A = ((temp->count_A * (temp->A)) + CURR_FREQ) / (++temp->count_A);
return TRUE;
}
else if (diff_B < diff_C)
{
temp->B = ((temp->count_B * (temp->B)) + CURR_FREQ) / (++temp->count_B);
return FALSE;
}
else
{
temp->C = ((temp->count_C * (temp->C)) + CURR_FREQ) / (++temp->count_C);
return FALSE;
}
break;
}
previous=temp;
temp = temp->next;
}
if(temp==NULL)
{
struct kmeans1 *bring = (struct kmeans1 *)malloc(sizeof(struct kmeans1));
bring->A = 50;
bring->B = 49;
bring->C = 51;
bring->count_A = 1000;
bring->count_B = 1000;
bring->count_C = 1000;
bring->next = NULL;
bring->idcode = to_intconvertor(df->idcode);
previous->next=bring;
return TRUE;
}
} }
} }

View File

@ -26,8 +26,10 @@ gboolean update_images(gpointer* pars){
pthread_mutex_lock(&mutex_on_TSB); pthread_mutex_lock(&mutex_on_TSB);
struct data_frame *df = TSB[MAXTSB-1].first_data_frame; struct data_frame *df = TSB[MAXTSB-1].first_data_frame;
struct Lower_Layer_Details *LLptr; struct Lower_Layer_Details *LLptr;
struct vis_data *vis_ptr;
if (df == NULL){ if (df == NULL){
pthread_mutex_unlock(&mutex_on_TSB);
return TRUE; return TRUE;
} }
//int freq = to_intconvertor(df->dpmu[0]->freq); //int freq = to_intconvertor(df->dpmu[0]->freq);
@ -44,17 +46,17 @@ gboolean update_images(gpointer* pars){
float lat; float lat;
float lon; float lon;
loops++; loops++;
// printf("loops: %d\n", loops); printf("loops: %d\n", loops);
id = to_intconvertor(df->idcode); id = to_intconvertor(df->idcode);
// printf("id = %d\n",id); printf("id = %d\n",id);
pthread_mutex_lock(&mutex_cfg); pthread_mutex_lock(&mutex_cfg);
temp_cfg = cfgfirst; temp_cfg = cfgfirst;
// Check for the IDCODE in Configuration Frame // Check for the IDCODE in Configuration Frame
while(temp_cfg != NULL){ while(temp_cfg != NULL){
if(id == to_intconvertor(temp_cfg->idcode)){ if(id == to_intconvertor(temp_cfg->idcode)){
cfg_match = 1; cfg_match = 1;
// printf("Matched - id : %d\n",id); printf("Matched - id : %d\n",id);
freq_fmt = temp_cfg->pmu[0]->fmt->freq; freq_fmt = temp_cfg->pmu[0]->fmt->freq;
anal_fmt = temp_cfg->pmu[0]->fmt->analog; anal_fmt = temp_cfg->pmu[0]->fmt->analog;
phas_fmt = temp_cfg->pmu[0]->fmt->phasor; phas_fmt = temp_cfg->pmu[0]->fmt->phasor;
@ -69,7 +71,7 @@ gboolean update_images(gpointer* pars){
// get data from df. // get data from df.
if(freq_fmt == '1'){ if(freq_fmt == '1'){
freq = decode_ieee_single(df->dpmu[i]->freq); freq = decode_ieee_single(df->dpmu[i]->freq);
// printf("freq = %f\n",freq); printf("freq = %f\n",freq);
}else{ }else{
freq = to_intconvertor(df->dpmu[i]->freq)*1e-6+50; freq = to_intconvertor(df->dpmu[i]->freq)*1e-6+50;
} }
@ -80,28 +82,42 @@ gboolean update_images(gpointer* pars){
strncpy(last2bytes, df->dpmu[i]->phasors[0]+2, 2); strncpy(last2bytes, df->dpmu[i]->phasors[0]+2, 2);
vol_magnitude = to_intconvertor(first2bytes); vol_magnitude = to_intconvertor(first2bytes);
float imaginary = to_intconvertor(last2bytes); float imaginary = to_intconvertor(last2bytes);
// printf("vol = %f imag = %f\n",vol_magnitude, imaginary); printf("vol = %f imag = %f\n",vol_magnitude, imaginary);
live_chart_serie_add(serie, freq); live_chart_serie_add(serie, freq);
// check lower layer details to get longitude and lattitude. // check lower layer details to get longitude and lattitude.
pthread_mutex_lock(&mutex_Lower_Layer_Details); // pthread_mutex_lock(&mutex_Lower_Layer_Details);
LLptr = LLfirst; // LLptr = LLfirst;
// match = 0;
// while(LLptr != NULL){
// printf("pmuid = %d\n",LLptr->pmuid);
// if(LLptr->pmuid == id){
// match = 1;
// lat = LLptr->latitude;
// lon = LLptr->longitude;
// printf("lat = %f; lon = %f\n",lat,lon);
// break;
// }
// LLptr = LLptr->next;
// }
// pthread_mutex_unlock(&mutex_Lower_Layer_Details);
vis_ptr = vis_data_head;
match = 0; match = 0;
while(LLptr != NULL){ while(vis_ptr != NULL){
// printf("pmuid = %d\n",LLptr->pmuid); printf("vis_ptr->id = %d\n",vis_ptr->id);
if(LLptr->pmuid == id){ if(vis_ptr->id == id){
match = 1; match = 1;
float lat = LLptr->latitude; printf("Matched - id : %d\n",id);
float lon = LLptr->longitude;
break; break;
} }
LLptr = LLptr->next; vis_ptr = vis_ptr->next;
} }
pthread_mutex_unlock(&mutex_Lower_Layer_Details);
// if(match == 1 && cfg_match == 1){
// printf("lat = %f, lon = %f, freq = %f\n",lat,lon,freq); if(match == 1 && cfg_match == 1){
printf("lat = %f, lon = %f, freq = %f\n",lat,lon,freq);
if(parameters->g_last_image != 0){ if(parameters->g_last_image != 0){
osm_gps_map_image_remove(parameters->util_map, parameters->g_last_image); osm_gps_map_image_remove(parameters->util_map, parameters->g_last_image);
} }
@ -110,7 +126,7 @@ gboolean update_images(gpointer* pars){
}else{ }else{
parameters->g_last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_red_image); parameters->g_last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_red_image);
} }
// } }
df = df->dnext; df = df->dnext;
// i++; // i++;
k++; k++;

View File

@ -163,6 +163,7 @@ int add_PMU(char pmuid[], char ip[], char port[], char protocol[], char latitude
temp_pmu->request_cfg_frame = 0; temp_pmu->request_cfg_frame = 0;
temp_pmu->latitude = atof(latitude); temp_pmu->latitude = atof(latitude);
temp_pmu->longitude = atof(longitude); temp_pmu->longitude = atof(longitude);
printf(" lat = %f long = %f\n",temp_pmu->latitude,temp_pmu->longitude);
temp_pmu->next = NULL; temp_pmu->next = NULL;
temp_pmu->prev = NULL; temp_pmu->prev = NULL;

View File

@ -5,6 +5,7 @@
#include "map_vis.h" #include "map_vis.h"
#include "utility_tools.h" #include "utility_tools.h"
#include "livechart.h" #include "livechart.h"
#include "connections.h"
#define UI_fILE "./assets/utility_tools.ui" #define UI_fILE "./assets/utility_tools.ui"
#define RED_IMAGE "./assets/red.png" #define RED_IMAGE "./assets/red.png"
@ -19,50 +20,216 @@
// } // }
// on closing the window kill the g_timeout_add // on closing the window kill the g_timeout_add
GdkRGBA getIndexColor(int index){
GdkRGBA color;
// get the color from the index mathematically
switch(index){
case 0:
color.red = 1.0;
color.green = 0.0;
color.blue = 0.0;
color.alpha = 1.0;
break;
case 1:
color.red = 0.0;
color.green = 1.0;
color.blue = 0.0;
color.alpha = 1.0;
break;
case 2:
color.red = 0.0;
color.green = 0.0;
color.blue = 1.0;
color.alpha = 1.0;
break;
case 3:
color.red = 1.0;
color.green = 1.0;
color.blue = 0.0;
color.alpha = 1.0;
break;
case 4:
color.red = 1.0;
color.green = 0.0;
color.blue = 1.0;
color.alpha = 1.0;
break;
case 5:
color.red = 0.0;
color.green = 1.0;
color.blue = 1.0;
color.alpha = 1.0;
break;
case 6:
color.red = 1.0;
color.green = 0.5;
color.blue = 0.0;
color.alpha = 1.0;
break;
case 7:
color.red = 0.0;
color.green = 0.5;
color.blue = 1.0;
color.alpha = 1.0;
break;
case 8:
color.red = 0.5;
color.green = 1.0;
color.blue = 0.0;
color.alpha = 1.0;
break;
case 9:
color.red = 0.5;
color.green = 0.0;
color.blue = 1.0;
color.alpha = 1.0;
break;
case 10:
color.red = 1.0;
color.green = 0.0;
color.blue = 0.5;
color.alpha = 1.0;
break;
case 11:
color.red = 0.0;
color.green = 1.0;
color.blue = 0.5;
color.alpha = 1.0;
break;
case 12:
color.red = 0.5;
color.green = 0.0;
color.blue = 1.0;
color.alpha = 1.0;
break;
case 13:
color.red = 1.0;
color.green = 0.5;
color.blue = 0.0;
color.alpha = 1.0;
break;
default:
color.red = 0.0+0.1*index;
color.green = 0.0+0.9*index;
color.blue = 0.0+0.5*index;
color.alpha = 1.0;
break;
}
return color;
}
void on_window_destroy(GtkWidget *widget, gpointer data) void on_window_destroy(GtkWidget *widget, gpointer data)
{ {
g_source_remove(GPOINTER_TO_UINT(data)); g_source_remove(GPOINTER_TO_UINT(data));
gtk_main_quit(); gtk_main_quit();
} }
// on clicking the button voltage
void on_voltage_clicked(GtkButton *but, gpointer udata)
{
curr_measurement = 0;
gtk_widget_show(utdata->ml_vol);
gtk_widget_hide(utdata->ml_freq);
gtk_widget_hide(utdata->ml_dfreq);
gtk_widget_hide(utdata->ml_ad);
gtk_widget_hide(utdata->algorithm);
gtk_widget_hide(utdata->dimmension);
gtk_widget_hide(utdata->algo_label);
gtk_widget_hide(utdata->dimm_label);
gtk_widget_set_sensitive(utdata->voltage, FALSE);
gtk_widget_set_sensitive(utdata->frequency, TRUE);
gtk_widget_set_sensitive(utdata->dfreq, TRUE);
gtk_widget_set_sensitive(utdata->attack_detection, TRUE);
printf("Voltage\n");
}
// on clicking the button frequency // on clicking the button frequency
void on_frequency_clicked(GtkButton *but, gpointer udata) void on_frequency_clicked(GtkButton *but, gpointer udata)
{ {
curr_measurement = 1; curr_measurement = 1;
gtk_widget_show(utdata->ml_freq);
gtk_widget_hide(utdata->ml_vol);
gtk_widget_hide(utdata->ml_dfreq);
gtk_widget_hide(utdata->ml_ad);
gtk_widget_hide(utdata->algorithm); gtk_widget_hide(utdata->algorithm);
gtk_widget_hide(utdata->dimmension); gtk_widget_hide(utdata->dimmension);
gtk_widget_hide(utdata->algo_label);
gtk_widget_hide(utdata->dimm_label);
gtk_widget_set_sensitive(utdata->voltage, TRUE); gtk_widget_set_sensitive(utdata->voltage, TRUE);
gtk_widget_set_sensitive(utdata->frequency, FALSE); gtk_widget_set_sensitive(utdata->frequency, FALSE);
gtk_widget_set_sensitive(utdata->dfreq, TRUE);
gtk_widget_set_sensitive(utdata->attack_detection, TRUE); gtk_widget_set_sensitive(utdata->attack_detection, TRUE);
printf("Frequency\n"); printf("Frequency\n");
} }
// on clicking the button dfreq
void on_dfreq_clicked(GtkButton *but, gpointer udata)
{
curr_measurement = 2;
gtk_widget_show(utdata->ml_dfreq);
gtk_widget_hide(utdata->ml_vol);
gtk_widget_hide(utdata->ml_freq);
gtk_widget_hide(utdata->ml_ad);
gtk_widget_hide(utdata->algorithm);
gtk_widget_hide(utdata->dimmension);
gtk_widget_hide(utdata->algo_label);
gtk_widget_hide(utdata->dimm_label);
gtk_widget_set_sensitive(utdata->voltage, TRUE);
gtk_widget_set_sensitive(utdata->frequency, TRUE);
gtk_widget_set_sensitive(utdata->dfreq, FALSE);
gtk_widget_set_sensitive(utdata->attack_detection, TRUE);
printf("dfreq\n");
}
// on clicking the button attack_detection // on clicking the button attack_detection
void on_attack_detection_clicked(GtkButton *but, gpointer udata) void on_attack_detection_clicked(GtkButton *but, gpointer udata)
{ {
curr_measurement = 2; curr_measurement = 3;
gtk_widget_set_sensitive(utdata->voltage, TRUE); gtk_widget_set_sensitive(utdata->voltage, TRUE);
gtk_widget_set_sensitive(utdata->frequency, TRUE); gtk_widget_set_sensitive(utdata->frequency, TRUE);
gtk_widget_set_sensitive(utdata->dfreq, TRUE);
gtk_widget_set_sensitive(utdata->attack_detection, FALSE); gtk_widget_set_sensitive(utdata->attack_detection, FALSE);
gtk_widget_show(utdata->algorithm); gtk_widget_show(utdata->algorithm);
gtk_widget_show(utdata->dimmension); gtk_widget_show(utdata->dimmension);
gtk_widget_show(utdata->algo_label);
gtk_widget_show(utdata->dimm_label);
gtk_widget_show(utdata->ml_ad);
gtk_widget_hide(utdata->ml_vol);
gtk_widget_hide(utdata->ml_freq);
gtk_widget_hide(utdata->ml_dfreq);
printf("Attack Detection\n"); printf("Attack Detection\n");
} }
// on clicking the button voltage void set_algo(GtkComboBox *combo, gpointer udata)
void on_voltage_clicked(GtkButton *but, gpointer udata)
{ {
curr_measurement = 0; algorithm = gtk_combo_box_get_active(combo);
gtk_widget_hide(utdata->algorithm); printf("Algorithm: %d\n", algorithm);
gtk_widget_hide(utdata->dimmension);
gtk_widget_set_sensitive(utdata->voltage, FALSE);
gtk_widget_set_sensitive(utdata->frequency, TRUE);
gtk_widget_set_sensitive(utdata->attack_detection, TRUE);
printf("Voltage\n");
} }
void set_dimm(GtkComboBox *combo, gpointer udata)
{
dimmension = gtk_combo_box_get_active(combo);
printf("dimmension = %d\n", dimmension);
}
void utility_tools(GtkButton *but, gpointer udata) void utility_tools(GtkButton *but, gpointer udata)
{ {
GdkPixbuf *g_red_image; GdkPixbuf *g_red_image;
@ -83,20 +250,40 @@ void utility_tools(GtkButton *but, gpointer udata)
utdata->util_window = GTK_WIDGET(gtk_builder_get_object(builder, "util_window")); utdata->util_window = GTK_WIDGET(gtk_builder_get_object(builder, "util_window"));
utdata->voltage = GTK_WIDGET(gtk_builder_get_object(builder, "voltage")); utdata->voltage = GTK_WIDGET(gtk_builder_get_object(builder, "voltage"));
utdata->frequency = GTK_WIDGET(gtk_builder_get_object(builder, "freq")); utdata->frequency = GTK_WIDGET(gtk_builder_get_object(builder, "freq"));
utdata->dfreq = GTK_WIDGET(gtk_builder_get_object(builder, "dfreq"));
utdata->attack_detection = GTK_WIDGET(gtk_builder_get_object(builder, "attack_detection")); utdata->attack_detection = GTK_WIDGET(gtk_builder_get_object(builder, "attack_detection"));
utdata->algorithm = GTK_WIDGET(gtk_builder_get_object(builder, "algorithm")); utdata->algorithm = GTK_WIDGET(gtk_builder_get_object(builder, "algorithm"));
utdata->dimmension = GTK_WIDGET(gtk_builder_get_object(builder, "dimmension")); utdata->dimmension = GTK_WIDGET(gtk_builder_get_object(builder, "dimmension"));
// utdata->util_map = GTK_WIDGET(gtk_builder_get_object(builder, "util_map")); // utdata->util_map = GTK_WIDGET(gtk_builder_get_object(builder, "util_map"));
utdata->map_layout = GTK_CONTAINER(gtk_builder_get_object(builder, "map_layout")); utdata->map_layout = GTK_CONTAINER(gtk_builder_get_object(builder, "map_layout"));
utdata->graph_layout = GTK_CONTAINER(gtk_builder_get_object(builder, "graph_layout")); utdata->graph_layoutvol = GTK_CONTAINER(gtk_builder_get_object(builder, "graph_layoutvol"));
utdata->graph_layoutfreq = GTK_CONTAINER(gtk_builder_get_object(builder, "graph_layoutfreq"));
utdata->graph_layoutdfreq = GTK_CONTAINER(gtk_builder_get_object(builder, "graph_layoutdfreq"));
utdata->algo_label = GTK_WIDGET(gtk_builder_get_object(builder, "algo_label"));
utdata->dimm_label = GTK_WIDGET(gtk_builder_get_object(builder, "dimm_label"));
utdata->ml_vol = GTK_WIDGET(gtk_builder_get_object(builder, "mlvol"));
utdata->ml_freq = GTK_WIDGET(gtk_builder_get_object(builder, "mlfreq"));
utdata->ml_dfreq = GTK_WIDGET(gtk_builder_get_object(builder, "mldfreq"));
utdata->ml_ad = GTK_WIDGET(gtk_builder_get_object(builder, "mlad"));
utdata->swvol = GTK_WIDGET(gtk_builder_get_object(builder, "swvol"));
utdata->swfreq = GTK_WIDGET(gtk_builder_get_object(builder, "swfreq"));
utdata->swdfreq = GTK_WIDGET(gtk_builder_get_object(builder, "swdfreq"));
utdata->swad = GTK_WIDGET(gtk_builder_get_object(builder, "swad"));
gtk_widget_set_sensitive(utdata->voltage, FALSE); gtk_widget_set_sensitive(utdata->voltage, FALSE);
gtk_widget_set_visible(utdata->algorithm, FALSE); gtk_widget_set_visible(utdata->algorithm, FALSE);
gtk_widget_set_visible(utdata->dimmension, FALSE); gtk_widget_set_visible(utdata->dimmension, FALSE);
g_signal_connect(utdata->attack_detection, "clicked", G_CALLBACK(on_attack_detection_clicked), NULL); gtk_widget_set_visible(utdata->graph_layoutfreq, FALSE);
g_signal_connect(utdata->frequency, "clicked", G_CALLBACK(on_frequency_clicked), NULL); gtk_widget_set_visible(utdata->graph_layoutdfreq, FALSE);
g_signal_connect(utdata->voltage, "clicked", G_CALLBACK(on_voltage_clicked), NULL); g_signal_connect(utdata->voltage, "clicked", G_CALLBACK(on_voltage_clicked), NULL);
g_signal_connect(utdata->frequency, "clicked", G_CALLBACK(on_frequency_clicked), NULL);
g_signal_connect(utdata->dfreq, "clicked", G_CALLBACK(on_dfreq_clicked), NULL);
g_signal_connect(utdata->attack_detection, "clicked", G_CALLBACK(on_attack_detection_clicked), NULL);
g_signal_connect(utdata->algorithm, "changed", G_CALLBACK(set_algo), NULL);
g_signal_connect(utdata->dimmension, "changed", G_CALLBACK(set_dimm), NULL);
g_red_image = gdk_pixbuf_new_from_file_at_size(RED_IMAGE, 24, 24, NULL); g_red_image = gdk_pixbuf_new_from_file_at_size(RED_IMAGE, 24, 24, NULL);
g_green_image = gdk_pixbuf_new_from_file_at_size(GREEN_IMAGE, 24, 24, NULL); g_green_image = gdk_pixbuf_new_from_file_at_size(GREEN_IMAGE, 24, 24, NULL);
@ -119,22 +306,43 @@ void utility_tools(GtkButton *but, gpointer udata)
dimmension = 0; dimmension = 0;
myParameters parameters = {utdata->util_map, g_red_image, g_green_image, g_last_image}; myParameters parameters = {utdata->util_map, g_red_image, g_green_image, g_last_image};
gpointer data = (gpointer)&parameters; gpointer data = (gpointer)&parameters;
guint pid = g_timeout_add(20, (GSourceFunc)update_images, data);
gtk_widget_set_size_request(GTK_WIDGET(utdata->util_map), 600, 500); gtk_widget_set_size_request(GTK_WIDGET(utdata->util_map), 600, 500);
gtk_container_add(utdata->map_layout, GTK_WIDGET(utdata->util_map)); gtk_container_add(utdata->map_layout, GTK_WIDGET(utdata->util_map));
// add live chart // add live chart
serie = live_chart_serie_new("Hello", (LiveChartSerieRenderer*)live_chart_line_new (live_chart_values_new(10000))); serie = live_chart_serie_new("IIT", (LiveChartSerieRenderer*)live_chart_line_new(live_chart_values_new(10000)));
// live_chart set color to the serie // live_chart set color to the serie
GdkRGBA color; GdkRGBA color = getIndexColor(0);
color.red = 1.0;
color.green = 0.0;
color.blue = 1.0;
color.alpha = 1.0;
live_chart_path_set_color(live_chart_serie_get_line(serie), &color); live_chart_path_set_color(live_chart_serie_get_line(serie), &color);
// iterate over llptr and load the map_vis_head structure
// vis_data_head = (struct map_vis_head *)malloc(sizeof(struct vis_data));
struct Lower_Layer_Details *llptr = LLfirst;
struct vis_data * visptr = vis_data_head;
int index = 0;
while (llptr != NULL)
{
visptr = (struct vis_data *)malloc(sizeof(struct vis_data));
visptr->id = llptr->pmuid;
visptr->lat = llptr->latitude;
visptr->lon = llptr->longitude;
visptr->last_image = osm_gps_map_image_add(utdata->util_map, llptr->latitude, llptr->longitude, g_red_image); // TODO: change the image
visptr->serie = live_chart_serie_new(llptr->ip, (LiveChartSerieRenderer*)live_chart_line_new(live_chart_values_new(10000)));
// live_chart set color to the serie
GdkRGBA color = getIndexColor(index);
live_chart_path_set_color(live_chart_serie_get_line(visptr->serie), &color);
visptr->next = NULL;
visptr = visptr->next;
index++;
llptr = llptr->next;
}
guint pid = g_timeout_add(20, (GSourceFunc)update_images, data);
LiveChartConfig *config = live_chart_config_new(); LiveChartConfig *config = live_chart_config_new();
live_chart_yaxis_set_unit(config->y_axis, "mHz"); live_chart_yaxis_set_unit(config->y_axis, "mHz");
live_chart_xaxis_set_tick_interval(config->x_axis, 20); live_chart_xaxis_set_tick_interval(config->x_axis, 20);
@ -149,7 +357,8 @@ void utility_tools(GtkButton *but, gpointer udata)
// gtk_widget_set_vexpand(GTK_WIDGET(chart), TRUE); // gtk_widget_set_vexpand(GTK_WIDGET(chart), TRUE);
gtk_widget_set_size_request(GTK_WIDGET(chart), 600, 150); gtk_widget_set_size_request(GTK_WIDGET(chart), 600, 150);
gtk_container_add(utdata->graph_layout, GTK_WIDGET(chart)); gtk_container_add(utdata->graph_layoutvol, GTK_WIDGET(chart));
@ -167,6 +376,14 @@ void utility_tools(GtkButton *but, gpointer udata)
gtk_widget_hide(utdata->algorithm); gtk_widget_hide(utdata->algorithm);
gtk_widget_hide(utdata->dimmension); gtk_widget_hide(utdata->dimmension);
gtk_widget_hide(utdata->algo_label);
gtk_widget_hide(utdata->dimm_label);
gtk_widget_hide(utdata->ml_freq);
gtk_widget_hide(utdata->ml_dfreq);
gtk_widget_hide(utdata->ml_ad);
gtk_widget_hide(utdata->swfreq);
gtk_widget_hide(utdata->swdfreq);
gtk_widget_hide(utdata->swad);
gtk_main(); gtk_main();
} }