MCPcopy Create free account
hub / github.com/TheThingsNetwork/lorawan-stack / buildMetadataComparator

Function buildMetadataComparator

pkg/networkserver/downlink.go:719–742  ·  view source on GitHub ↗
(
	settings *ttnpb.MACState_UplinkMessage_TxSettings, mds []*ttnpb.MACState_UplinkMessage_RxMetadata,
)

Source from the content-addressed store, hash-verified

717}
718
719func buildMetadataComparator(
720 settings *ttnpb.MACState_UplinkMessage_TxSettings, mds []*ttnpb.MACState_UplinkMessage_RxMetadata,
721) func(int, int) bool {
722 invalid := func(k int) bool { return mds[k].ChannelRssi == 0.0 }
723 build := func(measure func(int) float32) func(i, j int) bool {
724 return func(i, j int) bool {
725 lhsInvalid, rhsInvalid := invalid(i), invalid(j)
726 if lhsInvalid {
727 return lhsInvalid == rhsInvalid
728 }
729 return measure(i) >= measure(j)
730 }
731 }
732 switch settings.DataRate.Modulation.(type) {
733 case *ttnpb.DataRate_Lora:
734 return build(
735 func(k int) float32 { return lora.AdjustedRSSI(mds[k].ChannelRssi, mds[k].Snr) },
736 )
737 default:
738 return build(
739 func(k int) float32 { return mds[k].ChannelRssi },
740 )
741 }
742}
743
744func downlinkPathsFromMetadata(
745 settings *ttnpb.MACState_UplinkMessage_TxSettings, mds []*ttnpb.MACState_UplinkMessage_RxMetadata,

Callers 1

Calls 2

AdjustedRSSIFunction · 0.92
buildFunction · 0.85

Tested by

no test coverage detected