Skip to content

Commit

Permalink
protos: add component_metadata and component_metadata_server
Browse files Browse the repository at this point in the history
  • Loading branch information
bkueng committed Apr 12, 2024
1 parent c000fb5 commit 33fc3e7
Show file tree
Hide file tree
Showing 4 changed files with 122 additions and 136 deletions.
65 changes: 0 additions & 65 deletions protos/component_information/component_information.proto

This file was deleted.

This file was deleted.

90 changes: 90 additions & 0 deletions protos/component_metadata/component_metadata.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
syntax = "proto3";

package mavsdk.rpc.component_metadata;

import "mavsdk_options.proto";

option java_package = "io.mavsdk.component_metadata";
option java_outer_classname = "ComponentMetadataProto";

// Access component metadata json definitions, such as parameters.
service ComponentMetadataService {

/*
* Request metadata from a specific component. This is used to start requesting metadata from a component.
* The metadata can later be accessed via subscription (see below) or GetMetadata.
*/
rpc RequestComponent(RequestComponentRequest) returns(RequestComponentResponse) { option (mavsdk.options.async_type) = SYNC; }

/*
* Request metadata from the autopilot component. This is used to start requesting metadata from the autopilot.
* The metadata can later be accessed via subscription (see below) or GetMetadata.
*/
rpc RequestAutopilotComponent(RequestAutopilotComponentRequest) returns(RequestAutopilotComponentResponse) { option (mavsdk.options.async_type) = SYNC; }

/*
* Register a callback that gets called when metadata is available
*/
rpc SubscribeMetadataAvailable(MetadataAvailableRequest) returns(stream MetadataUpdateResponse) { option (mavsdk.options.async_type) = ASYNC; }

/*
* Access metadata. This can be used if you know the metadata is available already, otherwise use
* the subscription to get notified when it becomes available.
*/
rpc GetMetadata(GetMetadataRequest) returns(GetMetadataResponse) { option (mavsdk.options.async_type) = SYNC; }
}

message RequestComponentRequest {
uint32 compid = 1; // The component ID to request
}

message GetMetadataRequest {
uint32 compid = 1; // The component ID to request
MetadataType type = 2; // The metadata type
}

message GetMetadataResponse {
MetadataResult result = 1;
MetadataData response = 2;
}

// Metadata response
message MetadataData {
string json_metadata = 1; // The JSON metadata
}

// Result type.
message MetadataResult {
// Possible results returned for GetMetadata
enum Result {
RESULT_SUCCESS = 0; // Success
RESULT_NOT_AVAILABLE = 1; // Metadata is not available
}

Result result = 1; // Result enum value
string result_str = 2; // Human-readable English string describing the result
}

message RequestComponentResponse {}
message RequestAutopilotComponentRequest {}
message RequestAutopilotComponentResponse {}

message MetadataAvailableRequest {}


message MetadataUpdateResponse {
MetadataUpdate data = 1;
}

// Metadata for a given component and type
message MetadataUpdate {
uint32 compid = 1; // The component ID
MetadataType type = 2; // The metadata type
string json_metadata = 3; // The JSON metadata
}

enum MetadataType {
PARAMETER = 0; // Parameter metadata
EVENTS = 1; // Event definitions
ACTUATORS = 2; // Actuator definitions
}
32 changes: 32 additions & 0 deletions protos/component_metadata_server/component_metadata_server.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
syntax = "proto3";

package mavsdk.rpc.component_metadata_server;

import "mavsdk_options.proto";

option java_package = "io.mavsdk.component_metadata_server";
option java_outer_classname = "ComponentMetadataServerProto";

// Provide component metadata json definitions, such as parameters.
service ComponentMetadataServerService {
/*
* Provide metadata (can only be called once)
*/
rpc SetMetadata(RequestComponentRequest) returns(RequestComponentResponse) { option (mavsdk.options.async_type) = SYNC; }
}

message RequestComponentRequest {
repeated Metadata metadata = 1; // List of metadata
}
message RequestComponentResponse {}

message Metadata {
MetadataType type = 1; // The metadata type
string json_metadata = 2; // The JSON metadata
}

enum MetadataType {
PARAMETER = 0; // Parameter metadata
EVENTS = 1; // Event definitions
ACTUATORS = 2; // Actuator definitions
}

0 comments on commit 33fc3e7

Please sign in to comment.