/*@!Encoding:1252*/
includes
{
  
}

variables
{
  
}

on Start
{
  char  methodName[40] = "CameraObjectDetection::StartStop";
  char  text[200];
  dword method;
  long  result;
  
  // get handle for method StartStop
  method = SomeIpGetProvidedObjectHandle( methodName );

  if (method == 0)
  {
    SomeIpGetLastErrorText( elcount(text), text );
    writeLineEx( 0, 3, "<%NODE_NAME%> SomeIpGetProvidedObjectHandle(%s) failed: %s", methodName, text );
    return;
  }
  
  // register callback
  result = SomeIpRegisterCallback( method, "OnMethodStartStopRequest" );

  if (result != 0)
  {
    SomeIpGetLastErrorText( elcount(text), text );
    writeLineEx( 0, 3, "<%NODE_NAME%> SomeIpRegisterCallback( 0x%X, OnMethodStartStopRequest ) failed: %s", method, text );
    return;
  }
}

on sysvar sysvar::CAMF::EnableService
{
  char  serviceName[40] = "CameraObjectDetection";
  char  text[200];
  long  result;
  dword csi;
  
  csi = SomeIpGetProvidedObjectHandle( serviceName );
  
  if (csi == 0)
  {
    SomeIpGetLastErrorText( elcount(text), text );
    writeLineEx( 0, 3, "<%NODE_NAME%> SomeIpGetProvidedObjectHandle(%s) failed: %s", serviceName, text );
    return;
  }
  
  result = SomeIpSDSetServiceStatus( csi, @this );

  if (result != 0)
  {
    SomeIpGetLastErrorText( elcount(text), text );
    writeLineEx( 0, 3, "<%NODE_NAME%> SomeIpSDSetServiceStatus( 0x%X, 0) failed: %s", csi, text );
    return;
  }
}

void OnMethodStartStopRequest( dword methodHandle, dword messageHandle, dword messageResponseHandle )
{
  dword activate;

  // get value from request
  activate = SomeIpGetValueDWord( messageHandle, "Activate" );
  @sysvar::CAMF::MethodResponse::StartStop::Activate = activate;
  
  // set response value
  SomeIpSetValueDWord( messageResponseHandle, "Result", @sysvar::CAMF::MethodResponse::StartStop::Result );
}