예제 #1
0
    def connect(self):
        """
		Connects the defined blocks in the flow graph
		Signal Source > Signal conditioner > Channels >> Observables >> PVT > Output filter
		"""
        LOG.INFO("Connecting flowgraph")
        assert not self.connected_
        #ifndef ENABLE_FPGA
        for ss in self.sig_source_:
            if self.configuration_.get(ss.role_ + ".enable_FPGA",
                                       False) == False:
                ss.connect(self.top_block_)
        for sc in self.sig_conditioner_:
            if self.configuration_.get(sc.role_ + ".enable_FPGA",
                                       False) == False:
                sc.connect(self.top_block_)
        #endif
        for ch in self.channels_:
            ch.connect(self.top_block_)
        self.observables_.connect(self.top_block_)
        self.pvt_.connect(self.top_block_)
        DLOG.INFO("blocks connected internally")
        #ifndef ENABLE_FPGA
        RF_Channels = 0
        signal_conditioner_ID = 0
        for i, ss in enumerate(self.sig_source_):
            if ss.implementation() == "Raw_Array_Signal_Source":
                assert False
            else:
                RF_Channels = self.configuration_.get(
                    ss.role_ + ".RF_channels", 1)
                for j in range(RF_Channels):
                    #
                    if ss.get_right_block().output_signature(
                    )[1] > 1 or ss.get_right_block().output_signature(
                    )[1] == -1:
                        if len(self.sig_conditioner_) > signal_conditioner_ID:
                            LOG.INFO("connecting sig_source_ " + str(i) +
                                     " stream " + str(j) + " to conditioner " +
                                     str(j))
                            self.top_block_.connect(
                                ss.get_right_block(), j,
                                self.sig_conditioner_[signal_conditioner_ID].
                                get_left_block(), 0)
                    else:
                        assert False
        _ = 2 + 2
        assert False
 def GetSignalSource(self, configuration, queue, ID):
     "return GNSSBlockInterface"
     default_implementation = "File_Signal_Source"
     role = "SignalSource"
     assert ID == -1
     implementation = configuration.get(role + ".implementation",
                                        default_implementation)
     LOG.INFO("Getting SignalSource with implementation " + implementation)
     return self.GetBlock(configuration, role, implementation, 0, 1, queue)
 def GetPVT(self, configuration):
     ""
     default_implementation = "RTKLIB_PVT"
     implementation = configuration.get("PVT.implementation",
                                        default_implementation)
     LOG.INFO("Getting PVT with implementation " + implementation)
     Galileo_channels = configuration.get("Channels_1B.count", 0)
     Galileo_channels += configuration.get("Channels_5X.count", 0)
     GPS_channels = configuration.get("Channels_1C.count", 0)
     GPS_channels += configuration.get("Channels_2S.count", 0)
     GPS_channels += configuration.get("Channels_L5.count", 0)
     Glonass_channels = configuration.get("Channels_1G.count", 0)
     Glonass_channels += configuration.get("Channels_2G.count", 0)
     Beidou_channels = configuration.get("Channels_B1.count", 0)
     Beidou_channels += configuration.get("Channels_B3.count", 0)
     return self.GetBlock(
         configuration, "PVT", implementation, Galileo_channels +
         GPS_channels + Glonass_channels + Beidou_channels, 0)
    def GetSignalConditioner(self, configuration, ID=-1):
        "returns GNSSBlockInterface"
        default_implementation = "Pass_Through"
        role_conditioner = "SignalConditioner"
        role_datatypeadapter = "DataTypeAdapter"
        role_inputfilter = "InputFilter"
        role_resampler = "Resampler"
        assert ID == -1
        signal_conditioner = configuration.get(
            role_conditioner + ".implementation", default_implementation)
        if signal_conditioner == "Pass_Through":
            data_type_adapter = "Pass_Through"
            input_filter = "Pass_Through"
            resampler = "Pass_Through"
        else:
            data_type_adapter = configuration.get(
                role_datatypeadapter + ".implementation",
                default_implementation)
            input_filter = configuration.get(
                role_inputfilter + ".implementation", default_implementation)
            resampler = configuration.get(role_resampler + ".implementation",
                                          default_implementation)

        LOG.INFO("Getting SignalConditioner with DataTypeAdapter implementation: " \
                    + data_type_adapter + ", InputFilter implementation: " \
                    + input_filter + ", and Resampler implementation: " \
                    + resampler)

        if signal_conditioner == "Array_Signal_Conditioner":
            # instantiate the array version
            assert False
        else:
            # single-antenna version
            c = SignalConditioner(
                configuration,
                self.GetBlock(configuration, role_datatypeadapter,
                              data_type_adapter, 1, 1),
                self.GetBlock(configuration, role_inputfilter, input_filter, 1,
                              1),
                self.GetBlock(configuration, role_resampler, resampler, 1, 1),
                role_conditioner, "Signal_Conditioner")
        return c
 def GetObservables(self, configuration):
     ""
     default_implementation = "Hybrid_Observables"
     implementation = configuration.get("Observables.implementation",
                                        default_implementation)
     LOG.INFO("Getting Observables with implementation " + implementation)
     Galileo_channels = configuration.get("Channels_1B.count", 0)
     Galileo_channels += configuration.get("Channels_5X.count", 0)
     GPS_channels = configuration.get("Channels_1C.count", 0)
     GPS_channels += configuration.get("Channels_2S.count", 0)
     GPS_channels += configuration.get("Channels_L5.count", 0)
     Glonass_channels = configuration.get("Channels_1G.count", 0)
     Glonass_channels += configuration.get("Channels_2G.count", 0)
     Beidou_channels = configuration.get("Channels_B1.count", 0)
     Beidou_channels += configuration.get("Channels_B3.count", 0)
     extra_channels = 1  # For monitor channel sample counter
     return self.GetBlock(
         configuration, "Observables", implementation, Galileo_channels +
         GPS_channels + Glonass_channels + Beidou_channels + extra_channels,
         Galileo_channels + GPS_channels + Glonass_channels +
         Beidou_channels)
 def GetChannels(self, configuration, queue):
     ""
     default_implementation = "Pass_Through"
     channel_absolute_id = 0
     Channels_xx_count = {
         k: configuration.get("Channels_{}.count".format(k), 0)
         for k in jld_channels.cid
     }
     total_channels = sum(Channels_xx_count.values())
     channels = [None] * total_channels  # vector GNSSBlockInterface
     #
     LOG.INFO("Getting " + str(Channels_xx_count['1C']) +
              " GPS L1 C/A channels")
     acquisition_implementation = configuration.get(
         "Acquisition_1C.implementation", default_implementation)
     tracking_implementation = configuration.get(
         "Tracking_1C.implementation", default_implementation)
     telemetry_decoder_implementation = configuration.get(
         "TelemetryDecoder_1C.implementation", default_implementation)
     for i in range(Channels_xx_count['1C']):
         acquisition_implementation_specific = configuration.get(
             "Acquisition_1C" + str(channel_absolute_id) +
             ".implementation", acquisition_implementation)
         tracking_implementation_specific = configuration.get(
             "Tracking_1C" + str(channel_absolute_id) + ".implementation",
             tracking_implementation)
         telemetry_decoder_implementation_specific = configuration.get(
             "TelemetryDecoder_1C" + str(channel_absolute_id) +
             ".implementation", telemetry_decoder_implementation)
         channels[channel_absolute_id] = self.GetChannel_1C(
             configuration, acquisition_implementation_specific,
             tracking_implementation_specific,
             telemetry_decoder_implementation_specific, channel_absolute_id,
             queue)
         channel_absolute_id += 1
     return channels