owlps/GuiNuMo-server/referencepoint.cc

84 lines
1.7 KiB
C++

#include "referencepoint.hh"
float ReferencePoint::getSsSquareDistance(const vector<Measurement> &m)const
{
unsigned int i, j;
float ret = 0;
bool found;
for (i = 0 ; i < m.size() ; i++)
{
j = 0;
found = false;
while((j < measurement_list.size())&&(found == false))
{
if(measurement_list[j].getMacAddr() == m[i].getMacAddr())
{
found = true;
ret += measurement_list[j].getSsSquareDistance(m[i].getAverage());
}
j++;
}
}
return ret;
}
void ReferencePoint::addMeasurement(const string &mac_a, const int &value)
{
unsigned int i;
Measurement m;
bool inserted = false;
for (i = 0 ; i < measurement_list.size() ; i++)
if(measurement_list[i].getMacAddr() == mac_a)
{
measurement_list[i].addSsValue(value);
inserted = true;
break;
}
if(inserted == false)
{
m.setMacAddr(mac_a);
m.addSsValue(value);
measurement_list.push_back(m);
}
}
ReferencePoint ReferencePoint::operator=(const ReferencePoint &rp)
{
if(this == &rp)
return *this;
coordinates = rp.coordinates;
measurement_list = rp.measurement_list;
return *this;
}
ostream &operator<<(ostream &os, ReferencePoint &rp)
{
unsigned int i;
os << rp.coordinates << endl;
if(rp.measurement_list.size() == 0)
os << "No measurements" << endl;
else
for (i = 0 ; i < rp.measurement_list.size() ; i++)
os << rp.measurement_list[i] << endl;
return os;
}
bool ReferencePoint::getPowerForAp(const string &ap_mac, float *p)const
{
unsigned int i;
for (i = 0 ; i < measurement_list.size() ; i++)
if(measurement_list[i].getMacAddr() == ap_mac)
{
*p = measurement_list[i].getAverage();
return true;
}
return false;
}