#include "measurement.hh" using namespace std ; /*** Constructeurs ***/ Measurement::Measurement(const AccessPoint *_ap, const vector &_ss_list) { ap = (AccessPoint *) _ap ; ss_list = _ss_list ; ss_list.reserve(10) ; update_average_ss() ; } Measurement::Measurement(const Measurement &m) { ap = m.ap ; ss_list = m.ss_list ; average_ss = m.average_ss ; } /* * Destructor * ap and mobile are not deleted. */ Measurement::~Measurement() { ss_list.clear() ; } /*** Accesseurs écriture ***/ void Measurement::update_average_ss() { average_ss = 0 ; for (vector::iterator i = ss_list.begin() ; i != ss_list.end() ; ++i) { float ss_mwatts = pow(10, (float) *i / 10.0) + (ss_list.size() * pow(10, average_ss / 10.0)) ; average_ss = 10 * log10(ss_mwatts / ss_list.size()) ; } } 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()) ; } void Measurement::set_ss_list(const std::vector &_ss_list) { ss_list = _ss_list ; update_average_ss() ; } /* * Reinitialises the Measurement * ap and mobile are not deleted, only initialised at NULL. */ void Measurement::clear() { ss_list.clear() ; average_ss = 0 ; ap = NULL ; } /*** Opérateurs ***/ const Measurement& Measurement::operator=(const Measurement &m) { if (this == &m) return *this ; ap = m.ap ; ss_list = m.ss_list ; average_ss = m.average_ss ; return *this ; } bool Measurement::operator==(const Measurement &m) const { if (this == &m) return true ; return ap == m.ap && ss_list == m.ss_list && average_ss == m.average_ss ; } ostream &operator<<(ostream &os, const Measurement &m) { // MAC address os << "AP: " << (m.ap != NULL ? m.ap->get_mac_addr() : "Unknown_AP") << ": " ; // List of SS if (m.ss_list.size() == 0) os << "No values" ; else for (vector::const_iterator i = m.ss_list.begin() ; i != m.ss_list.end() ; ++i) { os << *i ; if (i != m.ss_list.end() - 1) os << ";" ; } os << " [AVG=" << m.average_ss << "]" ; return os ; }