fix locator building and save ssid for each station
This commit is contained in:
parent
06203e6cca
commit
cb71cf479a
1 changed files with 13 additions and 10 deletions
|
@ -39,16 +39,17 @@ class LocatorStations:
|
||||||
self.stations = []
|
self.stations = []
|
||||||
self.stations_lookup = {}
|
self.stations_lookup = {}
|
||||||
|
|
||||||
def get_or_create(self, bssid, frequency):
|
def get_or_create(self, bssid, ssid, frequency):
|
||||||
station_id = self.stations_lookup.get(bssid, None)
|
station_id = self.stations_lookup.get((bssid, ssid), None)
|
||||||
if station_id is not None:
|
if station_id is not None:
|
||||||
station = self.stations[station_id]
|
station = self.stations[station_id]
|
||||||
station.frequencies.add(frequency)
|
station.frequencies.add(frequency)
|
||||||
else:
|
else:
|
||||||
station = LocatorStation(bssid, set((frequency, )))
|
station = LocatorStation(bssid, ssid, set((frequency, )))
|
||||||
self.stations_lookup[bssid] = len(self.stations)
|
station_id = len(self.stations)
|
||||||
self.stations.append(LocatorStation(bssid, set((frequency, ))))
|
self.stations_lookup[(bssid, ssid)] = station_id
|
||||||
return station
|
self.stations.append(station)
|
||||||
|
return station_id
|
||||||
|
|
||||||
|
|
||||||
class LocatorSpace:
|
class LocatorSpace:
|
||||||
|
@ -69,9 +70,10 @@ class LocatorPoint(namedtuple('LocatorPoint', ('x', 'y', 'values'))):
|
||||||
def convert_scan(cls, scan, stations: LocatorStations):
|
def convert_scan(cls, scan, stations: LocatorStations):
|
||||||
values = {}
|
values = {}
|
||||||
for scan_value in scan:
|
for scan_value in scan:
|
||||||
station_id = stations.get_or_create(scan_value['bssid'], scan_value['frequency'])
|
station_id = stations.get_or_create(scan_value['bssid'], scan_value['ssid'], scan_value['frequency'])
|
||||||
# todo: convert to something more or less linear
|
# todo: convert to something more or less linear
|
||||||
values[station_id] = scan_value['level']
|
values[station_id] = scan_value['level']
|
||||||
|
return values
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def convert_scans(cls, scans, stations: LocatorStations):
|
def convert_scans(cls, scans, stations: LocatorStations):
|
||||||
|
@ -100,7 +102,7 @@ class LocatorPoint(namedtuple('LocatorPoint', ('x', 'y', 'values'))):
|
||||||
if not isinstance(data, list):
|
if not isinstance(data, list):
|
||||||
raise cls.invalid_scan
|
raise cls.invalid_scan
|
||||||
for scan in data:
|
for scan in data:
|
||||||
cls.validate_scan(data)
|
cls.validate_scan(scan)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def validate_scan(cls, data):
|
def validate_scan(cls, data):
|
||||||
|
@ -127,9 +129,10 @@ class LocatorPoint(namedtuple('LocatorPoint', ('x', 'y', 'values'))):
|
||||||
|
|
||||||
|
|
||||||
class LocatorStation:
|
class LocatorStation:
|
||||||
def __init__(self, bssid, frequencies=()):
|
def __init__(self, bssid, ssid, frequencies=()):
|
||||||
self.bssid = bssid
|
self.bssid = bssid
|
||||||
|
self.ssid = ssid
|
||||||
self.frequencies = set(frequencies)
|
self.frequencies = set(frequencies)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return 'LocatorStation(%r, frequencies=%r)' % (self.bssid, self.frequencies)
|
return 'LocatorStation(%r, %r, frequencies=%r)' % (self.bssid, self.ssid, self.frequencies)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue