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