diff --git a/iPDC/assets/blue.png b/iPDC/assets/blue.png
new file mode 100644
index 0000000..9e6becb
Binary files /dev/null and b/iPDC/assets/blue.png differ
diff --git a/iPDC/assets/grey.png b/iPDC/assets/grey.png
new file mode 100644
index 0000000..d29f8af
Binary files /dev/null and b/iPDC/assets/grey.png differ
diff --git a/iPDC/assets/pink.png b/iPDC/assets/pink.png
new file mode 100644
index 0000000..c9027be
Binary files /dev/null and b/iPDC/assets/pink.png differ
diff --git a/iPDC/assets/utility_tools.ui b/iPDC/assets/utility_tools.ui
index 2edcca0..51cb0b5 100644
--- a/iPDC/assets/utility_tools.ui
+++ b/iPDC/assets/utility_tools.ui
@@ -296,18 +296,6 @@
0
-
-
-
- 1
- 0
-
-
-
-
- 600
- 500
- True
- False
-
-
- 1
- 0
-
-
150
@@ -324,9 +312,9 @@
True
False
+ 16
- True
False
vertical
@@ -496,7 +484,8 @@
True
False
- >6900V
+ >65600V or
+< 65300
1
@@ -531,8 +520,8 @@
True
False
- <6800V
-<6300V
+ <65600V
+>65300V
1
@@ -592,6 +581,7 @@
+ True
False
vertical
@@ -629,7 +619,7 @@
True
False
- Attack/Event
+ Deviation > 0.5 mHz
1
@@ -664,7 +654,7 @@
True
False
- Normal
+ deviation < 0.5mHz
1
@@ -761,7 +751,7 @@
True
False
- Attack/Event
+ > 0.5
1
@@ -796,7 +786,7 @@
True
False
- Normal
+ < 0.5
1
@@ -1110,6 +1100,59 @@
3
+
+
+
+ True
+ False
+
+
+ 600
+ 500
+ True
+ False
+
+
+ 0
+ 1
+
+
+
+
+ True
+ False
+ 3
+ 3
+ Voltage Magnitude
+
+
+
+
+
+ 0
+ 0
+
+
+
+
+ True
+ False
+ Voltage Magnitude
+
+
+
+
+
+ 0
+ 2
+
+
+
+
+ 1
+ 0
+
+
diff --git a/iPDC/inc/map_vis.h b/iPDC/inc/map_vis.h
index 37ac914..9c533d7 100644
--- a/iPDC/inc/map_vis.h
+++ b/iPDC/inc/map_vis.h
@@ -17,7 +17,9 @@ struct vis_data{
GdkColor color;
OsmGpsMapImage *last_image; // TODO:
GTimeVal last_update_time;
- LiveChartSerie *serie;
+ LiveChartSerie *serie_vol;
+ LiveChartSerie *serie_freq;
+ LiveChartSerie *serie_dfreq;
struct vis_data *next;
};
diff --git a/iPDC/inc/utility_tools.h b/iPDC/inc/utility_tools.h
index 425f8e1..456aa81 100644
--- a/iPDC/inc/utility_tools.h
+++ b/iPDC/inc/utility_tools.h
@@ -39,10 +39,11 @@ struct _UtData
GtkWidget *swfreq;
GtkWidget *swdfreq;
GtkWidget *swad;
+ GtkWidget *maplabel;
+ GtkWidget *graphlabel;
};
UtData *utdata;
-LiveChartSerie *serie;
// global variables
int curr_measurement;
diff --git a/iPDC/src/Attack_detect.c b/iPDC/src/Attack_detect.c
index 7dfd2ca..095253d 100644
--- a/iPDC/src/Attack_detect.c
+++ b/iPDC/src/Attack_detect.c
@@ -12,7 +12,7 @@ struct freqlist
int idcode;
long double AVERAGE_OF_FREQUENCY;
unsigned long long int COUNT;
- struct freqlist* next;
+ struct freqlist *next;
};
struct vollist
@@ -20,10 +20,9 @@ struct vollist
int idcode;
long double AVERAGE_OF_VOLTAGE;
unsigned long long int COUNT;
- struct vollist* next;
+ struct vollist *next;
};
-
struct freqlist *head = NULL;
struct vollist *headvol = NULL;
@@ -34,7 +33,7 @@ gboolean attack_detect_freq(struct data_frame *df)
head = (struct freqlist *)malloc(sizeof(struct freqlist));
head->AVERAGE_OF_FREQUENCY = 50;
head->COUNT = 500;
- head->idcode=to_intconvertor(df->idcode);
+ head->idcode = to_intconvertor(df->idcode);
return TRUE;
}
else
@@ -46,10 +45,12 @@ gboolean attack_detect_freq(struct data_frame *df)
if (to_intconvertor(df->idcode) == temp->idcode)
{
float CURR_FREQ;
- if (df->dpmu[0]->fmt->freq == '0'){
+ if (df->dpmu[0]->fmt->freq == '0')
+ {
CURR_FREQ = 50 + to_intconvertor(df->dpmu[0]->freq) * 1e-3;
}
- else{
+ else
+ {
CURR_FREQ = decode_ieee_single(df->dpmu[0]->freq);
}
printf("Current freq: %f\n", CURR_FREQ);
@@ -75,17 +76,17 @@ gboolean attack_detect_freq(struct data_frame *df)
return TRUE;
}
}
- previous=temp;
- temp=temp->next;
+ previous = temp;
+ temp = temp->next;
}
- if(temp==NULL)
+ if (temp == NULL)
{
- struct freqlist* bring = (struct freqlist *)malloc(sizeof(struct freqlist));
+ 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;
+ previous->next = bring;
return TRUE;
}
}
@@ -96,30 +97,48 @@ 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));
+ if (df->dpmu[0]->fmt->polar == '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];
+ strncpy(s1, df->dpmu[0]->phasors[0], 2);
+ CURR_vol = to_intconvertor(s1);
+ }
}
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 (df->dpmu[0]->fmt->polar == '0')
+ {
+ unsigned char s1[4];
+ unsigned char s2[4];
+ 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));
+ }
+ else
+ {
+ unsigned char s1[4];
+ strncpy(s1, df->dpmu[0]->phasors[0], 4);
+ CURR_vol = decode_ieee_single(s1);
+ }
}
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);
+ headvol->idcode = to_intconvertor(df->idcode);
return TRUE;
}
else
@@ -174,6 +193,4 @@ gboolean attack_detect_freq_vol(struct data_frame *df)
return attack_detect_freq(df) && attack_detect_vol(df);
}
-
-
/* pavan changes */
\ No newline at end of file
diff --git a/iPDC/src/Dynamic_time_warping.c b/iPDC/src/Dynamic_time_warping.c
index 8678814..ef4cc93 100644
--- a/iPDC/src/Dynamic_time_warping.c
+++ b/iPDC/src/Dynamic_time_warping.c
@@ -29,7 +29,6 @@ struct DTWvollist
struct DTWvollist *next;
};
-
struct DTWfreqlist *dtwhead = NULL;
struct DTWvollist *dtwheadvol = NULL;
@@ -43,7 +42,7 @@ int DTWfreqDistance(struct data_frame *df)
dtwhead->flag = 0;
dtwhead->idcode = to_intconvertor(df->idcode);
dtwhead->next = NULL;
- dtwhead->result=1;
+ dtwhead->result = 1;
return 1;
}
else
@@ -151,7 +150,7 @@ int DTWfreqDistance(struct data_frame *df)
bring->flag = 0;
bring->idcode = to_intconvertor(df->idcode);
bring->next = NULL;
- bring->result=1;
+ bring->result = 1;
previous->next = bring;
return 1;
}
@@ -169,7 +168,7 @@ int DTWvolDistance(struct data_frame *df)
dtwheadvol->flag = 0;
dtwheadvol->idcode = to_intconvertor(df->idcode);
dtwheadvol->next = NULL;
- dtwheadvol->result=1;
+ dtwheadvol->result = 1;
return 1;
}
else
@@ -183,23 +182,41 @@ int DTWvolDistance(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));
+ if (df->dpmu[0]->fmt->polar == '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];
+ strncpy(s1, df->dpmu[0]->phasors[0], 2);
+ CURR_vol = to_intconvertor(s1);
+ }
}
else
{
- unsigned char s1[4];
- unsigned char s2[4];
- 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 (df->dpmu[0]->fmt->polar == '0')
+ {
+ unsigned char s1[4];
+ unsigned char s2[4];
+ 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));
+ }
+ else
+ {
+ unsigned char s1[4];
+ strncpy(s1, df->dpmu[0]->phasors[0], 4);
+ CURR_vol = decode_ieee_single(s1);
+ }
}
// printf("count1: %d\ncount2: %d\n",count_track1,count_track2);
@@ -289,7 +306,7 @@ int DTWvolDistance(struct data_frame *df)
bring->flag = 0;
bring->idcode = to_intconvertor(df->idcode);
bring->next = NULL;
- bring->result=1;
+ bring->result = 1;
previous->next = bring;
return 1;
}
diff --git a/iPDC/src/Kmeans.c b/iPDC/src/Kmeans.c
index 1fd95b7..1bdf2ea 100644
--- a/iPDC/src/Kmeans.c
+++ b/iPDC/src/Kmeans.c
@@ -11,14 +11,14 @@
struct kmeans1
{
int idcode;
- unsigned long long int count_A = 1000;
- unsigned long long int count_B = 1000;
- unsigned long long int count_C = 1000;
- long double A = 50;
- long double B = 49;
- long double C = 51;
+ unsigned long long int count_A;
+ unsigned long long int count_B;
+ unsigned long long int count_C;
+ long double A;
+ long double B;
+ long double C;
struct kmeans1 *next;
-}
+};
struct kmeans1 *headk = NULL;
@@ -26,6 +26,7 @@ gboolean kmeans(struct data_frame *df)
{
if (headk == NULL)
{
+ headk = (struct kmeans1 *)malloc(sizeof(struct kmeans1));
headk->A = 50;
headk->B = 49;
headk->C = 51;
@@ -38,8 +39,8 @@ gboolean kmeans(struct data_frame *df)
}
else
{
- struct kmeans1 *temp == headk;
- struct kmeans1 *previous == NULL;
+ struct kmeans1 *temp = headk;
+ struct kmeans1 *previous = NULL;
while (temp != NULL)
{
if (temp->idcode == to_intconvertor(df->idcode))
@@ -79,10 +80,10 @@ gboolean kmeans(struct data_frame *df)
}
break;
}
- previous=temp;
+ previous = temp;
temp = temp->next;
}
- if(temp==NULL)
+ if (temp == NULL)
{
struct kmeans1 *bring = (struct kmeans1 *)malloc(sizeof(struct kmeans1));
bring->A = 50;
@@ -93,7 +94,7 @@ gboolean kmeans(struct data_frame *df)
bring->count_C = 1000;
bring->next = NULL;
bring->idcode = to_intconvertor(df->idcode);
- previous->next=bring;
+ previous->next = bring;
return TRUE;
}
}
diff --git a/iPDC/src/map_vis.c b/iPDC/src/map_vis.c
index 88dff2e..5c18853 100644
--- a/iPDC/src/map_vis.c
+++ b/iPDC/src/map_vis.c
@@ -37,100 +37,143 @@ gboolean update_images(gpointer* pars){
//printf("map_vis A: %Lf, B: %Lf,C: %Lf\n",A,B,C);
//gboolean green = kmeans(df);
- if (curr_measurement==0)
- {
- int i = 0, k = 0;
- float freq,vol_magnitude,angle, dfreq;
- unsigned char freq_fmt, anal_fmt, phas_fmt, polar_fmt;
- while (df!=NULL){
- float lat;
- float lon;
- loops++;
- printf("loops: %d\n", loops);
-
- id = to_intconvertor(df->idcode);
- printf("id = %d\n",id);
- pthread_mutex_lock(&mutex_cfg);
- temp_cfg = cfgfirst;
- // Check for the IDCODE in Configuration Frame
- while(temp_cfg != NULL){
- if(id == to_intconvertor(temp_cfg->idcode)){
- cfg_match = 1;
- printf("Matched - id : %d\n",id);
- freq_fmt = temp_cfg->pmu[0]->fmt->freq;
- anal_fmt = temp_cfg->pmu[0]->fmt->analog;
- phas_fmt = temp_cfg->pmu[0]->fmt->phasor;
- polar_fmt = temp_cfg->pmu[0]->fmt->polar;
- break;
- } else {
- temp_cfg = temp_cfg->cfgnext;
- }
+ int i = 0, k = 0;
+ float freq,vol_magnitude,angle, dfreq;
+ unsigned char freq_fmt, anal_fmt, phas_fmt, polar_fmt;
+ while (df!=NULL){
+ float lat;
+ float lon;
+ loops++;
+ printf("loops: %d\n", loops);
+
+ id = to_intconvertor(df->idcode);
+ printf("id = %d\n",id);
+ pthread_mutex_lock(&mutex_cfg);
+ temp_cfg = cfgfirst;
+ // Check for the IDCODE in Configuration Frame
+ while(temp_cfg != NULL){
+ if(id == to_intconvertor(temp_cfg->idcode)){
+ cfg_match = 1;
+ printf("Matched - id : %d\n",id);
+ freq_fmt = temp_cfg->pmu[0]->fmt->freq;
+ anal_fmt = temp_cfg->pmu[0]->fmt->analog;
+ phas_fmt = temp_cfg->pmu[0]->fmt->phasor;
+ polar_fmt = temp_cfg->pmu[0]->fmt->polar;
+ break;
+ } else {
+ temp_cfg = temp_cfg->cfgnext;
}
- pthread_mutex_unlock(&mutex_cfg);
-
- // get data from df.
- if(freq_fmt == '1'){
- freq = decode_ieee_single(df->dpmu[i]->freq);
- printf("freq = %f\n",freq);
- }else{
- freq = to_intconvertor(df->dpmu[i]->freq)*1e-6+50;
- }
-
- unsigned char first2bytes[2];
- strncpy(first2bytes, df->dpmu[i]->phasors[0], 2);
- unsigned char last2bytes[2];
- strncpy(last2bytes, df->dpmu[i]->phasors[0]+2, 2);
- vol_magnitude = to_intconvertor(first2bytes);
- float imaginary = to_intconvertor(last2bytes);
- printf("vol = %f imag = %f\n",vol_magnitude, imaginary);
-
- live_chart_serie_add(serie, freq);
-
- // check lower layer details to get longitude and lattitude.
- // pthread_mutex_lock(&mutex_Lower_Layer_Details);
- // 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;
- while(vis_ptr != NULL){
- printf("vis_ptr->id = %d\n",vis_ptr->id);
- if(vis_ptr->id == id){
- match = 1;
- printf("Matched - id : %d\n",id);
- break;
- }
- vis_ptr = vis_ptr->next;
- }
-
-
- if(match == 1 && cfg_match == 1){
- printf("lat = %f, lon = %f, freq = %f\n",lat,lon,freq);
- if(parameters->g_last_image != 0){
- osm_gps_map_image_remove(parameters->util_map, parameters->g_last_image);
- }
- if (DTWvolDistance(df)){
- parameters->g_last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_green_image);
- }else{
- parameters->g_last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_red_image);
- }
- }
- df = df->dnext;
- // i++;
- k++;
}
+ pthread_mutex_unlock(&mutex_cfg);
+
+ // get data from df.
+ if(freq_fmt == '1'){
+ freq = decode_ieee_single(df->dpmu[i]->freq);
+ printf("freq = %f\n",freq);
+ }else{
+ freq = to_intconvertor(df->dpmu[i]->freq)*1e-6+50;
+ }
+
+ unsigned char first2bytes[2];
+ strncpy(first2bytes, df->dpmu[i]->phasors[0], 2);
+ unsigned char last2bytes[2];
+ strncpy(last2bytes, df->dpmu[i]->phasors[0]+2, 2);
+ vol_magnitude = to_intconvertor(first2bytes);
+ float imaginary = to_intconvertor(last2bytes);
+ printf("vol = %f imag = %f\n",vol_magnitude, imaginary);
+
+ 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;
+ printf("Matched - id : %d\n",id);
+ break;
+ }
+ vis_ptr = vis_ptr->next;
+ }
+
+ lat = vis_ptr->lat;
+ lon = vis_ptr->lon;
+
+ live_chart_serie_add(vis_ptr->serie_freq, freq);
+ live_chart_serie_add(vis_ptr->serie_vol, vol_magnitude);
+ live_chart_serie_add(vis_ptr->serie_dfreq, dfreq);
+
+ if(match == 1 && cfg_match == 1){
+ printf("lat = %f, lon = %f, freq = %f\n",lat,lon,freq);
+ if(vis_ptr->last_image != 0){
+ osm_gps_map_image_remove(parameters->util_map, vis_ptr->last_image);
+ }
+
+ if(curr_measurement == 0){
+ if(vol_magnitude > 65600 || vol_magnitude < 65300){
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map, lat, lon, parameters->g_red_image);
+ }else{
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map, lat, lon, parameters->g_green_image);
+ }
+ }else if(curr_measurement == 1){
+ if (freq > 300){
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_green_image);
+ }else{
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_red_image);
+ }
+ }else if(curr_measurement == 2){
+ if (dfreq < 0.5){
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_green_image);
+ }else{
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_red_image);
+ }
+ }else if(curr_measurement == 3){
+ if(algorithm==0 && dimmension == 0){
+ if (!attack_detect_vol(df)){
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_red_image);
+ }else{
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_green_image);
+ }
+ }else if (algorithm==0 && dimmension == 1){
+ if (!attack_detect_freq(df)){
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_red_image);
+ }else{
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_green_image);
+ }
+ }else if (algorithm==0 && dimmension == 2){
+ if (!attack_detect_freq_vol(df)){
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_red_image);
+ }else{
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_green_image);
+ }
+ }else if (algorithm==1 && dimmension == 0){
+ if(!kmeans(df)){
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_red_image);
+ }else{
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_green_image);
+ }
+ }else if (algorithm==1 && dimmension == 1){
+
+ }else if (algorithm==1 && dimmension == 2){
+
+ }else if (algorithm==2 && dimmension == 0){
+ if(!DTWvolDistance(df)){
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_red_image);
+ }else{
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_green_image);
+ }
+ }else if (algorithm==2 && dimmension == 1){
+ if(!DTWfreqDistance(df)){
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_red_image);
+ }else{
+ vis_ptr->last_image = osm_gps_map_image_add(parameters->util_map,lat, lon, parameters->g_green_image);
+ }
+ }else if (algorithm==2 && dimmension == 2){
+
+ }
+ }
+ }
+ df = df->dnext;
+ // i++;
+ k++;
}
pthread_mutex_unlock(&mutex_on_TSB);
diff --git a/iPDC/src/utility_tools.c b/iPDC/src/utility_tools.c
index 3db4ac9..218cd72 100644
--- a/iPDC/src/utility_tools.c
+++ b/iPDC/src/utility_tools.c
@@ -7,10 +7,14 @@
#include "livechart.h"
#include "connections.h"
+// TODO: change this when in production
#define UI_fILE "./assets/utility_tools.ui"
#define RED_IMAGE "./assets/red.png"
#define GREEN_IMAGE "./assets/green.png"
-
+#define YELLOW_IMAGE "./assets/yellow.png"
+#define BLUE_IMAGE "./assets/blue.png"
+#define GREY_IMAGE "./assets/grey.png"
+#define PINK_IMAGE "./assets/pink.png"
// void change_image(OsmGpsMap *map, float lat, float lon, OsmGpsMapImage *image)
// {
@@ -132,9 +136,20 @@ void on_voltage_clicked(GtkButton *but, gpointer udata)
curr_measurement = 0;
gtk_widget_show(utdata->ml_vol);
+ gtk_widget_show(utdata->graph_layoutvol);
+ gtk_widget_show(utdata->swvol);
+ gtk_widget_show(utdata->graphlabel);
+
+ gtk_label_set_label(utdata->maplabel, "Voltage Magnitude");
+ gtk_label_set_label(utdata->graphlabel, "Voltage Magnitude");
+
gtk_widget_hide(utdata->ml_freq);
gtk_widget_hide(utdata->ml_dfreq);
gtk_widget_hide(utdata->ml_ad);
+ gtk_widget_hide(utdata->graph_layoutfreq);
+ gtk_widget_hide(utdata->graph_layoutdfreq);
+ gtk_widget_hide(utdata->swfreq);
+ gtk_widget_hide(utdata->swdfreq);
gtk_widget_hide(utdata->algorithm);
gtk_widget_hide(utdata->dimmension);
@@ -153,9 +168,21 @@ void on_frequency_clicked(GtkButton *but, gpointer udata)
curr_measurement = 1;
gtk_widget_show(utdata->ml_freq);
+ gtk_widget_show(utdata->graph_layoutfreq);
+ gtk_widget_show(utdata->swfreq);
+ gtk_widget_show(utdata->graphlabel);
+
+ gtk_label_set_label(utdata->maplabel, "Frequency");
+ gtk_label_set_label(utdata->graphlabel, "Frequency");
+
gtk_widget_hide(utdata->ml_vol);
gtk_widget_hide(utdata->ml_dfreq);
gtk_widget_hide(utdata->ml_ad);
+ gtk_widget_hide(utdata->swdfreq);
+ gtk_widget_hide(utdata->swvol);
+ gtk_widget_hide(utdata->graph_layoutdfreq);
+ gtk_widget_hide(utdata->graph_layoutvol);
+
gtk_widget_hide(utdata->algorithm);
gtk_widget_hide(utdata->dimmension);
@@ -175,9 +202,20 @@ void on_dfreq_clicked(GtkButton *but, gpointer udata)
curr_measurement = 2;
gtk_widget_show(utdata->ml_dfreq);
+ gtk_widget_show(utdata->graph_layoutdfreq);
+ gtk_widget_show(utdata->swdfreq);
+ gtk_widget_show(utdata->graphlabel);
+
+ gtk_label_set_label(utdata->maplabel, "Frequency Rate");
+ gtk_label_set_label(utdata->graphlabel, "Frequency Rate");
+
gtk_widget_hide(utdata->ml_vol);
gtk_widget_hide(utdata->ml_freq);
gtk_widget_hide(utdata->ml_ad);
+ gtk_widget_hide(utdata->graph_layoutfreq);
+ gtk_widget_hide(utdata->graph_layoutvol);
+ gtk_widget_hide(utdata->swvol);
+ gtk_widget_hide(utdata->swfreq);
gtk_widget_hide(utdata->algorithm);
@@ -207,9 +245,18 @@ void on_attack_detection_clicked(GtkButton *but, gpointer udata)
gtk_widget_show(utdata->dimm_label);
gtk_widget_show(utdata->ml_ad);
+ gtk_label_set_label(utdata->maplabel, "Attack Detection");
+
gtk_widget_hide(utdata->ml_vol);
gtk_widget_hide(utdata->ml_freq);
gtk_widget_hide(utdata->ml_dfreq);
+ gtk_widget_hide(utdata->swvol);
+ gtk_widget_hide(utdata->swfreq);
+ gtk_widget_hide(utdata->swdfreq);
+ gtk_widget_hide(utdata->graph_layoutdfreq);
+ gtk_widget_hide(utdata->graph_layoutfreq);
+ gtk_widget_hide(utdata->graph_layoutvol);
+ gtk_widget_hide(utdata->graphlabel);
printf("Attack Detection\n");
}
@@ -234,6 +281,11 @@ void utility_tools(GtkButton *but, gpointer udata)
{
GdkPixbuf *g_red_image;
GdkPixbuf *g_green_image;
+ GdkPixbuf *g_yellow_image;
+ GdkPixbuf *g_blue_image;
+ GdkPixbuf *g_pink_image;
+ GdkPixbuf *g_grey_image;
+
OsmGpsMapImage *g_last_image;
// -------------------
GtkBuilder *builder;
@@ -268,7 +320,8 @@ void utility_tools(GtkButton *but, gpointer udata)
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"));
+ utdata->maplabel = GTK_WIDGET(gtk_builder_get_object(builder, "maplabel"));
+ utdata->graphlabel = GTK_WIDGET(gtk_builder_get_object(builder, "graphlabel"));
gtk_widget_set_sensitive(utdata->voltage, FALSE);
gtk_widget_set_visible(utdata->algorithm, FALSE);
@@ -287,6 +340,7 @@ void utility_tools(GtkButton *but, gpointer udata)
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_grey_image = gdk_pixbuf_new_from_file_at_size(GREY_IMAGE, 24, 24, NULL);
utdata->util_map = g_object_new(OSM_TYPE_GPS_MAP,
"map-source", OSM_GPS_MAP_SOURCE_OSMC_TRAILS,
@@ -297,14 +351,14 @@ void utility_tools(GtkButton *but, gpointer udata)
osm_gps_map_set_center_and_zoom(utdata->util_map, 15.4589, 75.0078, 10);
// TODO: add the points to window.
- g_last_image = osm_gps_map_image_add(utdata->util_map, 15.4589, 75.0078, g_red_image);
- g_last_image = osm_gps_map_image_add(utdata->util_map, 15.518597, 74.925584, g_green_image);
+ // g_last_image = osm_gps_map_image_add(utdata->util_map, 15.4589, 75.0078, g_red_image);
+ // g_last_image = osm_gps_map_image_add(utdata->util_map, 15.518597, 74.925584, g_green_image);
curr_measurement = 0;
algorithm = 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_grey_image, g_last_image};
gpointer data = (gpointer)¶meters;
gtk_widget_set_size_request(GTK_WIDGET(utdata->util_map), 600, 500);
@@ -312,52 +366,93 @@ void utility_tools(GtkButton *but, gpointer udata)
gtk_container_add(utdata->map_layout, GTK_WIDGET(utdata->util_map));
// add live chart
- serie = live_chart_serie_new("IIT", (LiveChartSerieRenderer*)live_chart_line_new(live_chart_values_new(10000)));
- // live_chart set color to the serie
- GdkRGBA color = getIndexColor(0);
- live_chart_path_set_color(live_chart_serie_get_line(serie), &color);
+ // serie = live_chart_serie_new("IIT", (LiveChartSerieRenderer*)live_chart_line_new(live_chart_values_new(10000)));
+ // // live_chart set color to the serie
+ // GdkRGBA color = getIndexColor(0);
+ // 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));
+
+ LiveChartConfig *config_vol = live_chart_config_new();
+ live_chart_yaxis_set_unit(config_vol->y_axis, "V");
+ live_chart_xaxis_set_tick_interval(config_vol->x_axis, 20);
+ live_chart_xaxis_set_tick_length(config_vol->x_axis, 100);
+ live_chart_yaxis_update_bounds(config_vol->y_axis, 1);
+ live_chart_path_set_visible(config_vol->x_axis->lines, FALSE);
+
+ LiveChartChart *chart_vol = live_chart_chart_new(config_vol);
+
+ LiveChartConfig *config_freq = live_chart_config_new();
+ live_chart_yaxis_set_unit(config_freq->y_axis, "mHz");
+ live_chart_xaxis_set_tick_interval(config_freq->x_axis, 20);
+ live_chart_xaxis_set_tick_length(config_freq->x_axis, 100);
+ live_chart_yaxis_update_bounds(config_freq->y_axis, 1);
+ live_chart_path_set_visible(config_freq->x_axis->lines, FALSE);
+
+ LiveChartChart *chart_freq = live_chart_chart_new(config_freq);
+
+
+ LiveChartConfig *config_dfreq = live_chart_config_new();
+ live_chart_yaxis_set_unit(config_dfreq->y_axis, "mHz");
+ live_chart_xaxis_set_tick_interval(config_dfreq->x_axis, 20);
+ live_chart_xaxis_set_tick_length(config_dfreq->x_axis, 100);
+ live_chart_yaxis_update_bounds(config_dfreq->y_axis, 1);
+ live_chart_path_set_visible(config_dfreq->x_axis->lines, FALSE);
+
+ LiveChartChart *chart_dfreq = live_chart_chart_new(config_dfreq);
+
+
+
+
+ // live_chart_chart_add_serie(chart, serie);
struct Lower_Layer_Details *llptr = LLfirst;
- struct vis_data * visptr = vis_data_head;
+ vis_data_head = (struct vis_data *)malloc(sizeof(struct vis_data));
+ struct vis_data * temp_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
+ printf("\ncat\n");
+ temp_visptr->id = llptr->pmuid;
+ temp_visptr->lat = llptr->latitude;
+ temp_visptr->lon = llptr->longitude;
+ temp_visptr->last_image = osm_gps_map_image_add(utdata->util_map, llptr->latitude, llptr->longitude, g_grey_image); // TODO: change the image
+
+ temp_visptr->serie_freq = live_chart_serie_new(llptr->ip, (LiveChartSerieRenderer*)live_chart_line_new(live_chart_values_new(10000)));
GdkRGBA color = getIndexColor(index);
- live_chart_path_set_color(live_chart_serie_get_line(visptr->serie), &color);
- visptr->next = NULL;
- visptr = visptr->next;
+ live_chart_path_set_color(live_chart_serie_get_line(temp_visptr->serie_freq), &color);
+ live_chart_chart_add_serie(chart_freq, temp_visptr->serie_freq);
+
+ temp_visptr->serie_vol = live_chart_serie_new(llptr->ip, (LiveChartSerieRenderer*)live_chart_line_new(live_chart_values_new(10000)));
+ live_chart_path_set_color(live_chart_serie_get_line(temp_visptr->serie_vol), &color);
+ live_chart_chart_add_serie(chart_vol, temp_visptr->serie_vol);
+
+ temp_visptr->serie_dfreq = live_chart_serie_new(llptr->ip, (LiveChartSerieRenderer*)live_chart_line_new(live_chart_values_new(10000)));
+ live_chart_path_set_color(live_chart_serie_get_line(temp_visptr->serie_dfreq), &color);
+ live_chart_chart_add_serie(chart_dfreq, temp_visptr->serie_dfreq);
+
+ temp_visptr->next = (struct vis_data *)malloc(sizeof(struct vis_data));
+ temp_visptr = temp_visptr->next;
index++;
llptr = llptr->next;
}
+ temp_visptr->next = NULL;
guint pid = g_timeout_add(20, (GSourceFunc)update_images, data);
- LiveChartConfig *config = live_chart_config_new();
- live_chart_yaxis_set_unit(config->y_axis, "mHz");
- live_chart_xaxis_set_tick_interval(config->x_axis, 20);
- live_chart_xaxis_set_tick_length(config->x_axis, 100);
- live_chart_yaxis_update_bounds(config->y_axis, 1);
- live_chart_path_set_visible(config->x_axis->lines, FALSE);
-
- LiveChartChart *chart = live_chart_chart_new(config);
- live_chart_chart_add_serie(chart, serie);
// gtk_widget_set_hexpand(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_freq), 600, 150);
+ gtk_widget_set_size_request(GTK_WIDGET(chart_vol), 600, 150);
+ gtk_widget_set_size_request(GTK_WIDGET(chart_dfreq), 600, 150);
+
+ gtk_container_add(utdata->graph_layoutvol, GTK_WIDGET(chart_vol));
+ gtk_container_add(utdata->graph_layoutfreq, GTK_WIDGET(chart_freq));
+ gtk_container_add(utdata->graph_layoutdfreq, GTK_WIDGET(chart_dfreq));
- gtk_container_add(utdata->graph_layoutvol, GTK_WIDGET(chart));
@@ -383,7 +478,8 @@ void utility_tools(GtkButton *but, gpointer udata)
gtk_widget_hide(utdata->ml_ad);
gtk_widget_hide(utdata->swfreq);
gtk_widget_hide(utdata->swdfreq);
- gtk_widget_hide(utdata->swad);
+ gtk_widget_hide(utdata->graph_layoutdfreq);
+ gtk_widget_hide(utdata->graph_layoutfreq);
gtk_main();
}
\ No newline at end of file