Implement adding gws to multicast-group + Class-C scheduling config.

This makes it possible to add gateways to a multicast-group, which in
case configured will always be used for transmitting the multicast
downlinks.

This also moves the multicast class-c scheduling to the multicast-group
configuration. Options are delay between multiple gateways, or GPS time
synchronized transmission.
This commit is contained in:
Orne Brocaar
2023-02-09 15:11:06 +00:00
parent 8d34bb0d0c
commit f657c3e971
96 changed files with 3337 additions and 604 deletions

View File

@ -187,6 +187,9 @@ message ListGatewaysRequest {
// Tenant ID (UUID) to filter gateways on.
// To list all gateways as a global admin user, this field can be left blank.
string tenant_id = 4;
// Multicast-group ID (UUID) to filter gateways on.
string multicast_group_id = 5;
}
message ListGatewaysResponse {

View File

@ -68,6 +68,21 @@ service MulticastGroupService {
};
}
// Add a gateway to the multicast group.
rpc AddGateway(AddGatewayToMulticastGroupRequest) returns (google.protobuf.Empty) {
option(google.api.http) = {
post: "/api/multicast-groups/{multicast_group_id}/gateways"
body: "*"
};
}
// Remove a gateway from the multicast group.
rpc RemoveGateway(RemoveGatewayFromMulticastGroupRequest) returns (google.protobuf.Empty) {
option(google.api.http) = {
delete: "/api/multicast-groups/{multicast_group_id}/gateways/{gateway_id}"
};
}
// Add the given item to the multicast group queue.
rpc Enqueue(EnqueueMulticastGroupQueueItemRequest) returns (EnqueueMulticastGroupQueueItemResponse) {
option(google.api.http) = {
@ -99,6 +114,19 @@ enum MulticastGroupType {
CLASS_B = 1;
}
enum MulticastGroupSchedulingType {
// Delay.
// If multicast downlinks must be sent through multiple gateways, then
// these will be sent one by one with a delay between each gateway.
DELAY = 0;
// Time.
// If multicast downlinks must be sent through multiple gateways, then
// these will be sent simultaneously using GPS time synchronization.
// Note that this does require GPS time-synchronized LoRa gateways.
GPS_TIME = 1;
}
message MulticastGroup {
// ID (UUID).
// This will be generated automatically on create.
@ -137,6 +165,9 @@ message MulticastGroup {
// Ping-slot period (only for Class-B).
uint32 class_b_ping_slot_period = 12;
// Scheduling type (only for Class-C).
MulticastGroupSchedulingType class_c_scheduling_type = 13;
}
message MulticastGroupListItem {
@ -233,6 +264,22 @@ message RemoveDeviceFromMulticastGroupRequest {
string dev_eui = 2;
}
message AddGatewayToMulticastGroupRequest {
// Multicast group ID.
string multicast_group_id = 1;
// Gateway ID (HEX encoded).
string gateway_id = 2;
}
message RemoveGatewayFromMulticastGroupRequest {
// Multicast group ID.
string multicast_group_id = 1;
// Gateway ID (HEX encoded).
string gateway_id = 2;
}
message MulticastGroupQueueItem {
// Multicast group ID.
string multicast_group_id = 1;