// 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
}
Example #2
0
// 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),
		},
	}
}