Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ClassBEnqueueMargin = time.Second * 5
ClassBEnqueueMargin contains the margin duration when scheduling Class-B messages.
View Source
var MulticastClassCInterval = time.Second
MulticastClassCInterval defines the interval between the gateway scheduling for Class-C multicast.
View Source
var SpreadFactorToRequiredSNRTable = map[int]float64{
6: -5,
7: -7.5,
8: -10,
9: -12.5,
10: -15,
11: -17.5,
12: -20,
}
SpreadFactorToRequiredSNRTable contains the required SNR to demodulate a LoRa frame for the given spreadfactor. These values are taken from the SX1276 datasheet.
View Source
var Version string
Version defines the ChirpStack Network Server version.
Functions ¶
Types ¶
type Config ¶
type Config struct { General struct { LogLevel int `mapstructure:"log_level"` LogToSyslog bool `mapstructure:"log_to_syslog"` GRPCDefaultResolverScheme string `mapstructure:"grpc_default_resolver_scheme"` } `mapstructure:"general"` PostgreSQL struct { DSN string `mapstructure:"dsn"` Automigrate bool `mapstructure:"automigrate"` MaxOpenConnections int `mapstructure:"max_open_connections"` MaxIdleConnections int `mapstructure:"max_idle_connections"` } `mapstructure:"postgresql"` Redis struct { URL string `mapstructure:"url"` // deprecated Servers []string `mapstructure:"servers"` Cluster bool `mapstructure:"cluster"` MasterName string `mapstructure:"master_name"` PoolSize int `mapstructure:"pool_size"` Password string `mapstructure:"password"` Database int `mapstructure:"database"` TLSEnabled bool `mapstructure:"tls_enabled"` KeyPrefix string `mapstructure:"key_prefix"` } `mapstructure:"redis"` NetworkServer struct { NetID lorawan.NetID NetIDString string `mapstructure:"net_id"` DeduplicationDelay time.Duration `mapstructure:"deduplication_delay"` DeviceSessionTTL time.Duration `mapstructure:"device_session_ttl"` GetDownlinkDataDelay time.Duration `mapstructure:"get_downlink_data_delay"` Band struct { Name band.Name `mapstructure:"name"` UplinkDwellTime400ms bool `mapstructure:"uplink_dwell_time_400ms"` DownlinkDwellTime400ms bool `mapstructure:"downlink_dwell_time_400ms"` UplinkMaxEIRP float32 `mapstructure:"uplink_max_eirp"` RepeaterCompatible bool `mapstructure:"repeater_compatible"` } `mapstructure:"band"` NetworkSettings struct { InstallationMargin float64 `mapstructure:"installation_margin"` RXWindow int `mapstructure:"rx_window"` RX1Delay int `mapstructure:"rx1_delay"` RX1DROffset int `mapstructure:"rx1_dr_offset"` RX2DR int `mapstructure:"rx2_dr"` RX2Frequency int64 `mapstructure:"rx2_frequency"` RX2PreferOnRX1DRLt int `mapstructure:"rx2_prefer_on_rx1_dr_lt"` RX2PreferOnLinkBudget bool `mapstructure:"rx2_prefer_on_link_budget"` GatewayPreferMinMargin float64 `mapstructure:"gateway_prefer_min_margin"` DownlinkTXPower int `mapstructure:"downlink_tx_power"` EnabledUplinkChannels []int `mapstructure:"enabled_uplink_channels"` DisableMACCommands bool `mapstructure:"disable_mac_commands"` DisableADR bool `mapstructure:"disable_adr"` MaxMACCommandErrorCount int `mapstructure:"max_mac_command_error_count"` ADRPlugins []string `mapstructure:"adr_plugins"` ExtraChannels []struct { Frequency uint32 `mapstructure:"frequency"` MinDR int `mapstructure:"min_dr"` MaxDR int `mapstructure:"max_dr"` } `mapstructure:"extra_channels"` ClassB struct { PingSlotDR int `mapstructure:"ping_slot_dr"` PingSlotFrequency uint32 `mapstructure:"ping_slot_frequency"` } `mapstructure:"class_b"` RejoinRequest struct { Enabled bool `mapstructure:"enabled"` MaxCountN int `mapstructure:"max_count_n"` MaxTimeN int `mapstructure:"max_time_n"` } `mapstructure:"rejoin_request"` } `mapstructure:"network_settings"` Scheduler struct { SchedulerInterval time.Duration `mapstructure:"scheduler_interval"` ClassC struct { GatewayDownlinkLockDuration time.Duration `mapstructure:"gateway_downlink_lock_duration"` DeviceDownlinkLockDuration time.Duration `mapstructure:"device_downlink_lock_duration"` MulticastGatewayDelay time.Duration `mapstructure:"multicast_gateway_delay"` } `mapstructure:"class_c"` } `mapstructure:"scheduler"` API struct { Bind string `mapstructure:"bind"` CACert string `mapstructure:"ca_cert"` TLSCert string `mapstructure:"tls_cert"` TLSKey string `mapstructure:"tls_key"` } `mapstructure:"api"` Gateway struct { // Deprecated Stats struct { Timezone string } CACert string `mapstructure:"ca_cert"` CAKey string `mapstructure:"ca_key"` ClientCertLifetime time.Duration `mapstructure:"client_cert_lifetime"` DownlinkTimeout time.Duration `mapstructure:"downlink_timeout"` ForceGwsPrivate bool `mapstructure:"force_gws_private"` Backend struct { Type string `mapstructure:"type"` MultiDownlinkFeature string `mapstructure:"multi_downlink_feature"` MQTT struct { Server string `mapstructure:"server"` Username string `mapstructure:"username"` Password string `mapstructure:"password"` MaxReconnectInterval time.Duration `mapstructure:"max_reconnect_interval"` QOS uint8 `mapstructure:"qos"` CleanSession bool `mapstructure:"clean_session"` ClientID string `mapstructure:"client_id"` CACert string `mapstructure:"ca_cert"` TLSCert string `mapstructure:"tls_cert"` TLSKey string `mapstructure:"tls_key"` EventTopic string `mapstructure:"event_topic"` CommandTopicTemplate string `mapstructure:"command_topic_template"` } `mapstructure:"mqtt"` AMQP struct { URL string `mapstructure:"url"` EventQueueName string `mapstructure:"event_queue_name"` EventRoutingKey string `mapstructure:"event_routing_key"` CommandRoutingKeyTemplate string `mapstructure:"command_routing_key_template"` } `mapstructure:"amqp"` GCPPubSub struct { CredentialsFile string `mapstructure:"credentials_file"` ProjectID string `mapstructure:"project_id"` UplinkTopicName string `mapstructure:"uplink_topic_name"` DownlinkTopicName string `mapstructure:"downlink_topic_name"` UplinkRetentionDuration time.Duration `mapstructure:"uplink_retention_duration"` } `mapstructure:"gcp_pub_sub"` AzureIoTHub struct { EventsConnectionString string `mapstructure:"events_connection_string"` CommandsConnectionString string `mapstructure:"commands_connection_string"` } `mapstructure:"azure_iot_hub"` } `mapstructure:"backend"` } `mapstructure:"gateway"` } `mapstructure:"network_server"` JoinServer struct { ResolveJoinEUI bool `mapstructure:"resolve_join_eui"` ResolveDomainSuffix string `mapstructure:"resolve_domain_suffix"` Servers []struct { Server string `mapstructure:"server"` JoinEUI string `mapstructure:"join_eui"` Async bool `mapstructure:"async"` AsyncTimeout time.Duration `mapstructure:"async_timeout"` CACert string `mapstructure:"ca_cert"` TLSCert string `mapstructure:"tls_cert"` TLSKey string `mapstructure:"tls_key"` } `mapstructure:"servers"` Default struct { Server string `mapstructure:"server"` Async bool `mapstructure:"async"` AsyncTimeout time.Duration `mapstructure:"async_timeout"` CACert string `mapstructure:"ca_cert"` TLSCert string `mapstructure:"tls_cert"` TLSKey string `mapstructure:"tls_key"` } `mapstructure:"default"` KEK struct { Set []KEK `mapstructure:"set"` } `mapstructure:"kek"` } `mapstructure:"join_server"` Roaming struct { ResolveNetIDDomainSuffix string `mapstructure:"resolve_netid_domain_suffix"` API struct { Bind string `mapstructure:"bind"` CACert string `mapstructure:"ca_cert"` TLSCert string `mapstructure:"tls_cert"` TLSKey string `mapstructure:"tls_key"` } `mapstructure:"api"` Servers []RoamingServer `mapstructure:"servers"` Default DefaultRoamingServer `mapstructure:"default"` KEK struct { Set []KEK `mapstructure:"set"` } `mapstructure:"kek"` } `mapstructure:"roaming"` NetworkController struct { Client nc.NetworkControllerServiceClient `mapstructure:"client"` Server string `mapstructure:"server"` CACert string `mapstructure:"ca_cert"` TLSCert string `mapstructure:"tls_cert"` TLSKey string `mapstructure:"tls_key"` } `mapstructure:"network_controller"` Metrics struct { Timezone string `mapstructure:"timezone"` Prometheus struct { EndpointEnabled bool `mapstructure:"endpoint_enabled"` Bind string `mapstructure:"bind"` APITimingHistogram bool `mapstructure:"api_timing_histogram"` } `mapstructure:"prometheus"` } `mapstructure:"metrics"` Monitoring struct { Bind string `mapstructure:"bind"` PrometheusEndpoint bool `mapstructure:"prometheus_endpoint"` PrometheusAPITimingHistogram bool `mapstructure:"prometheus_api_timing_histogram"` HealthcheckEndpoint bool `mapstructure:"healthcheck_endpoint"` DeviceFrameLogMaxHistory int64 `mapstructure:"device_frame_log_max_history"` GatewayFrameLogMaxHistory int64 `mapstructure:"gateway_frame_log_max_history"` PerDeviceFrameLogMaxHistory int64 `mapstructure:"per_device_frame_log_max_history"` PerGatewayFrameLogMaxHistory int64 `mapstructure:"per_gateway_frame_log_max_history"` } `mapstructure:"monitoring"` }
Config defines the configuration structure.
var C Config
C holds the global configuration.
type DefaultRoamingServer ¶
type DefaultRoamingServer struct { Enabled bool `mapstructure:"enabled"` Async bool `mapstructure:"async"` AsyncTimeout time.Duration `mapstructure:"async_timeout"` PassiveRoaming bool `mapstructure:"passive_roaming"` PassiveRoamingLifetime time.Duration `mapstructure:"passive_roaming_lifetime"` PassiveRoamingKEKLabel string `mapstructure:"passive_roaming_kek_label"` Server string `mapstructure:"server"` CACert string `mapstructure:"ca_cert"` TLSCert string `mapstructure:"tls_cert"` TLSKey string `mapstructure:"tls_key"` Authorization string `mapstructure:"authorization"` }
type RoamingServer ¶
type RoamingServer struct { NetID lorawan.NetID NetIDString string `mapstructure:"net_id"` Async bool `mapstructure:"async"` AsyncTimeout time.Duration `mapstructure:"async_timeout"` PassiveRoaming bool `mapstructure:"passive_roaming"` PassiveRoamingLifetime time.Duration `mapstructure:"passive_roaming_lifetime"` PassiveRoamingKEKLabel string `mapstructure:"passive_roaming_kek_label"` Server string `mapstructure:"server"` CACert string `mapstructure:"ca_cert"` TLSCert string `mapstructure:"tls_cert"` TLSKey string `mapstructure:"tls_key"` Authorization string `mapstructure:"authorization"` }
Click to show internal directories.
Click to hide internal directories.