Lines Matching refs:self

64 …def __init__(self, transport, idx, trace, scanType, reportType, ownAddress, filterPolicy=ScanningF…  argument
65 self.transport = transport;
66 self.idx = idx;
67 self.trace = trace;
68 self.scanType = scanType;
69 self.reportType = reportType;
70 self.ownAddress = ownAddress;
71 self.filterPolicy = filterPolicy;
72 self.expectedReports = expectedReports;
73 self.expectedResponses = expectedResponses;
79 self.scanInterval = 120; # Scan Interval = 120 x 0.625 ms = 75.0 ms
80 self.scanWindow = 120; # Scan Window = 120 x 0.625 ms = 75.0 ms
82 self.counts = 0
83 self.reports = 0;
84 self.directReports = 0;
85 self.responses = 0;
86 self.deltas = [];
88 self.reportData = [];
89 self.reportAddress = None;
90 self.responseData = [];
91 self.responseAddress = None;
92 self.targetAddress = None;
94 self.firstTime = 0;
95 self.lastTime = 0;
96 self.pivot = 0;
98 def __verifyAndShowEvent(self, expectedEvent): argument
99 event = get_event(self.transport, self.idx, 200);
100 self.trace.trace(7, str(event));
103 def __commandCompleteEvent(self): argument
104 return self.__verifyAndShowEvent(Events.BT_HCI_EVT_CMD_COMPLETE);
106 def __scan_parameters(self): argument
107 …= le_set_scan_parameters(self.transport, self.idx, self.scanType, self.scanInterval, self.scanWind…
108 self.trace.trace(6, "LE Set Scan Parameters Command returns status: 0x%02X" % status);
109 return self.__commandCompleteEvent() and (status == 0);
111 def __scan_enable(self, enable): argument
112 … status = le_set_scan_enable(self.transport, self.idx, enable, ScanFilterDuplicate.DISABLE, 200);
113self.trace.trace(6, "LE Set Scan Enable Command (%s) returns status: 0x%02X" % ("Enabling" if enab…
114 while not self.__commandCompleteEvent():
118 def clear(self): argument
119 flush_events(self.transport, self.idx, 200);
124 def enable(self): argument
125 success = self.__scan_parameters();
126 return success and self.__scan_enable(Scan.ENABLE);
131 def disable(self): argument
132 self.clear();
133 return self.__scan_enable(Scan.DISABLE);
135 def __updateDeltas(self, count, thisTime, prevTime): argument
137 self.deltas += [thisTime - prevTime];
139 self.firstTime = thisTime;
141 def __handleReport(self, prevTime): argument
143 for event in get_event(self.transport, self.idx, 200, True):
148 if eventType == self.reportType:
149 self.reports += 1;
150 self.reportData = data[:];
151 self.reportAddress = address;
152 self.__updateDeltas(self.reports, event.time, prevTime);
155 self.responses += 1;
156 self.responseData = data[:];
157 self.responseAddress = address;
162 if eventType == self.reportType:
163 self.directReports += 1;
164 self.reportData = [];
165 self.reportAddress = address;
166 self.targetAddress = targetAddress;
167 self.__updateDeltas(self.directReports, event.time, prevTime);
172 def __monitorReports(self): argument
175 while max(self.reports, self.directReports, self.counts/2) < self.expectedReports:
177 if has_event(self.transport, self.idx, 200)[0]:
178 prevTime = self.__handleReport(prevTime);
180 if self.lastTime == 0:
181 self.lastTime = prevTime;
182 self.counts += 1;
184 def __monitorResponses(self): argument
187 while (max(self.reports, self.directReports, self.counts/2) < self.expectedReports) or \
188 (max(self.responses, self.reports/5, self.counts) < self.expectedResponses):
190 if has_event(self.transport, self.idx, 200)[0]:
191 prevTime = self.__handleReport(prevTime);
193 if self.lastTime == 0:
194 self.lastTime = prevTime;
195 self.counts += 1;
197 def __monitorReportTime(self): argument
205 while self.lastTime == 0:
207 if has_event(self.transport, self.idx, 200)[0]:
208 prevTime = self.__handleReport(prevTime);
210 self.lastTime = prevTime;
215 def monitor(self, timeBased=None): argument
216 self.deltas = [];
217 self.responses = 0;
218 self.reports = 0;
219 self.counts = 0;
221 self.firstTime = 0;
222 self.lastTime = 0;
225 self.__monitorReportTime();
226 elif self.expectedResponses is None:
227 self.__monitorReports();
229 self.__monitorResponses();
231 self.clear();
236 def qualifyReports(self, count, address=None, data=None): argument
237 if self.reports > 0:
238self.trace.trace(7, "Received %d %s Advertise reports." % (self.reports, self.reportType.name) );
239 if (self.reports > 1):
240self.trace.trace(7, "Advertise Events spacing in range [%d, %d] ms. with mean value %d ms. and std…
241 …(min(self.deltas), max(self.deltas), statistics.mean(self.deltas), statistics.pstdev(self.deltas))…
244self.trace.trace(5, "Reported address %s / Expected address %s" % (str(self.reportAddress), str(ad…
245 success = success and (self.reportAddress == address);
247 success = success and (self.reportData == data);
248 if not self.reportData == data:
249self.trace.trace(5, "Reported data: %s / Expected data: %s" % (self.reportData, data));
250 self.clear();
252 self.trace.trace(7, "Received no %s Advertise reports." % self.reportType.name);
254 return success and (self.reports >= count);
259 def qualifyDirectedReports(self, count, address=None, directAddress=None): argument
260 if self.directReports > 0:
261self.trace.trace(7, "Received %d %s directed Advertise reports." % (self.directReports, self.repor…
262 if (self.directReports > 1):
263self.trace.trace(7, "Mean distance between directed Advertise Events %d ms., std. deviation %.1f m…
264 (statistics.mean(self.deltas), statistics.pstdev(self.deltas)));
267self.trace.trace(5, "Reported address %s / Expected address %s" % (str(self.reportAddress), str(ad…
268 success = success and (self.reportAddress == address);
270self.trace.trace(5, "Reported direct address %s / Expected direct address %s" % (str(self.reportAd…
271 success = success and (self.targetAddress == directAddress);
272 self.clear();
274self.trace.trace(7, "Received no %s directed Advertise reports." % self.reportType.name);
276 return success and (self.directReports >= count);
281 def qualifyResponses(self, count, data=None): argument
282 if self.responses > 0:
283 self.trace.trace(7, "Received %d SCAN_RSP Advertise reports." % self.responses );
284 success = True if data is None else (self.responseData == data);
286 self.trace.trace(5, "Data MisMatch:");
287 self.trace.trace(5, self.responseData);
288 self.trace.trace(5, data);
289 self.clear();
291 self.trace.trace(7, "Received no SCAN_RSP Advertise reports.");
293 return success and (self.responses >= count);
298 def qualifyReportTime(self, count, time): argument
299 if self.reports > 0:
300self.trace.trace(7, "Received %d %s Advertise reports." % (self.reports, self.reportType.name) );
301 if (self.reports > 1):
302self.trace.trace(7, "Mean distance between Advertise Events %d ms., std. deviation %.1f ms." % \
303 (statistics.mean(self.deltas), statistics.pstdev(self.deltas)));
304self.trace.trace(7, "Advertising stopped after %d ms." % (self.lastTime - self.firstTime) );
305 success = time >= (self.lastTime - self.firstTime);
306 self.clear();
308 self.trace.trace(7, "Received no %s Advertise reports." % self.reportType.name);
310 return success and (self.reports >= count);
312 def discover(self, time, flags=None): argument
315 success = self.enable();
319 if has_event(self.transport, self.idx, 200)[0]:
320 event = get_event(self.transport, self.idx, 200);
359 self.responses += 1;
361 self.reports += 1;
367 success = self.disable();