132 lines
4.4 KiB
Plaintext
132 lines
4.4 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.
|
||
|
|
# ****************************************************************************
|
||
|
|
|
||
|
|
# CLASSIFICATION: UNCLASSIFIED
|
||
|
|
#
|
||
|
|
# This script is for controlling the mutually exclusive aspect of the
|
||
|
|
# SLB and SLC operations currently.
|
||
|
|
#
|
||
|
|
# The sensor name and technique names may be changed on the instantiation
|
||
|
|
# of the processor on the platform definition.
|
||
|
|
#
|
||
|
|
# Also note that the update_interval is set to 10.0 sec as the default and
|
||
|
|
# may need changed if it needs updated at a different interval (e.g. scan
|
||
|
|
# rate of the radar).
|
||
|
|
# --------------------------------------------------------------------------
|
||
|
|
|
||
|
|
processor EP_OPERATIONS WSF_SCRIPT_PROCESSOR
|
||
|
|
#script_call_trace off
|
||
|
|
#script_debug_writes off
|
||
|
|
|
||
|
|
update_interval 10.0 sec // default, need to update once per scan of the radar
|
||
|
|
|
||
|
|
script_variables
|
||
|
|
Array<string> mSensorNameList = Array<string>();
|
||
|
|
string mSLB_TechName = "sidelobe_blanking";
|
||
|
|
string mSLC_TechName = "sidelobe_canceling";
|
||
|
|
|
||
|
|
bool mStateChange = false;
|
||
|
|
string mPerceptionString = "";
|
||
|
|
end_script_variables
|
||
|
|
|
||
|
|
on_initialize
|
||
|
|
if (mSensorNameList.Empty())
|
||
|
|
{
|
||
|
|
int sensorCount = PLATFORM.SensorCount();
|
||
|
|
for (int i = 0; i < sensorCount; i = i + 1)
|
||
|
|
{
|
||
|
|
mSensorNameList.PushBack(PLATFORM.SensorEntry(i).Name());
|
||
|
|
writeln_d("EP_OPERATIONS script auto added platform:sensor ", PLATFORM.Name(),
|
||
|
|
":", PLATFORM.SensorEntry(i).Name(), " to control list.");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
foreach (string sensorName in mSensorNameList)
|
||
|
|
{
|
||
|
|
writeln_d("EP_OPERATIONS script manually added platform:sensor ", PLATFORM.Name(),
|
||
|
|
":", sensorName, " to control list.");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (mSensorNameList.Empty())
|
||
|
|
{
|
||
|
|
writeln("****WARNING: EP_OPERATIONS script has empty sensor list on ", PLATFORM.Name());
|
||
|
|
}
|
||
|
|
end_on_initialize
|
||
|
|
|
||
|
|
on_update
|
||
|
|
// Loop the sensor list and get each sensor in list to update
|
||
|
|
foreach (string sensorName in mSensorNameList)
|
||
|
|
{
|
||
|
|
// Get the sensor
|
||
|
|
WsfSensor sensor = PLATFORM.Sensor(sensorName);
|
||
|
|
|
||
|
|
// Update the operating status of the techniques
|
||
|
|
bool mSLB_Operating = sensor.IsEP_TechniqueActive(mSLB_TechName);
|
||
|
|
bool mSLC_Operating = sensor.IsEP_TechniqueActive(mSLC_TechName);
|
||
|
|
|
||
|
|
if (sensor.ContinuousJammingPerceived())
|
||
|
|
{
|
||
|
|
if (! mSLC_Operating)
|
||
|
|
{
|
||
|
|
mSLC_Operating = sensor.SelectEP_Technique(mSLC_TechName);
|
||
|
|
mPerceptionString = "Continuous jamming perceived";
|
||
|
|
mStateChange = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (mSLB_Operating && mSLC_Operating)
|
||
|
|
{
|
||
|
|
mSLB_Operating = (! sensor.DeselectEP_Technique(mSLB_TechName));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else if (sensor.PulseJammingPerceived())
|
||
|
|
{
|
||
|
|
writeln_d("Perceived pulse jamming");
|
||
|
|
|
||
|
|
if (! mSLB_Operating)
|
||
|
|
{
|
||
|
|
mSLB_Operating = sensor.SelectEP_Technique(mSLB_TechName);
|
||
|
|
mPerceptionString = "Pulse jamming perceived";
|
||
|
|
mStateChange = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (mSLB_Operating && mSLC_Operating)
|
||
|
|
{
|
||
|
|
mSLC_Operating = (! sensor.DeselectEP_Technique(mSLC_TechName));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
if (mSLC_Operating)
|
||
|
|
{
|
||
|
|
mSLC_Operating = (! sensor.DeselectEP_Technique(mSLC_TechName));
|
||
|
|
mPerceptionString = "Jamming not perceived";
|
||
|
|
mStateChange = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (mSLB_Operating)
|
||
|
|
{
|
||
|
|
mSLB_Operating = (! sensor.DeselectEP_Technique(mSLB_TechName));
|
||
|
|
mPerceptionString = "Jamming not perceived";
|
||
|
|
mStateChange = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (mStateChange)
|
||
|
|
{
|
||
|
|
mStateChange = false; // reset the state change flag
|
||
|
|
writeln_d("T=", TIME_NOW, " ", PLATFORM.Name(), ":", sensorName, " ", mPerceptionString);
|
||
|
|
writeln_d(" SLB=", mSLB_Operating);
|
||
|
|
writeln_d(" SLC=", mSLC_Operating);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
end_on_update
|
||
|
|
end_processor
|