RPS Protocol Buffer File (rps.proto)
- Updated2024-07-03
- 8 minute(s) read
Plain text of the RPS protocol buffer file (protofile).
Copy and paste the following into a text document. Save as rps.proto.
syntax = "proto3"; package rps_grpc; service RpsService { //////////////////// // Server Methods // //////////////////// // Gets the status of the server. rpc ServerGetStatus (ServerGetStatusRequest) returns (ServerGetStatusResponse); ////////////////// // Core Methods // ////////////////// // Aborts all Tasks and moves to Configuration state. rpc Abort (AbortRequest) returns (AbortResponse); // Closes the session. rpc Close (CloseRequest) returns (CloseResponse); // Commits settings to hardware and moves the session to Committed state. rpc Commit (CommitRequest) returns (CommitResponse); // Gets the status of the session. rpc GetStatus (GetStatusRequest) returns (GetStatusResponse); // Creates a new session in Configuration state. // If the same session name of an existing session is used, no new session is created. rpc Initialize (InitializeRequest) returns (InitializeResponse); // Starts all tasks and moves to Running state. rpc Start (StartRequest) returns (StartResponse); /////////////////////////////// // Acquisition Task Methods // /////////////////////////////// // Transfers acquired waveform data from instrument memory. The data transferred was acquired to onboard memory previously by the hardware after the acquisition was initiated. // If Task is part of a Stream Configuration, returns an asynchronous data preview. // If Task is not part of a Stream Configuration or Synchronization Configuration, returns a single asynchronous fetch per Start call. // If Task is not part of a Stream Configuration and is part of a Synchronization Configuration, returns a single synchronous fetch per Start call. rpc AcquisitionFetchIQ (AcquisitionFetchIQRequest) returns (AcquisitionFetchIQResponse); // Gets the status of the specified acquisition task. Use this method to check for errors and if the task has completed the acquisition operation. rpc AcquisitionGetStatus (AcquisitionGetStatusRequest) returns (AcquisitionGetStatusResponse); // Sets the same RF bandwidth to each instrument in the specified task. Use this function in place of AcquisitionSetSampleRate. rpc AcquisitionSetBandwidth (AcquisitionSetBandwidthRequest) returns (AcquisitionSetBandwidthResponse); // Sets the number of samples to fetch by each instrument in the specified task. rpc AcquisitionSetFetchSize (AcquisitionSetFetchSizeRequest) returns (AcquisitionSetFetchSizeResponse); // Sets the same center frequency for each instrument in the specified task. rpc AcquisitionSetFrequency (AcquisitionSetFrequencyRequest) returns (AcquisitionSetFrequencyResponse); // Sets a center frequency for each instrument in the specified task. rpc AcquisitionSetFrequencies (AcquisitionSetFrequenciesRequest) returns (AcquisitionSetFrequenciesResponse); // Sets the LO signal source used to downconvert the RF input signal. rpc AcquisitionSetLO (AcquisitionSetLORequest) returns (AcquisitionSetLOResponse); // Sets the phase calibration parameters type for the specified task. All adjustments are relative to the reference instrument of the task. // The reference instrument is the first instrument listed in the task. To enable phase calibration the reference clocks, LO sharing, and synchronization // all must be the same as when the calibration was performed. rpc AcquisitionSetPhaseCal (AcquisitionSetPhaseCalRequest) returns (AcquisitionSetPhaseCalResponse); // Sets the reference clock for each instrument in the specified task. rpc AcquisitionSetReferenceClock (AcquisitionSetReferenceClockRequest) returns (AcquisitionSetReferenceClockResponse); // Sets the same reference level for each instrument in the specified task. The reference level represents the maximum expected power of an input RF signal. rpc AcquisitionSetReferenceLevel (AcquisitionSetReferenceLevelRequest) returns (AcquisitionSetReferenceLevelResponse); // Sets the same IQ sample rate for each instrument in the specified task. Use this function in place of AcquisitionSetBandwidth. rpc AcquisitionSetSampleRate (AcquisitionSetSampleRateRequest) returns (AcquisitionSetSampleRateResponse); // Creates an Acquisition Task that configures the specified instruments. rpc AcquisitionCreateTask (AcquisitionCreateTaskRequest) returns (AcquisitionCreateTaskResponse); /////////////////////////////////////////// // Synchronization Configuration Methods // /////////////////////////////////////////// // Creates a Synchronization Configuration to synchronize all instruments in the specified tasks from SynchronizationSetMasterTask and SynchronizationSetSlaveTask. // Only one Synchronization Configuration exists per session. rpc SynchronizationCreateConfiguration (SynchronizationCreateConfigurationRequest) returns (SynchronizationCreateConfigurationResponse); // Sets the specified task as the master synchronization reference in the Synchronization Configuration. rpc SynchronizationSetMasterTask (SynchronizationSetMasterTaskRequest) returns (SynchronizationSetMasterTaskResponse); // Sets the specified task(s) as a slave task(s) in the Synchronization Configuration. rpc SynchronizationSetSlaveTask (SynchronizationSetSlaveTaskRequest) returns (SynchronizationSetSlaveTaskResponse); ////////////////////////////////// // Stream Configuration Methods // ////////////////////////////////// // Creates a Stream Configuration of the specified type. rpc StreamCreateConfiguration (StreamCreateConfigurationRequest) returns (StreamCreateConfigurationResponse); // Gets the status of the Stream Configuration. rpc StreamGetStatus (StreamGetStatusRequest) returns (StreamGetStatusResponse); // Sets the destination endpoint of the specified Stream Configuration. rpc StreamSetDestinationEndpoint (StreamSetDestinationEndpointRequest) returns (StreamSetDestinationEndpointResponse); // Sets the source endpoint of the specified Stream Configuration. rpc StreamSetSourceEndpoint (StreamSetSourceEndpointRequest) returns (StreamSetSourceEndpointResponse); ////////////////////// // Advanced Methods // ////////////////////// // Gets detailed error information from the specified status number. rpc GetErrorString(GetErrorStringRequest) returns (GetErrorStringResponse); // For an echo command and internal use. See messages for further details. rpc Message (MessageRequest) returns (MessageResponse); } ////////////////////// // Commons Messages // ////////////////////// message Session { string name = 1; } message ComplexWaveformIQ { double t0 = 1; double dt = 2; repeated double i = 3; repeated double q = 4; } //////////////////////////// // Server Method Messages // //////////////////////////// message ServerGetStatusRequest{} message ServerGetStatusResponse{ int32 status = 1; bool ready = 2; string message = 3; } ////////////////////////// // Core Method Messages // ////////////////////////// message AbortRequest { Session session = 1; } message AbortResponse { int32 status = 1; } message CloseRequest { Session session = 1; // Not supported. In place for future implementations. bool session_only = 2; } message CloseResponse { int32 status = 1; } message CommitRequest { Session session = 1; } message CommitResponse { int32 status = 1; } message GetStatusRequest { Session session = 1; } message GetStatusResponse { int32 status = 1; repeated int32 logged_statuses = 2; State state = 3; bool ready = 4; } message InitializeRequest { string session_name = 1; // Not supported. In place for future implementations. string options = 10; } message InitializeResponse { int32 status = 1; Session session = 2; bool created_new = 3; } message StartRequest { Session session = 1; } message StartResponse { int32 status = 1; } ///////////////////////////////// // Acquisition Method Messages // ///////////////////////////////// message AcquisitionGetStatusRequest{ Session session = 1; string task_name = 2; } message AcquisitionGetStatusResponse{ int32 status = 1; int32 acquisition_status = 2; bool done = 3; } message AcquisitionSetBandwidthRequest{ Session session = 1; string task_name = 2; // Defaults to 1 GHz. int64 bandwidth_hz = 3; } message AcquisitionSetBandwidthResponse{ int32 status = 1; } message AcquisitionSetFetchSizeRequest{ Session session = 1; string task_name = 2; // Defaults to 2048. int64 fetch_size = 4; } message AcquisitionSetFetchSizeResponse{ int32 status = 1; } message AcquisitionSetFrequencyRequest{ Session session = 1; string task_name = 2; // Defaults to 5.5 GHz double center_frequency_hz = 3; } message AcquisitionSetFrequencyResponse{ int32 status = 1; } message AcquisitionSetFrequenciesRequest{ Session session = 1; string task_name = 2; // The number of center frequencies provided must match the number of instruments configured in the specified task. repeated double center_frequencies_hz = 3; } message AcquisitionSetFrequenciesResponse{ int32 status = 1; } message AcquisitionSetLORequest{ Session session = 1; string task_name = 2; LOType lo_type = 3; // Not supported. In place for future implementations. string data = 4; } message AcquisitionSetLOResponse{ int32 status = 1; } message AcquisitionSetPhaseCalRequest{ Session session = 1; string task_name = 2; PhaseCalType phase_cal_type = 3; // Not supported. In place for future implementations. string data = 4; } message AcquisitionSetPhaseCalResponse{ int32 status = 1; } message AcquisitionSetReferenceClockRequest{ Session session = 1; string task_name = 2; // Defaults to "PXI_Clk". // If Task is part of a Synchronization Configuration, "PXI_Clk" is the only valid input. // If Task is not part of a Synchronization Configuration, valid values are "Onboard" and "PXI_Clk". string reference_clock = 3; } message AcquisitionSetReferenceClockResponse{ int32 status = 1; } message AcquisitionSetReferenceLevelRequest{ Session session = 1; string task_name = 2; // Defaults to 0 dBm. double reference_level = 3; } message AcquisitionSetReferenceLevelResponse{ int32 status = 1; } message AcquisitionSetSampleRateRequest{ Session session = 1; string task_name = 2; // Defaults to 1.25 giga samples per second. int64 sample_rate = 3; } message AcquisitionSetSampleRateResponse{ int32 status = 1; } message AcquisitionCreateTaskRequest{ Session session = 1; string task_name = 2; // Comma separated string array of instrument names. string instrument_names = 4; // Not supported. In place for future implementations. string options = 10; } message AcquisitionCreateTaskResponse{ int32 status = 1; } message AcquisitionFetchIQRequest{ Session session = 1; string task_name = 2; } message AcquisitionFetchIQResponse{ int32 status = 1; repeated ComplexWaveformIQ waveforms = 2; } /////////////////////////////////////////////////// // Synchronization Configuration Method Messages // /////////////////////////////////////////////////// message SynchronizationCreateConfigurationRequest{ Session session = 1; SynchronizationType sync_type = 2; } message SynchronizationCreateConfigurationResponse{ int32 status = 1; } message SynchronizationSetMasterTaskRequest{ Session session = 1; string task_name = 2; } message SynchronizationSetMasterTaskResponse{ int32 status = 1; } message SynchronizationSetSlaveTaskRequest{ Session session = 1; string task_name = 2; } message SynchronizationSetSlaveTaskResponse{ int32 status = 1; } ////////////////////////////////////////// // Stream Configuration Method Messages // ////////////////////////////////////////// message StreamCreateConfigurationRequest{ Session session = 1; string configuration_name = 2; StreamType stream_type = 3; // Length of stream of unit "length_unit". int64 length = 4; Unit length_unit = 5; // Not supported. In place for future implementations. string options = 10; } message StreamCreateConfigurationResponse{ int32 status = 1; } message StreamGetStatusRequest{ Session session = 1; string configuration_name = 2; } message StreamGetStatusResponse{ int32 status = 1; int32 stream_status = 2; repeated string task_name = 3; repeated string instrument_name = 4; repeated uint64 samples_to_stream = 5; repeated uint64 samples_streamed = 6; repeated bool overflow = 7; bool any_overflow = 8; bool done = 9; } message StreamSetDestinationEndpointRequest{ Session session = 1; string configuration_name = 2; StreamDestinationEndpoint endpoint = 3; // Number of destinations specified must match the number of configured instruments. // Local Storage: comma-separated array of TDMS file locations. // i.e. "F:\recording\file0.tdms,H:\recording\file1.tdms // Remote Storage: comma-separated array of folder names. // Folder names are created in locations specified by each data storage computer's configuration file. // File names are autogenerated with time stamps in each folder location for each instrument. // i.e. "ch0,ch1" string data = 4; } message StreamSetDestinationEndpointResponse{ int32 status = 1; } message StreamSetSourceEndpointRequest{ Session session = 1; string configuration_name = 2; StreamSourceEndpoint endpoint = 3; // Task name sourcing data to be recorded. string data = 4; } message StreamSetSourceEndpointResponse{ int32 status = 1; } ////////////////////////////// // Advanced Method Messages // ////////////////////////////// message GetErrorStringRequest { int32 error_code = 1; } message GetErrorStringResponse { int32 status = 1; string error_string = 2; } // To use as an echo command, send an empty string for "name" // and "data" from MessageResponse will echo "data" from MessageRequest. message MessageRequest{ string name = 1; string data = 2; } message MessageResponse{ string data = 1; } /////////// // Enums // /////////// enum LOType { LO_TYPE_UNSPECIFIED = 0; LO_TYPE_NONE = 1; // Not supported. In place for future implementations. LO_TYPE_CUSTOM = 2; // LO daisy chain order expected in order instruments are listed in a task. LO_TYPE_DAISY_CHAIN = 10; // Not supported. In place for future implementations. LO_TYPE_STAR = 20; // Requires a valid, existing LO calibration file at the specified center frequency. LO_TYPE_STAR_CALIBRATED = 21; } enum PhaseCalType { PHASE_CAL_TYPE_UNSPECIFIED = 0; PHASE_CAL_TYPE_NONE = 1; // Calibration parameters to adjust sample clock delay, sub-sample clock delay, // and phase offsets of each instrument relative to the reference instrument. PHASE_CAL_TYPE_COHERENT = 10; // Calibration parameters to adjust all phase coherent parameters, equalization // filters, and gain offsets of each instrument relative to the reference instrument. PHASE_CAL_TYPE_ALIGNED = 20; } enum State { STATE_UNSPECIFIED = 0; STATE_CONFIGURATION = 1; STATE_COMMITTED = 2; STATE_RUNNING = 3; } enum SynchronizationType { // Default, proper mode will be automatically selected SYNCHRONIZATION_TYPE_UNSPECIFIED = 0; // SCSCh = Single-Controller, Single-Chassis. // Synchronization signals are routed automatically. SYNCHRONIZATION_TYPE_SCSCH = 1; // SCSMh = Single-Controller, Multi-Chassis. // Requires the synchronization routing file is configured properly. // Custom routing files are not supported. SYNCHRONIZATION_TYPE_SCMCH = 2; } enum StreamType { STREAM_TYPE_UNSPECIFIED = 0; // Streams data to TDMS files to RAIDs local to the same controller domain as the instruments. STREAM_TYPE_LOCAL_STORAGE = 10; // Streams data to binary files on external data storage computer(s). STREAM_TYPE_REMOTE_STORAGE = 20; } enum StreamSourceEndpoint { STREAM_SOURCE_ENDPOINT_UNSPECIFIED = 0; STREAM_SOURCE_ENDPOINT_TASK_NAME = 1; } enum StreamDestinationEndpoint { STREAM_DESTINATION_ENDPOINT_UNSPECIFIED = 0; STREAM_DESTINATION_ENDPOINT_FILE = 2; } enum Unit { UNIT_UNSPECIFIED = 0; UNIT_SAMPLE = 1; UNIT_SECOND = 2; UNIT_BYTE = 3; }