Protobuf enumerations
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package ugcs.vsm.proto;
option java_package = "com.ugcs.ucs.vsm.proto";
option java_outer_classname = "VsmDefinitionsProto";
enum Peer_type {
PEER_TYPE_SERVER = 0;
PEER_TYPE_VSM = 1;
PEER_TYPE_VSM_ANDROID = 2;
PEER_TYPE_VSM_IOS = 3;
}
// Response code sent by VSM to UCS
enum Status_code {
STATUS_OK = 0;
// Generic error
STATUS_FAILED = 1;
// Command is not supported
STATUS_INVALID_COMMAND = 2;
// Command parameters are invalid
// Cannot use STATUS_INVALID_PARAMETER because it clashes with define in winnt.h
STATUS_INVALID_PARAM = 3;
// Invalid session id
STATUS_INVALID_SESSION_ID = 4;
// Used to notify peer that command is in progress.
STATUS_IN_PROGRESS = 5;
// Command require altimeter, but no alive altimeter detected
STATUS_ALTIMETER_REQUIRED = 6;
// Cannot register another device due to license constraint
STATUS_LICENSE_CONSTRAINT = 7;
}
// Response code sent by VSM to UCS
enum Severity_code {
// Info
SEVERITY_INF = 0;
// Warning
SEVERITY_WARN = 1;
// Error
SEVERITY_ERR = 2;
}
// Used in property "vehicle_type" for Device of type DEVICE_TYPE_VEHICLE
enum Vehicle_type {
VEHICLE_TYPE_GROUND = 0;
VEHICLE_TYPE_FIXED_WING = 1;
VEHICLE_TYPE_MULTICOPTER = 2;
VEHICLE_TYPE_HELICOPTER = 3;
VEHICLE_TYPE_VTOL = 4; // Vehicle is capable of both fixed wing and multicopter style of flight.
}
enum Meta_value {
META_VALUE_NA = 0;
}
// Built in subsystem types natively supported by UgCS. Used in Register_subsystem.type field.
// Each subsystem can register a arbitrary set of properties, commands and telemetry.
// Each subsystem has a set of properties, commands and telemetry fields which are supported natively by UgCS.
// Refer to UCS-VSM protocol documentation.
enum Subsystem_type {
SUBSYSTEM_TYPE_USER = 0; // Can be used for any other subsystem not mentioned below.
SUBSYSTEM_TYPE_FLIGHT_CONTROLLER = 1;
SUBSYSTEM_TYPE_GIMBAL = 2;
SUBSYSTEM_TYPE_CAMERA = 3;
SUBSYSTEM_TYPE_ADSB_TRANSPONDER = 4;
SUBSYSTEM_TYPE_WINCH = 5; // Airmast winch
SUBSYSTEM_TYPE_HANGAR = 6;
SUBSYSTEM_TYPE_GPR = 7; // Ground penetrating radar
SUBSYSTEM_TYPE_ADSB_RECEIVER = 8; // Onboard adsb receiver for vehicle
SUBSYSTEM_TYPE_ADSB_VEHICLE = 9; // Used to report telemetry for devices of type DEVICE_TYPE_ADSB_VEHICLE
SUBSYSTEM_TYPE_WEATHER_STATION = 10;
SUBSYSTEM_TYPE_VSM = 11;
}
// Built in device types natively supported by UgCS. Used in Register_device.type field.
// Each device can register a arbitrary sets of properties and subsystems.
// Some device types have properties which are supported natively by UgCS. Some of them are required.
// Refer to UCS-VSM protocol documentation.
enum Device_type {
// Real vehicle which can be controlled by UgCS
DEVICE_TYPE_VEHICLE = 0;
// Device capable of executing vehicle specific commands but does not represent real vehicle.
// Used to provide vehicle specific functionality without an actual vehicle.
// The native route file is returned via Device_response.status field.
DEVICE_TYPE_VEHICLE_COMMAND_PROCESSOR = 1;
// Adsb receiver connected directly to VSM
DEVICE_TYPE_ADSB_RECEIVER = 2;
// Vehicle reported by ADSB receiver with its own telemetry
DEVICE_TYPE_ADSB_VEHICLE = 3;
// Device capable of sending RTK
DEVICE_TYPE_RTK_BASE_STATION = 4;
}
// Built in telemetry enums
enum Gps_fix_type {
GPS_FIX_TYPE_NONE = 0;
GPS_FIX_TYPE_2D = 1;
GPS_FIX_TYPE_3D = 2;
GPS_FIX_TYPE_DIFF = 3;
GPS_FIX_TYPE_RTK_FIXED = 4;
GPS_FIX_TYPE_RTK_FLOAT = 5;
}
enum Control_mode {
CONTROL_MODE_MANUAL = 0;
CONTROL_MODE_AUTO = 1;
CONTROL_MODE_CLICK_GO = 2;
CONTROL_MODE_JOYSTICK = 3;
CONTROL_MODE_ACTIVE_TRACK = 4;
}
enum Flight_mode {
FLIGHT_MODE_WAYPOINTS = 0; // Vehicle is navigating mission waypoints
FLIGHT_MODE_RTH = 1; // Vehicle is returning home
FLIGHT_MODE_LAND = 2; // Vehicle is landing
FLIGHT_MODE_TAKEOFF = 3; // Vehicle is taking off
FLIGHT_MODE_HOLD = 4; // Vehicle is holding position.
}
enum Autopilot_status {
AUTOPILOT_STATUS_STANDBY = 0; // Vehicle is standby, grounded
AUTOPILOT_STATUS_ACTIVE = 1; // Vehicle is active, airborne
AUTOPILOT_STATUS_CRITICAL = 2; // Vehicle is in critical state, failsafe is on
AUTOPILOT_STATUS_EMERGENCY = 3; // Vehicle is in emergency or crashed
}
enum Dock_part_status {
DOCK_PART_OPENED = 0;
DOCK_PART_CLOSED = 1;
DOCK_PART_OPENING = 2;
DOCK_PART_CLOSING = 3;
}
// These types match the Type Code/Emitter Category byte of ADSB message.
// Do not modify the values!
enum Adsb_emitter_type {
// Category A subtypes
ADSB_EMITTER_TYPE_NO_INFO_A = 0;
ADSB_EMITTER_TYPE_LIGHT = 1;
ADSB_EMITTER_TYPE_SMALL = 2;
ADSB_EMITTER_TYPE_LARGE = 3;
ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4;
ADSB_EMITTER_TYPE_HEAVY = 5;
ADSB_EMITTER_TYPE_HIGH_PERFORMANCE = 6;
ADSB_EMITTER_TYPE_ROTORCRAFT = 7;
// Category B subtypes
ADSB_EMITTER_TYPE_NO_INFO_B = 8;
ADSB_EMITTER_TYPE_GLIDER_SAILPLANE = 9;
ADSB_EMITTER_TYPE_LIGHTER_THAN_AIR = 10;
ADSB_EMITTER_TYPE_SKYDIVER = 11;
ADSB_EMITTER_TYPE_ULTRALIGHT_PARAGLIDER = 12;
ADSB_EMITTER_TYPE_RESERVED_13 = 13;
ADSB_EMITTER_TYPE_UAV = 14;
ADSB_EMITTER_TYPE_SPACE_TRANS_ATMOSPHERIC = 15;
// Category C subtypes
ADSB_EMITTER_TYPE_NO_INFO_C = 16;
ADSB_EMITTER_TYPE_SURFACE_EMERGENCY = 17;
ADSB_EMITTER_TYPE_SURFACE_SERVICE = 18;
ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19;
ADSB_EMITTER_TYPE_CLUSTER_OBSTACLE = 20;
ADSB_EMITTER_TYPE_LINE_OBSTACLE = 21;
ADSB_EMITTER_TYPE_RESERVED_22 = 22;
ADSB_EMITTER_TYPE_RESERVED_23 = 23;
// Category D subtypes
ADSB_EMITTER_TYPE_NO_INFO_D = 24;
ADSB_EMITTER_TYPE_RESERVED_25 = 25;
ADSB_EMITTER_TYPE_RESERVED_26 = 26;
ADSB_EMITTER_TYPE_RESERVED_27 = 27;
ADSB_EMITTER_TYPE_RESERVED_28 = 28;
ADSB_EMITTER_TYPE_RESERVED_29 = 29;
ADSB_EMITTER_TYPE_RESERVED_30 = 30;
ADSB_EMITTER_TYPE_RESERVED_31 = 31;
}
enum Adsb_altitude_source {
ADSB_ALTITUDE_SOURCE_BARO = 0;
ADSB_ALTITUDE_SOURCE_GNSS = 1;
}
// Built in command parameter enums
enum Adsb_mode {
ADSB_MODE_OFF = 0;
ADSB_MODE_STBY = 1;
ADSB_MODE_ON = 2;
ADSB_MODE_ALT = 3;
}
enum Failsafe_action {
FAILSAFE_ACTION_RTH = 0;
FAILSAFE_ACTION_LAND = 1;
FAILSAFE_ACTION_WAIT = 2;
FAILSAFE_ACTION_CONTINUE = 3;
}
// Action after RTH
enum Rth_action {
RTH_ACTION_LAND = 0;
RTH_ACTION_WAIT = 1;
}
enum Camera_power_state {
CAMERA_POWER_STATE_ON = 0;
CAMERA_POWER_STATE_OFF = 1;
CAMERA_POWER_STATE_TOGGLE = 2;
}
enum Camera_video_source {
CAMERA_VIDEO_SOURCE_PRIMARY = 0;
CAMERA_VIDEO_SOURCE_SECONDARY = 1;
}
enum Camera_command_trigger_state {
CAMERA_COMMAND_TRIGGER_STATE_SINGLE_SHOT = 0;
CAMERA_COMMAND_TRIGGER_STATE_VIDEO_START = 1;
CAMERA_COMMAND_TRIGGER_STATE_VIDEO_STOP = 2;
CAMERA_COMMAND_TRIGGER_STATE_VIDEO_TOGGLE = 3;
}
enum Camera_mission_trigger_state {
CAMERA_MISSION_TRIGGER_STATE_ON = 0;
CAMERA_MISSION_TRIGGER_STATE_OFF = 1;
CAMERA_MISSION_TRIGGER_STATE_SINGLE_PHOTO = 2;
CAMERA_MISSION_TRIGGER_STATE_SERIAL_PHOTO = 3;
}
enum Panorama_mode {
PANORAMA_MODE_PHOTO = 0;
PANORAMA_MODE_VIDEO = 1;
}
enum Turn_type {
TURN_TYPE_STOP_AND_TURN = 0;
TURN_TYPE_STRAIGHT = 1;
TURN_TYPE_SPLINE = 2;
TURN_TYPE_BANK_TURN = 3;
}
// Field/parameter type (semantic)
enum Field_semantic {
// Used internally.
FIELD_SEMANTIC_DEFAULT = 0;
// Description, Units, Data type, Range, Origin, Positive direction
// Geodetic latitude, radians, double, -Pi/2..Pi/2, equator, north
FIELD_SEMANTIC_LATITUDE = 1;
// Geodetic longitude, radians, double, -Pi..Pi, Greenwich meridian, East
FIELD_SEMANTIC_LONGITUDE = 2;
// WGS84 altitude, meters, numeric
FIELD_SEMANTIC_ALTITUDE_AMSL = 3;
// Altitude AGL, meters, numeric
FIELD_SEMANTIC_ALTITUDE_AGL = 4;
// Raw altitude reading from vehicle. Typically above home location., meters, numeric
FIELD_SEMANTIC_ALTITUDE_RAW = 5;
// Vehicle nose angle, radians, numeric, 0..2Pi, North, East
FIELD_SEMANTIC_HEADING = 6;
// Battery voltage, volts, numeric
FIELD_SEMANTIC_VOLTAGE = 8;
// Air speed, m/s, numeric
FIELD_SEMANTIC_AIR_SPEED = 9;
// Ground speed, m/s, numeric
FIELD_SEMANTIC_GROUND_SPEED = 10;
// Climb speed, m/s, numeric
FIELD_SEMANTIC_VERTICAL_SPEED = 11;
// GNSS satellite count, numeric
FIELD_SEMANTIC_SATELLITE_COUNT = 12;
// Fix type, numeric, enum Gps_fix_type
FIELD_SEMANTIC_GPS_FIX_TYPE = 13;
// Roll angle, radians, numeric, -Pi..Pi, Horizon, right
FIELD_SEMANTIC_ROLL = 14;
// Pitch angle, radians, numeric, -Pi..Pi, Horizon, up
FIELD_SEMANTIC_PITCH = 15;
// Yaw angle, radians, numeric, 0..2Pi, unspecified, East
FIELD_SEMANTIC_YAW = 16;
// RC link quality, , numeric, [0..1]
FIELD_SEMANTIC_RC_LINK_QUALITY = 17;
// Battery current, amperes, numeric
FIELD_SEMANTIC_CURRENT = 18;
// Groundstation datalink quality, , numeric, [0..1]
FIELD_SEMANTIC_GCS_LINK_QUALITY = 19;
// Camera Field-of-view horizontal angle, radians, numeric, 0..Pi
FIELD_SEMANTIC_FOV_H = 23;
// Camera Field-of-view veritcal angle, radians, numeric, 0..Pi
FIELD_SEMANTIC_FOV_V = 24;
// Current control mode, int, enum Control_mode
FIELD_SEMANTIC_CONTROL_MODE = 26;
// Terrain elevation AMSL, meters, numeric
FIELD_SEMANTIC_GROUND_ELEVATION = 27;
// Waypoint acceptance radius, meters, numeric
FIELD_SEMANTIC_ACCEPTANCE_RADIUS = 28;
// Waypoint loiter radius, meters, numeric
FIELD_SEMANTIC_LOITER_RADIUS = 29;
// ADSB icao code, 24 bits, numeric, represented as hex
FIELD_SEMANTIC_ICAO = 30;
// ADSB transponder mode, enum, Adsb_mode, numeric
FIELD_SEMANTIC_ADSB_MODE = 31;
// ADSB squawk code, 12 bits, numeric, represented as octal
FIELD_SEMANTIC_SQUAWK = 32;
// Time interval, milliseconds, numeric, represented as time
FIELD_SEMANTIC_MILLISECONDS = 33;
// Battery capacity percentage, numeric, [0..1]
FIELD_SEMANTIC_CAPACITY_LEVEL = 34;
// Vehicle flight mode, enum, Flight_mode
FIELD_SEMANTIC_FLIGHT_MODE = 35;
// Autopilot status, enum
FIELD_SEMANTIC_AUTOPILOT_STATUS = 36;
// Time since Unix epoch (1970-01-01T00:00:00Z), int64, milliseconds
FIELD_SEMANTIC_TIMESTAMP = 37;
// Temperature, celsius, numeric
FIELD_SEMANTIC_TEMPERATURE = 38;
// Humidity, percentage, numeric, [0..100]
FIELD_SEMANTIC_HUMIDITY = 39;
// Precipitation, mm/hour, numeric, [0,2..150]
FIELD_SEMANTIC_PRECIPITATION = 42;
// Generic types used for user-defined telemetry fields.
// Value can be of any type. Field can hold any one of supported values.
// VSM will determine the value type depending on which value is present in Field_value.
// The order is: double, int, string, bool, list.
// For example, if field contains both int and string values then string value will be ignored.
FIELD_SEMANTIC_ANY = 100;
// Generic number type. Exact type (float, int, etc...) will be detected automatically
FIELD_SEMANTIC_NUMERIC = 101;
// boolean
FIELD_SEMANTIC_BOOL = 104;
// utf8 string
FIELD_SEMANTIC_STRING = 105;
// enum. Possible values defined via Register_enumeration message.
FIELD_SEMANTIC_ENUM = 106;
// list.
FIELD_SEMANTIC_LIST = 107;
// Unformatted binary data
FIELD_SEMANTIC_BINARY = 108;
}