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 length = 6 def __init__(self, networkId, thingId, url): self.networkId = networkId self.thingId = thingId self.url = url def Serialize(self, buffer): buffer[0:ModelUrlMsg.length] = [ ModelUrlMsg.id, self.networkId, self.thingId, 0x3D, # Dummy float16 value 1 0x00, len(self.url) ] # Append the url string fullLength = ModelUrlMsg.length + len(self.url) buffer[ModelUrlMsg.length:fullLength] = \ [ord(c) for c in self.url] return fullLength # 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)