Skip to main content

impact.flex

// LMCP is releasable to the public domain under the Air Force Open Source Agreement Version 1.0.
module OpenUxAS::LMCP::v3.afrl.impact

import OpenUxAS::LMCP::v3.afrl.cmasi ( SearchTask, VehicleAction, Wedge, AltitudeType, PayloadConfiguration, AbstractGeometry, PayloadState, LoiterAction, AutomationResponse, Location3D, EntityState, Waypoint, AutomationRequest, EntityConfiguration, Task, AbstractZone )


struct VehicleSummary {
  VehicleID: int64;
  DestinationTaskID: int64;
  InitialTaskID: int64;
  InitialTaskPercentage: float32;
  EstimateTimeToTaskPercentage: int64;
  TimeToArrive: int64;
  TimeOnTask: int64;
  EnergyRemaining: float32;
  BeyondCommRange: bit;
}

struct SurfaceVehicleConfiguration extends EntityConfiguration {
  WaterArea: int64;
  MinimumSpeed: float32;
  MaximumSpeed: float32;
  EnergyRate: float32;
  MaxBankAngle: float32;
  MaxBankRate: float32;
}

struct AreaOfInterest {
  AreaID: int64;
  Area: AbstractGeometry;
}

struct RadioState extends PayloadState {
  Enabled: bit;
  InRange: bit;
}

struct EscortTask extends SearchTask {
  SupportedEntityID: int64;
  RouteID: int64;
  PrescribedWaypoints: Waypoint[];
  StandoffDistance: float32;
}

enum ImpactPayloadType int32 {
  Unknown = 0;
  EO = 1;
  FLIR = 2;
  MWIR = 3;
  LFIR = 4;
  Track = 5;
  Tag = 6;
  Megaphone = 7;
  Siren = 8;
  SearchLight = 9;
  FiftyCal = 10;
  M240B = 11;
  Flashbang = 12;
  TearGas = 13;
  Taser = 14;
  HeatBeam = 15;
  SEGM = 16;
  CommRelay = 17;
  GMTI = 18;
  LaserDesignator = 19;
}

struct ImpactPayloadConfiguration extends PayloadConfiguration {
  AvailablePayloads: ImpactPayloadType[];
}

struct TaskSummary {
  TaskID: int64;
  PerformingVehicles: VehicleSummary[];
  BestEffort: float32;
}

enum PowerPlant int32 {
  Gasoline = 0;
  JP5 = 1;
  JP8 = 2;
  FuelCell = 3;
  Hybrid = 4;
}

struct PowerConfiguration extends PayloadConfiguration {
  NominalPowerConfiguration: PowerPlant;
}

enum AreaSearchPattern int32 {
  Spiral = 0;
  Sector = 1;
  Sweep = 2;
}

struct CommRelayTask extends Task {
  SupportedEntityID: int64;
  DestinationLocation: Location3D;
  TowerID: int64;
}

struct ImpactComponentLeave {
  ComponentLabel: string;
}

struct ImpactPointSearchTask extends SearchTask {
  SearchLocationID: int64;
  SearchLocation: Location3D;
  StandoffDistance: float32;
  ViewAngleList: Wedge[];
  DesiredAction: LoiterAction;
}

struct SpeedAltPair {
  VehicleID: int64;
  Speed: float32;
  Altitude: float32;
  AltitudeType: AltitudeType;
}

struct ImpactAutomationRequest {
  RequestID: int64;
  TrialRequest: AutomationRequest;
  OverridePlanningConditions: SpeedAltPair[];
  PlayID: int64;
  SolutionID: int64;
  Sandbox: bit;
}

struct WaterZone extends AbstractZone {

}

struct ImpactAutomationResponse {
  ResponseID: int64;
  TrialResponse: AutomationResponse;
  PlayID: int64;
  SolutionID: int64;
  Sandbox: bit;
  Summaries: TaskSummary[];
}

struct ConfigurationRequest {
  VehicleID: int64[];
}

struct ImpactLineSearchTask extends SearchTask {
  LineID: int64;
  ViewAngleList: Wedge[];
  UseInertialViewAngles: bit;
}

struct RadioTowerState extends EntityState {
  Enabled: bit;
}

struct PointOfInterest {
  PointID: int64;
  Location: Location3D;
}

struct GroundVehicleState extends EntityState {

}

struct PatternSearchTask extends SearchTask {
  SearchLocationID: int64;
  SearchLocation: Location3D;
  Pattern: AreaSearchPattern;
  Extent: float32;
}

struct BlockadeTask extends Task {
  BlockedEntityID: int64;
  StandoffDistance: float32;
  NumberVehicles: uint8;
  ProtectedLocation: Location3D;
}

struct BatchSummaryResponse {
  ResponseID: int64;
  Summaries: TaskSummary[];
}

struct WatchTask extends SearchTask {
  WatchedEntityID: int64;
}

struct CordonTask extends Task {
  CordonLocation: Location3D;
  StandoffDistance: float32;
}

struct GroundVehicleConfiguration extends EntityConfiguration {
  RoadGraphID: int64;
  MinimumSpeed: float32;
  MaximumSpeed: float32;
  EnergyRate: float32;
}

struct SurfaceVehicleState extends EntityState {
  BankAngle: float32;
  Speed: float32;
}

struct RadioTowerConfiguration extends EntityConfiguration {
  Position: Location3D;
  Range: float32;
  Enabled: bit;
}

struct LineOfInterest {
  LineID: int64;
  Line: Location3D[];
}

struct MultiVehicleWatchTask extends SearchTask {
  WatchedEntityID: int64;
  NumberVehicles: uint8;
}

struct TaskTimingPair {
  VehicleID: int64;
  InitialTaskID: int64;
  InitialTaskPercentage: float32;
  DestinationTaskID: int64;
  TimeToGo: int64;
}

struct AngledAreaSearchTask extends SearchTask {
  SearchAreaID: int64;
  SweepAngle: float32;
  StartPoint: Location3D;
}

struct RadioConfiguration extends PayloadConfiguration {
  Range: float32;
  RallyPoint: Location3D;
  Timeout: int64;
}

struct DeployImpactPayload extends VehicleAction {
  VehicleID: int64;
  DeployedPayload: ImpactPayloadType;
  TargetEntityID: int64;
}

struct BatchSummaryRequest {
  RequestID: int64;
  Vehicles: int64[];
  TaskList: int64[];
  InterTaskPercentage: float32[];
  OperatingRegion: int64;
}

struct BatchRoutePlanRequest {
  RequestID: int64;
  Vehicles: int64[];
  TaskList: int64[];
  OperatingRegion: int64;
  ComputeTaskToTaskTiming: bit;
  ComputeInterTaskToTaskTiming: bit;
  InterTaskPercentage: float32[];
}

struct ImpactHeartbeat {
  ComponentLabel: string;
  HeartbeatTime: int64;
}

struct BatchRoutePlanResponse {
  ResponseID: int64;
  VehicleTiming: TaskTimingPair[];
}

struct PowerPlantState extends PayloadState {
  ActivePowerPlant: PowerPlant;
}

struct WaterReport {
  Area: AbstractGeometry;
  CurrentSpeed: float32;
  CurrentDirection: float32;
  WaveDirection: float32;
  WaveHeight: float32;
}

struct ImpactComponentJoin {
  ComponentLabel: string;
}