From e37a279c42f2e8b139b97bdbd37644d275d4997e Mon Sep 17 00:00:00 2001 From: Denys Datsko <35429810+ddatsko@users.noreply.github.com> Date: Wed, 3 Apr 2024 05:31:55 +0200 Subject: [PATCH] Capability flags in camera information (#329) * Capability flags in camera information * Modified camera cap flags setting format from uint32 to a separate message * Merged tracking_server plugin into camera_server --- protos/camera_server/camera_server.proto | 91 ++++++++++++++- protos/tracking_server/tracking_server.proto | 117 ------------------- 2 files changed, 90 insertions(+), 118 deletions(-) delete mode 100644 protos/tracking_server/tracking_server.proto diff --git a/protos/camera_server/camera_server.proto b/protos/camera_server/camera_server.proto index 99d2b69da..f39fe43c3 100644 --- a/protos/camera_server/camera_server.proto +++ b/protos/camera_server/camera_server.proto @@ -7,7 +7,7 @@ import "mavsdk_options.proto"; option java_package = "io.mavsdk.camera_server"; option java_outer_classname = "CameraServerProto"; -// Provides handling of camera trigger commands. +// Provides handling of camera interface service CameraServerService { // Sets the camera information. This must be called as soon as the camera server is created. rpc SetInformation(SetInformationRequest) returns(SetInformationResponse) { option (mavsdk.options.async_type) = SYNC; } @@ -101,8 +101,33 @@ service CameraServerService { // Respond to zoom range. rpc RespondZoomRange(RespondZoomRangeRequest) returns(RespondZoomRangeResponse) { option (mavsdk.options.async_type) = SYNC; } + + // Set/update the current rectangle tracking status. + rpc SetTrackingRectangleStatus(SetTrackingRectangleStatusRequest) returns(SetTrackingRectangleStatusResponse) { option (mavsdk.options.async_type) = SYNC; } + + // Set the current tracking status to off. + rpc SetTrackingOffStatus(SetTrackingOffStatusRequest) returns(SetTrackingOffStatusResponse) { option (mavsdk.options.async_type) = SYNC; } + + // Subscribe to incoming tracking point command. + rpc SubscribeTrackingPointCommand(SubscribeTrackingPointCommandRequest) returns(stream TrackingPointCommandResponse) { option (mavsdk.options.async_type) = ASYNC; } + + // Subscribe to incoming tracking rectangle command. + rpc SubscribeTrackingRectangleCommand(SubscribeTrackingRectangleCommandRequest) returns(stream TrackingRectangleCommandResponse) { option (mavsdk.options.async_type) = ASYNC; } + + // Subscribe to incoming tracking off command. + rpc SubscribeTrackingOffCommand(SubscribeTrackingOffCommandRequest) returns(stream TrackingOffCommandResponse) { option (mavsdk.options.async_type) = ASYNC; } + + // Respond to an incoming tracking point command. + rpc RespondTrackingPointCommand(RespondTrackingPointCommandRequest) returns(RespondTrackingPointCommandResponse) { option (mavsdk.options.async_type) = SYNC; } + + // Respond to an incoming tracking rectangle command. + rpc RespondTrackingRectangleCommand(RespondTrackingRectangleCommandRequest) returns(RespondTrackingRectangleCommandResponse) { option (mavsdk.options.async_type) = SYNC; } + + // Respond to an incoming tracking off command. + rpc RespondTrackingOffCommand(RespondTrackingOffCommandRequest) returns(RespondTrackingOffCommandResponse) { option (mavsdk.options.async_type) = SYNC; } } + message SetInformationRequest { Information information = 1; // information about the camera } @@ -440,3 +465,67 @@ message CaptureStatus { VideoStatus video_status = 5; // Current status of video capturing int32 image_count = 6; // Total number of images captured ('forever', or until reset using MAV_CMD_STORAGE_FORMAT) } + +message SetTrackingPointStatusRequest { + TrackPoint tracked_point = 1; // The tracked point +} +message SetTrackingPointStatusResponse {} + +message SetTrackingRectangleStatusRequest { + TrackRectangle tracked_rectangle = 1; // The tracked rectangle +} +message SetTrackingRectangleStatusResponse {} + +message SetTrackingOffStatusRequest {} +message SetTrackingOffStatusResponse {} + +message SubscribeTrackingPointCommandRequest {} +message TrackingPointCommandResponse { + TrackPoint track_point = 1; // The point to track if a point is to be tracked +} + +message SubscribeTrackingRectangleCommandRequest {} +message TrackingRectangleCommandResponse { + TrackRectangle track_rectangle = 1; // The point to track if a point is to be tracked +} + +message SubscribeTrackingOffCommandRequest {} +message TrackingOffCommandResponse { + int32 dummy = 1; // Unused +} + +message RespondTrackingPointCommandRequest { + CameraFeedback stop_video_feedback = 1; // the feedback +} +message RespondTrackingPointCommandResponse { + CameraServerResult camera_server_result = 1; // The result of sending the response. +} + +message RespondTrackingRectangleCommandRequest { + CameraFeedback stop_video_feedback = 1; // the feedback +} +message RespondTrackingRectangleCommandResponse { + CameraServerResult camera_server_result = 1; // The result of sending the response. +} + +message RespondTrackingOffCommandRequest { + CameraFeedback stop_video_feedback = 1; // the feedback +} +message RespondTrackingOffCommandResponse { + CameraServerResult camera_server_result = 1; // The result of sending the response. +} + +// Point description type +message TrackPoint { + float point_x = 1; // Point to track x value (normalized 0..1, 0 is left, 1 is right). + float point_y = 2; // Point to track y value (normalized 0..1, 0 is top, 1 is bottom). + float radius = 3; // Point to track y value (normalized 0..1, 0 is top, 1 is bottom). +} + +// Rectangle description type +message TrackRectangle { + float top_left_corner_x = 1; // Top left corner of rectangle x value (normalized 0..1, 0 is left, 1 is right). + float top_left_corner_y = 2; // Top left corner of rectangle y value (normalized 0..1, 0 is top, 1 is bottom). + float bottom_right_corner_x = 3; // Bottom right corner of rectangle x value (normalized 0..1, 0 is left, 1 is right). + float bottom_right_corner_y = 4; // Bottom right corner of rectangle y value (normalized 0..1, 0 is top, 1 is bottom). +} diff --git a/protos/tracking_server/tracking_server.proto b/protos/tracking_server/tracking_server.proto deleted file mode 100644 index 2eb671b31..000000000 --- a/protos/tracking_server/tracking_server.proto +++ /dev/null @@ -1,117 +0,0 @@ -syntax = "proto3"; - -package mavsdk.rpc.tracking_server; - -import "mavsdk_options.proto"; - -option java_package = "io.mavsdk.tracking_server"; -option java_outer_classname = "TrackingServerProto"; - -// API for an onboard image tracking software. -service TrackingServerService { - // Set/update the current point tracking status. - rpc SetTrackingPointStatus(SetTrackingPointStatusRequest) returns(SetTrackingPointStatusResponse) { option (mavsdk.options.async_type) = SYNC; } - // Set/update the current rectangle tracking status. - rpc SetTrackingRectangleStatus(SetTrackingRectangleStatusRequest) returns(SetTrackingRectangleStatusResponse) { option (mavsdk.options.async_type) = SYNC; } - // Set the current tracking status to off. - rpc SetTrackingOffStatus(SetTrackingOffStatusRequest) returns(SetTrackingOffStatusResponse) { option (mavsdk.options.async_type) = SYNC; } - // Subscribe to incoming tracking point command. - rpc SubscribeTrackingPointCommand(SubscribeTrackingPointCommandRequest) returns(stream TrackingPointCommandResponse) { option (mavsdk.options.async_type) = ASYNC; } - // Subscribe to incoming tracking rectangle command. - rpc SubscribeTrackingRectangleCommand(SubscribeTrackingRectangleCommandRequest) returns(stream TrackingRectangleCommandResponse) { option (mavsdk.options.async_type) = ASYNC; } - // Subscribe to incoming tracking off command. - rpc SubscribeTrackingOffCommand(SubscribeTrackingOffCommandRequest) returns(stream TrackingOffCommandResponse) { option (mavsdk.options.async_type) = ASYNC; } - // Respond to an incoming tracking point command. - rpc RespondTrackingPointCommand(RespondTrackingPointCommandRequest) returns(RespondTrackingPointCommandResponse) { option (mavsdk.options.async_type) = SYNC; } - // Respond to an incoming tracking rectangle command. - rpc RespondTrackingRectangleCommand(RespondTrackingRectangleCommandRequest) returns(RespondTrackingRectangleCommandResponse) { option (mavsdk.options.async_type) = SYNC; } - // Respond to an incoming tracking off command. - rpc RespondTrackingOffCommand(RespondTrackingOffCommandRequest) returns(RespondTrackingOffCommandResponse) { option (mavsdk.options.async_type) = SYNC; } -} - -message SetTrackingPointStatusRequest { - TrackPoint tracked_point = 1; // The tracked point -} -message SetTrackingPointStatusResponse {} - -message SetTrackingRectangleStatusRequest { - TrackRectangle tracked_rectangle = 1; // The tracked rectangle -} -message SetTrackingRectangleStatusResponse {} - -message SetTrackingOffStatusRequest {} -message SetTrackingOffStatusResponse {} - -message SubscribeTrackingPointCommandRequest {} -message TrackingPointCommandResponse { - TrackPoint track_point = 1; // The point to track if a point is to be tracked -} - -message SubscribeTrackingRectangleCommandRequest {} -message TrackingRectangleCommandResponse { - TrackRectangle track_rectangle = 1; // The point to track if a point is to be tracked -} - -message SubscribeTrackingOffCommandRequest {} -message TrackingOffCommandResponse { - int32 dummy = 1; // Unused -} - -message RespondTrackingPointCommandRequest { - CommandAnswer command_answer = 1; // The ack to answer to the incoming command -} -message RespondTrackingPointCommandResponse { - TrackingServerResult tracking_server_result = 1; // The result of sending the response. -} - -message RespondTrackingRectangleCommandRequest { - CommandAnswer command_answer = 1; // The ack to answer to the incoming command -} -message RespondTrackingRectangleCommandResponse { - TrackingServerResult tracking_server_result = 1; // The result of sending the response. -} - -message RespondTrackingOffCommandRequest { - CommandAnswer command_answer = 1; // The ack to answer to the incoming command -} -message RespondTrackingOffCommandResponse { - TrackingServerResult tracking_server_result = 1; // The result of sending the response. -} - -// Point description type -message TrackPoint { - float point_x = 1; // Point to track x value (normalized 0..1, 0 is left, 1 is right). - float point_y = 2; // Point to track y value (normalized 0..1, 0 is top, 1 is bottom). - float radius = 3; // Point to track y value (normalized 0..1, 0 is top, 1 is bottom). -} - -// Rectangle description type -message TrackRectangle { - float top_left_corner_x = 1; // Top left corner of rectangle x value (normalized 0..1, 0 is left, 1 is right). - float top_left_corner_y = 2; // Top left corner of rectangle y value (normalized 0..1, 0 is top, 1 is bottom). - float bottom_right_corner_x = 3; // Bottom right corner of rectangle x value (normalized 0..1, 0 is left, 1 is right). - float bottom_right_corner_y = 4; // Bottom right corner of rectangle y value (normalized 0..1, 0 is top, 1 is bottom). -} - -// Answer to respond to an incoming command -enum CommandAnswer { - COMMAND_ANSWER_ACCEPTED = 0; // Command accepted - COMMAND_ANSWER_TEMPORARILY_REJECTED = 1; // Command temporarily rejected - COMMAND_ANSWER_DENIED = 2; // Command denied - COMMAND_ANSWER_UNSUPPORTED = 3; // Command unsupported - COMMAND_ANSWER_FAILED = 4; // Command failed -} - -// Result type -message TrackingServerResult { - // Possible results returned for tracking_server requests. - enum Result { - RESULT_UNKNOWN = 0; // Unknown result - RESULT_SUCCESS = 1; // Request succeeded - RESULT_NO_SYSTEM = 2; // No system is connected - RESULT_CONNECTION_ERROR = 3; // Connection error - } - - Result result = 1; // Result enum value - string result_str = 2; // Human-readable English string describing the result -}