예제 #1
0
    def parse(s):
        channel_header = ChannelHeader.parse(s)
        channel_index = s.read("uint:16")
        rx_level = s.read("int:8")
        link_budget = s.read("uint:8")
        target_rx_level = s.read("uint:8")
        nls = s.read("bool")
        missed = s.read("bool")
        retry = s.read("bool")
        unicast = s.read("bool")
        _ = s.read("pad:4")
        fifo_token = s.read("uint:8")
        seq_nr = s.read("uint:8")
        response_to = CT.parse(s)
        addressee = Addressee.parse(s)

        return Status(channel_header=channel_header,
                      channel_index=channel_index,
                      rx_level=rx_level,
                      link_budget=link_budget,
                      target_rx_level=target_rx_level,
                      nls=nls,
                      missed=missed,
                      retry=retry,
                      unicast=unicast,
                      fifo_token=fifo_token,
                      seq_nr=seq_nr,
                      response_to=response_to,
                      addressee=addressee)
예제 #2
0
  def parse_alp_interface_status_d7asp(self, s):
    channel_header  = s.read("uint:8") # TODO parse
    channel_index   = struct.unpack(">h", s.read("bytes:2"))[0]
    rx_level        = s.read("int:8")
    link_budget     = s.read("uint:8")
    target_rx_level = s.read("uint:8")
    nls             = s.read("bool")
    missed          = s.read("bool")
    retry           = s.read("bool")
    unicast         = s.read("bool" )
    _               = s.read("pad:4")
    fifo_token      = s.read("uint:8")
    seq_nr          = s.read("uint:8")
    response_to     = CT.parse(s)
    addressee       = Addressee.parse(s)

    status = Status(channel_header=channel_header, channel_index=channel_index,
                    rx_level=rx_level, link_budget=link_budget,
                    target_rx_level=target_rx_level, nls=nls, missed=missed,
                    retry=retry, unicast=unicast, fifo_token=fifo_token,
                    seq_nr=seq_nr, response_to=response_to, addressee=addressee)

    return InterfaceStatus(
      operand=InterfaceStatusOperand(interface_id=0xd7, interface_status=status)
    )
예제 #3
0
    def parse_alp_interface_status_d7asp(self, s):
        channel_header = ChannelHeader.parse(s)
        channel_index = struct.unpack(">h", s.read("bytes:2"))[0]
        rx_level = s.read("int:8")
        link_budget = s.read("uint:8")
        target_rx_level = s.read("uint:8")
        nls = s.read("bool")
        missed = s.read("bool")
        retry = s.read("bool")
        unicast = s.read("bool")
        _ = s.read("pad:4")
        fifo_token = s.read("uint:8")
        seq_nr = s.read("uint:8")
        response_to = CT.parse(s)
        addressee = Addressee.parse(s)

        status = Status(channel_header=channel_header,
                        channel_index=channel_index,
                        rx_level=rx_level,
                        link_budget=link_budget,
                        target_rx_level=target_rx_level,
                        nls=nls,
                        missed=missed,
                        retry=retry,
                        unicast=unicast,
                        fifo_token=fifo_token,
                        seq_nr=seq_nr,
                        response_to=response_to,
                        addressee=addressee)

        return InterfaceStatus(operand=InterfaceStatusOperand(
            interface_id=0xd7, interface_status=status))
예제 #4
0
    def parse_indirect_forward_action(self, b7, b6, s):
        interface_file_id = int(s.read("uint:8"))
        overload = b7
        overload_config = None
        if overload:
            # TODO we are assuming D7ASP interface here
            overload_config = Addressee.parse(s)

        return IndirectForwardAction(
            overload=overload,
            resp=b6,
            operation=IndirectForward(operand=IndirectInterfaceOperand(
                interface_file_id=interface_file_id,
                interface_configuration_overload=overload_config)))
예제 #5
0
 def parse(s):
     qos = QoS.parse(s)
     dorm_to = CT.parse(s)
     addressee = Addressee.parse(s)
     return Configuration(qos=qos, dorm_to=dorm_to, addressee=addressee)
예제 #6
0
 def parse(s):
   qos = QoS.parse(s)
   dorm_to = CT.parse(s)
   addressee = Addressee.parse(s)
   return Configuration(qos=qos, dorm_to=dorm_to, addressee=addressee)