All Downloads are FREE. Search and download functionalities are using the official Maven repository.

yamcs.protobuf.pvalue.pvalue.proto Maven / Gradle / Ivy

There is a newer version: 5.10.9
Show newest version
syntax="proto2";

package yamcs.protobuf.pvalue;
option java_package = "org.yamcs.protobuf";

import "yamcs/protobuf/yamcs.proto";
import "yamcs/protobuf/mdb/mdb.proto";
import "google/protobuf/timestamp.proto";

//this can also be called validity status
enum AcquisitionStatus {
    // OK!
    ACQUIRED = 0;
  
    // No value received so far
    NOT_RECEIVED = 1;
  
    // Some value has been received but is invalid
    INVALID = 2;
  
    // The parameter is coming from a packet which has not since updated although it should have been
   EXPIRED = 3;
}

enum MonitoringResult {
    DISABLED = 0;
    IN_LIMITS = 1;
    WATCH = 7;
    WARNING = 10;
    DISTRESS = 13;
    CRITICAL = 16;
    SEVERE = 19;
}

enum RangeCondition {
    LOW = 0;
    HIGH = 1;
}

message ParameterValue {
    // Parameter identifier
    optional NamedObjectId id = 1;

    // Raw value (uncalibrated)
    optional Value rawValue = 2;

    // Engineering value (calibrated)
    optional Value engValue = 3;

    // Time of Yamcs reception
    optional google.protobuf.Timestamp acquisitionTime = 4;

    // Time of generation (~ packet time)
    optional google.protobuf.Timestamp generationTime = 5;

    optional AcquisitionStatus acquisitionStatus = 6;
    
    // Deprecated: this field was originally introduced for compatibility
    // with Airbus CGS/CD-MCS system. It was redundant, because when false,
    // the acquisitionStatus is also set to INVALID.
    optional bool processingStatus = 7 [deprecated = true];
    optional MonitoringResult monitoringResult = 8;
    optional RangeCondition rangeCondition = 9;

    // Context-dependent ranges
    repeated mdb.AlarmRange alarmRange = 25;

    // How long (in milliseconds) this parameter value is valid
    // Note that there is an option when subscribing to parameters to get
    // updated when the parameter values expire. 
    optional int64 expireMillis = 26;

    // When transferring parameters over WebSocket, this value might be used
    // instead of the id above in order to reduce the bandwidth.
    // Note that the id <-> numericId assignment is only valid in the context
    // of a single WebSocket call.
    optional uint32 numericId = 27;
}



message ParameterData {
    repeated ParameterValue parameter = 1;

    // The next three fields are used by the recorder as unique key to store
    // parameters in "rows" and also by components that provide parameters
    // from external sources. The time should roughly correspond to the parameter 
    // time but can be rounded for better efficiency.
    optional string group = 2;
    optional int64  generationTime = 3;
    optional int32 seqNum = 4;

    // Used when parameter data is delivered as result of subscriptions
    optional int32 subscriptionId = 5;
}

message TimeSeries {
    message Sample {
        // Start time of the sample interval.
        optional google.protobuf.Timestamp time = 6;

        // Average numeric value during the sample interval.
        optional double avg = 2;

        // Minimum numeric value during the sample interval.
        optional double min = 3;

        // Maximum numeric value during the sample interval.
        optional double max = 4;

        // Number of samples during the sample interval.
        // If this value is zero, it indicates a gap.
        optional int32 n = 5;

        // Generation time of the ``min`` value.
        optional google.protobuf.Timestamp minTime = 7;

        // Generation time of the ``max`` value.
        optional google.protobuf.Timestamp maxTime = 8;
    }

    // List of samples.
    repeated Sample sample = 1;
}

message Ranges {
    message Range {
        // Generation time of a parameter value.
        optional google.protobuf.Timestamp start = 7;

        // If the value changes, ``stop`` is the generation time of the new value.
        // If the parameter expires or the ``maxGap`` has been set, ``stop`` is
        // the generation time of the last value plus the expiration time or the
        // ``maxGap``.
        optional google.protobuf.Timestamp stop = 8;

        // Number of parameter values received in the interval.
        // This is the total count of parameters in the interval.
        // If the count does not match the sum(counts), it means that not all the values have been sent
        optional int32 count = 4;
        
        // Since Yamcs 5.4.1 there is a new parameter minRange in the GetParameterRangesRequest which allows 
        // specifying the minimum length of the range returned.
        // Practically we guarantee that stop-start >= minRange (mind the leap seconds!).
        //
        // If the minRange parameter is set, the returning ranges may include multiple values.
        // These are given by the engValues and counts below. 
        //
        // Since Yamcs 5.4.2 there is a new parameter maxValues which allows to limit the number 
        // of distinct values returned across all the ranges.
        // In order to not return ranges containing no value, each range will have at least one value even if
        // that will cause the total number of range values returned to exceed the maxValues parameter
        //
        // The counts correspond one to one to the engValues, the two arrays will always have the same length.
        repeated Value engValues = 5;

        // The counts correspond one to one to the engValues
        repeated int32 counts = 6;
    }
    repeated Range range = 1;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy