from controlcore_python.Participant import Participant class IMessage: def SendMsg(client: Participant, msg): bufferSize =msg.Serialize(client.buffer) return client.SendBuffer(bufferSize) def Serialize(buffer): return 0 class NetworkIdMsg(IMessage): id = 0xA1 length = 2 def __init__(self, networkId): self.networkId = networkId def Serialize(self, buffer): ix = 0 buffer[ix] = NetworkIdMsg.id ix+=1 buffer[ix] = self.networkId ix+=1 return ix @staticmethod def Send(participant: Participant, networkId): msg = NetworkIdMsg(networkId) return IMessage.SendMsg(participant, msg) class ModelUrlMsg(IMessage): id = 0x90 def __init__(self, networkId, thingId, url): self.networkId = networkId self.thingId = thingId self.url = url def Serialize(self, buffer): ix = 0 buffer[ix] = ModelUrlMsg.id ix+=1 buffer[ix] = self.networkId ix+=1 buffer[ix] = self.thingId ix+=1 buffer[ix] = 0x3D # Dummy float16 value 1 ix+=1 buffer[ix] = 0x00 ix+=1 buffer[ix] = len(self.url) ix+=1 for c in self.url: buffer[ix] = ord(c) ix+=1 return ix @staticmethod def Send(participant, networkId, thingId, modelUrl): msg = ModelUrlMsg(networkId, thingId, modelUrl) return IMessage.SendMsg(participant, msg)