
variables
{
	enum eKLineHeaderFormat
  {
    OneByteHeader   = 1,
    TwoByteHeader   = 2,
    ThreeByteHeader = 3,
    FourByteHeader  = 4,
    DefaultHeader   = 5
  };
  
  Dword gBaudrate = 10400;
}

void KLineSetHeaderFormat(int headerFormat)
{
  dword status;
    
  switch(headerFormat)
  {
    case OneByteHeader:
      status = KLine_SetHeaderFormat(0, 0);
      break;
    case TwoByteHeader:
       status = KLine_SetHeaderFormat(0, 1);
      break;
    case ThreeByteHeader:
      status = KLine_SetHeaderFormat(1, 0);
      break;
    case FourByteHeader:
       status = KLine_SetHeaderFormat(1, 1);
      break;
    default:
      status = KLine_UseDefaultHeader();
      break;
  }
      
  if (status == kReturnSuccess)
  {
    write("KLine_SetHeaderFormat returns %s", "SUCCESS");
  }
  else
  {
    write("KLine_SetHeaderFormat returns %s", "ERROR");
  } 
}

on sysvar_update sysvar::KLineECUSimulation::Baudrate
{
  gBaudrate = @this;
}

on sysvar_update sysvar::KLineECUSimulation::SetBaudrate
{
	int status;
  
  if (@this == 0)
  {
    return;
  }
  
	status = KLine_SetBaudRate(gBaudrate);
  
  if (status == kReturnSuccess)
  {
    write("Set Baud rate to %d", gBaudrate);
  }
  else 
  {
    write("Baud rate could not be set");
  }
}
