84 lines
2.9 KiB
Plaintext
84 lines
2.9 KiB
Plaintext
|
|
# ****************************************************************************
|
||
|
|
# CUI
|
||
|
|
#
|
||
|
|
# The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
|
||
|
|
#
|
||
|
|
# The use, dissemination or disclosure of data in this file is subject to
|
||
|
|
# limitation or restriction. See accompanying README and LICENSE for details.
|
||
|
|
# ****************************************************************************
|
||
|
|
# * * ************************************** * *
|
||
|
|
# * ****** Demonstration input file ****** *
|
||
|
|
# * ****** UNCLASSIFIED ****** *
|
||
|
|
# * * ************************************** * *
|
||
|
|
|
||
|
|
# this file defines a simple task manager which implements very basic EMCON
|
||
|
|
# rules for EW/ACQ type radar players
|
||
|
|
|
||
|
|
processor RED_RADAR_TACTICS WSF_TASK_PROCESSOR
|
||
|
|
|
||
|
|
script_variables
|
||
|
|
bool cEVALUATE_EMCON_TURN_OFF = false;
|
||
|
|
end_script_variables
|
||
|
|
|
||
|
|
script void EvaluateEmcon()
|
||
|
|
int sensorCount = PLATFORM.SensorCount();
|
||
|
|
if (sensorCount > 0)
|
||
|
|
{
|
||
|
|
WsfSensor sensor = PLATFORM.SensorEntry(0);
|
||
|
|
if (sensor.IsTurnedOff())
|
||
|
|
{
|
||
|
|
# sensor is off. Turn it on if we've received a task or
|
||
|
|
# we are put on alert
|
||
|
|
if ((TasksReceived() > 0) ||
|
||
|
|
(OperatingLevelFor("ENGAGE") > 0))
|
||
|
|
{
|
||
|
|
for (int entry = 0; entry < sensorCount; entry = entry + 1)
|
||
|
|
{
|
||
|
|
PLATFORM.SensorEntry(entry).TurnOn();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else if (sensor.IsTurnedOn() &&
|
||
|
|
cEVALUATE_EMCON_TURN_OFF)
|
||
|
|
{
|
||
|
|
# sensor is on. Turn it off if we have no tasks and are
|
||
|
|
# not on alert
|
||
|
|
if ((TasksReceived() < 1) &&
|
||
|
|
(OperatingLevelFor("ENGAGE") < 1))
|
||
|
|
{
|
||
|
|
for (int entry = 0; entry < sensorCount; entry = entry + 1)
|
||
|
|
{
|
||
|
|
PLATFORM.SensorEntry(entry).TurnOff();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
end_script
|
||
|
|
|
||
|
|
# this cannot be done in 'on_initialize' because the commander may not yet exist
|
||
|
|
execute at_time 0.1 seconds relative
|
||
|
|
# if my commander is in the category ENGAGEMENT then we will execute
|
||
|
|
# the emcon/turn-off logic
|
||
|
|
WsfPlatform commander = PLATFORM.Commander();
|
||
|
|
if (commander.IsValid() &&
|
||
|
|
commander.CategoryMemberOf("ENGAGEMENT"))
|
||
|
|
{
|
||
|
|
cEVALUATE_EMCON_TURN_OFF = true;
|
||
|
|
}
|
||
|
|
end_execute
|
||
|
|
|
||
|
|
# evaluate emcon whenever we have a change in assignment or alert level
|
||
|
|
script void on_task_assign(WsfTask aTask, WsfTrack aTrack)
|
||
|
|
ExecuteScriptAtTime(TIME_NOW + RANDOM.Uniform(0.0, 4.0), "EvaluateEmcon");
|
||
|
|
end_script
|
||
|
|
|
||
|
|
script void on_task_cancel(WsfTask aTask)
|
||
|
|
ExecuteScriptAtTime(TIME_NOW + RANDOM.Uniform(0.0, 4.0), "EvaluateEmcon");
|
||
|
|
end_script
|
||
|
|
|
||
|
|
script void on_operating_level_change(string aName)
|
||
|
|
ExecuteScriptAtTime(TIME_NOW + RANDOM.Uniform(0.0, 4.0), "EvaluateEmcon");
|
||
|
|
end_script
|
||
|
|
|
||
|
|
end_processor
|