00001 #include "CalibrationController.h"
00002 #include "ScanLibrary.h"
00003 #include "TestLibrary.h"
00004 #include "SequenceLibrary.h"
00005 #include "SequenceRequest.h"
00006 #include "TestRequest.h"
00007 #include "Sct/SctNames.h"
00008 #include <ipc/server.h>
00009
00010 #include <iostream>
00011
00012 using namespace std;
00013 using namespace Sct;
00014
00015 namespace SctCalibrationController {
00016 namespace Ipc {
00017
00018 CalibrationController::CalibrationController() : IPCObject(Sct_CalibrationController_C_CalibrationController_instanceName, &getServer()) {
00019 cout << "CalibrationController::CalibrationController()" << endl;
00020 }
00021
00022 CalibrationController::~CalibrationController() {
00023 cout << "CalibrationController::~CalibrationController()" << endl;
00024 }
00025
00026 IPCServer& CalibrationController::getServer() {
00027 static IPCServer server (Sct_CalibrationController_C_CalibrationController_serverName, SctNames::getPartition());
00028 return server;
00029 }
00030
00031 Sct_CalibrationController_T_ScanLibrary* CalibrationController::getScanLibrary (Sct_CalibrationControllerStatus *_status) {
00032 cout << "External get Scan library" << endl;
00033 ScanLibrary& sl = getScanLibrary();
00034 sl.incRef();
00035 return &sl;
00036 }
00037
00038 Sct_CalibrationController_T_TestLibrary* CalibrationController::getTestLibrary (Sct_CalibrationControllerStatus *_status) {
00039 cout << "External get Test library" << endl;
00040 TestLibrary& tl = getTestLibrary();
00041 tl.incRef();
00042 return &tl;
00043 }
00044
00045 Sct_CalibrationController_T_SequenceLibrary * CalibrationController::getSequenceLibrary (Sct_CalibrationControllerStatus *_status) {
00046 cout << "External Get Sequence Library" << endl;
00047 SequenceLibrary& sl = getSequenceLibrary();
00048 sl.incRef();
00049 return &sl;
00050 }
00051
00052
00053
00054 template<typename T>
00055 class NullDeleter {
00056 public:
00057 void operator() (T* t) throw () {}
00058 };
00059
00060 void CalibrationController::updateWith (Sct_CalibrationControllerStatus *_status, ilu_T_CString testResultInIs){
00061 updateWith(testResultInIs);
00062 }
00063
00064 void CalibrationController::doScan (Sct_CalibrationControllerStatus *_status, Sct_CalibrationController_T_ScanRequest * s) {
00065 shared_ptr<ScanRequest> req (dynamic_cast<ScanRequest*>(s), NullDeleter<ScanRequest>());
00066 if (!req) {
00067 req = shared_ptr<ScanRequest>(new ScanRequestAdapter(s));
00068 }
00069 doScan(req);
00070 }
00071
00072 void CalibrationController::setUpdateOption(Sct_CalibrationControllerStatus *_status, Sct_CalibrationController_T_CalibrationController_UpdateOption opt){
00073 setUpdateOption(opt);
00074 }
00075
00076 void CalibrationController::doTest (Sct_CalibrationControllerStatus *_status, class Sct_CalibrationController_T_TestRequest *t) {
00077 shared_ptr<TestRequest> req (dynamic_cast<TestRequest*>(t), NullDeleter<TestRequest>());
00078 if (!req) {
00079 req = shared_ptr<TestRequest>(new TestRequestAdapter(t));
00080 }
00081
00082 doTest(req);
00083 }
00084
00085 void CalibrationController::doSequence (Sct_CalibrationControllerStatus *_status, class Sct_CalibrationController_T_SequenceRequest * r) {
00086 shared_ptr<SequenceRequest> req (dynamic_cast<SequenceRequest*>(r), NullDeleter<SequenceRequest>());
00087 if (!req) {
00088 req = shared_ptr<SequenceRequest>(new SequenceRequestAdapter(r));
00089 }
00090 doSequence(req);
00091 }
00092
00093 void CalibrationController::abort (Sct_CalibrationControllerStatus *_status) {
00094 abort();
00095 }
00096
00097 Sct_SctApi_T_Scan * CalibrationController::getScan (Sct_CalibrationControllerStatus *_status, ilu_Cardinal runNumber, ilu_Cardinal scanNumber) {
00098 return getScan(runNumber, scanNumber);
00099 }
00100
00101 }
00102 }