-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathhourinfo.cpp
83 lines (72 loc) · 1.73 KB
/
hourinfo.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include "hourinfo.h"
#include "common.h"
HourInfo::HourInfo(){
clear();
}
void HourInfo::clear(){
nvalues = 0;
mean.setvalues(0.0);
acc.setvalues(0.0);
max.setvalues(-9999999);
min.setvalues(9999999);
dominant_colour = 'n';
rgb_acc = new int [3];
for(int i = 0; i < 3; i++)
rgb_acc[i] = 0;
//samples_per_hour = (30/NSENSORVALUESORMAL_MODE_TIME);
}
void HourInfo::update(SensorValues v, char last_colour){
update_max(v);
update_min(v);
update_mean(v);
update_dominant_colour(last_colour);
}
void HourInfo::update_dominant_colour(char last_colour){
if(last_colour == 'r')
rgb_acc[0]++;
if(last_colour == 'g')
rgb_acc[1]++;
if(last_colour == 'b')
rgb_acc[2]++;
dominant_colour = maximum_rgb(rgb_acc);
}
char HourInfo::maximum_rgb(int rgb[3]){
int max = -1;
int max_index = 0;
char num_rgb[3] = {'r', 'g', 'b'};
for(int i = 0; i < 3; i++){
if(max < rgb_acc[i])
max_index = i;
}
return num_rgb[max_index];
}
void HourInfo::update_max(SensorValues v){
for(int i = 0; i < NSENSORVALUES; i++){
if(max[i] < v[i])
max[i] = v[i];
}
}
void HourInfo::update_min(SensorValues v){
for(int i = 0; i < NSENSORVALUES; i++){
if(min[i] > v[i])
min[i] = v[i];
}
}
void HourInfo::update_mean(SensorValues v){
nvalues++;
for(int i = 0; i < NSENSORVALUES; i++){
acc[i] += v[i];
mean[i] = acc[i] / nvalues;
}
}
void HourInfo::serial_print(){
pc.printf("\n\r++++++++++++++++++MAX++++++++++++++++++++");
max.serial_print();
pc.printf("\n\r------------------MIN--------------------");
min.serial_print();
pc.printf("\n\r==================MEAN====================");
mean.serial_print();
pc.printf("\n\r··················COLOR···················");
pc.printf("\n\r%c", this->dominant_colour);
}
HourInfo hour_info;