Source code for canopen.timestamp
import time
import struct
from typing import Optional
# 1 Jan 1984
OFFSET = 441763200
ONE_DAY = 60 * 60 * 24
TIME_OF_DAY_STRUCT = struct.Struct("<LH")
[docs]
class TimeProducer:
"""Produces timestamp objects."""
#: COB-ID of the SYNC message
cob_id = 0x100
def __init__(self, network):
self.network = network
[docs]
def transmit(self, timestamp: Optional[float] = None):
"""Send out the TIME message once.
:param float timestamp:
Optional Unix timestamp to use, otherwise the current time is used.
"""
delta = timestamp or time.time() - OFFSET
days, seconds = divmod(delta, ONE_DAY)
data = TIME_OF_DAY_STRUCT.pack(int(seconds * 1000), int(days))
self.network.send_message(self.cob_id, data)