2010-01-12 00:31:22 +01:00
|
|
|
#ifndef _OWLPS_POSITIONING_STOCK_HH_
|
|
|
|
#define _OWLPS_POSITIONING_STOCK_HH_
|
|
|
|
|
|
|
|
#include "mobile.hh"
|
|
|
|
#include "accesspoint.hh"
|
2010-02-19 11:42:04 +01:00
|
|
|
#include "referencepoint.hh"
|
|
|
|
#include "calibrationrequest.hh"
|
2010-01-12 00:31:22 +01:00
|
|
|
|
2010-02-01 17:36:45 +01:00
|
|
|
#include <boost/tr1/unordered_map.hpp>
|
2010-02-19 11:42:04 +01:00
|
|
|
#include <boost/tr1/unordered_set.hpp>
|
2010-01-12 00:31:22 +01:00
|
|
|
|
2010-01-16 12:23:07 +01:00
|
|
|
/// Storage class
|
2010-01-12 00:31:22 +01:00
|
|
|
class Stock
|
|
|
|
{
|
|
|
|
private:
|
2010-01-16 12:23:07 +01:00
|
|
|
/// List of known Mobile
|
2010-01-12 00:31:22 +01:00
|
|
|
static std::tr1::unordered_map<std::string, Mobile> mobiles ;
|
2010-01-16 12:23:07 +01:00
|
|
|
|
|
|
|
/// List of known AccessPoint
|
2010-01-12 00:31:22 +01:00
|
|
|
static std::tr1::unordered_map<std::string, AccessPoint> aps ;
|
|
|
|
|
2010-02-19 11:42:04 +01:00
|
|
|
/// List of known ReferencePoint
|
|
|
|
static std::tr1::unordered_set<ReferencePoint> reference_points ;
|
|
|
|
|
|
|
|
/// List of known CalibrationRequest
|
|
|
|
static std::tr1::unordered_set<CalibrationRequest> calibration_requests ;
|
|
|
|
|
2010-01-12 00:31:22 +01:00
|
|
|
public:
|
2010-01-16 12:23:07 +01:00
|
|
|
/// Read the Mobile corresponding to a given MAC address
|
2010-01-12 00:31:22 +01:00
|
|
|
static const Mobile& get_mobile(const std::string &mac) ;
|
2010-01-16 12:23:07 +01:00
|
|
|
/// Get a reference to the Mobile corresponding to a given MAC address
|
2010-01-12 00:31:22 +01:00
|
|
|
static Mobile& getw_mobile(const std::string &mac) ;
|
2010-01-16 12:23:07 +01:00
|
|
|
|
|
|
|
/// Read the AccessPoint corresponding to a given MAC address
|
2010-01-12 00:31:22 +01:00
|
|
|
static const AccessPoint& get_ap(const std::string &mac) ;
|
2010-01-16 12:23:07 +01:00
|
|
|
/// Get a reference to the AccessPoint corresponding to a given MAC address
|
2010-01-12 00:31:22 +01:00
|
|
|
static AccessPoint& getw_ap(const std::string &mac) ;
|
2010-02-02 17:34:58 +01:00
|
|
|
|
2010-02-19 11:42:04 +01:00
|
|
|
/// Look for a ReferencePoint and create it if it does not exist
|
|
|
|
static const ReferencePoint&
|
|
|
|
find_create_reference_point(const ReferencePoint &point) ;
|
|
|
|
|
|
|
|
/// Get a reference to a CalibrationRequest
|
|
|
|
static const CalibrationRequest&
|
|
|
|
find_create_calibration_request(const CalibrationRequest &request) ;
|
|
|
|
|
2010-02-02 17:34:58 +01:00
|
|
|
/// Deletes all elements in all attributes
|
|
|
|
static void clear(void) ;
|
2010-01-12 00:31:22 +01:00
|
|
|
} ;
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-02-19 11:42:04 +01:00
|
|
|
/* *** Accessors *** */
|
2010-01-12 00:31:22 +01:00
|
|
|
|
|
|
|
|
2010-01-16 12:23:07 +01:00
|
|
|
/**
|
|
|
|
* If the Mobile corresponding to \em mac does not exist, it is created.
|
|
|
|
* @param mac The MAC address of the Mobile to search for. It must be a
|
|
|
|
* valid MAC address, as no check is performed.
|
|
|
|
* @return A modifiable reference to the Mobile.
|
|
|
|
*/
|
2010-01-12 00:31:22 +01:00
|
|
|
inline Mobile& Stock::getw_mobile(const std::string &mac)
|
|
|
|
{
|
|
|
|
return mobiles[mac] ;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-01-16 12:23:07 +01:00
|
|
|
/**
|
|
|
|
* If the AccessPoint corresponding to \em mac does not exist, it is
|
|
|
|
* created.
|
|
|
|
* @param mac The MAC address of the AccessPoint to search for.
|
|
|
|
* It must be a valid MAC address, as no check is performed.
|
|
|
|
* @return A modifiable reference to the AccessPoint.
|
|
|
|
*/
|
2010-01-12 00:31:22 +01:00
|
|
|
inline AccessPoint& Stock::getw_ap(const std::string &mac)
|
|
|
|
{
|
|
|
|
return aps[mac] ;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif // _OWLPS_POSITIONING_STOCK_HH_
|