Skip to content
Snippets Groups Projects
ApplicationCore.h 1.39 KiB
Newer Older
/**
 * ApplicationCore.h
 *
 *  Created on: Jun 14, 2016
 *      Author: Martin Hierholzer
 *
 *  This is the main header file for the ApplicationCore library. It brings all includes and functionality needed
 *  for writing an application.
 */

#include "Application.h"
#include "ScalarAccessor.h"
#include "ApplicationModule.h"

#ifndef CHIMERATK_APPLICATION_CORE_H
#define CHIMERATK_APPLICATION_CORE_H

/** Compile-time switch: two executables will be created. One will generate an XML file containing the
 *  application's variable list. The other will be the actual control system server running the
 *  application. */
#ifndef GENERATE_XML

/** @todo TODO This works for DOOCS only. We need a common interface for all control system adapter
 *  implementations to generate server executables! */
#include <ControlSystemAdapter-DoocsAdapter/DoocsAdapter.h>

  BEGIN_DOOCS_SERVER("Control System Adapter", 10)
     // Create static instances for all applications cores. They must not have overlapping
     // process variable names ("location/protery" must be unique).
     ChimeraTK::Application::getInstance().setPVManager(doocsAdapter.getDevicePVManager());
     ChimeraTK::Application::getInstance().run();
  END_DOOCS_SERVER()

#else

  int main(int argc, char **argv) {
    ChimeraTK::Application::getInstance().generateXML();
    return 0;
  }

#endif /* GENERATE_XML */


#endif /* CHIMERATK_APPLICATION_CORE_H */