Пример #1
0
    def get_mconfig(
        cls,
        device: EnodebDeviceName = EnodebDeviceName.BAICELLS,
    ) -> mconfigs_pb2.EnodebD:
        mconfig = mconfigs_pb2.EnodebD()
        mconfig.bandwidth_mhz = 20
        # This earfcndl is actually unused, remove later
        mconfig.earfcndl = 44490
        mconfig.log_level = 1
        mconfig.plmnid_list = "00101"
        mconfig.pci = 260
        mconfig.allow_enodeb_transmit = False
        mconfig.tac = 1
        if device is EnodebDeviceName.BAICELLS_QAFB:
            # fdd config
            mconfig.fdd_config.earfcndl = 9211
        elif device is EnodebDeviceName.CAVIUM:
            # fdd config
            mconfig.fdd_config.earfcndl = 2405
        else:
            # tdd config
            mconfig.tdd_config.earfcndl = 39150
            mconfig.tdd_config.subframe_assignment = 2
            mconfig.tdd_config.special_subframe_pattern = 7

        return mconfig
Пример #2
0
def main():
    """
    Top-level function for enodebd
    """
    service = MagmaService('enodebd', mconfigs_pb2.EnodebD())
    logger.init()

    # Optionally pipe errors to Sentry
    sentry_init(service_name=service.name,
                sentry_mconfig=service.shared_mconfig.sentry_config)

    # State machine manager for tracking multiple connected eNB devices.
    state_machine_manager = StateMachineManager(service)

    # Statistics manager
    stats_mgr = StatsManager(state_machine_manager)
    stats_mgr.run()

    # Start TR-069 thread
    server_thread = Thread(
        target=tr069_server,
        args=(state_machine_manager, ),
        daemon=True,
    )
    server_thread.start()

    print_grpc_payload = service.config.get('print_grpc_payload', False)

    # Add all servicers to the server
    enodebd_servicer = EnodebdRpcServicer(
        state_machine_manager,
        print_grpc_payload,
    )
    enodebd_servicer.add_to_server(service.rpc_server)

    # Register function to get service status
    def get_enodebd_status():
        return get_service_status_old(state_machine_manager)

    service.register_get_status_callback(get_enodebd_status)

    # Register a callback function for GetOperationalStates service303 function
    def get_enodeb_operational_states() -> List[State]:
        return get_operational_states(
            state_machine_manager,
            service.mconfig,
            print_grpc_payload,
        )

    service.register_operational_states_callback(get_enodeb_operational_states)

    # Set eNodeBD iptables rules due to exposing public IP to eNodeB
    service.loop.create_task(set_enodebd_iptables_rule())

    # Run the service loop
    service.run()

    # Cleanup the service
    service.close()
Пример #3
0
 def test_service_cfg_parsing(self):
     """ Test the parsing of the service config file for enodebd.yml"""
     service = MagmaService('enodebd', mconfigs_pb2.EnodebD())
     service_cfg = service.config
     service_cfg_1 = self._get_service_config()
     service_cfg_1['web_ui_enable_list'] = []
     service_cfg_1[FreedomFiOneConfigurationInitializer.SAS_KEY][
         SASParameters.SAS_UID] = "INVALID_ID"
     service_cfg_1[FreedomFiOneConfigurationInitializer.SAS_KEY][
         SASParameters.SAS_CERT_SUBJECT] = "INVALID_CERT_SUBJECT"
     self.assertEqual(service_cfg, service_cfg_1)
Пример #4
0
 def test_service_cfg_parsing(self):
     """ Test the parsing of the service config file for enodebd.yml"""
     self.maxDiff = None
     service = MagmaService('enodebd', mconfigs_pb2.EnodebD())
     service_cfg = service.config
     service_cfg_1 = get_service_config()
     service_cfg_1['web_ui_enable_list'] = []
     service_cfg_1["prim_src"] = "GNSS"
     service_cfg_1[SAS_KEY][SASParameters.SAS_UID] = "INVALID_ID"
     service_cfg_1[SAS_KEY][
         SASParameters.SAS_CERT_SUBJECT] = "INVALID_CERT_SUBJECT"
     self.assertDictEqual(service_cfg, service_cfg_1)
