#ifndef BEACONOBSERVATION_H
#define BEACONOBSERVATION_H

#include "MACAddress.h"
#include <vector>


/** one observed AP and its signal strength */
struct BeaconObservationEntry {

	/** the timestamp this beacon was discovered at */
	uint64_t ts;

	/** the beacon's mac address */
	std::string mac;

	/** the beacon's rssi */
	int rssi;

	BeaconObservationEntry() : ts(0), mac(), rssi(0) {;}
	BeaconObservationEntry(const uint64_t ts, const std::string& mac, const int rssi) : ts(ts), mac(mac), rssi(rssi) {;}

};

/** all APs observed during one scan */
struct BeaconObservation {

	std::vector<BeaconObservationEntry> entries;

	void removeOld(uint64_t latestTS) {
		auto lambda = [latestTS] (const BeaconObservationEntry& e) {
			uint64_t age = latestTS - e.ts;
			return age > 1000*3;
		};
		entries.erase(std::remove_if(entries.begin(), entries.end(), lambda), entries.end());
	}

};


#endif // BEACONOBSERVATION_H
