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

Method Extend

pkg/frequencyplans/frequencyplans.go:352–417  ·  view source on GitHub ↗

Extend returns the same frequency plan, with values overridden by the passed frequency plan.

(extension FrequencyPlan)

Source from the content-addressed store, hash-verified

350
351// Extend returns the same frequency plan, with values overridden by the passed frequency plan.
352func (fp FrequencyPlan) Extend(extension FrequencyPlan) FrequencyPlan {
353 extended := fp
354 if extension.BandID != "" {
355 extended.BandID = extension.BandID
356 }
357 if channels := extension.UplinkChannels; len(channels) > 0 {
358 extended.UplinkChannels = make([]Channel, 0, len(channels))
359 for _, ch := range channels {
360 extended.UplinkChannels = append(extended.UplinkChannels, *ch.Clone())
361 }
362 }
363 if channels := extension.DownlinkChannels; len(channels) > 0 {
364 extended.DownlinkChannels = make([]Channel, 0, len(channels))
365 for _, ch := range channels {
366 extended.DownlinkChannels = append(extended.DownlinkChannels, *ch.Clone())
367 }
368 }
369 if extension.LoRaStandardChannel != nil {
370 extended.LoRaStandardChannel = extension.LoRaStandardChannel.Clone()
371 }
372 if extension.FSKChannel != nil {
373 extended.FSKChannel = extension.FSKChannel.Clone()
374 }
375 if extension.TimeOffAir != (TimeOffAir{}) {
376 extended.TimeOffAir = *extension.TimeOffAir.Clone()
377 }
378 if extension.DwellTime != (DwellTime{}) {
379 extended.DwellTime = *extension.DwellTime.Clone()
380 }
381 if extension.LBT != nil {
382 extended.LBT = extension.LBT.Clone()
383 }
384 if radios := extension.Radios; len(radios) > 0 {
385 extended.Radios = make([]Radio, 0, len(radios))
386 for _, r := range radios {
387 extended.Radios = append(extended.Radios, *r.Clone())
388 }
389 extended.ClockSource = extension.ClockSource
390 }
391 if extension.PingSlot != nil {
392 extended.PingSlot = extension.PingSlot.Clone()
393 }
394 if extension.DefaultPingSlotDataRate != nil {
395 i := *extension.DefaultPingSlotDataRate
396 extended.DefaultPingSlotDataRate = &i
397 }
398 if extension.Rx2Channel != nil {
399 extended.Rx2Channel = extension.Rx2Channel.Clone()
400 }
401 if extension.DefaultRx2DataRate != nil {
402 i := *extension.DefaultRx2DataRate
403 extended.DefaultRx2DataRate = &i
404 }
405 if subBands := extension.SubBands; len(subBands) > 0 {
406 extended.SubBands = make([]SubBandParameters, 0, len(subBands))
407 for _, sb := range subBands {
408 extended.SubBands = append(extended.SubBands, *sb.Clone())
409 }

Callers 1

getByIDMethod · 0.95

Calls 1

CloneMethod · 0.45

Tested by

no test coverage detected