mirror of
https://github.com/chirpstack/chirpstack.git
synced 2025-06-12 20:48:09 +00:00
@ -190,6 +190,13 @@ message Device {
|
||||
// These tags are exposed in the event payloads or to integration. Tags are
|
||||
// intended for aggregation and filtering.
|
||||
map<string, string> tags = 9;
|
||||
|
||||
// JoinEUI (optional, EUI64).
|
||||
// This field will be automatically set / updated on OTAA. However, in some
|
||||
// cases it must be pre-configured. For example to allow OTAA using a Relay.
|
||||
// In this case the Relay needs to know the JoinEUI + DevEUI combinations
|
||||
// of the devices for which it needs to forward uplinks.
|
||||
string join_eui = 10;
|
||||
}
|
||||
|
||||
message DeviceStatus {
|
||||
|
@ -41,6 +41,61 @@ enum MeasurementKind {
|
||||
STRING = 4;
|
||||
}
|
||||
|
||||
enum CadPeriodicity {
|
||||
// 1 second.
|
||||
SEC_1 = 0;
|
||||
|
||||
// 500 milliseconds
|
||||
MS_500 = 1;
|
||||
|
||||
// 250 milliseconds
|
||||
MS_250 = 2;
|
||||
|
||||
// 100 milliseconds
|
||||
MS_100 = 3;
|
||||
|
||||
// 50 milliseconds
|
||||
MS_50 = 4;
|
||||
|
||||
// 20 milliseconds
|
||||
MS_20 = 5;
|
||||
}
|
||||
|
||||
enum SecondChAckOffset {
|
||||
// 0 kHz.
|
||||
KHZ_0 = 0;
|
||||
|
||||
// 200 kHz.
|
||||
KHZ_200 = 1;
|
||||
|
||||
// 400 kHz.
|
||||
KHZ_400 = 2;
|
||||
|
||||
// 800 kHz.
|
||||
KHZ_800 = 3;
|
||||
|
||||
// 1600 kHz.
|
||||
KHZ_1600 = 4;
|
||||
|
||||
// 3200 kHz.
|
||||
KHZ_3200 = 5;
|
||||
|
||||
}
|
||||
|
||||
enum RelayModeActivation {
|
||||
// Disable the relay mode.
|
||||
DISABLE_RELAY_MODE = 0;
|
||||
|
||||
// Enable the relay model.
|
||||
ENABLE_RELAY_MODE = 1;
|
||||
|
||||
// Dynamic.
|
||||
DYNAMIC = 2;
|
||||
|
||||
// End-device controlled.
|
||||
END_DEVICE_CONTROLLED = 3;
|
||||
}
|
||||
|
||||
// DeviceProfileService is the service providing API methods for managing device-profiles.
|
||||
service DeviceProfileService {
|
||||
// Create the given device-profile.
|
||||
@ -195,6 +250,154 @@ message DeviceProfile {
|
||||
// e.g. to provide an 8 channel and 16 channel configuration for the US915
|
||||
// band.
|
||||
string region_config_id = 29;
|
||||
|
||||
// Device is a Relay device.
|
||||
// Enable this in case the device is a Relay. A Relay device implements TS011
|
||||
// and is able to relay data from relay capable devices.
|
||||
// See for more information the TS011 specification.
|
||||
bool is_relay = 30;
|
||||
|
||||
// Device is a Relay end-device.
|
||||
// Enable this in case the device is an end-device that can operate under a
|
||||
// Relay. Please refer to the TS011 specification for more information.
|
||||
bool is_relay_ed = 31;
|
||||
|
||||
// End-device only accept data through relay.
|
||||
// Only accept data for this device through a relay. This setting is useful
|
||||
// for testing as in case of a test-setup, the end-device is usually within
|
||||
// range of the gateway.
|
||||
bool relay_ed_relay_only = 32;
|
||||
|
||||
// Relay must be enabled.
|
||||
bool relay_enabled = 33;
|
||||
|
||||
// Relay CAD periodicity.
|
||||
CadPeriodicity relay_cad_periodicity = 34;
|
||||
|
||||
// Relay default channel index.
|
||||
// Valid values are 0 and 1, please refer to the RP002 specification for
|
||||
// the meaning of these values.
|
||||
uint32 relay_default_channel_index = 35;
|
||||
|
||||
// Relay second channel frequency (Hz).
|
||||
uint32 relay_second_channel_freq = 36;
|
||||
|
||||
// Relay second channel DR.
|
||||
uint32 relay_second_channel_dr = 37;
|
||||
|
||||
// Relay second channel ACK offset.
|
||||
SecondChAckOffset relay_second_channel_ack_offset = 38;
|
||||
|
||||
// Relay end-device activation mode.
|
||||
RelayModeActivation relay_ed_activation_mode = 39;
|
||||
|
||||
// Relay end-device smart-enable level.
|
||||
uint32 relay_ed_smart_enable_level = 40;
|
||||
|
||||
// Relay end-device back-off (in case it does not receive WOR ACK frame).
|
||||
// 0 = Always send a LoRaWAN uplink
|
||||
// 1..63 = Send a LoRaWAN uplink after X WOR frames without a WOR ACK
|
||||
uint32 relay_ed_back_off = 41;
|
||||
|
||||
// Relay end-device uplink limit bucket size.
|
||||
//
|
||||
// This field indicates the multiplier to determine the bucket size
|
||||
// according to the following formula:
|
||||
// BucketSize TOKEN = _reload_rate x _bucket_size
|
||||
//
|
||||
// Valid values (0 - 3):
|
||||
// 0 = 1
|
||||
// 1 = 2
|
||||
// 2 = 4
|
||||
// 3 = 12
|
||||
uint32 relay_ed_uplink_limit_bucket_size = 42;
|
||||
|
||||
// Relay end-device uplink limit reload rate.
|
||||
//
|
||||
// Valid values:
|
||||
// * 0 - 62 = X tokens every hour
|
||||
// * 63 = no limitation
|
||||
uint32 relay_ed_uplink_limit_reload_rate = 43;
|
||||
|
||||
// Relay join-request limit reload rate.
|
||||
//
|
||||
// Valid values:
|
||||
// * 0 - 126 = X tokens every hour
|
||||
// * 127 = no limitation
|
||||
uint32 relay_join_req_limit_reload_rate = 44;
|
||||
|
||||
// Relay notify limit reload rate.
|
||||
//
|
||||
// Valid values:
|
||||
// * 0 - 126 = X tokens every hour
|
||||
// * 127 = no limitation
|
||||
uint32 relay_notify_limit_reload_rate = 45;
|
||||
|
||||
// Relay global uplink limit reload rate.
|
||||
//
|
||||
// Valid values:
|
||||
// * 0 - 126 = X tokens every hour
|
||||
// * 127 = no limitation
|
||||
uint32 relay_global_uplink_limit_reload_rate = 46;
|
||||
|
||||
// Relay overall limit reload rate.
|
||||
//
|
||||
// Valid values:
|
||||
// * 0 - 126 = X tokens every hour
|
||||
// * 127 = no limitation
|
||||
uint32 relay_overall_limit_reload_rate = 47;
|
||||
|
||||
// Relay join-request limit bucket size.
|
||||
//
|
||||
// This field indicates the multiplier to determine the bucket size
|
||||
// according to the following formula:
|
||||
// BucketSize TOKEN = _reload_rate x _bucket_size
|
||||
//
|
||||
// Valid values (0 - 3):
|
||||
// 0 = 1
|
||||
// 1 = 2
|
||||
// 2 = 4
|
||||
// 3 = 12
|
||||
uint32 relay_join_req_limit_bucket_size = 48;
|
||||
|
||||
// Relay notify limit bucket size.
|
||||
//
|
||||
// This field indicates the multiplier to determine the bucket size
|
||||
// according to the following formula:
|
||||
// BucketSize TOKEN = _reload_rate x _bucket_size
|
||||
//
|
||||
// Valid values (0 - 3):
|
||||
// 0 = 1
|
||||
// 1 = 2
|
||||
// 2 = 4
|
||||
// 3 = 12
|
||||
uint32 relay_notify_limit_bucket_size = 49;
|
||||
|
||||
// Relay globak uplink limit bucket size.
|
||||
//
|
||||
// This field indicates the multiplier to determine the bucket size
|
||||
// according to the following formula:
|
||||
// BucketSize TOKEN = _reload_rate x _bucket_size
|
||||
//
|
||||
// Valid values (0 - 3):
|
||||
// 0 = 1
|
||||
// 1 = 2
|
||||
// 2 = 4
|
||||
// 3 = 12
|
||||
uint32 relay_global_uplink_limit_bucket_size = 50;
|
||||
|
||||
// Relay overall limit bucket size.
|
||||
//
|
||||
// This field indicates the multiplier to determine the bucket size
|
||||
// according to the following formula:
|
||||
// BucketSize TOKEN = _reload_rate x _bucket_size
|
||||
//
|
||||
// Valid values (0 - 3):
|
||||
// 0 = 1
|
||||
// 1 = 2
|
||||
// 2 = 4
|
||||
// 3 = 12
|
||||
uint32 relay_overall_limit_bucket_size = 51;
|
||||
}
|
||||
|
||||
message Measurement {
|
||||
|
@ -34,8 +34,11 @@ message UplinkFrameLog {
|
||||
// Time.
|
||||
google.protobuf.Timestamp time = 7;
|
||||
|
||||
// Plaintext mac-commands.
|
||||
bool plaintext_mac_commands = 8;
|
||||
// Plaintext f_opts mac-commands.
|
||||
bool plaintext_f_opts = 8;
|
||||
|
||||
// Plaintext frm_payload.
|
||||
bool plaintext_frm_payload = 9;
|
||||
}
|
||||
|
||||
message DownlinkFrameLog {
|
||||
@ -63,6 +66,9 @@ message DownlinkFrameLog {
|
||||
// Device EUI (optional).
|
||||
string dev_eui = 8;
|
||||
|
||||
// Plaintext mac-commands.
|
||||
bool plaintext_mac_commands = 9;
|
||||
// Plaintext f_opts mac-commands.
|
||||
bool plaintext_f_opts = 9;
|
||||
|
||||
// Plaintext frm_payload.
|
||||
bool plaintext_frm_payload = 10;
|
||||
}
|
||||
|
119
api/python/proto/chirpstack-api/api/relay.proto
vendored
Normal file
119
api/python/proto/chirpstack-api/api/relay.proto
vendored
Normal file
@ -0,0 +1,119 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package api;
|
||||
|
||||
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api";
|
||||
option java_package = "io.chirpstack.api";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "RelayProto";
|
||||
option csharp_namespace = "Chirpstack.Api";
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
|
||||
// RelayService is the service providing API methos for managing relays.
|
||||
service RelayService {
|
||||
// List lists the relays for the given application id.
|
||||
rpc List(ListRelaysRequest) returns (ListRelaysResponse) {
|
||||
option(google.api.http) = {
|
||||
get: "/api/relays"
|
||||
};
|
||||
}
|
||||
|
||||
// AddDevice adds the given device to the relay.
|
||||
rpc AddDevice(AddRelayDeviceRequest) returns (google.protobuf.Empty) {
|
||||
option(google.api.http) = {
|
||||
post: "/api/relays/{relay_dev_eui}/devices"
|
||||
body: "*"
|
||||
};
|
||||
}
|
||||
|
||||
// RemoveDevice removes the given device from the relay.
|
||||
rpc RemoveDevice(RemoveRelayDeviceRequest) returns (google.protobuf.Empty) {
|
||||
option(google.api.http) = {
|
||||
delete: "/api/relays/{relay_dev_eui}/devices/{dev_eui}"
|
||||
};
|
||||
};
|
||||
|
||||
// ListDevices lists the devices for the given relay.
|
||||
rpc ListDevices(ListRelayDevicesRequest) returns (ListRelayDevicesResponse) {
|
||||
option(google.api.http) = {
|
||||
get: "/api/relays/{relay_dev_eui}/devices"
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
message RelayListItem {
|
||||
// DevEUI (EUI64).
|
||||
string dev_eui = 1;
|
||||
|
||||
// Name.
|
||||
string name = 2;
|
||||
}
|
||||
|
||||
message ListRelaysRequest {
|
||||
// Max number of devices to return in the result-set.
|
||||
uint32 limit = 1;
|
||||
|
||||
// Offset in the result-set (for pagination).
|
||||
uint32 offset = 2;
|
||||
|
||||
// Application ID (UUID).
|
||||
string application_id = 3;
|
||||
}
|
||||
|
||||
message ListRelaysResponse {
|
||||
// Total number of relays.
|
||||
uint32 total_count = 1;
|
||||
|
||||
// Result-set.
|
||||
repeated RelayListItem result = 2;
|
||||
}
|
||||
|
||||
message AddRelayDeviceRequest {
|
||||
// Relay DevEUI (EUI64).
|
||||
string relay_dev_eui = 1;
|
||||
|
||||
// Device DevEUI (EUI64).
|
||||
string device_dev_eui = 2;
|
||||
|
||||
}
|
||||
|
||||
message RemoveRelayDeviceRequest {
|
||||
// Relay DevEUI (EUI64).
|
||||
string relay_dev_eui = 1;
|
||||
|
||||
// Device DevEUI (EUI64).
|
||||
string device_dev_eui = 2;
|
||||
}
|
||||
|
||||
message ListRelayDevicesRequest {
|
||||
// Max number of multicast groups to return in the result-set.
|
||||
uint32 limit = 1;
|
||||
|
||||
// Offset in the result-set (for pagination).
|
||||
uint32 offset = 2;
|
||||
|
||||
// Relay DevEUI (EUI64).
|
||||
string relay_dev_eui = 3;
|
||||
}
|
||||
|
||||
message RelayDeviceListItem {
|
||||
// DevEUI (EUI64).
|
||||
string dev_eui = 1;
|
||||
|
||||
// Created at timestamp.
|
||||
google.protobuf.Timestamp created_at = 2;
|
||||
|
||||
// Device name.
|
||||
string name = 3;
|
||||
}
|
||||
|
||||
message ListRelayDevicesResponse {
|
||||
// Total number of devices.
|
||||
uint32 total_count = 1;
|
||||
|
||||
// Result-set.
|
||||
repeated RelayDeviceListItem result = 2;
|
||||
}
|
851
api/python/proto/chirpstack-api/gw/gw.proto
vendored
851
api/python/proto/chirpstack-api/gw/gw.proto
vendored
File diff suppressed because it is too large
Load Diff
@ -14,288 +14,319 @@ import "google/protobuf/timestamp.proto";
|
||||
import "google/protobuf/struct.proto";
|
||||
|
||||
enum LogLevel {
|
||||
// Info.
|
||||
INFO = 0;
|
||||
// Info.
|
||||
INFO = 0;
|
||||
|
||||
// Warning.
|
||||
WARNING = 1;
|
||||
// Warning.
|
||||
WARNING = 1;
|
||||
|
||||
// Error.
|
||||
ERROR = 2;
|
||||
// Error.
|
||||
ERROR = 2;
|
||||
}
|
||||
|
||||
enum LogCode {
|
||||
// Unknown type.
|
||||
UNKNOWN = 0;
|
||||
// Unknown type.
|
||||
UNKNOWN = 0;
|
||||
|
||||
// Error related to the downlink payload size.
|
||||
// Usually seen when the payload exceeded the maximum allowed payload size.
|
||||
DOWNLINK_PAYLOAD_SIZE = 1;
|
||||
// Error related to the downlink payload size.
|
||||
// Usually seen when the payload exceeded the maximum allowed payload size.
|
||||
DOWNLINK_PAYLOAD_SIZE = 1;
|
||||
|
||||
// Uplink codec error.
|
||||
UPLINK_CODEC = 2;
|
||||
// Uplink codec error.
|
||||
UPLINK_CODEC = 2;
|
||||
|
||||
// Downlink codec error.
|
||||
DOWNLINK_CODEC = 3;
|
||||
// Downlink codec error.
|
||||
DOWNLINK_CODEC = 3;
|
||||
|
||||
// OTAA error.
|
||||
OTAA = 4;
|
||||
// OTAA error.
|
||||
OTAA = 4;
|
||||
|
||||
// Uplink frame-counter was reset.
|
||||
UPLINK_F_CNT_RESET = 5;
|
||||
// Uplink frame-counter was reset.
|
||||
UPLINK_F_CNT_RESET = 5;
|
||||
|
||||
// Uplink MIC error.
|
||||
UPLINK_MIC = 6;
|
||||
// Uplink MIC error.
|
||||
UPLINK_MIC = 6;
|
||||
|
||||
// Uplink frame-counter retransmission.
|
||||
UPLINK_F_CNT_RETRANSMISSION = 7;
|
||||
// Uplink frame-counter retransmission.
|
||||
UPLINK_F_CNT_RETRANSMISSION = 7;
|
||||
|
||||
// Downlink gateway error.
|
||||
DOWNLINK_GATEWAY = 8;
|
||||
// Downlink gateway error.
|
||||
DOWNLINK_GATEWAY = 8;
|
||||
|
||||
// Relay new end-device.
|
||||
RELAY_NEW_END_DEVICE = 9;
|
||||
}
|
||||
|
||||
// Device information.
|
||||
message DeviceInfo {
|
||||
// Tenant ID (UUID).
|
||||
string tenant_id = 1;
|
||||
// Tenant ID (UUID).
|
||||
string tenant_id = 1;
|
||||
|
||||
// Tenant name.
|
||||
string tenant_name = 2;
|
||||
// Tenant name.
|
||||
string tenant_name = 2;
|
||||
|
||||
// Application ID (UUID).
|
||||
string application_id = 3;
|
||||
// Application ID (UUID).
|
||||
string application_id = 3;
|
||||
|
||||
// Application name.
|
||||
string application_name = 4;
|
||||
// Application name.
|
||||
string application_name = 4;
|
||||
|
||||
// Device-profile ID (UUID).
|
||||
string device_profile_id = 5;
|
||||
// Device-profile ID (UUID).
|
||||
string device_profile_id = 5;
|
||||
|
||||
// Device-profile name.
|
||||
string device_profile_name = 6;
|
||||
// Device-profile name.
|
||||
string device_profile_name = 6;
|
||||
|
||||
// Device name.
|
||||
string device_name = 7;
|
||||
// Device name.
|
||||
string device_name = 7;
|
||||
|
||||
// Device EUI.
|
||||
string dev_eui = 8;
|
||||
// Device EUI.
|
||||
string dev_eui = 8;
|
||||
|
||||
// Device-profile and device tags.
|
||||
map<string, string> tags = 9;
|
||||
// Device-profile and device tags.
|
||||
map<string, string> tags = 9;
|
||||
}
|
||||
|
||||
// Uplink relay RX information.
|
||||
message UplinkRelayRxInfo {
|
||||
// Relay DevEUI.
|
||||
string dev_eui = 1;
|
||||
|
||||
// Frequency.
|
||||
uint32 frequency = 2;
|
||||
|
||||
// Data-rate.
|
||||
uint32 dr = 3;
|
||||
|
||||
// SNR.
|
||||
int32 snr = 4;
|
||||
|
||||
// RSSI.
|
||||
int32 rssi = 5;
|
||||
|
||||
// WOR channel.
|
||||
uint32 wor_channel = 6;
|
||||
}
|
||||
|
||||
// UplinkEvent is the message sent when an uplink payload has been received.
|
||||
message UplinkEvent {
|
||||
// Deduplication ID (UUID).
|
||||
string deduplication_id = 1;
|
||||
// Deduplication ID (UUID).
|
||||
string deduplication_id = 1;
|
||||
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 2;
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 2;
|
||||
|
||||
// Device information.
|
||||
DeviceInfo device_info = 3;
|
||||
// Device information.
|
||||
DeviceInfo device_info = 3;
|
||||
|
||||
// Device address.
|
||||
string dev_addr = 4;
|
||||
// Device address.
|
||||
string dev_addr = 4;
|
||||
|
||||
// Device has ADR bit set.
|
||||
bool adr = 5;
|
||||
// Device has ADR bit set.
|
||||
bool adr = 5;
|
||||
|
||||
// Data-rate.
|
||||
uint32 dr = 6;
|
||||
// Data-rate.
|
||||
uint32 dr = 6;
|
||||
|
||||
// Frame counter.
|
||||
uint32 f_cnt = 7;
|
||||
// Frame counter.
|
||||
uint32 f_cnt = 7;
|
||||
|
||||
// Frame port.
|
||||
uint32 f_port = 8;
|
||||
// Frame port.
|
||||
uint32 f_port = 8;
|
||||
|
||||
// Uplink was of type confirmed.
|
||||
bool confirmed = 9;
|
||||
// Uplink was of type confirmed.
|
||||
bool confirmed = 9;
|
||||
|
||||
// FRMPayload data.
|
||||
bytes data = 10;
|
||||
// FRMPayload data.
|
||||
bytes data = 10;
|
||||
|
||||
// Note that this is only set when a codec is configured in the Device Profile.
|
||||
google.protobuf.Struct object = 11;
|
||||
// Note that this is only set when a codec is configured in the Device
|
||||
// Profile.
|
||||
google.protobuf.Struct object = 11;
|
||||
|
||||
// Receiving gateway RX info.
|
||||
repeated gw.UplinkRxInfo rx_info = 12;
|
||||
// Receiving gateway RX info.
|
||||
repeated gw.UplinkRxInfo rx_info = 12;
|
||||
|
||||
// TX info.
|
||||
gw.UplinkTxInfo tx_info = 13;
|
||||
// TX info.
|
||||
gw.UplinkTxInfo tx_info = 13;
|
||||
|
||||
// Relay info.
|
||||
UplinkRelayRxInfo relay_rx_info = 14;
|
||||
}
|
||||
|
||||
// JoinEvent is the message sent when a device joined the network.
|
||||
// Note: this event is sent at the first uplink after OTAA.
|
||||
message JoinEvent {
|
||||
// Deduplication ID (UUID).
|
||||
string deduplication_id = 1;
|
||||
// Deduplication ID (UUID).
|
||||
string deduplication_id = 1;
|
||||
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 2;
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 2;
|
||||
|
||||
// Device info.
|
||||
DeviceInfo device_info = 3;
|
||||
// Device info.
|
||||
DeviceInfo device_info = 3;
|
||||
|
||||
// Device address.
|
||||
string dev_addr = 4;
|
||||
// Device address.
|
||||
string dev_addr = 4;
|
||||
|
||||
// Relay info.
|
||||
UplinkRelayRxInfo relay_rx_info = 5;
|
||||
}
|
||||
|
||||
// AckEvent is the message sent when a confirmation on a confirmed downlink
|
||||
// has been received -or- when the downlink timed out.
|
||||
message AckEvent {
|
||||
// Deduplication ID (UUID).
|
||||
string deduplication_id = 1;
|
||||
// Deduplication ID (UUID).
|
||||
string deduplication_id = 1;
|
||||
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 2;
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 2;
|
||||
|
||||
// Device info.
|
||||
DeviceInfo device_info = 3;
|
||||
// Device info.
|
||||
DeviceInfo device_info = 3;
|
||||
|
||||
// Downlink queue item ID (UUID).
|
||||
string queue_item_id = 4;
|
||||
// Downlink queue item ID (UUID).
|
||||
string queue_item_id = 4;
|
||||
|
||||
// Frame was acknowledged.
|
||||
bool acknowledged = 5;
|
||||
// Frame was acknowledged.
|
||||
bool acknowledged = 5;
|
||||
|
||||
// Downlink frame counter to which the acknowledgement relates.
|
||||
uint32 f_cnt_down = 6;
|
||||
// Downlink frame counter to which the acknowledgement relates.
|
||||
uint32 f_cnt_down = 6;
|
||||
}
|
||||
|
||||
// TxAckEvent is the message sent when a downlink was acknowledged by the gateway
|
||||
// for transmission. As a downlink can be scheduled in the future, this event
|
||||
// does not confirm that the message has already been transmitted.
|
||||
// TxAckEvent is the message sent when a downlink was acknowledged by the
|
||||
// gateway for transmission. As a downlink can be scheduled in the future, this
|
||||
// event does not confirm that the message has already been transmitted.
|
||||
message TxAckEvent {
|
||||
// Downlink ID.
|
||||
uint32 downlink_id = 1;
|
||||
// Downlink ID.
|
||||
uint32 downlink_id = 1;
|
||||
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 2;
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 2;
|
||||
|
||||
// Device info.
|
||||
DeviceInfo device_info = 3;
|
||||
// Device info.
|
||||
DeviceInfo device_info = 3;
|
||||
|
||||
// Downlink queue item ID (UUID).
|
||||
string queue_item_id = 4;
|
||||
// Downlink queue item ID (UUID).
|
||||
string queue_item_id = 4;
|
||||
|
||||
// Downlink frame-counter.
|
||||
uint32 f_cnt_down = 5;
|
||||
// Downlink frame-counter.
|
||||
uint32 f_cnt_down = 5;
|
||||
|
||||
// Gateway ID.
|
||||
string gateway_id = 6;
|
||||
// Gateway ID.
|
||||
string gateway_id = 6;
|
||||
|
||||
// TX info.
|
||||
gw.DownlinkTxInfo tx_info = 7;
|
||||
// TX info.
|
||||
gw.DownlinkTxInfo tx_info = 7;
|
||||
}
|
||||
|
||||
// LogEvent is the message sent when a device-related log was sent.
|
||||
message LogEvent {
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 1;
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 1;
|
||||
|
||||
// Device info.
|
||||
DeviceInfo device_info = 2;
|
||||
// Device info.
|
||||
DeviceInfo device_info = 2;
|
||||
|
||||
// Log level.
|
||||
LogLevel level = 3;
|
||||
// Log level.
|
||||
LogLevel level = 3;
|
||||
|
||||
// Log code.
|
||||
LogCode code = 4;
|
||||
// Log code.
|
||||
LogCode code = 4;
|
||||
|
||||
// Description message.
|
||||
string description = 5;
|
||||
// Description message.
|
||||
string description = 5;
|
||||
|
||||
// Context map.
|
||||
map<string, string> context = 6;
|
||||
// Context map.
|
||||
map<string, string> context = 6;
|
||||
}
|
||||
|
||||
// StatusEvent is the message sent when a device-status mac-command was sent
|
||||
// by the device.
|
||||
message StatusEvent {
|
||||
// Deduplication ID (UUID).
|
||||
string deduplication_id = 1;
|
||||
// Deduplication ID (UUID).
|
||||
string deduplication_id = 1;
|
||||
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 2;
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 2;
|
||||
|
||||
// Device info.
|
||||
DeviceInfo device_info = 3;
|
||||
// Device info.
|
||||
DeviceInfo device_info = 3;
|
||||
|
||||
// The demodulation signal-to-noise ratio in dB for the last successfully
|
||||
// received device-status request by the Network Server.
|
||||
int32 margin = 5;
|
||||
// The demodulation signal-to-noise ratio in dB for the last successfully
|
||||
// received device-status request by the Network Server.
|
||||
int32 margin = 5;
|
||||
|
||||
// Device is connected to an external power source.
|
||||
bool external_power_source = 6;
|
||||
// Device is connected to an external power source.
|
||||
bool external_power_source = 6;
|
||||
|
||||
// Battery level is not available.
|
||||
bool battery_level_unavailable = 7;
|
||||
// Battery level is not available.
|
||||
bool battery_level_unavailable = 7;
|
||||
|
||||
// Battery level.
|
||||
float battery_level = 8;
|
||||
// Battery level.
|
||||
float battery_level = 8;
|
||||
}
|
||||
|
||||
// LocationEvent is the message sent when a geolocation resolve was returned.
|
||||
message LocationEvent {
|
||||
// Deduplication ID (UUID).
|
||||
string deduplication_id = 1;
|
||||
// Deduplication ID (UUID).
|
||||
string deduplication_id = 1;
|
||||
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 2;
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 2;
|
||||
|
||||
// Device info.
|
||||
DeviceInfo device_info = 3;
|
||||
// Device info.
|
||||
DeviceInfo device_info = 3;
|
||||
|
||||
// Location.
|
||||
common.Location location = 4;
|
||||
// Location.
|
||||
common.Location location = 4;
|
||||
}
|
||||
|
||||
// IntegrationEvent is the message that can be sent by an integration.
|
||||
// It allows for sending events which are provided by an external integration
|
||||
// which are "not native" to ChirpStack.
|
||||
message IntegrationEvent {
|
||||
// Deduplication ID (UUID).
|
||||
string deduplication_id = 1;
|
||||
// Deduplication ID (UUID).
|
||||
string deduplication_id = 1;
|
||||
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 2;
|
||||
// Timestamp.
|
||||
google.protobuf.Timestamp time = 2;
|
||||
|
||||
// Device info.
|
||||
DeviceInfo device_info = 3;
|
||||
// Device info.
|
||||
DeviceInfo device_info = 3;
|
||||
|
||||
// Integration name.
|
||||
string integration_name = 4;
|
||||
// Integration name.
|
||||
string integration_name = 4;
|
||||
|
||||
// Event type.
|
||||
string event_type = 5;
|
||||
// Event type.
|
||||
string event_type = 5;
|
||||
|
||||
// Struct containing the event object.
|
||||
google.protobuf.Struct object = 6;
|
||||
// Struct containing the event object.
|
||||
google.protobuf.Struct object = 6;
|
||||
}
|
||||
|
||||
// DownlinkCommand is the command to enqueue a downlink payload for the given
|
||||
// device.
|
||||
message DownlinkCommand {
|
||||
// ID (UUID).
|
||||
// If left blank, a random UUID will be generated.
|
||||
string id = 1;
|
||||
// ID (UUID).
|
||||
// If left blank, a random UUID will be generated.
|
||||
string id = 1;
|
||||
|
||||
// Device EUI (EUI64).
|
||||
string dev_eui = 2;
|
||||
// Device EUI (EUI64).
|
||||
string dev_eui = 2;
|
||||
|
||||
// Confirmed.
|
||||
bool confirmed = 3;
|
||||
// Confirmed.
|
||||
bool confirmed = 3;
|
||||
|
||||
// FPort (must be > 0).
|
||||
uint32 f_port = 4;
|
||||
// FPort (must be > 0).
|
||||
uint32 f_port = 4;
|
||||
|
||||
// Data.
|
||||
// Or use the json_object field when a codec has been configured.
|
||||
bytes data = 5;
|
||||
// Data.
|
||||
// Or use the json_object field when a codec has been configured.
|
||||
bytes data = 5;
|
||||
|
||||
// Only use this when a codec has been configured that can encode this
|
||||
// object to bytes.
|
||||
google.protobuf.Struct object = 6;
|
||||
// Only use this when a codec has been configured that can encode this
|
||||
// object to bytes.
|
||||
google.protobuf.Struct object = 6;
|
||||
}
|
||||
|
@ -7,272 +7,403 @@ import "chirpstack-api/gw/gw.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
|
||||
message DeviceSession {
|
||||
// Device EUI.
|
||||
bytes dev_eui = 1;
|
||||
// Device EUI.
|
||||
bytes dev_eui = 1;
|
||||
|
||||
// Device address.
|
||||
bytes dev_addr = 2;
|
||||
// Device address.
|
||||
bytes dev_addr = 2;
|
||||
|
||||
// Join EUI.
|
||||
bytes join_eui = 3;
|
||||
// Join EUI.
|
||||
bytes join_eui = 3;
|
||||
|
||||
// LoRaWAN mac-version.
|
||||
common.MacVersion mac_version = 4;
|
||||
// LoRaWAN mac-version.
|
||||
common.MacVersion mac_version = 4;
|
||||
|
||||
// FNwkSIntKey.
|
||||
bytes f_nwk_s_int_key = 5;
|
||||
// FNwkSIntKey.
|
||||
bytes f_nwk_s_int_key = 5;
|
||||
|
||||
// SNwkSIntKey.
|
||||
bytes s_nwk_s_int_key = 6;
|
||||
// SNwkSIntKey.
|
||||
bytes s_nwk_s_int_key = 6;
|
||||
|
||||
// NwkSEncKey.
|
||||
bytes nwk_s_enc_key = 7;
|
||||
// NwkSEncKey.
|
||||
bytes nwk_s_enc_key = 7;
|
||||
|
||||
// AppSKey envelope.
|
||||
common.KeyEnvelope app_s_key = 8;
|
||||
// AppSKey envelope.
|
||||
common.KeyEnvelope app_s_key = 8;
|
||||
|
||||
// Uplink frame-counter.
|
||||
uint32 f_cnt_up = 9;
|
||||
// Uplink frame-counter.
|
||||
uint32 f_cnt_up = 9;
|
||||
|
||||
// Downlink frame-counter (ns).
|
||||
uint32 n_f_cnt_down = 10;
|
||||
// Downlink frame-counter (ns).
|
||||
uint32 n_f_cnt_down = 10;
|
||||
|
||||
// Downlink frame-counter (as).
|
||||
uint32 a_f_cnt_down = 11;
|
||||
// Downlink frame-counter (as).
|
||||
uint32 a_f_cnt_down = 11;
|
||||
|
||||
// Frame-counter holding the last confirmed downlink frame (n_f_cnt_down or a_f_cnt_down).
|
||||
uint32 conf_f_cnt = 12;
|
||||
// Frame-counter holding the last confirmed downlink frame (n_f_cnt_down or
|
||||
// a_f_cnt_down).
|
||||
uint32 conf_f_cnt = 12;
|
||||
|
||||
// Skip uplink frame-counter validation.
|
||||
bool skip_f_cnt_check = 13;
|
||||
// Skip uplink frame-counter validation.
|
||||
bool skip_f_cnt_check = 13;
|
||||
|
||||
// RX1 delay.
|
||||
uint32 rx1_delay = 14;
|
||||
// RX1 delay.
|
||||
uint32 rx1_delay = 14;
|
||||
|
||||
// RX1 data-rate offset.
|
||||
uint32 rx1_dr_offset = 15;
|
||||
// RX1 data-rate offset.
|
||||
uint32 rx1_dr_offset = 15;
|
||||
|
||||
// RX2 data-rate.
|
||||
uint32 rx2_dr = 16;
|
||||
// RX2 data-rate.
|
||||
uint32 rx2_dr = 16;
|
||||
|
||||
// RX2 frequency.
|
||||
uint32 rx2_frequency = 17;
|
||||
// RX2 frequency.
|
||||
uint32 rx2_frequency = 17;
|
||||
|
||||
// Enabled uplink channels.
|
||||
repeated uint32 enabled_uplink_channel_indices = 18;
|
||||
// Enabled uplink channels.
|
||||
repeated uint32 enabled_uplink_channel_indices = 18;
|
||||
|
||||
// Extra user-defined uplink channels.
|
||||
map<uint32, DeviceSessionChannel> extra_uplink_channels = 19;
|
||||
// Extra user-defined uplink channels.
|
||||
map<uint32, DeviceSessionChannel> extra_uplink_channels = 19;
|
||||
|
||||
// Class-B ping-slot data-rate.
|
||||
uint32 class_b_ping_slot_dr = 20;
|
||||
// Class-B ping-slot data-rate.
|
||||
uint32 class_b_ping_slot_dr = 20;
|
||||
|
||||
// Class-B ping-slot frequency.
|
||||
uint32 class_b_ping_slot_freq = 21;
|
||||
// Class-B ping-slot frequency.
|
||||
uint32 class_b_ping_slot_freq = 21;
|
||||
|
||||
// Class-B ping-slot nb.
|
||||
uint32 class_b_ping_slot_nb = 22;
|
||||
// Class-B ping-slot nb.
|
||||
uint32 class_b_ping_slot_nb = 22;
|
||||
|
||||
// Nb. transmissions.
|
||||
uint32 nb_trans = 23;
|
||||
// Nb. transmissions.
|
||||
uint32 nb_trans = 23;
|
||||
|
||||
// TXPowerIndex which the node is using. The possible values are defined
|
||||
// by the lorawan/band package and are region specific. By default it is
|
||||
// assumed that the node is using TXPower 0. This value is controlled by
|
||||
// the ADR engine.
|
||||
uint32 tx_power_index = 24;
|
||||
// TXPowerIndex which the node is using. The possible values are defined
|
||||
// by the lorawan/band package and are region specific. By default it is
|
||||
// assumed that the node is using TXPower 0. This value is controlled by
|
||||
// the ADR engine.
|
||||
uint32 tx_power_index = 24;
|
||||
|
||||
// DR defines the (last known) data-rate at which the node is operating.
|
||||
// This value is controlled by the ADR engine.
|
||||
uint32 dr = 25;
|
||||
// DR defines the (last known) data-rate at which the node is operating.
|
||||
// This value is controlled by the ADR engine.
|
||||
uint32 dr = 25;
|
||||
|
||||
// ADR defines if the device has ADR enabled.
|
||||
bool adr = 26;
|
||||
// ADR defines if the device has ADR enabled.
|
||||
bool adr = 26;
|
||||
|
||||
// MaxSupportedTXPowerIndex defines the maximum supported tx-power index
|
||||
// by the node, or 0 when not set.
|
||||
uint32 max_supported_tx_power_index = 27;
|
||||
// MaxSupportedTXPowerIndex defines the maximum supported tx-power index
|
||||
// by the node, or 0 when not set.
|
||||
uint32 max_supported_tx_power_index = 27;
|
||||
|
||||
// MinSupportedTXPowerIndex defines the minimum supported tx-power index
|
||||
// by the node (default 0).
|
||||
uint32 min_supported_tx_power_index = 28;
|
||||
// MinSupportedTXPowerIndex defines the minimum supported tx-power index
|
||||
// by the node (default 0).
|
||||
uint32 min_supported_tx_power_index = 28;
|
||||
|
||||
// Pending rejoin device-session contains a device-session which has not
|
||||
// yet been activated by the device (by sending a first uplink).
|
||||
DeviceSession pending_rejoin_device_session = 29;
|
||||
// Pending rejoin device-session contains a device-session which has not
|
||||
// yet been activated by the device (by sending a first uplink).
|
||||
DeviceSession pending_rejoin_device_session = 29;
|
||||
|
||||
// Uplink history for ADR (last 20 uplink transmissions).
|
||||
repeated UplinkAdrHistory uplink_adr_history = 30;
|
||||
// Uplink history for ADR (last 20 uplink transmissions).
|
||||
repeated UplinkAdrHistory uplink_adr_history = 30;
|
||||
|
||||
// Mac-command error count.
|
||||
map<uint32, uint32> mac_command_error_count = 31;
|
||||
// Mac-command error count.
|
||||
map<uint32, uint32> mac_command_error_count = 31;
|
||||
|
||||
// Last device-status request.
|
||||
google.protobuf.Timestamp last_device_status_request = 32;
|
||||
// Last device-status request.
|
||||
google.protobuf.Timestamp last_device_status_request = 32;
|
||||
|
||||
// RejoinRequestEnabled defines if the rejoin-request is enabled on the
|
||||
// device.
|
||||
bool rejoin_request_enabled = 33;
|
||||
// RejoinRequestEnabled defines if the rejoin-request is enabled on the
|
||||
// device.
|
||||
bool rejoin_request_enabled = 33;
|
||||
|
||||
// RejoinRequestMaxCountN defines the 2^(C+4) uplink message interval for
|
||||
// the rejoin-request.
|
||||
uint32 rejoin_request_max_count_n = 34;
|
||||
// RejoinRequestMaxCountN defines the 2^(C+4) uplink message interval for
|
||||
// the rejoin-request.
|
||||
uint32 rejoin_request_max_count_n = 34;
|
||||
|
||||
// RejoinRequestMaxTimeN defines the 2^(T+10) time interval (seconds)
|
||||
// for the rejoin-request.
|
||||
uint32 rejoin_request_max_time_n = 35;
|
||||
// RejoinRequestMaxTimeN defines the 2^(T+10) time interval (seconds)
|
||||
// for the rejoin-request.
|
||||
uint32 rejoin_request_max_time_n = 35;
|
||||
|
||||
// Rejoin counter (RJCount0).
|
||||
// This counter is reset to 0 after each successful join-accept.
|
||||
uint32 rejoin_count_0 = 36;
|
||||
// Rejoin counter (RJCount0).
|
||||
// This counter is reset to 0 after each successful join-accept.
|
||||
uint32 rejoin_count_0 = 36;
|
||||
|
||||
// Uplink dwell time.
|
||||
bool uplink_dwell_time_400ms = 37;
|
||||
// Uplink dwell time.
|
||||
bool uplink_dwell_time_400ms = 37;
|
||||
|
||||
// Downlink dwell time.
|
||||
bool downlink_dwell_time_400ms = 38;
|
||||
// Downlink dwell time.
|
||||
bool downlink_dwell_time_400ms = 38;
|
||||
|
||||
// Uplink max. EIRP index.
|
||||
uint32 uplink_max_eirp_index = 39;
|
||||
// Uplink max. EIRP index.
|
||||
uint32 uplink_max_eirp_index = 39;
|
||||
|
||||
// Region configuration ID.
|
||||
string region_config_id = 40;
|
||||
// Region configuration ID.
|
||||
string region_config_id = 40;
|
||||
|
||||
// Relay state.
|
||||
Relay relay = 41;
|
||||
}
|
||||
|
||||
message UplinkAdrHistory {
|
||||
// Uplink frame-counter.
|
||||
uint32 f_cnt = 1;
|
||||
// Uplink frame-counter.
|
||||
uint32 f_cnt = 1;
|
||||
|
||||
// Max SNR (of deduplicated frames received by one or multiple gateways).
|
||||
float max_snr = 2;
|
||||
// Max SNR (of deduplicated frames received by one or multiple gateways).
|
||||
float max_snr = 2;
|
||||
|
||||
// Max RSSI.
|
||||
int32 max_rssi = 5;
|
||||
// Max RSSI.
|
||||
int32 max_rssi = 5;
|
||||
|
||||
// TX Power (as known by the network-server).
|
||||
uint32 tx_power_index = 3;
|
||||
// TX Power (as known by the network-server).
|
||||
uint32 tx_power_index = 3;
|
||||
|
||||
// Number of receiving gateways.
|
||||
uint32 gateway_count = 4;
|
||||
// Number of receiving gateways.
|
||||
uint32 gateway_count = 4;
|
||||
}
|
||||
|
||||
message Relay {
|
||||
// Devices provisioned on the relay.
|
||||
repeated RelayDevice devices = 1;
|
||||
|
||||
// Filter list.
|
||||
repeated RelayFilter filters = 2;
|
||||
|
||||
// Relay is enabled.
|
||||
bool enabled = 3;
|
||||
|
||||
// CAD periodicity.
|
||||
uint32 cad_periodicity = 4;
|
||||
|
||||
// Default channel index.
|
||||
uint32 default_channel_index = 5;
|
||||
|
||||
// Second channel freq.
|
||||
uint32 second_channel_freq = 6;
|
||||
|
||||
// Second channel DR.
|
||||
uint32 second_channel_dr = 7;
|
||||
|
||||
// Second channel ACK offset.
|
||||
uint32 second_channel_ack_offset = 8;
|
||||
|
||||
// End-device activation mode.
|
||||
uint32 ed_activation_mode = 9;
|
||||
|
||||
// End-device smart-enable level.
|
||||
uint32 ed_smart_enable_level = 10;
|
||||
|
||||
// End-device back-off.
|
||||
uint32 ed_back_off = 11;
|
||||
|
||||
// Join-request limit reload rate.
|
||||
uint32 join_req_limit_reload_rate = 12;
|
||||
|
||||
// Notify limit reload rate.
|
||||
uint32 notify_limit_reload_rate = 13;
|
||||
|
||||
// Global uplink limit reload rate.
|
||||
uint32 global_uplink_limit_reload_rate = 14;
|
||||
|
||||
// Overall limit reload rate.
|
||||
uint32 overall_limit_reload_rate = 15;
|
||||
|
||||
// Join-request limit bucket size.
|
||||
uint32 join_req_limit_bucket_size = 16;
|
||||
|
||||
// Notify limit bucket size.
|
||||
uint32 notify_limit_bucket_size = 17;
|
||||
|
||||
// Global uplink limit bucket size.
|
||||
uint32 global_uplink_limit_bucket_size = 18;
|
||||
|
||||
// Overall limit bucket size.
|
||||
uint32 overall_limit_bucket_size = 19;
|
||||
|
||||
// End-device must communicate through relay only.
|
||||
// This is stored in the device-session as we need to validate on retrieving
|
||||
// the device-session.
|
||||
bool ed_relay_only = 20;
|
||||
|
||||
// End-device WFCnt.
|
||||
// This holds the last known WFCnt value. ChirpStack will periodically read
|
||||
// this value from the Relay.
|
||||
uint32 w_f_cnt = 21;
|
||||
}
|
||||
|
||||
message RelayDevice {
|
||||
// Index (used for filter and uplink filters).
|
||||
// This must be between 0 - 15.
|
||||
uint32 index = 1;
|
||||
|
||||
// JoinEUI (EUI64).
|
||||
bytes join_eui = 2;
|
||||
|
||||
// DevEUI (EUI64).
|
||||
bytes dev_eui = 3;
|
||||
|
||||
// DevAddr.
|
||||
bytes dev_addr = 4;
|
||||
|
||||
// RootWorSKey.
|
||||
bytes root_wor_s_key = 5;
|
||||
|
||||
// Provisioned.
|
||||
bool provisioned = 6;
|
||||
|
||||
// Uplink limit bucket size.
|
||||
uint32 uplink_limit_bucket_size = 7;
|
||||
|
||||
// Uplink limit reload rate.
|
||||
uint32 uplink_limit_reload_rate = 8;
|
||||
|
||||
// Timestamp of the last WFCnt request.
|
||||
// Note that ChirpStack periodically requests the WFCnt from the relay.
|
||||
google.protobuf.Timestamp w_f_cnt_last_request = 9;
|
||||
}
|
||||
|
||||
message RelayFilter {
|
||||
// Index.
|
||||
// This must be between 0 - 15.
|
||||
uint32 index = 1;
|
||||
|
||||
// Action.
|
||||
// * 0: No Rule
|
||||
// * 1: Forward
|
||||
// * 2: Filter
|
||||
uint32 action = 2;
|
||||
|
||||
// DevEUI (EUI64).
|
||||
bytes dev_eui = 3;
|
||||
|
||||
// JoinEUI (EUI64).
|
||||
bytes join_eui = 4;
|
||||
|
||||
// Provisioned.
|
||||
bool provisioned = 5;
|
||||
}
|
||||
|
||||
message DeviceSessionChannel {
|
||||
// Frequency Hz.
|
||||
uint32 frequency = 1;
|
||||
// Frequency Hz.
|
||||
uint32 frequency = 1;
|
||||
|
||||
// Min. data-rate.
|
||||
uint32 min_dr = 2;
|
||||
// Min. data-rate.
|
||||
uint32 min_dr = 2;
|
||||
|
||||
// Max. data-rate.
|
||||
uint32 max_dr = 3;
|
||||
// Max. data-rate.
|
||||
uint32 max_dr = 3;
|
||||
}
|
||||
|
||||
message DeviceGatewayRxInfo {
|
||||
// DevEUI (EUI64).
|
||||
bytes dev_eui = 1;
|
||||
// DevEUI (EUI64).
|
||||
bytes dev_eui = 1;
|
||||
|
||||
// Data-rate.
|
||||
uint32 dr = 2;
|
||||
// Data-rate.
|
||||
uint32 dr = 2;
|
||||
|
||||
// Gateway RxInfo elements.
|
||||
repeated DeviceGatewayRxInfoItem items = 3;
|
||||
// Gateway RxInfo elements.
|
||||
repeated DeviceGatewayRxInfoItem items = 3;
|
||||
}
|
||||
|
||||
message DeviceGatewayRxInfoItem {
|
||||
// Gateway ID (EUI64).
|
||||
bytes gateway_id = 1;
|
||||
// Gateway ID (EUI64).
|
||||
bytes gateway_id = 1;
|
||||
|
||||
// RSSI.
|
||||
int32 rssi = 2;
|
||||
// RSSI.
|
||||
int32 rssi = 2;
|
||||
|
||||
// LoRa SNR.
|
||||
float lora_snr = 3;
|
||||
// LoRa SNR.
|
||||
float lora_snr = 3;
|
||||
|
||||
// Antenna.
|
||||
uint32 antenna = 4;
|
||||
// Antenna.
|
||||
uint32 antenna = 4;
|
||||
|
||||
// Board.
|
||||
uint32 board = 5;
|
||||
// Board.
|
||||
uint32 board = 5;
|
||||
|
||||
// Context blob.
|
||||
bytes context = 6;
|
||||
// Context blob.
|
||||
bytes context = 6;
|
||||
|
||||
// Gateway is private (uplink).
|
||||
bool is_private_up = 7;
|
||||
// Gateway is private (uplink).
|
||||
bool is_private_up = 7;
|
||||
|
||||
// Gateway is private (downlink).
|
||||
bool is_private_down = 8;
|
||||
// Gateway is private (downlink).
|
||||
bool is_private_down = 8;
|
||||
|
||||
// Tenant ID (UUID).
|
||||
bytes tenant_id = 9;
|
||||
// Tenant ID (UUID).
|
||||
bytes tenant_id = 9;
|
||||
}
|
||||
|
||||
message DownlinkFrame {
|
||||
// Downlink ID.
|
||||
uint32 downlink_id = 1;
|
||||
// Downlink ID.
|
||||
uint32 downlink_id = 1;
|
||||
|
||||
// DevEUI.
|
||||
bytes dev_eui = 2;
|
||||
// DevEUI.
|
||||
bytes dev_eui = 2;
|
||||
|
||||
// Device queue item ID.
|
||||
bytes device_queue_item_id = 3;
|
||||
// Device queue item ID.
|
||||
bytes device_queue_item_id = 3;
|
||||
|
||||
// Multicast Group ID.
|
||||
bytes multicast_group_id = 4;
|
||||
// Multicast Group ID.
|
||||
bytes multicast_group_id = 4;
|
||||
|
||||
// Multicast queue item ID.
|
||||
bytes multicast_group_queue_item_id = 5;
|
||||
// Multicast queue item ID.
|
||||
bytes multicast_group_queue_item_id = 5;
|
||||
|
||||
// Downlink frames.
|
||||
gw.DownlinkFrame downlink_frame = 6;
|
||||
// Downlink frames.
|
||||
gw.DownlinkFrame downlink_frame = 6;
|
||||
|
||||
// Encrypted FOpts (LoRaWAN 1.1).
|
||||
bool encrypted_fopts = 8;
|
||||
// Encrypted FOpts (LoRaWAN 1.1).
|
||||
bool encrypted_fopts = 8;
|
||||
|
||||
// Network session encryption key (for FOpts and FRMPayload mac-commands).
|
||||
bytes nwk_s_enc_key = 9;
|
||||
// Network session encryption key (for FOpts and FRMPayload mac-commands).
|
||||
bytes nwk_s_enc_key = 9;
|
||||
|
||||
// NFCntDown (for decrypting mac-commands).
|
||||
uint32 n_f_cnt_down = 10;
|
||||
// NFCntDown (for decrypting mac-commands).
|
||||
uint32 n_f_cnt_down = 10;
|
||||
|
||||
// AFCntDown (for decrypting FRMPayload in case of Relay).
|
||||
uint32 a_f_cnt_down = 11;
|
||||
|
||||
// DevEUI of relayed device.
|
||||
bytes dev_eui_relayed = 12;
|
||||
}
|
||||
|
||||
message LoraCloudGeolocBuffer {
|
||||
// Uplinks in buffer.
|
||||
repeated LoraCloudGeolocBufferUplink uplinks = 1;
|
||||
// Uplinks in buffer.
|
||||
repeated LoraCloudGeolocBufferUplink uplinks = 1;
|
||||
}
|
||||
|
||||
message LoraCloudGeolocBufferUplink {
|
||||
// RxInfo set for a single uplink.
|
||||
repeated gw.UplinkRxInfo rx_info = 1;
|
||||
// RxInfo set for a single uplink.
|
||||
repeated gw.UplinkRxInfo rx_info = 1;
|
||||
}
|
||||
|
||||
message PassiveRoamingDeviceSession {
|
||||
// Session ID (UUID).
|
||||
// Unfortunately we can not use the DevEUI as unique identifier
|
||||
// as the PRStartAns DevEUI field is optional.
|
||||
bytes session_id = 1;
|
||||
// Session ID (UUID).
|
||||
// Unfortunately we can not use the DevEUI as unique identifier
|
||||
// as the PRStartAns DevEUI field is optional.
|
||||
bytes session_id = 1;
|
||||
|
||||
// NetID of the hNS.
|
||||
bytes net_id = 2;
|
||||
|
||||
// DevAddr of the device.
|
||||
bytes dev_addr = 3;
|
||||
// NetID of the hNS.
|
||||
bytes net_id = 2;
|
||||
|
||||
// DevEUI of the device (optional).
|
||||
bytes dev_eui = 4;
|
||||
// DevAddr of the device.
|
||||
bytes dev_addr = 3;
|
||||
|
||||
// LoRaWAN 1.1.
|
||||
bool lorawan_1_1 = 5;
|
||||
// DevEUI of the device (optional).
|
||||
bytes dev_eui = 4;
|
||||
|
||||
// LoRaWAN 1.0 NwkSKey / LoRaWAN 1.1 FNwkSIntKey.
|
||||
bytes f_nwk_s_int_key = 6;
|
||||
// LoRaWAN 1.1.
|
||||
bool lorawan_1_1 = 5;
|
||||
|
||||
// Lifetime.
|
||||
google.protobuf.Timestamp lifetime = 7;
|
||||
// LoRaWAN 1.0 NwkSKey / LoRaWAN 1.1 FNwkSIntKey.
|
||||
bytes f_nwk_s_int_key = 6;
|
||||
|
||||
// Uplink frame-counter.
|
||||
uint32 f_cnt_up = 8;
|
||||
// Lifetime.
|
||||
google.protobuf.Timestamp lifetime = 7;
|
||||
|
||||
// Validate MIC.
|
||||
bool validate_mic = 9;
|
||||
// Uplink frame-counter.
|
||||
uint32 f_cnt_up = 8;
|
||||
|
||||
// Validate MIC.
|
||||
bool validate_mic = 9;
|
||||
}
|
||||
|
Reference in New Issue
Block a user