Пример #5
0
 def test_service_cfg_parsing(self):
     """ Test the parsing of the service config file for enodebd.yml"""
     self.maxDiff = None
     service = MagmaService('enodebd', mconfigs_pb2.EnodebD())
     service_cfg = service.config
     service_cfg["sas"]["sas_server_url"] = TEST_SAS_URL
     service_cfg1 = _get_service_config()
     service_cfg1['web_ui_enable_list'] = []
     service_cfg1['prim_src'] = 'GNSS'
     service_cfg1[SAS_KEY][SASParameters.SAS_UID] = 'INVALID_ID'
     service_cfg1[SAS_KEY][
         SASParameters.SAS_CERT_SUBJECT] = 'INVALID_CERT_SUBJECT'
     service_cfg1['print_grpc_payload'] = False
     self.assertDictEqual(service_cfg, service_cfg1)
Пример #6
0
 def _get_mconfig(self) -> mconfigs_pb2.EnodebD:
     mconfig = mconfigs_pb2.EnodebD()
     mconfig.bandwidth_mhz = 20
     mconfig.special_subframe_pattern = 7
     mconfig.earfcndl = 44490
     mconfig.log_level = 1
     mconfig.plmnid_list = "00101"
     mconfig.pci = 260
     mconfig.allow_enodeb_transmit = False
     mconfig.subframe_assignment = 2
     mconfig.tac = 1
     # tdd config
     mconfig.tdd_config.earfcndl = 39150
     mconfig.tdd_config.subframe_assignment = 2
     mconfig.tdd_config.special_subframe_pattern = 7
     return mconfig
Пример #7
0
    def get_multi_enb_mconfig(
        cls,
    ) -> mconfigs_pb2.EnodebD:
        mconfig = mconfigs_pb2.EnodebD()
        mconfig.bandwidth_mhz = 20
        mconfig.special_subframe_pattern = 7
        # This earfcndl is actually unused, remove later
        mconfig.earfcndl = 44490
        mconfig.log_level = 1
        mconfig.plmnid_list = "00101"
        mconfig.pci = 260
        mconfig.allow_enodeb_transmit = False
        mconfig.subframe_assignment = 2
        mconfig.tac = 1

        # tdd config, unused because of multi-enb config
        mconfig.tdd_config.earfcndl = 39150
        mconfig.tdd_config.subframe_assignment = 2
        mconfig.tdd_config.special_subframe_pattern = 7

        id1 = '120200002618AGP0003'
        #enb_conf_1 = mconfigs_pb2.EnodebD.EnodebConfig()
        mconfig.enb_configs_by_serial[id1]\
                .earfcndl = 39151
        mconfig.enb_configs_by_serial[id1]\
                .subframe_assignment = 2
        mconfig.enb_configs_by_serial[id1]\
                .special_subframe_pattern = 7
        mconfig.enb_configs_by_serial[id1]\
                .pci = 259
        mconfig.enb_configs_by_serial[id1]\
                .bandwidth_mhz = 20
        mconfig.enb_configs_by_serial[id1] \
            .tac = 1
        mconfig.enb_configs_by_serial[id1] \
            .cell_id = 0
        mconfig.enb_configs_by_serial[id1]\
            .transmit_enabled = True
        mconfig.enb_configs_by_serial[id1]\
            .device_class = 'Baicells Band 40'

        id2 = '120200002618AGP0004'
        #enb_conf_2 = mconfigs_pb2.EnodebD.EnodebConfig()
        mconfig.enb_configs_by_serial[id2]\
                .earfcndl = 39151
        mconfig.enb_configs_by_serial[id2]\
                .subframe_assignment = 2
        mconfig.enb_configs_by_serial[id2]\
                .special_subframe_pattern = 7
        mconfig.enb_configs_by_serial[id2]\
                .pci = 261
        mconfig.enb_configs_by_serial[id2] \
            .bandwidth_mhz = 20
        mconfig.enb_configs_by_serial[id2] \
            .tac = 1
        mconfig.enb_configs_by_serial[id2] \
            .cell_id = 0
        mconfig.enb_configs_by_serial[id2]\
                .transmit_enabled = True
        mconfig.enb_configs_by_serial[id2]\
                .device_class = 'Baicells Band 40'

        return mconfig