Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F375330
ConfidenceModule.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Size
5 KB
Referenced Files
None
Subscribers
None
ConfidenceModule.cpp
View Options
#include
"ConfidenceModule.h"
#include
"HistoryModule.h"
#include
<stdio.h>
// TODO: at the moment are only positive rates_of_changes allowed!!
void
ConfidenceModule
::
initialize_confidence_validator
(
float
lower_bound
,
bool
flag_lower_bound_exist
,
float
upper_bound
,
bool
flag_upper_bound_exist
,
float
rates_of_change
,
bool
flag_rates_of_change_exist
)
{
// plausibility
if
(
lower_bound
<=
upper_bound
)
{
this
->
lower_bound
=
lower_bound
;
this
->
upper_bound
=
upper_bound
;
this
->
flag_lower_bound_exist
=
flag_lower_bound_exist
;
this
->
flag_upper_bound_exist
=
flag_upper_bound_exist
;
}
else
{
this
->
lower_bound
=
upper_bound
;
this
->
upper_bound
=
lower_bound
;
this
->
flag_lower_bound_exist
=
flag_upper_bound_exist
;
this
->
flag_upper_bound_exist
=
flag_lower_bound_exist
;
}
// consistency
this
->
rates_of_change
=
rates_of_change
;
this
->
flag_rates_of_change_exist
=
flag_rates_of_change_exist
;
flag_value_got_inconsistence
=
false
;
// TODO: Changes of Other Sensors (e.g. Environment Temperature Sensor)
}
ConfidenceModule
::
ConfidenceModule
(
float
lower_bound
,
bool
flag_lower_bound_exist
,
float
upper_bound
,
bool
flag_upper_bound_exist
,
float
rates_of_change
,
bool
flag_rates_of_change_exist
)
{
set_name
(
NO_NAME
);
initialize_confidence_validator
(
lower_bound
,
flag_lower_bound_exist
,
upper_bound
,
flag_upper_bound_exist
,
rates_of_change
,
flag_rates_of_change_exist
);
}
ConfidenceModule
::
ConfidenceModule
(
char
*
name
,
float
lower_bound
,
bool
flag_lower_bound_exist
,
float
upper_bound
,
bool
flag_upper_bound_exist
,
float
rates_of_change
,
bool
flag_rates_of_change_exist
)
{
set_name
(
name
);
initialize_confidence_validator
(
lower_bound
,
flag_lower_bound_exist
,
upper_bound
,
flag_upper_bound_exist
,
rates_of_change
,
flag_rates_of_change_exist
);
}
bool
ConfidenceModule
::
validate_confidence
(
float
input
/*, HistoryModule* historyModule*/
)
{
bool
flag_confidence
=
true
;
// bounds
if
(
flag_lower_bound_exist
&&
input
<
lower_bound
)
{
flag_confidence
=
false
;
// printf("lb\ninput = %f\n", input);
}
if
(
flag_upper_bound_exist
&&
input
>
upper_bound
)
{
flag_confidence
=
false
;
// printf("ub\n");
}
// rates_of_change
float
trend_abs
=
.0
;
// TODO: time_unites and time_base should be configurable and saved for the
// object
// unsigned int time_units = 2;
bool
got_trend
=
false
;
// XXX historyModule->get_history_trend_absolutely(&trend_abs,
// time_units, TB_SECONDS);
if
(
got_trend
)
{
if
(
trend_abs
>
rates_of_change
)
{
flag_confidence
=
false
;
// printf("trend\n");
// VERSUCH
if
(
flag_value_got_inconsistence
==
false
)
{
// printf("setze flag\n");
flag_value_got_inconsistence
=
true
;
value_before_value_got_inconsistence
=
0
;
// XXX historyModule->get_value_ago(time_units);
}
}
}
else
{
// printf("no trend\n");
}
if
(
flag_value_got_inconsistence
)
{
// TODO: nicht hardcoded
float
seconds
=
20
;
// printf("tradition\n");
if
(
input
==
value_before_value_got_inconsistence
)
{
flag_value_got_inconsistence
=
false
;
}
else
if
(
input
<
value_before_value_got_inconsistence
)
{
if
(
input
>=
value_before_value_got_inconsistence
-
rates_of_change
*
seconds
)
{
flag_value_got_inconsistence
=
false
;
}
else
{
flag_confidence
=
false
;
}
}
else
if
(
input
>
value_before_value_got_inconsistence
)
{
if
(
input
<=
value_before_value_got_inconsistence
+
rates_of_change
*
seconds
)
{
flag_value_got_inconsistence
=
false
;
}
else
{
flag_confidence
=
false
;
}
}
else
{
flag_confidence
=
false
;
}
}
confidence
=
flag_confidence
;
return
confidence
;
}
bool
ConfidenceModule
::
get_confidence
()
{
return
confidence
;
}
void
ConfidenceModule
::
set_lower_bound
(
float
lower_bound
)
{
this
->
lower_bound
=
lower_bound
;
}
float
ConfidenceModule
::
get_lower_bound
()
{
return
lower_bound
;
}
void
ConfidenceModule
::
set_flag_lower_bound_exist
(
bool
flag
)
{
this
->
flag_lower_bound_exist
=
flag
;
}
bool
ConfidenceModule
::
get_flag_lower_bound_exist
()
{
return
flag_lower_bound_exist
;
}
void
ConfidenceModule
::
set_upper_bound
(
float
upper_bound
)
{
this
->
upper_bound
=
upper_bound
;
}
float
ConfidenceModule
::
get_upper_bound
()
{
return
upper_bound
;
}
void
ConfidenceModule
::
set_flag_upper_bound_exist
(
bool
flag
)
{
this
->
flag_upper_bound_exist
=
flag
;
}
bool
ConfidenceModule
::
get_flag_upper_bound_exist
()
{
return
flag_upper_bound_exist
;
}
void
ConfidenceModule
::
set_rates_of_change
(
float
rates
)
{
this
->
rates_of_change
=
rates
;
}
float
ConfidenceModule
::
get_rates_of_change
()
{
return
rates_of_change
;
}
void
ConfidenceModule
::
set_flag_rates_of_change_exist
(
bool
flag
)
{
this
->
flag_rates_of_change_exist
=
flag
;
}
bool
ConfidenceModule
::
get_flag_rates_of_change_exist
()
{
return
flag_rates_of_change_exist
;
}
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Sat, Jun 7, 4:31 PM (4 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
150209
Default Alt Text
ConfidenceModule.cpp (5 KB)
Attached To
Mode
R20 SoC_Rosa_repo
Attached
Detach File
Event Timeline
Log In to Comment