/* * © Copyright 2014 – Urheberrechtshinweis * Alle Rechte vorbehalten / All Rights Reserved * * Programmcode ist urheberrechtlich geschuetzt. * Das Urheberrecht liegt, soweit nicht ausdruecklich anders gekennzeichnet, bei Frank Ebner. * Keine Verwendung ohne explizite Genehmigung. * (vgl. § 106 ff UrhG / § 97 UrhG) */ #ifndef BEACONMODEL_H #define BEACONMODEL_H #include "../Beacon.h" #include "../BeaconMeasurement.h" #include "../../../geo/Point3.h" #include "../../../data/XMLserialize.h" #include /** * interface for signal-strength prediction models. * * the model is passed a MAC-address of an AP in question, and a position. * hereafter the model returns the RSSI for this AP at the questioned location. */ class BeaconModel : public XMLserialize { public: // /** get the given access-point's RSSI at the provided location */ // virtual float getRSSI(const LocatedAccessPoint& ap, const Point3 p) = 0; /** dtor */ virtual ~BeaconModel() {;} /** get a list of all APs known to the model */ virtual std::vector getAllBeacons() const = 0; /** * update the beacons signal strength using the current measurement * this could happen if the txp is not updated within the floorplan * * be careful and don't use fantasy values, this could ruin your localitions * completely */ virtual void updateBeacon(const BeaconMeasurement beacon) = 0; /** * get the RSSI expected at the given location (in meter) * for an beacon identified by the given MAC. * * if the model can not predict the RSSI for an beacon, it returns NaN! */ virtual float getRSSI(const MACAddress& accessPoint, const Point3 position_m) const = 0; }; #endif // BEACONMODEL_H