def send_packet(self, packet, sender=None): """ packet: packet to send sender: the fsm which sent the packet """ if self.do_send_packet(packet, packets.TURRET_RANGE_START, packets.TURRET_RANGE_END, self.turret_channel): return elif self.do_send_packet(packet, packets.PIC32_RANGE_START, packets.PIC32_RANGE_END, self.pic_control_channel): return elif IS_HOST_DEVICE_PC and self.do_send_packet( packet, packets.SIMULATOR_RANGE_START, packets.SIMULATOR_RANGE_END, self.pic_control_channel): return elif self.do_send_packet(packet, packets.INTERBOT_RANGE_START, packets.INTERBOT_RANGE_END, self.interbot_channel): return elif self.do_send_packet(packet, packets.MEDIAPLAYER_RANGE_START, packets.MEDIAPLAYER_RANGE_END, self.mediaplayer_channel): return elif packet.TYPE >= packets.INTERBOT_RANGE_START and packet.TYPE < packets.INTERNAL_RANGE_END: # add the packet to send to the list of packets to dispatch logger.log_packet( packet, "ARM" + (":" + sender.name if sender is not None else "")) self.packet_queue.appendleft((packet, sender)) if len(self.packet_queue) == 1: Timer(self, 0, self.process_packets_and_dispatch).start()
def do_send_packet(self, packet, packet_range_start, packet_range_end, channel): if packet.TYPE >= packet_range_start and packet.TYPE < packet_range_end: if channel is not None and channel.connected: logger.log_packet(packet, "ARM") channel.write_packet(packet) else: logger.log("Channel for packet {} doesn't exist or isn't connected".format(packet.name)) return True return False
def do_send_packet(self, packet: packets.BasePacket, packet_range_start, packet_range_end, channel): if packet.TYPE >= packet_range_start and packet.TYPE < packet_range_end: if channel is not None and channel.connected: logger.log_packet(packet, "ARM") channel.write_packet(packet) else: logger.log( "Channel for packet {} doesn't exist or isn't connected". format(packet.name)) return True return False
def send_packet(self, packet, sender = None): """ packet: packet to send sender: the fsm which sent the packet """ if self.do_send_packet(packet, packets.TURRET_RANGE_START, packets.TURRET_RANGE_END, self.turret_channel): return elif self.do_send_packet(packet, packets.PIC32_RANGE_START, packets.PIC32_RANGE_END, self.pic_control_channel): return elif IS_HOST_DEVICE_PC and self.do_send_packet(packet, packets.SIMULATOR_RANGE_START, packets.SIMULATOR_RANGE_END, self.pic_control_channel): return elif self.do_send_packet(packet, packets.COLORDET_RANGE_START, packets.COLORDET_RANGE_END, self.colordetector): return elif self.do_send_packet(packet, packets.INTERBOT_RANGE_START, packets.INTERBOT_RANGE_END, self.interbot_channel): return elif packet.TYPE < packets.INTERNAL_RANGE_END: # add the packet to send to the list of packets to dispatch logger.log_packet(packet, "ARM" + (":" + sender.name if sender is not None else "")) self.packet_queue.appendleft((packet, sender)) Timer(self, 0, self.process_packets_and_dispatch).start()
def process(self, channel, packet): logger.log_packet(packet, channel.origin) packet.dispatch(self) self.packet_queue.appendleft((packet, None)) self.process_packets_and_dispatch()