pykirdy: Add reporting interval in report_mode

master
linuswck 2024-03-25 12:43:02 +08:00
parent a13c6fa86c
commit 898358f4e6
1 changed files with 7 additions and 3 deletions

View File

@ -691,16 +691,20 @@ class Kirdy:
await asyncio.sleep(0.1)
raise NoAckRecv
async def report_mode(self):
async def report_mode(self, report_interval = 0.0, buffer_size = 16384):
"""
Start reporting device status in json object
Start reporting device status in json object. Optional report_interval can be added to discard unwanted samples.
Only the latest status report received within the buffer is returned.
- polling interval: float/int (unit: seconds)
- buffer_size: int
"""
await self.device.set_active_report_mode(True)
self._report_mode_on = True
while self._report_mode_on:
await asyncio.sleep(report_interval)
async with self._cmd_lock:
yield await self._read_response()
yield await self._read_response(buffer_size)
await self.device.set_active_report_mode(False)