Beispiel #1
0
    def recMsgTypeRpdCapabilitiesRspCb(self, halrspmsg):
        try:
            # Check the status
            if halrspmsg.msg.Rsp.Status != HalCommon_pb2.SUCCESS:
                # yes, we recv a error message from HAL
                self.logger.warning("Receive a hal fail message:%s" %
                                    halrspmsg.msg)
                return False

            cfg_rsp = t_RcpMessage()
            cfg_rsp.ParseFromString(halrspmsg.msg.CfgMsgPayload)
            if cfg_rsp.RcpDataResult != t_RcpMessage.RCP_RESULT_OK:
                # yes we recv a error msg from driver
                self.logger.warning("Recv a driver fail message:%s" %
                                    str(cfg_rsp))
                return False
            rcp_rpd_cap = cfg_rsp.RpdDataMessage.RpdData.RpdCapabilities
            if not self.valid_rpd_cap(rcp_rpd_cap):
                self.logger.debug(
                    "Receive invalid RpdCapabilities rsp from driver")
                return False
            if not self.rpd_cap:
                self.rpd_cap = t_RpdCapabilities()
            self.rpd_cap.CopyFrom(rcp_rpd_cap)
            self.logger.debug("Receive RpdCapabilities rsp from driver")
            return True
        except Exception as e:
            self.logger.warning("cap fail %s", str(e))
            return False
Beispiel #2
0
 def notifyRpdCapabilites(self):
     """
     Notify MsgTypeRpdCapabilities to interrested Module Client.
     """
     rpd_cap = t_RpdCapabilities()
     self.dummy_rpd_cap(rpd_cap)
     self.sendNotificationMsg(HalConfiMsg.MsgTypeRpdCapabilities,
                              rpd_cap.SerializeToString())
     self.logger.debug("notifyRpdCapabilities to interrested module client")
Beispiel #3
0
    def valid_rpd_cap(self, rcp_rpd_cap):
        # check the instance
        if not isinstance(rcp_rpd_cap, t_RpdCapabilities):
            return False
        # check it is not the default value
        default_cap = t_RpdCapabilities()
        GCPObject.default_gpb(default_cap)
        if rcp_rpd_cap == default_cap:
            return False

        return True
Beispiel #4
0
 def recvRpdCapabilities(self, ntfMsg):
     rpd_cap = t_RpdCapabilities()
     rpd_cap.ParseFromString(ntfMsg)
     if not self.valid_rpd_cap(rpd_cap):
         self.logger.warning(
             "ProvMgr receive invalid rpdCapabilities notification from driver"
         )
         return
     self.rpd_cap = rpd_cap
     self.logger.debug("Receive rpdCapabilities notification:  %s",
                       str(self.rpd_cap))
     return
Beispiel #5
0
    def test_trees_merge_conflict(self):
        data = RPD_DB()

        caps = t_RpdCapabilities()
        caps.NumBdirPorts = 5
        caps.NumDsRfPorts = 6

        data.set_val(['cfg', 'RpdCapabilities'], caps)

        # Create second instance with conflict
        caps2 = t_RpdCapabilities()
        caps2.NumDsRfPorts = 7
        caps2.NumTenGeNsPorts = 8

        # Merge tree to DB
        data.merge_from_tree(['cfg', 'RpdCapabilities'], caps2)

        value = data.get_val(['cfg', 'RpdCapabilities'])
        self.assertEqual(value.NumBdirPorts, 5)
        self.assertEqual(value.NumDsRfPorts, 7)
        self.assertEqual(value.NumTenGeNsPorts, 8)
        self.assertEqual(len(value.ListFields()), 3)
Beispiel #6
0
    def test_rpd_read_cap(self):
        # read cap
        msg_buff = "\x00\x00\x00\x01\x00\x99\x00\x06\x00\x95" \
            "\x00\x00\x00\xff\xff\xff\xff\x00\x00\x11\x8b\x01\x01\x00\x86\x09" \
            "\x00\x2f\x0a\x00\x02\x00\x00\x0b\x00\x01\x01\x32\x00\x18\x02\x00" \
            "\x00\x03\x00\x00\x04\x00\x00\x05\x00\x00\x06\x00\x00\x07\x00\x00" \
            "\x08\x00\x00\x14\x00\x00\x15\x00\x08\x01\x00\x02\x06\x1b\x32\x00" \
            "\x00\x09\x00\x51\x0a\x00\x02\x00\x01\x0b\x00\x01\x02\x3c\x00\x45" \
            "\x01\x00\x01\x01\x02\x00\x06\x00\x01\x02\x03\x04\x05\x03\x00\x10" \
            "\x20\x01\x05\x58\xff\x40\x0e\x15\x00\x00\x00\x00\x00\x00\x01\x00" \
            "\x04\x00\x01\x00\x05\x00\x0c\x48\x61\x72\x6d\x6f\x6e\x69\x63\x43" \
            "\x6f\x72\x65\x06\x00\x02\x06\x1b\x07\x00\x01\x01\x08\x00\x01\x00" \
            "\x0a\x00\x02\x00\x03"
        pkt = self.construct_rcp_pkt(buffer=msg_buff)
        self.process.orchestrator.rcp_process_channel.hal_ipc.rpd_cap = t_RpdCapabilities(
        )
        GCPObject.default_gpb(
            self.process.orchestrator.rcp_process_channel.hal_ipc.rpd_cap)
        self.process.orchestrator.rcp_process_channel.hal_ipc.rpd_cap.NumDsRfPorts = 2
        for portidx in range(1, 3):
            entry = self.process.orchestrator.rcp_process_channel.hal_ipc.rpd_cap.LcceChannelReachability.add(
            )
            entry.EnetPortIndex = 0
            entry.ChannelType = entry.CHANNEL_TYPE_2_DSOFDM_DOWNSTREAM_OFDM
            entry.RfPortIndex = portidx
            entry.StartChannelIndex = 0
            entry.EndChannelIndex = 0

        try:
            self.process.orchestrator.rcp_process_channel.hal_ipc.disconnected = False
            self.process.orchestrator.pkt_handler.handle_pkt(
                pkt=pkt, slave=self.session)
        except RcpHalClientError:
            pass
        self.assertEquals(
            len(self.process.orchestrator.rcp_process_channel.hal_ipc.
                msg_record.pkt_db), 1)
        self.assertEquals(
            len(self.process.orchestrator.rcp_process_channel.hal_ipc.
                msg_record.seq_num_mapping), 2)
        self.process.orchestrator.rcp_process_channel.hal_ipc.msg_record.MSG_TIMEOUT = 0
        self.process.orchestrator.rcp_process_channel.hal_ipc.msg_record._timeout_check_cb(
            arg="None")
        self.assertEquals(
            len(self.process.orchestrator.rcp_process_channel.hal_ipc.
                msg_record.pkt_db), 0)
        self.assertEquals(
            len(self.process.orchestrator.rcp_process_channel.hal_ipc.
                msg_record.seq_num_mapping), 0)
Beispiel #7
0
 def test_default_gpb(self):
     cap = t_RpdCapabilities()
     value = getattr(cap, "NumBdirPorts")
     GCPObject.default_gpb(cap)
     self.assertEqual(cap.NumBdirPorts, value)