Skip to content

Commit

Permalink
Project import generated by Copybara.
Browse files Browse the repository at this point in the history
GitOrigin-RevId: 776aa103ba46addf47becd734598370dcb4c0475
  • Loading branch information
Aalyria Technologies, Inc authored and nihar-aalyria committed Aug 31, 2023
1 parent 0fafe64 commit 7b81b4f
Show file tree
Hide file tree
Showing 4 changed files with 245 additions and 0 deletions.
3 changes: 3 additions & 0 deletions api/nbi/v1alpha/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,13 @@ proto_library(
name = "nbi_proto",
srcs = [
"nbi.proto",
"signal_propagation.proto",
],
deps = [
"//api/common:common_proto",
"//api/nbi/v1alpha/resources:nbi_resources_proto",
"@com_google_protobuf//:duration_proto",
"@com_google_protobuf//:timestamp_proto",
"@go_googleapis//google/api:annotations_proto",
"@go_googleapis//google/type:interval_proto",
],
Expand Down
1 change: 1 addition & 0 deletions api/nbi/v1alpha/resources/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ proto_library(
"network_link.proto",
"scenario_settings.proto",
"service_request.proto",
"wireless_evaluation.proto",
"wireless_interference.proto",
],
deps = [
Expand Down
138 changes: 138 additions & 0 deletions api/nbi/v1alpha/resources/wireless_evaluation.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
// Copyright 2023 Aalyria Technologies, Inc., and its affiliates.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto2";

package aalyria.spacetime.api.nbi.v1alpha.resources;

import "api/common/coordinates.proto";
import "api/common/wireless_transceiver.proto";
import "api/nbi/v1alpha/resources/coverage.proto";
import "api/nbi/v1alpha/resources/network_link.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
import "google/type/interval.proto";

option java_package = "com.aalyria.spacetime.api.nbi.v1alpha.resources";
option go_package = "aalyria.com/spacetime/api/nbi/v1alpha/resources";

/* Messages that relate to how a wireless signal is propagated. */

// Models a transceiver with a specified motion.
// This can be used for one-off analyses to compute link budgets
// with the
// aalyria.spacetime.nbi.v1alpha.SignalPropagation service.
message TransceiverWithMotion {
optional aalyria.spacetime.api.common.TransceiverModel model = 1;
optional aalyria.spacetime.api.common.Motion motion = 2;
}

// Models either a transceiver on an existing PlatformDefinition,
// or a transceiver with a specified motion for one-off
// analysis. This is used by the
// aalyria.spacetime.nbi.v1alpha.SignalPropagation service.
message TransceiverProvider {
oneof source {
aalyria.spacetime.api.common.TransceiverModelId id_in_store = 1;
TransceiverWithMotion definition = 2;
}
}

// Explains the reason that a wireless link is inaccessible.
message NoAccessReason {
enum Constraint {
UNKNOWN_CONSTRAINT = 1;

// Required separation from an azimuth/elevation mask.
// See `minimum_azimuth_elevation_mask_separation_deg` in
// aalyria.spacetime.api.common.AntennaConstraints.
SEPARATION_FROM_AZ_EL_MASK = 2;

// Minimum and/or maximum link slant range.
// See `link_range` in
// aalyria.spacetime.api.common.AntennaConstraints.
LINK_RANGE = 3;

// Field of view or regard.
// See `field_of_regard` in
// aalyria.spacetime.api.common.AntennaDefinition.
FIELD_OF_VIEW_OR_REGARD = 4;

// Required angle between the sun's center of mass and the link vector.
// See `minimum_sun_angle_deg` in
// aalyria.spacetime.api.common.AntennaConstraints.
SUN_EXCLUSION = 5;

// Something on the local platform is obstructing the link.
// See `obstructions` in
// aalyria.spacetime.api.common.AntennaDefinition.
PLATFORM_OBSTRUCTION = 6;

// Terrain is obstructing the link vector.
TERRAIN_OBSTRUCTION = 7;

// The modeled carrier-to-noise ratio at the receiver is too low.
RECEIVER_CNR_TOO_LOW = 8;

// The Earth (or other planetary body) is obstructing the link.
NO_LINE_OF_SIGHT = 9;
}
optional Constraint constraint = 1;

// Identifies the constrained link end.
optional aalyria.spacetime.api.common.TransceiverModelId
transceiver_link_end = 2;
}

// Defines the predicted accessibility of the target. Modeled signal
// propagation information is included within accessible intervals.
message AccessInterval {
// The applicable time interval (may be open ended).
optional google.type.Interval interval = 1;

// The predicted accessibility of the link target over the entire interval.
// A new AccessInterval is created for each change in modeled accessibility.
// Changes in the reason for inaccessibility also result in new intervals.
optional Accessibility accessibility = 2;

// The set of reasons that the link is inaccessible over this interval.
repeated NoAccessReason no_access_reason = 3;

// Modeled signal propagation, to coordinates of interest, over time.
// Timestamped entries are sorted in ascending order into the future.
// This field is omitted during inaccessible intervals.
repeated SpatialPropagation propagation_over_time = 4;
}

// The modeled signal propagation across space at an instance in time.
message SpatialPropagation {
// Time as observed by the transmitter.
optional google.protobuf.Timestamp timestamp = 1;

// Modeled signal propagation to the target.
optional WirelessLinkBudget reception = 2;

// The link direction from transmitter towards the target.
optional aalyria.spacetime.api.common.PointingVector pointing_vector = 3;

// The range to the target's coordinates, in meters.
optional double range_m = 4;

// The electromagnetic propagation delay to target's coordinates.
optional google.protobuf.Duration propagation_delay = 5;

// The spatial propagation to specified points of interest.
optional SignalPowerCoverage coverage = 6;
}

103 changes: 103 additions & 0 deletions api/nbi/v1alpha/signal_propagation.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
// Copyright 2023 Aalyria Technologies, Inc., and its affiliates.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto2";

package aalyria.spacetime.api.nbi.v1alpha;

import "api/common/wireless_transceiver.proto";
import "api/nbi/v1alpha/resources/coverage.proto";
import "api/nbi/v1alpha/resources/wireless_evaluation.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
import "google/type/interval.proto";

option java_package = "com.aalyria.spacetime.api.nbi.v1alpha";
option go_package = "aalyria.com/spacetime/api/nbi/v1alpha";

// A service that evaluates the time-dynamic geometric accessibility and
// coverage of a wireless signal propagated from a transmitter towards
// some target location.
service SignalPropagation {
// Returns the link budget during the intervals in which this link
// is accessible.
rpc Evaluate(SignalPropagationRequest) returns (SignalPropagationResponse) {}
}

message SignalPropagationRequest {
// Identifies the transmitting transceiver model.
optional aalyria.spacetime.api.nbi.v1alpha.resources.TransceiverProvider
transmitter_model = 1;

// This string should correspond to the `id` field of an
// Entity message that contains a aalyria.spacetime.api.common.BandProfile
// message.
optional string band_profile_id = 2;

// Identifies the time-dynamic target of a steerable beam.
// This field may only be omitted if the beam is fixed / non-steerable.
// If this field is omitted, the `accessibility` field in each
// `access_interval` within the SignalPropagationResponse will be
// omitted, and the access interval will match the request interval.
// Only coverage calculations will be completed. The link budget from
// the transmitter to target will not be computed.
optional aalyria.spacetime.api.nbi.v1alpha.resources.TransceiverProvider
target = 3;

// This field is useful for interference analysis.
// Omitting this field causes 'coverage' to be omitted from the response.
optional aalyria.spacetime.api.nbi.v1alpha.resources.CoordinateArray
coverage = 4;

oneof analysis_time {
// The interval of time to evaluate signal propagation. This must be a
// closed interval with both a start and end time.
google.type.Interval analysis_interval = 6;

// The instant in time to evaluate signal propagation.
google.protobuf.Timestamp analysis_instant = 10;
}

// Sets the analysis step size and the temporal resolution of the response.
// This step size determines the rate at which constraints of link
// accessibility (such as the link being obstructed by terrain) are
// sampled with respect to time.
optional google.protobuf.Duration step_size = 7;

// Sets the analysis step size for spatial propagation metrics.
// This step size determines the rate at which propagation loss
// metrics are sampled in order to compute the access intervals in
// the response. If the step is set to 0, then spatial propagation
// will not be calculated.
optional google.protobuf.Duration spatial_propagation_step_size = 9;

// If explain_inaccessibility is true, the server will spend additional
// computational time determining the specific set of access constraints
// that were not satisfied and including these reasons in the response.
// Set this to false to optimize performance.
optional bool explain_inaccessibility = 8;

// If past/historic reference data should be used (e.g. platform motion,
// weather, etc) rather than current / most-recent data, this
// field indicates the time for retrieving that reference data.
optional google.protobuf.Timestamp reference_data_time = 11;
}

message SignalPropagationResponse {
// A timeline of target accessibility (subject to geometric constraints).
// Accessible intervals contain the modeled temporospatial signal propagation.
// Access intervals are non-overlapping.
repeated aalyria.spacetime.api.nbi.v1alpha.resources.AccessInterval
access_interval = 1;
}

0 comments on commit 7b81b4f

Please sign in to comment.