added new datastructure to store pmu details
This commit is contained in:
parent
f438835200
commit
394c45555c
|
@ -3,7 +3,7 @@
|
||||||
<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">900</property>
|
||||||
<property name="height-request">700</property>
|
<property name="height-request">700</property>
|
||||||
<property name="can-focus">False</property>
|
<property name="can-focus">False</property>
|
||||||
<child>
|
<child>
|
||||||
|
@ -409,7 +409,39 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<placeholder/>
|
<!-- 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>
|
||||||
<child>
|
<child>
|
||||||
<placeholder/>
|
<placeholder/>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<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">800</property>
|
||||||
<property name="height-request">600</property>
|
<property name="height-request">700</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">
|
||||||
|
@ -169,7 +169,7 @@
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<!-- n-columns=3 n-rows=3 -->
|
<!-- n-columns=3 n-rows=2 -->
|
||||||
<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,22 +309,243 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<placeholder/>
|
<object class="GtkLayout" id="graph_layout">
|
||||||
|
<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>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<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>
|
||||||
<child>
|
<child>
|
||||||
<placeholder/>
|
<placeholder/>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
</object>
|
||||||
<placeholder/>
|
<packing>
|
||||||
|
<property name="left-attach">2</property>
|
||||||
|
<property name="top-attach">0</property>
|
||||||
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<placeholder/>
|
<object class="GtkScrolledWindow">
|
||||||
|
<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">
|
||||||
|
<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>
|
||||||
<child>
|
<child>
|
||||||
<placeholder/>
|
<!-- 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(255,120,0)</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left-attach">0</property>
|
||||||
|
<property name="top-attach">0</property>
|
||||||
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<placeholder/>
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Pmu</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>
|
||||||
|
<object class="GtkColorButton">
|
||||||
|
<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>
|
||||||
|
<object class="GtkColorButton">
|
||||||
|
<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>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left-attach">2</property>
|
||||||
|
<property name="top-attach">1</property>
|
||||||
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<placeholder/>
|
<placeholder/>
|
||||||
|
|
|
@ -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);
|
|
@ -20,11 +20,12 @@ struct vollist
|
||||||
int idcode;
|
int idcode;
|
||||||
long double AVERAGE_OF_VOLTAGE;
|
long double AVERAGE_OF_VOLTAGE;
|
||||||
unsigned long long int COUNT;
|
unsigned long long int COUNT;
|
||||||
|
struct vollist* next;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct freqlist *head = NULL;
|
struct freqlist *head = NULL;
|
||||||
struct vollist *headvol = NULL
|
struct vollist *headvol = NULL;
|
||||||
|
|
||||||
gboolean attack_detect_freq(struct data_frame *df)
|
gboolean attack_detect_freq(struct data_frame *df)
|
||||||
{
|
{
|
||||||
|
@ -111,16 +112,16 @@ gboolean attack_detect_vol(struct data_frame *df)
|
||||||
long double v2 = decode_ieee_single(s2);
|
long double v2 = decode_ieee_single(s2);
|
||||||
CURR_vol = sqrt((v1 * v1) + (v2 * v2));
|
CURR_vol = sqrt((v1 * v1) + (v2 * v2));
|
||||||
}
|
}
|
||||||
if (head == NULL)
|
if (headvol == NULL)
|
||||||
{
|
{
|
||||||
head = (struct vollist *)malloc(sizeof(struct vollist));
|
headvol = (struct vollist *)malloc(sizeof(struct vollist));
|
||||||
head->AVERAGE_OF_VOLTAGE = CURR_vol;
|
headvol->AVERAGE_OF_VOLTAGE = CURR_vol;
|
||||||
head->COUNT = 500;
|
headvol->COUNT = 500;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
struct vollist *temp = head;
|
struct vollist *temp = headvol;
|
||||||
struct vollist *previous = NULL;
|
struct vollist *previous = NULL;
|
||||||
while (temp != NULL)
|
while (temp != NULL)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,6 +26,7 @@ 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);
|
pthread_mutex_unlock(&mutex_on_TSB);
|
||||||
|
@ -45,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;
|
||||||
|
@ -70,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;
|
||||||
}
|
}
|
||||||
|
@ -81,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;
|
// match = 0;
|
||||||
while(LLptr != NULL){
|
// while(LLptr != NULL){
|
||||||
// printf("pmuid = %d\n",LLptr->pmuid);
|
// printf("pmuid = %d\n",LLptr->pmuid);
|
||||||
if(LLptr->pmuid == id){
|
// 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;
|
||||||
|
while(vis_ptr != NULL){
|
||||||
|
printf("vis_ptr->id = %d\n",vis_ptr->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);
|
||||||
}
|
}
|
||||||
|
@ -111,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++;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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,6 +20,106 @@
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// 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));
|
||||||
|
@ -119,22 +220,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)¶meters;
|
gpointer data = (gpointer)¶meters;
|
||||||
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);
|
||||||
|
@ -154,6 +276,7 @@ void utility_tools(GtkButton *but, gpointer udata)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
g_signal_connect(utdata->util_window, "destroy", G_CALLBACK(on_window_destroy), GUINT_TO_POINTER(pid));
|
g_signal_connect(utdata->util_window, "destroy", G_CALLBACK(on_window_destroy), GUINT_TO_POINTER(pid));
|
||||||
|
|
||||||
// //g_last_image = osm_gps_map_image_add(util_map,15.4589, 75.0078, g_red_image);
|
// //g_last_image = osm_gps_map_image_add(util_map,15.4589, 75.0078, g_red_image);
|
||||||
|
|
Loading…
Reference in New Issue