// SetDataRate sets the dataRate for the current Metadata based from a band.Datarate func (c *TxConfiguration) SetDataRate(dataRate band.DataRate) error { switch dataRate.Modulation { case band.LoRaModulation: c.Modulation = Modulation_LORA datr, err := types.ConvertDataRate(dataRate) if err != nil { return err } c.DataRate = datr.String() case band.FSKModulation: c.Modulation = Modulation_FSK c.BitRate = uint32(dataRate.BitRate) } return nil }
// buildDownlinkOption builds a DownlinkOption with default values func (r *router) buildDownlinkOption(gatewayID string, band band.FrequencyPlan) *pb_broker.DownlinkOption { dataRate, _ := types.ConvertDataRate(band.DataRates[band.RX2DataRate]) return &pb_broker.DownlinkOption{ GatewayId: gatewayID, ProtocolConfig: &pb_protocol.TxConfiguration{Protocol: &pb_protocol.TxConfiguration_Lorawan{Lorawan: &pb_lorawan.TxConfiguration{ Modulation: pb_lorawan.Modulation_LORA, DataRate: dataRate.String(), CodingRate: "4/5", }}}, GatewayConfig: &pb_gateway.TxConfiguration{ RfChain: 0, PolarizationInversion: true, Frequency: uint64(band.RX2Frequency), Power: int32(band.DefaultTXPower), }, } }