Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F1496800
AbstractionModule.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Size
5 KB
Referenced Files
None
Subscribers
None
AbstractionModule.cpp
View Options
#include
"AbstractionModule.h"
#include
"abstraction_interface.h"
#include
<stdio.h>
void
AbstractionModule
::
initialize_abstraction
(
Lookuptable
*
lut
,
unsigned
int
abstraction_method
)
{
this
->
abstraction_method
=
abstraction_method
;
num_of_lookuptables
=
0
;
for
(
unsigned
int
lut_ix
=
0
;
lut_ix
<
MAX_NUM_OF_LOOKUPTABLES
;
lut_ix
++
)
{
flag_lookuptable_exist
[
lut_ix
]
=
false
;
}
if
(
lut
!=
NULL
)
{
list_lookuptables
[
num_of_lookuptables
]
=
lut
;
flag_lookuptable_exist
[
num_of_lookuptables
]
=
true
;
lookuptable_to_use
=
num_of_lookuptables
;
num_of_lookuptables
++
;
}
}
AbstractionModule
::
AbstractionModule
(
Lookuptable
*
lut
,
unsigned
int
abstraction_method
)
{
set_name
(
NO_NAME
);
initialize_abstraction
(
lut
,
abstraction_method
);
}
AbstractionModule
::
AbstractionModule
(
char
*
name
,
Lookuptable
*
lut
,
unsigned
int
abstraction_method
)
{
set_name
(
name
);
initialize_abstraction
(
lut
,
abstraction_method
);
}
bool
AbstractionModule
::
set_abstraction_method
(
unsigned
int
abstraction_strategy
)
{
if
(
abstraction_strategy
<
NUM_OF_ABSTRACTIONS
)
{
this
->
abstraction_method
=
abstraction_strategy
;
return
true
;
}
return
false
;
}
unsigned
int
AbstractionModule
::
get_abstraction_method
()
{
return
abstraction_method
;
}
bool
AbstractionModule
::
add_lookuptable
(
Lookuptable
*
lut
)
{
if
(
num_of_lookuptables
<
MAX_NUM_OF_LOOKUPTABLES
&&
lut
!=
NULL
)
{
flag_lookuptable_exist
[
num_of_lookuptables
]
=
true
;
num_of_lookuptables
++
;
return
true
;
}
return
false
;
}
bool
AbstractionModule
::
get_flag_lookuptable_exist
(
unsigned
int
position
)
{
if
(
position
<
num_of_lookuptables
)
{
return
flag_lookuptable_exist
[
position
];
}
return
false
;
}
Lookuptable
*
AbstractionModule
::
get_lookuptable
(
unsigned
int
position
)
{
if
(
position
<
num_of_lookuptables
)
{
return
list_lookuptables
[
position
];
}
return
NULL
;
}
/*
bool Abstraction :: connect_with_lookuptable(unsigned int position, Lookuptable* lut) {
if(position < num_of_sensors) {
list_lookuptables_float[position] = lut;
return true;
}
return false;
}
void Abstraction :: set_num_of_slaveagents(unsigned int num_of_slaveagents) {
this->num_of_slaveagents = num_of_slaveagents;
}
unsigned int Abstraction :: get_num_of_slaveagents() {
return num_of_slaveagents;
}
void Abstraction :: set_num_of_sensors(unsigned int num_of_sensors) {
this->num_of_sensors = num_of_sensors;
}
unsigned int Abstraction :: get_num_of_sensors() {
return num_of_sensors;
}
bool Abstraction :: set_input_parameter(unsigned int position, int input_parameter) {
if(position < MAX_NUM_OF_INPUT_VALUES) {
flag_input_data_int_is_in_use[position] = true;
input_data_int[position] = input_parameter;
return true;
}
return false;
}
bool Abstraction :: set_input_parameter(unsigned int position, float input_parameter) {
if(position < MAX_NUM_OF_INPUT_VALUES) {
flag_input_data_float_is_in_use[position] = true;
input_data_float[position] = input_parameter;
return true;
}
return false;
}
bool Abstraction :: get_input_parameter(unsigned int position, int* input_parameter) {
if(position < MAX_NUM_OF_INPUT_VALUES) {
if(flag_input_data_int_is_in_use[position]) {
*input_parameter = input_data_int[position];
return true;
}
}
return false;
}
bool Abstraction :: get_input_parameter(unsigned int position, float* input_parameter) {
if(position < MAX_NUM_OF_INPUT_VALUES) {
if(flag_input_data_float_is_in_use[position]) {
*input_parameter = input_data_float[position];
return true;
}
}
return false;
}*/
bool
AbstractionModule
::
abstract
(
float
input
,
int
*
output
)
{
switch
(
abstraction_method
)
{
case
ABSTRACTION_METHOD_NOT_SPECIFIED
:
return
false
;
case
ABSTRACTION_LOOKUPTABLE
:
return
abstract_via_lookuptable
(
input
,
output
);
break
;
default
:
return
false
;
break
;
//TODO: interface
//default: return abstract_interface(abstraction_method, num_of_slaveagents, flag_input_data_int_is_in_use, input_data_int, num_of_sensors, flag_input_data_float_is_in_use, input_data_float); break;
}
/*
if(abstraction_method == ABSTRACTION_METHOD_NOT_SPECIFIED)
return false;
return abstract_data(abstraction_method, num_of_mounted_slaveagents, flag_input_data_int_is_in_use, input_data_int, num_of_mounted_sensors, flag_input_data_float_is_in_use, input_data_float);
*/
}
bool
AbstractionModule
::
abstract_via_lookuptable
(
float
input
,
int
*
output
)
{
if
(
list_lookuptables
[
lookuptable_to_use
]
->
get_lookuptable_is_correct_and_active
())
{
*
output
=
list_lookuptables
[
lookuptable_to_use
]
->
get_score
(
input
);
return
true
;
}
return
false
;
//dummy
}
/*
bool Abstraction :: add_score_to_input_data_lookuptable(unsigned int position, float lower_boundary, float upper_boundary, int score, bool flag_lower_boundary_exist, bool flag_upper_boundary_exist, bool flag_lower_boundary_included, bool flag_upper_boundary_included) {
if(flag_input_data_range_is_activated[position] == false) {
bool flag_found_empty_position = false;
for(unsigned int pos=0; pos<MAX_NUM_OF_INPUT_VALUES; pos++) {
}
}
return false;
}
*/
bool
AbstractionModule
::
abstract_via_lookuptables_and_condition_variable
()
{
return
true
;
}
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Sun, Mar 1, 8:59 PM (6 h, 59 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
279978
Default Alt Text
AbstractionModule.cpp (5 KB)
Attached To
Mode
R20 SoC_Rosa_repo
Attached
Detach File
Event Timeline
Log In to Comment