+
+class CR(BeeSurePkt):
+ pass
+
+
+class FIND(BeeSurePkt):
+ pass
+
+
+class FLOWER(BeeSurePkt):
+ OUT_KWARGS = (("number", int, 1),)
+
+ def out_encode(self) -> str:
+ self.number: int
+ return str(self.number)
+
+
+class ICCID(BeeSurePkt):
+ pass
+
+
+class LK(BeeSurePkt):
+ RESPOND = Respond.INL
+
+ def in_decode(self, *args: str) -> None:
+ numargs = len(args)
+ if numargs > 0:
+ self.step = args[0]
+ if numargs > 1:
+ self.tumbling_number = args[1]
+ if numargs > 2:
+ self.battery_percentage = args[2]
+
+ def in_encode(self) -> str:
+ return "LK"
+
+
+class LZ(BeeSurePkt):
+ OUT_KWARGS = (("language", int, 1), ("timezone", int, 0))
+
+ def out_encode(self) -> str:
+ return f"{self.language},{self.timezone}"
+
+
+class MESSAGE(BeeSurePkt):
+ OUT_KWARGS = (("message", str, ""),)
+
+ def out_encode(self) -> str:
+ return str(self.message.encode("utf_16_be").hex())
+
+
+class MONITOR(BeeSurePkt):
+ pass
+
+
+class _PHB(BeeSurePkt):
+ OUT_KWARGS: Tuple[Tuple[str, Callable[[Any], Any], Any], ...] = (
+ ("entries", pblist, []),
+ )
+
+ def out_encode(self) -> str:
+ self.entries: List[Tuple[str, str]]
+ return ",".join(
+ [
+ ",".join((num, name.encode("utf_16_be").hex()))
+ for name, num in self.entries
+ ]
+ )
+
+
+class PHB(_PHB):
+ pass
+
+
+class PHB2(_PHB):
+ pass
+
+
+class POWEROFF(BeeSurePkt):
+ pass
+
+
+class RESET(BeeSurePkt):
+ pass
+
+
+class SOS(BeeSurePkt):
+ OUT_KWARGS = (("phonenumbers", l3str, ["", "", ""]),)
+
+ def out_encode(self) -> str:
+ self.phonenumbers: List[str]
+ return ",".join(self.phonenumbers)
+
+
+class SOS1(_SET_PHONE):
+ pass
+
+
+class SOS2(_SET_PHONE):
+ pass
+
+
+class SOS3(_SET_PHONE):
+ pass
+
+
+class TK(BeeSurePkt):
+ BINARY = True
+ RESPOND = Respond.INL
+
+ def in_decode(self, *args: Any) -> None:
+ assert len(args) == 1 and isinstance(args[0], bytes)
+ self.amr_data = (
+ args[0]
+ .replace(b"}*", b"*")
+ .replace(b"},", b",")
+ .replace(b"}[", b"[")
+ .replace(b"}]", b"]")
+ .replace(b"}}", b"}")
+ )
+
+ def out_encode(self) -> str:
+ return "1" # 0 - receive failure, 1 - receive success