// ###############################################################
// Copyright(c) Carl Zeiss AG, Germany. All Rights Reserved.
//
// Permission is granted to use and distribute this code,
// as long as this copyright notice remains part of the code.
// ###############################################################

syntax = "proto3";
package zen_api.lm.acquisition.v1;
import "zen_api/lm/acquisition/v1/track_info.proto";

// The TrackServiceActivateChannelRequest class.
message TrackServiceActivateChannelRequest {
   // Experiment id.
   string experiment_id = 1;
   // An index of a track.
   int32 track_index = 2;
   // An index of a channel in the track to be activated.
   int32 channel_index = 3;
}
// The TrackServiceActivateChannelResponse class.
message TrackServiceActivateChannelResponse {
}
// The TrackServiceActivateTrackRequest class.
message TrackServiceActivateTrackRequest {
   // Experiment id.
   string experiment_id = 1;
   // An index of a track to be activated.
   int32 track_index = 2;
}
// The TrackServiceActivateTrackResponse class.
message TrackServiceActivateTrackResponse {
}
// The TrackServiceDeactivateChannelRequest class.
message TrackServiceDeactivateChannelRequest {
   // Experiment id.
   string experiment_id = 1;
   // An index of a track.
   int32 track_index = 2;
   // An index of a channel in the track to be deactivated.
   int32 channel_index = 3;
}
// The TrackServiceDeactivateChannelResponse class.
message TrackServiceDeactivateChannelResponse {
}
// The TrackServiceDeactivateTrackRequest class.
message TrackServiceDeactivateTrackRequest {
   // Experiment id.
   string experiment_id = 1;
   // An index of a track to be deactivated.
   int32 track_index = 2;
}
// The TrackServiceDeactivateTrackResponse class.
message TrackServiceDeactivateTrackResponse {
}
// The TrackServiceGetTrackInfoRequest class.
message TrackServiceGetTrackInfoRequest {
   // Experiment id.
   string experiment_id = 1;
}
// Response object representing the value of track information.
message TrackServiceGetTrackInfoResponse {
   // The track information.
   repeated TrackInfo track_info = 1;
}
// The ITrackService interface.
service TrackService {
   // Activates a channel with a specific index in a specific track.
   rpc ActivateChannel (TrackServiceActivateChannelRequest) returns (TrackServiceActivateChannelResponse);
   // Activates a track with a specific index.
   rpc ActivateTrack (TrackServiceActivateTrackRequest) returns (TrackServiceActivateTrackResponse);
   // Deactivates a channel with a specific index in a specific track.
   rpc DeactivateChannel (TrackServiceDeactivateChannelRequest) returns (TrackServiceDeactivateChannelResponse);
   // Deactivates a track with a specific index.
   rpc DeactivateTrack (TrackServiceDeactivateTrackRequest) returns (TrackServiceDeactivateTrackResponse);
   // Gets the track information.
   rpc GetTrackInfo (TrackServiceGetTrackInfoRequest) returns (TrackServiceGetTrackInfoResponse)
   {
      option idempotency_level = NO_SIDE_EFFECTS;
   }
}
