owlps/GuiNuMo-server/referencepoint.cc

83 lines
1.6 KiB
C++

#include "referencepoint.hh"
float ReferencePoint::getSsSquareDistance(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(string mac_a, 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(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;
}