/*@!Encoding:1252*/
includes
{
  
}

variables
{
  float linSpecD1D2Values[4] = {0.744, 0.581, 0.422, 0.284};
  float linSpecD3D4Values[4] = {0.778, 0.616, 0.389, 0.251};
  float linSpecD1D2MinMaxValues[2] = {0.396, 0.581};
  float linSpecD3D4MinMaxValues[2] = {0.417, 0.590};
}

on start
{
  UpdateValues();
  @sysvar::FileSuffix =0 ;
}


void UpdateValues()
{
  if(@sysvar::Scope::BitAnalysis::DutyCycleConfiguration::LinSpecDutyCycles == sysvar::Scope::BitAnalysis::DutyCycleConfiguration::LinSpecDutyCycles::D1_D2_Parameter )
  {
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::ThRecMaxFactor = linSpecD1D2Values[0];
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::ThDomMaxFactor = linSpecD1D2Values[1];
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::THRecMinFactor = linSpecD1D2Values[2];
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::THDomMinFactor = linSpecD1D2Values[3];
    
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::ThDomMaxVoltageValue = @sysvar::Scope::BitAnalysis::VSupplier * @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::ThDomMaxFactor;
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::THDomMinVoltageValue = @sysvar::Scope::BitAnalysis::VSupplier * @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::THDomMinFactor;
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::ThRecMaxVoltageValue = @sysvar::Scope::BitAnalysis::VSupplier * @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::ThRecMaxFactor;
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::THRecMinVoltageValue = @sysvar::Scope::BitAnalysis::VSupplier * @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::THRecMinFactor;
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::MinDutyCycleValue    = linSpecD1D2MinMaxValues[0];
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::MaxDutyCycleValue    = linSpecD1D2MinMaxValues[1];
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::MaxDutyCycleValueDom = 1-linSpecD1D2MinMaxValues[0];
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::MinDutyCycleValueDom = 1-linSpecD1D2MinMaxValues[1];
  }

  if(@sysvar::Scope::BitAnalysis::DutyCycleConfiguration::LinSpecDutyCycles == sysvar::Scope::BitAnalysis::DutyCycleConfiguration::LinSpecDutyCycles::D3_D4_Parameter )
  {
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::ThRecMaxFactor = linSpecD3D4Values[0];
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::ThDomMaxFactor = linSpecD3D4Values[1];
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::THRecMinFactor = linSpecD3D4Values[2];
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::THDomMinFactor = linSpecD3D4Values[3];
    
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::ThDomMaxVoltageValue = @sysvar::Scope::BitAnalysis::VSupplier * @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::ThDomMaxFactor;
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::THDomMinVoltageValue = @sysvar::Scope::BitAnalysis::VSupplier * @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::THDomMinFactor;
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::ThRecMaxVoltageValue = @sysvar::Scope::BitAnalysis::VSupplier * @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::ThRecMaxFactor;
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::THRecMinVoltageValue = @sysvar::Scope::BitAnalysis::VSupplier * @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::THRecMinFactor;
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::MinDutyCycleValue    = linSpecD3D4MinMaxValues[0];
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::MaxDutyCycleValue    = linSpecD3D4MinMaxValues[1];
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::MaxDutyCycleValueDom = 1-linSpecD3D4MinMaxValues[0];
    @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::MinDutyCycleValueDom = 1-linSpecD3D4MinMaxValues[1];
    
  }
  
  
  @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::MaxDutyCycleDomMeasured = 0;
  @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::MinDutyCycleDomMeasured = 0;
  @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::MaxDutyCycleRecMeasured = 0;
  @sysvar::Scope::BitAnalysis::DutyCycleConfiguration::MinDutyCycleRecMeasured = 0;
  
  @sysvar::Scope::BitAnalysis::DutyCycleResult::TBusMax = 0;
  @sysvar::Scope::BitAnalysis::DutyCycleResult::TBusMin = 0;
  @sysvar::Scope::BitAnalysis::DutyCycleResult::TBusMaxDom = 0;
  @sysvar::Scope::BitAnalysis::DutyCycleResult::TBusMinDom = 0;
}

on sysvar sysvar::Scope::BitAnalysis::DutyCycleConfiguration::LinSpecDutyCycles
{
  UpdateValues();
}

on sysvar sysvar::Scope::BitAnalysis::VSupplier
{
  UpdateValues();
}

on sysvar sysvar::Scope::BitAnalysis::Disturbance::ApplySettings
{
  int index;
  write("@this = %d", @this);
  if(@this == 1)
  {
    if(@sysvar::Scope::BitAnalysis::Disturbance::DisturbancetField == @sysvar::Scope::BitAnalysis::Disturbance::DisturbancetField::CheckSumByte)
    {
      index = @sysvar::Scope::BitAnalysis::Disturbance::DisturbancetField - @sysvar::Scope::BitAnalysis::Disturbance::DisturbancetField::DataByte1 - 6;
    }
    else
    {
      index = @sysvar::Scope::BitAnalysis::Disturbance::DisturbancetField - @sysvar::Scope::BitAnalysis::Disturbance::DisturbancetField::DataByte1;
    }

    if(@sysvar::Scope::BitAnalysis::Disturbance::BitOffset >= 9)
    {
      @sysvar::Scope::BitAnalysis::Disturbance::BitOffset = 9;
    }
    
    index = (index * 10) + @sysvar::Scope::BitAnalysis::Disturbance::BitOffset;
    
    if(index > 49)
    {
      write("Error Index =%d", index);
    }
    else
    {
      @sysvar::Scope::BitAnalysis::Disturbance::BitLengths[index] = linBits2Time_ns(1) * @sysvar::Scope::BitAnalysis::Disturbance::BitLength / 100;
    }
  }
}

on sysvar sysvar::Scope::BitAnalysis::Disturbance::ResetSettings
{
  if(@this == 1)
  {
    int i;
    int64 bitTimeInNs;
    
    bitTimeInNs = linBits2Time_ns(1);
    
    for(i = 0; i < 50; ++i)
    {
     @sysvar::Scope::BitAnalysis::Disturbance::BitLengths[i] = 0;
    }
  }  
}