83 lines
1.6 KiB
C++
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;
|
|
}
|