X-Git-Url: http://www.average.org/gitweb/?p=loctrkd.git;a=blobdiff_plain;f=loctrkd%2Fbeesure.py;h=e782c736189ca5d74a3f0cc188c7973672660c13;hp=dcf16ba227fd7ca585baa9371595e19307917fe9;hb=2cf0fd9d215dda17eae4261ab7967367f6aa0028;hpb=6eff65f7b03bc66a479df0fd694250e1e0b7c5ae diff --git a/loctrkd/beesure.py b/loctrkd/beesure.py index dcf16ba..e782c73 100755 --- a/loctrkd/beesure.py +++ b/loctrkd/beesure.py @@ -43,6 +43,7 @@ __all__ = ( "Respond", ) +MODNAME = __name__.split(".")[-1] PROTO_PREFIX = "BS:" ### Deframer ### @@ -380,12 +381,12 @@ class _LOC_DATA(BeeSurePkt): self.latitude = p.lat * p.nors self.longitude = p.lon * p.eorw - def rectified(self) -> Report: + def rectified(self) -> Tuple[str, Report]: # self.gps_valid is supposed to mean it, but it does not. Perfectly # good looking coordinates, with ten satellites, still get 'V'. # I suspect that in reality, 'A' means "hint data is absent". if self.gps_valid or self.num_of_sats > 3: - return CoordReport( + return MODNAME, CoordReport( devtime=str(self.devtime), battery_percentage=self.battery_percentage, accuracy=self.positioning_accuracy, @@ -396,7 +397,7 @@ class _LOC_DATA(BeeSurePkt): longitude=self.longitude, ) else: - return HintReport( + return MODNAME, HintReport( devtime=str(self.devtime), battery_percentage=self.battery_percentage, mcc=self.mcc, @@ -679,3 +680,13 @@ def exposed_protos() -> List[Tuple[str, bool]]: for cls in CLASSES.values() if hasattr(cls, "rectified") ] + + +def make_response(cmd: str, imei: str, **kwargs: Any) -> Optional[BeeSurePkt]: + if cmd == "poweroff": + return POWEROFF.Out() + elif cmd == "refresh": + return MONITOR.Out() + elif cmd == "message": + return MESSAGE.Out(message=kwargs.get("txt", "Hello")) + return None