owlps/owlps-positioning/measurement.cc

122 lines
1.8 KiB
C++
Raw Normal View History

#include "measurement.hh"
/*** Constructeurs ***/
Measurement::Measurement(const string &_mac_addr, const vector<int> &_ss_list)
{
mac_addr = _mac_addr ;
ss_list = ssl ;
update_average_ss() ;
}
Measurement::Measurement(const Measurement &m)
{
mac_addr = m.mac_addr ;
ss_list = m.ss_list ;
average_ss = m.average_ss ;
}
Measurement::~Measurement()
{
ss_list.clear() ;
}
/*** Accesseurs lecture ***/
string Measurement::get_mobile_mac_addr() const
{
return mobile_mac_addr ;
}
string Measurement::get_ap_mac_addr() const
{
return ap_mac_addr ;
}
vector<int> Measurement::get_ss_list() const
{
return ss_list ;
}
float Measurement::get_average_ss() const
{
return average_ss ;
}
/*
float Measurement::get_ss_square_distance(const float &ss) const
{
return ((ss - average_ss) * (ss - average_ss)) ;
}
*/
/*** Accesseurs <20>criture ***/
void Measurement::update_average_ss()
{
average_ss = 0 ;
for (int i=0 ; i < ss_list ; i++)
{
float ss_mw =
pow(10, (float) ss_list[i] / 10.0) +
(ss_list.size() * pow(10, average_ss / 10.0)) ;
average_ss = 10 * log10(ss_mwatts / ss_list.size()) ;
}
}
void Measurement::set_mac_addr(const string &_mac_addr)
{
mac_addr = _mac_addr ;
}
void Measurement::add_ss(const int &ss)
{
float ss_mwatts =
pow(10, (float) ss / 10.0) +
(ss_list.size() * pow(10, average_ss / 10.0)) ;
ss_list.push_back(ss) ;
average_ss = 10 * log10(ss_mwatts / ss_list.size()) ;
}
/*** Op<4F>rateurs ***/
ostream &operator<<(ostream &os, const Measurement &m)
{
unsigned int i;
os << m.mac_addr << "->";
if (m.ss_list.size() == 0)
os << "No values";
else
for (i = 0 ; i < m.ss_list.size() ; i++)
{
os << m.ss_list[i];
if (i < m.ss_list.size() - 1)
os << ";";
}
os << " [AVG=" << m.average_ss << "]";
return os;
}