Source code for bluetooth_clocks.devices.qingping

"""Bluetooth clock support for Qingping clocks."""
from __future__ import annotations

from struct import pack
from time import localtime
from uuid import UUID

from bluetooth_clocks import BluetoothClock


[docs] class CGC1(BluetoothClock): """Bluetooth clock support for the Qingping BT Clock Lite (CGC1).""" DEVICE_TYPE = "Qingping BT Clock Lite" SERVICE_UUID = UUID("22210000-554a-4546-5542-46534450464d") """The UUID of the service used to write the time.""" CHAR_UUID = UUID("00000001-0000-1000-8000-00805f9b34fb") """The UUID of the characteristic used to write the time.""" TIME_GET_FORMAT = None """The Qingping BT Clock Lite doesn't support reading the time.""" TIME_SET_FORMAT = "<BBL" """The format string to convert a time to bytes written to the device. This starts with two bytes, followed by an unsigned long in little-endian format. """ WRITE_WITH_RESPONSE = True """We use write with response to write the time to the Qingping BT Clock Lite. Note: The device also supports write without response. """ LOCAL_NAME = "Qingping BT Clock Lite" """The local name used to recognize this type of device.""" LOCAL_NAME_STARTS_WITH = False """The local name should exactly match `LOCAL_NAME`."""
[docs] def get_bytes_from_time( self, timestamp: float, ampm: bool = False, ) -> bytes: """Generate the bytes to set the time on the Qingping BT Clock Lite. Args: timestamp (float): The time encoded as a Unix timestamp. ampm (bool): ``True`` if the device should show the time with AM/PM, ``False`` if it should use 24-hour format. The Qingping BT Clock Lite ignores this argument, as it doesn`t support this option. Returns: bytes: The bytes needed to set the time of the device to `timestamp`. """ return pack( self.TIME_SET_FORMAT, 0x05, 0x09, int(timestamp + localtime(timestamp).tm_gmtoff), )